Просмотр исходного кода

fix: ensure commands listing subagent work

Aiden Cline 1 месяц назад
Родитель
Сommit
625c9dae5c
2 измененных файлов с 13 добавлено и 9 удалено
  1. 1 0
      packages/opencode/src/session/prompt.ts
  2. 12 9
      packages/opencode/src/tool/task.ts

+ 1 - 0
packages/opencode/src/session/prompt.ts

@@ -382,6 +382,7 @@ export namespace SessionPrompt {
           messageID: assistantMessage.id,
           sessionID: sessionID,
           abort,
+          extra: { bypassAgentCheck: true },
           async metadata(input) {
             await Session.updatePart({
               ...part,

+ 12 - 9
packages/opencode/src/tool/task.ts

@@ -30,15 +30,18 @@ export const TaskTool = Tool.define("task", async () => {
     }),
     async execute(params, ctx) {
       const config = await Config.get()
-      await ctx.ask({
-        permission: "task",
-        patterns: [params.subagent_type],
-        always: ["*"],
-        metadata: {
-          description: params.description,
-          subagent_type: params.subagent_type,
-        },
-      })
+      // Skip permission check when invoked from a command subtask (user already approved by invoking the command)
+      if (!ctx.extra?.bypassAgentCheck) {
+        await ctx.ask({
+          permission: "task",
+          patterns: [params.subagent_type],
+          always: ["*"],
+          metadata: {
+            description: params.description,
+            subagent_type: params.subagent_type,
+          },
+        })
+      }
 
       const agent = await Agent.get(params.subagent_type)
       if (!agent) throw new Error(`Unknown agent type: ${params.subagent_type} is not a valid agent type`)