mirror of
https://github.com/instructkr/claw-code.git
synced 2026-05-19 14:01:26 +08:00
omx(team): auto-checkpoint worker-2 [unknown]
This commit is contained in:
@@ -1500,15 +1500,11 @@ fn run_task_output(input: TaskIdInput) -> Result<String, String> {
|
|||||||
fn run_worker_create(input: WorkerCreateInput) -> Result<String, String> {
|
fn run_worker_create(input: WorkerCreateInput) -> Result<String, String> {
|
||||||
// Merge config-level trusted_roots with per-call overrides.
|
// Merge config-level trusted_roots with per-call overrides.
|
||||||
// Config provides the default allowlist; per-call roots add on top.
|
// Config provides the default allowlist; per-call roots add on top.
|
||||||
let config_roots: Vec<String> = ConfigLoader::default_for(&input.cwd)
|
let merged_roots: Vec<String> = ConfigLoader::default_for(&input.cwd)
|
||||||
.load()
|
.load()
|
||||||
.ok()
|
.ok()
|
||||||
.map(|c| c.trusted_roots().to_vec())
|
.map(|config| config.trusted_roots_with_overrides(&input.trusted_roots))
|
||||||
.unwrap_or_default();
|
.unwrap_or_else(|| input.trusted_roots.clone());
|
||||||
let merged_roots: Vec<String> = config_roots
|
|
||||||
.into_iter()
|
|
||||||
.chain(input.trusted_roots.iter().cloned())
|
|
||||||
.collect();
|
|
||||||
let worker = global_worker_registry().create(
|
let worker = global_worker_registry().create(
|
||||||
&input.cwd,
|
&input.cwd,
|
||||||
&merged_roots,
|
&merged_roots,
|
||||||
@@ -6572,6 +6568,45 @@ mod tests {
|
|||||||
fs::remove_dir_all(&worktree).ok();
|
fs::remove_dir_all(&worktree).ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn worker_create_merges_config_trusted_roots_with_per_call_roots() {
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
let worktree = temp_path("config-and-call-trust-worktree");
|
||||||
|
let claw_dir = worktree.join(".claw");
|
||||||
|
fs::create_dir_all(&claw_dir).expect("create .claw dir");
|
||||||
|
fs::write(
|
||||||
|
claw_dir.join("settings.json"),
|
||||||
|
r#"{"trustedRoots": ["/definitely/not/this/worktree"]}"#,
|
||||||
|
)
|
||||||
|
.expect("write settings");
|
||||||
|
|
||||||
|
let cwd = worktree.to_str().expect("valid utf-8").to_string();
|
||||||
|
let parent = worktree
|
||||||
|
.parent()
|
||||||
|
.expect("temp path has parent")
|
||||||
|
.to_str()
|
||||||
|
.expect("valid parent utf-8")
|
||||||
|
.to_string();
|
||||||
|
|
||||||
|
let created = execute_tool(
|
||||||
|
"WorkerCreate",
|
||||||
|
&json!({
|
||||||
|
"cwd": cwd,
|
||||||
|
"trusted_roots": [parent]
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.expect("WorkerCreate should succeed");
|
||||||
|
let output: serde_json::Value = serde_json::from_str(&created).expect("json");
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
output["trust_auto_resolve"], true,
|
||||||
|
"per-call trusted_roots must extend config defaults for this create request"
|
||||||
|
);
|
||||||
|
|
||||||
|
fs::remove_dir_all(&worktree).ok();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn worker_terminate_sets_finished_status() {
|
fn worker_terminate_sets_finished_status() {
|
||||||
// Create a worker in running state
|
// Create a worker in running state
|
||||||
|
|||||||
Reference in New Issue
Block a user