Parcourir la source

test(subagent): narrow named instance evidence

pku-xht il y a 1 mois
Parent
commit
cf16ee41bf

+ 20 - 32
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

+ 20 - 32
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

+ 10 - 16
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

+ 10 - 16
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

+ 4 - 4
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",

+ 2 - 2
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",

+ 0 - 4
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<string, string>
   readonly workspace: string
 }
@@ -134,7 +133,6 @@ async function realRuntime(): Promise<RealRuntime> {
 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,
     },