diff --git a/examples/acp-agent/product-subagent-both.cordis.snapshot.yml b/examples/acp-agent/product-subagent-both.cordis.snapshot.yml index 3c8acf86cd..3bed92ab57 100644 --- a/examples/acp-agent/product-subagent-both.cordis.snapshot.yml +++ b/examples/acp-agent/product-subagent-both.cordis.snapshot.yml @@ -18,59 +18,47 @@ models: - id: deepseek-v4-flash - id: deepseek-v4-pro - - id: subagent-codex-safe + - id: subagent-codex-primary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-safe - permissionMode: never - env: - DSH_CODEX_INSTANCE: safe - - id: subagent-codex-bypass + providerName: codex-primary + - id: subagent-codex-secondary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-bypass - permissionMode: dangerously-bypass-approvals-and-sandbox - env: - DSH_CODEX_INSTANCE: bypass - - id: subagent-claude-safe + providerName: codex-secondary + - id: subagent-claude-primary name: '@deepseek-ai/dsh-subagent-claude-code' config: - providerName: claude-safe - permissionMode: dontAsk - env: - DSH_CLAUDE_INSTANCE: safe - - id: subagent-claude-bypass + providerName: claude-primary + - id: subagent-claude-secondary name: '@deepseek-ai/dsh-subagent-claude-code' config: - providerName: claude-bypass - permissionMode: bypassPermissions - env: - DSH_CLAUDE_INSTANCE: bypass - - id: tool-subagent-codex-safe + providerName: claude-secondary + - id: tool-subagent-codex-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-safe - toolName: subagent_codex_safe + provider: codex-primary + toolName: subagent_codex_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-codex-bypass + - id: tool-subagent-codex-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-bypass - toolName: subagent_codex_bypass + provider: codex-secondary + toolName: subagent_codex_secondary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-claude-safe + - id: tool-subagent-claude-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: claude-safe - toolName: subagent_claude_safe + provider: claude-primary + toolName: subagent_claude_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-claude-bypass + - id: tool-subagent-claude-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: claude-bypass - toolName: subagent_claude_bypass + provider: claude-secondary + toolName: subagent_claude_secondary backgroundMode: one-shot maxDepth: provider-managed diff --git a/examples/acp-agent/product-subagent-both.cordis.yml b/examples/acp-agent/product-subagent-both.cordis.yml index f81fc8b032..dfde2ead48 100644 --- a/examples/acp-agent/product-subagent-both.cordis.yml +++ b/examples/acp-agent/product-subagent-both.cordis.yml @@ -7,59 +7,47 @@ path: ./cordis.yml patches: - insert: - - id: subagent-codex-safe + - id: subagent-codex-primary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-safe - permissionMode: never - env: - DSH_CODEX_INSTANCE: safe - - id: subagent-codex-bypass + providerName: codex-primary + - id: subagent-codex-secondary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-bypass - permissionMode: dangerously-bypass-approvals-and-sandbox - env: - DSH_CODEX_INSTANCE: bypass - - id: subagent-claude-safe + providerName: codex-secondary + - id: subagent-claude-primary name: '@deepseek-ai/dsh-subagent-claude-code' config: - providerName: claude-safe - permissionMode: dontAsk - env: - DSH_CLAUDE_INSTANCE: safe - - id: subagent-claude-bypass + providerName: claude-primary + - id: subagent-claude-secondary name: '@deepseek-ai/dsh-subagent-claude-code' config: - providerName: claude-bypass - permissionMode: bypassPermissions - env: - DSH_CLAUDE_INSTANCE: bypass - - id: tool-subagent-codex-safe + providerName: claude-secondary + - id: tool-subagent-codex-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-safe - toolName: subagent_codex_safe + provider: codex-primary + toolName: subagent_codex_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-codex-bypass + - id: tool-subagent-codex-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-bypass - toolName: subagent_codex_bypass + provider: codex-secondary + toolName: subagent_codex_secondary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-claude-safe + - id: tool-subagent-claude-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: claude-safe - toolName: subagent_claude_safe + provider: claude-primary + toolName: subagent_claude_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-claude-bypass + - id: tool-subagent-claude-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: claude-bypass - toolName: subagent_claude_bypass + provider: claude-secondary + toolName: subagent_claude_secondary backgroundMode: one-shot maxDepth: provider-managed diff --git a/examples/acp-agent/product-subagent-codex.cordis.snapshot.yml b/examples/acp-agent/product-subagent-codex.cordis.snapshot.yml index e7b1dfeea2..811b775087 100644 --- a/examples/acp-agent/product-subagent-codex.cordis.snapshot.yml +++ b/examples/acp-agent/product-subagent-codex.cordis.snapshot.yml @@ -18,31 +18,25 @@ models: - id: deepseek-v4-flash - id: deepseek-v4-pro - - id: subagent-codex-safe + - id: subagent-codex-primary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-safe - permissionMode: never - env: - DSH_CODEX_INSTANCE: safe - - id: subagent-codex-bypass + providerName: codex-primary + - id: subagent-codex-secondary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-bypass - permissionMode: dangerously-bypass-approvals-and-sandbox - env: - DSH_CODEX_INSTANCE: bypass - - id: tool-subagent-codex-safe + providerName: codex-secondary + - id: tool-subagent-codex-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-safe - toolName: subagent_codex_safe + provider: codex-primary + toolName: subagent_codex_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-codex-bypass + - id: tool-subagent-codex-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-bypass - toolName: subagent_codex_bypass + provider: codex-secondary + toolName: subagent_codex_secondary backgroundMode: one-shot maxDepth: provider-managed diff --git a/examples/acp-agent/product-subagent-codex.cordis.yml b/examples/acp-agent/product-subagent-codex.cordis.yml index a27d4636e3..1ca4cf297e 100644 --- a/examples/acp-agent/product-subagent-codex.cordis.yml +++ b/examples/acp-agent/product-subagent-codex.cordis.yml @@ -7,31 +7,25 @@ path: ./cordis.yml patches: - insert: - - id: subagent-codex-safe + - id: subagent-codex-primary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-safe - permissionMode: never - env: - DSH_CODEX_INSTANCE: safe - - id: subagent-codex-bypass + providerName: codex-primary + - id: subagent-codex-secondary name: '@deepseek-ai/dsh-subagent-codex' config: - providerName: codex-bypass - permissionMode: dangerously-bypass-approvals-and-sandbox - env: - DSH_CODEX_INSTANCE: bypass - - id: tool-subagent-codex-safe + providerName: codex-secondary + - id: tool-subagent-codex-primary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-safe - toolName: subagent_codex_safe + provider: codex-primary + toolName: subagent_codex_primary backgroundMode: one-shot maxDepth: provider-managed - - id: tool-subagent-codex-bypass + - id: tool-subagent-codex-secondary name: '@deepseek-ai/dsh-tool-subagent' config: - provider: codex-bypass - toolName: subagent_codex_bypass + provider: codex-secondary + toolName: subagent_codex_secondary backgroundMode: one-shot maxDepth: provider-managed diff --git a/examples/acp-agent/tests/snapshots/product-subagent-both/tool-schemas.expected.json b/examples/acp-agent/tests/snapshots/product-subagent-both/tool-schemas.expected.json index 434e896fee..9d7cfdc26d 100644 --- a/examples/acp-agent/tests/snapshots/product-subagent-both/tool-schemas.expected.json +++ b/examples/acp-agent/tests/snapshots/product-subagent-both/tool-schemas.expected.json @@ -307,7 +307,7 @@ } }, { - "name": "subagent_claude_bypass", + "name": "subagent_claude_primary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", @@ -332,7 +332,7 @@ } }, { - "name": "subagent_claude_safe", + "name": "subagent_claude_secondary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", @@ -357,7 +357,7 @@ } }, { - "name": "subagent_codex_bypass", + "name": "subagent_codex_primary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", @@ -382,7 +382,7 @@ } }, { - "name": "subagent_codex_safe", + "name": "subagent_codex_secondary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", diff --git a/examples/acp-agent/tests/snapshots/product-subagent-codex/tool-schemas.expected.json b/examples/acp-agent/tests/snapshots/product-subagent-codex/tool-schemas.expected.json index cfb805d2ec..6fdb3bf877 100644 --- a/examples/acp-agent/tests/snapshots/product-subagent-codex/tool-schemas.expected.json +++ b/examples/acp-agent/tests/snapshots/product-subagent-codex/tool-schemas.expected.json @@ -307,7 +307,7 @@ } }, { - "name": "subagent_codex_bypass", + "name": "subagent_codex_primary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", @@ -332,7 +332,7 @@ } }, { - "name": "subagent_codex_safe", + "name": "subagent_codex_secondary", "description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.", "parameters": { "type": "object", diff --git a/packages/subagent/subagent-codex/tests/real-product.spec.ts b/packages/subagent/subagent-codex/tests/real-product.spec.ts index 1af3b46ce9..781ac8d041 100644 --- a/packages/subagent/subagent-codex/tests/real-product.spec.ts +++ b/packages/subagent/subagent-codex/tests/real-product.spec.ts @@ -53,7 +53,6 @@ interface RealHarness { readonly ctx: Context readonly handles: SubprocessHandle[] readonly parent: Agent - readonly providerName: string readonly env: Record readonly workspace: string } @@ -134,7 +133,6 @@ async function realRuntime(): Promise { async function realHarness( script: readonly ResponsesBehavior[], permissionMode?: CodexPermissionMode, - providerName = 'codex', ): Promise<{ readonly harness: RealHarness readonly fixture: ResponsesFixture @@ -142,7 +140,6 @@ async function realHarness( const instance = await realInstanceFixture(script) const { ctx, handles } = await realRuntime() await ctx.plugin(codex, { - providerName, env: instance.env, ...permissionMode === undefined ? {} : { permissionMode }, disposeGraceMs: 2_000, @@ -156,7 +153,6 @@ async function realHarness( ctx, handles, parent, - providerName, env: instance.env, workspace: instance.workspace, },