feat: place caller-provided files into the sandbox workspace (extra_files, --workspace-file) (#1085)

* add extra-files plumbing so orchestrators can drop single files into the sandbox workspace

* reject extra-file paths that collide with a local source tree

* add --workspace-file so CLI users can place files in the sandbox workspace

* reject repeated and control-character workspace paths

* revalidate persisted workspace files when resuming a run

* drop the workspace-file size limit
This commit is contained in:
yoni-at-strix
2026-08-14 16:43:08 -04:00
committed by GitHub
parent 8ca0c4a9b8
commit 8551339130
13 changed files with 710 additions and 9 deletions
+3
View File
@@ -35,6 +35,7 @@ from strix.interface.tui.sidecar import (
tui_source_dir,
wait_process,
)
from strix.interface.utils import read_workspace_files
from strix.report.state import ReportState, set_global_report_state
from strix.utils.resource_paths import get_strix_resource_path
@@ -81,6 +82,7 @@ class GoTuiRuntime:
"scan_mode": self.args.scan_mode,
"non_interactive": False,
"local_sources": self.args.local_sources or [],
"workspace_files": getattr(self.args, "workspace_files", None) or [],
"scope_mode": self.args.scope_mode,
"diff_base": self.args.diff_base,
"resume_instruction": self.args.user_explicit_instruction or "",
@@ -177,6 +179,7 @@ class GoTuiRuntime:
scan_id=self.scan_config["run_name"],
image=image,
local_sources=self.args.local_sources or [],
extra_files=read_workspace_files(getattr(self.args, "workspace_files", None)),
coordinator=self.coordinator,
interactive=True,
max_turns=self.args.max_turns,