@kenkaiiii/ggcoder 5.11.0 → 5.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +25 -12
  2. package/dist/app-sidecar.js +69 -6
  3. package/dist/app-sidecar.js.map +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +60 -11
  6. package/dist/cli.js.map +1 -1
  7. package/dist/core/agent-session-subagent-policy.test.d.ts +2 -0
  8. package/dist/core/agent-session-subagent-policy.test.d.ts.map +1 -0
  9. package/dist/core/agent-session-subagent-policy.test.js +36 -0
  10. package/dist/core/agent-session-subagent-policy.test.js.map +1 -0
  11. package/dist/core/agent-session.d.ts +8 -1
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +26 -16
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/auth-providers.js +5 -5
  16. package/dist/core/auth-providers.js.map +1 -1
  17. package/dist/core/event-bus.d.ts +2 -0
  18. package/dist/core/event-bus.d.ts.map +1 -1
  19. package/dist/core/event-bus.js.map +1 -1
  20. package/dist/core/mcp/store.d.ts +2 -2
  21. package/dist/core/radio.d.ts +3 -0
  22. package/dist/core/radio.d.ts.map +1 -1
  23. package/dist/core/radio.js +54 -8
  24. package/dist/core/radio.js.map +1 -1
  25. package/dist/core/radio.test.d.ts +2 -0
  26. package/dist/core/radio.test.d.ts.map +1 -0
  27. package/dist/core/radio.test.js +45 -0
  28. package/dist/core/radio.test.js.map +1 -0
  29. package/dist/core/subagent-manager.d.ts +73 -0
  30. package/dist/core/subagent-manager.d.ts.map +1 -0
  31. package/dist/core/subagent-manager.js +408 -0
  32. package/dist/core/subagent-manager.js.map +1 -0
  33. package/dist/core/subagent-manager.test.d.ts +2 -0
  34. package/dist/core/subagent-manager.test.d.ts.map +1 -0
  35. package/dist/core/subagent-manager.test.js +86 -0
  36. package/dist/core/subagent-manager.test.js.map +1 -0
  37. package/dist/core/subagent-policy.d.ts +4 -0
  38. package/dist/core/subagent-policy.d.ts.map +1 -0
  39. package/dist/core/subagent-policy.js +19 -0
  40. package/dist/core/subagent-policy.js.map +1 -0
  41. package/dist/modes/subagent-worker-mode.d.ts +14 -0
  42. package/dist/modes/subagent-worker-mode.d.ts.map +1 -0
  43. package/dist/modes/subagent-worker-mode.js +185 -0
  44. package/dist/modes/subagent-worker-mode.js.map +1 -0
  45. package/dist/tools/index.d.ts +10 -2
  46. package/dist/tools/index.d.ts.map +1 -1
  47. package/dist/tools/index.js +17 -1
  48. package/dist/tools/index.js.map +1 -1
  49. package/dist/tools/subagent-control.d.ts +6 -0
  50. package/dist/tools/subagent-control.d.ts.map +1 -0
  51. package/dist/tools/subagent-control.js +95 -0
  52. package/dist/tools/subagent-control.js.map +1 -0
  53. package/dist/tools/subagent-control.test.d.ts +2 -0
  54. package/dist/tools/subagent-control.test.d.ts.map +1 -0
  55. package/dist/tools/subagent-control.test.js +40 -0
  56. package/dist/tools/subagent-control.test.js.map +1 -0
  57. package/dist/tools/subagent-shared.d.ts +24 -0
  58. package/dist/tools/subagent-shared.d.ts.map +1 -0
  59. package/dist/tools/subagent-shared.js +53 -0
  60. package/dist/tools/subagent-shared.js.map +1 -0
  61. package/dist/tools/subagent.d.ts.map +1 -1
  62. package/dist/tools/subagent.js +21 -64
  63. package/dist/tools/subagent.js.map +1 -1
  64. package/dist/tools/subagent.test.js +16 -0
  65. package/dist/tools/subagent.test.js.map +1 -1
  66. package/dist/ui/App.d.ts +2 -0
  67. package/dist/ui/App.d.ts.map +1 -1
  68. package/dist/ui/App.js +62 -2
  69. package/dist/ui/App.js.map +1 -1
  70. package/dist/ui/hooks/useModeState.d.ts +4 -2
  71. package/dist/ui/hooks/useModeState.d.ts.map +1 -1
  72. package/dist/ui/hooks/useModeState.js +14 -3
  73. package/dist/ui/hooks/useModeState.js.map +1 -1
  74. package/dist/ui/login.d.ts.map +1 -1
  75. package/dist/ui/login.js +13 -5
  76. package/dist/ui/login.js.map +1 -1
  77. package/dist/ui/render.d.ts +14 -0
  78. package/dist/ui/render.d.ts.map +1 -1
  79. package/dist/ui/render.js +2 -0
  80. package/dist/ui/render.js.map +1 -1
  81. package/dist/ui/render.test.js +17 -0
  82. package/dist/ui/render.test.js.map +1 -1
  83. package/package.json +4 -4
@@ -0,0 +1,19 @@
1
+ export const ASYNC_ORCHESTRATION_MARKER = "\n\n## Async subagent orchestration\n";
2
+ const ULTRA_ORCHESTRATION_PROMPT = `${ASYNC_ORCHESTRATION_MARKER}` +
3
+ `Proactively use spawn_agent for substantial independent workstreams. Start every independent child before calling wait_agent, and continue useful parent work while children run. ` +
4
+ `Use send_message to steer active work, followup_task to reuse an idle child's context, list_agents for status, interrupt_agent to stop a turn, and wait_agent to collect every required result before finalizing. ` +
5
+ `Keep small, tightly coupled, or sequential work in the parent. Children share the same workspace: parallel writes must target clearly disjoint files or subsystems. Delegation never expands scope or bypasses approval boundaries.`;
6
+ const EXPLICIT_ORCHESTRATION_PROMPT = `${ASYNC_ORCHESTRATION_MARKER}` +
7
+ `Use spawn_agent and the async agent controls only when the user or applicable project/skill instructions explicitly request delegation. Start independent children before waiting, avoid overlapping file edits, and collect required results before finalizing.`;
8
+ export function applyAsyncSubagentPolicy(prompt, provider, model, thinkingLevel, toolNames) {
9
+ const markerIndex = prompt.indexOf(ASYNC_ORCHESTRATION_MARKER);
10
+ const basePrompt = markerIndex === -1 ? prompt : prompt.slice(0, markerIndex);
11
+ const supportsPolicy = toolNames.includes("spawn_agent") &&
12
+ provider === "openai" &&
13
+ (model === "gpt-5.6-sol" || model === "gpt-5.6-terra");
14
+ if (!supportsPolicy)
15
+ return basePrompt;
16
+ return (basePrompt +
17
+ (thinkingLevel === "ultra" ? ULTRA_ORCHESTRATION_PROMPT : EXPLICIT_ORCHESTRATION_PROMPT));
18
+ }
19
+ //# sourceMappingURL=subagent-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-policy.js","sourceRoot":"","sources":["../../src/core/subagent-policy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,uCAAuC,CAAC;AAElF,MAAM,0BAA0B,GAC9B,GAAG,0BAA0B,EAAE;IAC/B,oLAAoL;IACpL,oNAAoN;IACpN,qOAAqO,CAAC;AAExO,MAAM,6BAA6B,GACjC,GAAG,0BAA0B,EAAE;IAC/B,kQAAkQ,CAAC;AAErQ,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,QAAkB,EAClB,KAAa,EACb,aAAwC,EACxC,SAA4B;IAE5B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,cAAc,GAClB,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;QACjC,QAAQ,KAAK,QAAQ;QACrB,CAAC,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,eAAe,CAAC,CAAC;IACzD,IAAI,CAAC,cAAc;QAAE,OAAO,UAAU,CAAC;IACvC,OAAO,CACL,UAAU;QACV,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,6BAA6B,CAAC,CACzF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
2
+ export interface SubagentWorkerInitialize {
3
+ provider: Provider;
4
+ model: string;
5
+ fallbackModel?: string;
6
+ cwd: string;
7
+ baseUrl?: string;
8
+ systemPrompt?: string;
9
+ thinkingLevel?: ThinkingLevel;
10
+ allowedTools?: string[];
11
+ promptCacheKey?: string;
12
+ }
13
+ export declare function runSubagentWorkerMode(): Promise<void>;
14
+ //# sourceMappingURL=subagent-worker-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-worker-mode.d.ts","sourceRoot":"","sources":["../../src/modes/subagent-worker-mode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKhE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAoBD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0K3D"}
@@ -0,0 +1,185 @@
1
+ import { createInterface } from "node:readline";
2
+ import { AgentSession } from "../core/agent-session.js";
3
+ import { isModelUnavailableError } from "../tools/subagent.js";
4
+ import { boundSubAgentOutput, SUB_AGENT_TIMEOUT_MS } from "../tools/subagent-shared.js";
5
+ function emit(frame) {
6
+ process.stdout.write(`${JSON.stringify(frame)}\n`);
7
+ }
8
+ function errorMessage(error) {
9
+ return error instanceof Error ? error.message : String(error);
10
+ }
11
+ export async function runSubagentWorkerMode() {
12
+ let session;
13
+ let initializeOptions;
14
+ let state = "uninitialized";
15
+ let controller = new AbortController();
16
+ let activeTurn;
17
+ let turnTimer;
18
+ let output = "";
19
+ let producedToolCall = false;
20
+ const setState = (next, extra = {}) => {
21
+ state = next;
22
+ emit({ type: "state", state: next, ...extra });
23
+ };
24
+ const wireEvents = (activeSession) => {
25
+ const forwarded = [
26
+ "thinking_delta",
27
+ "tool_call_start",
28
+ "tool_call_update",
29
+ "tool_call_end",
30
+ "turn_end",
31
+ "max_turns",
32
+ "server_tool_call",
33
+ "server_tool_result",
34
+ ];
35
+ activeSession.eventBus.on("text_delta", (payload) => {
36
+ if (output.length < 200_000)
37
+ output += payload.text;
38
+ emit({ type: "event", event: "text_delta", payload });
39
+ });
40
+ for (const event of forwarded) {
41
+ activeSession.eventBus.on(event, (payload) => {
42
+ if (event === "tool_call_start")
43
+ producedToolCall = true;
44
+ emit({ type: "event", event, payload });
45
+ });
46
+ }
47
+ };
48
+ const createSession = async (options) => {
49
+ const { fallbackModel: _fallbackModel, ...sessionOptions } = options;
50
+ const next = new AgentSession({
51
+ ...sessionOptions,
52
+ maxTurns: 50,
53
+ transient: true,
54
+ signal: controller.signal,
55
+ subagentWorker: true,
56
+ });
57
+ wireEvents(next);
58
+ await next.initialize();
59
+ return next;
60
+ };
61
+ const runTurn = (task) => {
62
+ if (!session)
63
+ throw new Error("Worker is not initialized");
64
+ if (state === "running")
65
+ throw new Error("Worker already has an active turn");
66
+ output = "";
67
+ producedToolCall = false;
68
+ controller = new AbortController();
69
+ session.setSignal(controller.signal);
70
+ setState("running");
71
+ turnTimer = setTimeout(() => controller.abort(), SUB_AGENT_TIMEOUT_MS);
72
+ activeTurn = (async () => {
73
+ try {
74
+ await session.prompt(task);
75
+ }
76
+ catch (error) {
77
+ const message = errorMessage(error);
78
+ const fallbackModel = initializeOptions?.fallbackModel;
79
+ if (fallbackModel &&
80
+ !controller.signal.aborted &&
81
+ !output &&
82
+ !producedToolCall &&
83
+ isModelUnavailableError(message)) {
84
+ await session.dispose();
85
+ initializeOptions = {
86
+ ...initializeOptions,
87
+ model: fallbackModel,
88
+ fallbackModel: undefined,
89
+ };
90
+ session = await createSession(initializeOptions);
91
+ await session.prompt(task);
92
+ }
93
+ else {
94
+ throw error;
95
+ }
96
+ }
97
+ clearTimeout(turnTimer);
98
+ setState("idle");
99
+ emit({ type: "turn_complete", status: "completed", output: boundSubAgentOutput(output) });
100
+ })()
101
+ .catch((error) => {
102
+ clearTimeout(turnTimer);
103
+ const interrupted = controller.signal.aborted;
104
+ setState(interrupted ? "interrupted" : "idle");
105
+ emit({
106
+ type: "turn_complete",
107
+ status: interrupted ? "interrupted" : "failed",
108
+ output: boundSubAgentOutput(output),
109
+ error: interrupted ? "Interrupted" : errorMessage(error),
110
+ });
111
+ })
112
+ .finally(() => {
113
+ activeTurn = undefined;
114
+ });
115
+ };
116
+ const acknowledge = (requestId, result = {}) => emit({ type: "ack", request_id: requestId, ok: true, ...result });
117
+ const reject = (requestId, error) => emit({ type: "ack", request_id: requestId, ok: false, error: errorMessage(error) });
118
+ const handle = async (command) => {
119
+ try {
120
+ switch (command.command) {
121
+ case "initialize": {
122
+ if (session)
123
+ throw new Error("Worker is already initialized");
124
+ initializeOptions = command.options;
125
+ session = await createSession(initializeOptions);
126
+ setState("idle");
127
+ acknowledge(command.request_id);
128
+ return;
129
+ }
130
+ case "start":
131
+ case "followup":
132
+ if (!session)
133
+ throw new Error("Worker is not initialized");
134
+ if (state === "running")
135
+ throw new Error("Worker already has an active turn");
136
+ acknowledge(command.request_id, { status: "running" });
137
+ runTurn(command.task);
138
+ return;
139
+ case "queue_message": {
140
+ if (!session || state !== "running")
141
+ throw new Error("Worker is not running");
142
+ const queued = session.queueMessage(command.message);
143
+ acknowledge(command.request_id, { queued });
144
+ return;
145
+ }
146
+ case "interrupt":
147
+ if (!session || state !== "running")
148
+ throw new Error("Worker is not running");
149
+ controller.abort();
150
+ acknowledge(command.request_id);
151
+ return;
152
+ case "shutdown":
153
+ controller.abort();
154
+ await activeTurn?.catch(() => undefined);
155
+ await session?.dispose();
156
+ setState("closed");
157
+ acknowledge(command.request_id);
158
+ process.exitCode = 0;
159
+ return;
160
+ }
161
+ }
162
+ catch (error) {
163
+ reject(command.request_id, error);
164
+ }
165
+ };
166
+ const lines = createInterface({ input: process.stdin, terminal: false });
167
+ lines.on("line", (line) => {
168
+ let command;
169
+ try {
170
+ command = JSON.parse(line);
171
+ if (!command.request_id || !command.command)
172
+ throw new Error("Invalid command frame");
173
+ }
174
+ catch (error) {
175
+ emit({ type: "protocol_error", error: errorMessage(error) });
176
+ return;
177
+ }
178
+ void handle(command);
179
+ });
180
+ await new Promise((resolve) => lines.once("close", resolve));
181
+ controller.abort();
182
+ await activeTurn?.catch(() => undefined);
183
+ await session?.dispose();
184
+ }
185
+ //# sourceMappingURL=subagent-worker-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-worker-mode.js","sourceRoot":"","sources":["../../src/modes/subagent-worker-mode.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { AgentTool } from "@kenkaiiii/gg-agent";
2
+ import type { Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
3
+ import { SubAgentManager, type SubAgentSnapshot } from "../core/subagent-manager.js";
2
4
  import { ProcessManager } from "../core/process-manager.js";
3
5
  import { LspManager } from "../core/lsp/manager.js";
4
6
  import { type GenerateImageAuth } from "./generate-image.js";
@@ -8,7 +10,7 @@ import type { Skill } from "../core/skills.js";
8
10
  export interface CreateToolsOptions {
9
11
  agents?: AgentDefinition[];
10
12
  skills?: Skill[];
11
- provider?: string;
13
+ provider?: Provider;
12
14
  model?: string;
13
15
  /** Custom I/O operations for remote execution (SSH, Docker, etc.). Defaults to local filesystem. */
14
16
  operations?: ToolOperations;
@@ -40,8 +42,13 @@ export interface CreateToolsOptions {
40
42
  */
41
43
  getCacheKey?: () => string | undefined;
42
44
  /** Current parent provider/model, evaluated lazily when spawning a sub-agent. */
43
- getProvider?: () => string;
45
+ getProvider?: () => Provider;
44
46
  getModel?: () => string;
47
+ getThinkingLevel?: () => ThinkingLevel | undefined;
48
+ getBaseUrl?: () => string | undefined;
49
+ onSubAgentState?: (snapshot: SubAgentSnapshot) => void;
50
+ /** Persistent child workers omit async orchestration to enforce one-level fan-out. */
51
+ disableAsyncSubagents?: boolean;
45
52
  /**
46
53
  * Append LSP diagnostics to edit/write results (default true). Servers are
47
54
  * resolved from the project/PATH only and spawn lazily on the first edit of
@@ -77,6 +84,7 @@ export interface CreateToolsResult {
77
84
  * `shutdownAll()` into their exit/cleanup paths alongside processManager.
78
85
  */
79
86
  lspManager?: LspManager;
87
+ subAgentManager?: SubAgentManager;
80
88
  }
81
89
  export declare function createTools(cwd: string, opts?: CreateToolsOptions): Promise<CreateToolsResult>;
82
90
  export { createReadTool } from "./read.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { SubAgentManager } from "../core/subagent-manager.js";
1
2
  import { ProcessManager } from "../core/process-manager.js";
2
3
  import { LspManager } from "../core/lsp/manager.js";
3
4
  import { createReadTool } from "./read.js";
@@ -10,6 +11,7 @@ import { createGrepTool } from "./grep.js";
10
11
  import { createSearchCodeTool } from "./search-code.js";
11
12
  import { createLsTool } from "./ls.js";
12
13
  import { createSubAgentTool } from "./subagent.js";
14
+ import { createSubAgentControlTools } from "./subagent-control.js";
13
15
  import { createWebFetchTool } from "./web-fetch.js";
14
16
  import { createWebSearchTool } from "./web-search.js";
15
17
  import { createSourcePathTool } from "./source-path.js";
@@ -62,8 +64,22 @@ export async function createTools(cwd, opts) {
62
64
  if (opts?.provider && opts.provider !== "anthropic") {
63
65
  tools.push(createWebSearchTool());
64
66
  }
67
+ let subAgentManager;
65
68
  if (opts?.agents && opts.agents.length > 0 && opts.provider && opts.model) {
66
69
  tools.push(createSubAgentTool(cwd, opts.agents, () => opts.getProvider?.() ?? opts.provider, () => opts.getModel?.() ?? opts.model, opts.getCacheKey, planModeRef));
70
+ if (!opts.disableAsyncSubagents) {
71
+ subAgentManager = new SubAgentManager({
72
+ cwd,
73
+ agents: opts.agents,
74
+ getProvider: () => opts.getProvider?.() ?? opts.provider,
75
+ getModel: () => opts.getModel?.() ?? opts.model,
76
+ getThinkingLevel: () => opts.getThinkingLevel?.(),
77
+ getCacheKey: opts.getCacheKey,
78
+ getBaseUrl: opts.getBaseUrl,
79
+ onState: opts.onSubAgentState,
80
+ });
81
+ tools.push(...createSubAgentControlTools(subAgentManager, planModeRef));
82
+ }
67
83
  }
68
84
  if (opts?.skills && opts.skills.length > 0) {
69
85
  tools.push(createSkillTool(opts.skills));
@@ -88,7 +104,7 @@ export async function createTools(cwd, opts) {
88
104
  }
89
105
  }
90
106
  const rebuildReadTool = (model) => createReadTool(cwd, readFiles, ops, opts?.onFileRead, getVideoByteLimit(model));
91
- return { tools, processManager, rebuildReadTool, lspManager };
107
+ return { tools, processManager, rebuildReadTool, lspManager, subAgentManager };
92
108
  }
93
109
  export { createReadTool } from "./read.js";
94
110
  export { createWriteTool } from "./write.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentTool } from "@kenkaiiii/gg-agent";
2
+ import type { SubAgentManager } from "../core/subagent-manager.js";
3
+ export declare function createSubAgentControlTools(manager: SubAgentManager, planModeRef?: {
4
+ current: boolean;
5
+ }): AgentTool[];
6
+ //# sourceMappingURL=subagent-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-control.d.ts","sourceRoot":"","sources":["../../src/tools/subagent-control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AASnE,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GACjC,SAAS,EAAE,CA+Fb"}
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ import { isPlanModeActive, planModeRestriction } from "../core/runtime-mode.js";
3
+ const AgentId = z.string().min(1).describe("Eight-character agent ID returned by spawn_agent");
4
+ function json(value) {
5
+ return { content: JSON.stringify(value) };
6
+ }
7
+ export function createSubAgentControlTools(manager, planModeRef) {
8
+ const blocked = (name) => isPlanModeActive(planModeRef) ? planModeRestriction(name) : undefined;
9
+ const spawnParams = z.object({
10
+ task_name: z.string().min(1).describe("Short unique name for this delegated task"),
11
+ task: z.string().min(1).describe("Standalone task instruction for the child agent"),
12
+ agent: z.string().optional().describe("Optional named agent definition"),
13
+ });
14
+ const spawnTool = {
15
+ name: "spawn_agent",
16
+ description: "Start an isolated persistent child agent and return immediately after launch. Start all independent agents before waiting; shared files are not isolated.",
17
+ parameters: spawnParams,
18
+ executionMode: "parallel",
19
+ async execute(args) {
20
+ const restriction = blocked("spawn_agent");
21
+ if (restriction)
22
+ return restriction;
23
+ return json(await manager.spawn(args.task_name, args.task, args.agent));
24
+ },
25
+ };
26
+ const messageParams = z.object({ agent_id: AgentId, message: z.string().min(1) });
27
+ const messageTool = {
28
+ name: "send_message",
29
+ description: "Queue steering into a running child agent without starting another turn.",
30
+ parameters: messageParams,
31
+ async execute(args) {
32
+ const restriction = blocked("send_message");
33
+ if (restriction)
34
+ return restriction;
35
+ return json({
36
+ agent_id: args.agent_id,
37
+ queued: await manager.sendMessage(args.agent_id, args.message),
38
+ });
39
+ },
40
+ };
41
+ const followupParams = z.object({ agent_id: AgentId, task: z.string().min(1) });
42
+ const followupTool = {
43
+ name: "followup_task",
44
+ description: "Start another turn in an idle child while preserving that child's context.",
45
+ parameters: followupParams,
46
+ async execute(args) {
47
+ const restriction = blocked("followup_task");
48
+ if (restriction)
49
+ return restriction;
50
+ return json(await manager.followup(args.agent_id, args.task));
51
+ },
52
+ };
53
+ const waitParams = z.object({
54
+ agent_ids: z
55
+ .array(AgentId)
56
+ .optional()
57
+ .describe("Agents to wait for; omitted means active agents"),
58
+ condition: z.enum(["any", "all"]).optional().describe("Default: any"),
59
+ timeout_ms: z
60
+ .number()
61
+ .int()
62
+ .min(0)
63
+ .max(300_000)
64
+ .optional()
65
+ .describe("Default 30000; max 300000"),
66
+ });
67
+ const waitTool = {
68
+ name: "wait_agent",
69
+ description: "Wait for any or all requested child agents and return bounded result snapshots.",
70
+ parameters: waitParams,
71
+ async execute(args) {
72
+ return json(await manager.wait(args.agent_ids, args.condition, args.timeout_ms));
73
+ },
74
+ };
75
+ const listParams = z.object({});
76
+ const listTool = {
77
+ name: "list_agents",
78
+ description: "List child IDs, task names, lifecycle states, activity, turns, tools, and token totals.",
79
+ parameters: listParams,
80
+ async execute() {
81
+ return json(manager.list().map(({ output: _output, error: _error, ...summary }) => summary));
82
+ },
83
+ };
84
+ const interruptParams = z.object({ agent_id: AgentId });
85
+ const interruptTool = {
86
+ name: "interrupt_agent",
87
+ description: "Interrupt a child's current turn while retaining its context for a later follow-up.",
88
+ parameters: interruptParams,
89
+ async execute(args) {
90
+ return json(await manager.interrupt(args.agent_id));
91
+ },
92
+ };
93
+ return [spawnTool, messageTool, followupTool, waitTool, listTool, interruptTool];
94
+ }
95
+ //# sourceMappingURL=subagent-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-control.js","sourceRoot":"","sources":["../../src/tools/subagent-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=subagent-control.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-control.test.d.ts","sourceRoot":"","sources":["../../src/tools/subagent-control.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { createSubAgentControlTools } from "./subagent-control.js";
3
+ function fakeManager() {
4
+ return {
5
+ spawn: vi.fn(async (taskName) => ({
6
+ agent_id: "12345678",
7
+ task_name: taskName,
8
+ state: "running",
9
+ })),
10
+ sendMessage: vi.fn(async () => 1),
11
+ followup: vi.fn(async () => ({ agent_id: "12345678", state: "running" })),
12
+ wait: vi.fn(async () => ({ timed_out: false, agents: [] })),
13
+ list: vi.fn(() => []),
14
+ interrupt: vi.fn(async () => ({ agent_id: "12345678", state: "interrupted" })),
15
+ };
16
+ }
17
+ const context = { signal: new AbortController().signal, toolCallId: "test" };
18
+ describe("async subagent control tools", () => {
19
+ it("registers the six concise control surfaces", () => {
20
+ expect(createSubAgentControlTools(fakeManager()).map((tool) => tool.name)).toEqual([
21
+ "spawn_agent",
22
+ "send_message",
23
+ "followup_task",
24
+ "wait_agent",
25
+ "list_agents",
26
+ "interrupt_agent",
27
+ ]);
28
+ });
29
+ it("launches through the manager and blocks mutating lifecycle calls in plan mode", async () => {
30
+ const manager = fakeManager();
31
+ const planModeRef = { current: false };
32
+ const tools = createSubAgentControlTools(manager, planModeRef);
33
+ const spawn = tools.find((tool) => tool.name === "spawn_agent");
34
+ await expect(spawn.execute({ task_name: "scan", task: "inspect" }, context)).resolves.toMatchObject({ content: expect.stringContaining("12345678") });
35
+ expect(manager.spawn).toHaveBeenCalledWith("scan", "inspect", undefined);
36
+ planModeRef.current = true;
37
+ await expect(spawn.execute({ task_name: "blocked", task: "write" }, context)).resolves.toContain("plan mode");
38
+ });
39
+ });
40
+ //# sourceMappingURL=subagent-control.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-control.test.js","sourceRoot":"","sources":["../../src/tools/subagent-control.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,SAAS,WAAW;IAClB,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE,CAAC,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACzE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACrB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;KACjD,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAE7E,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACjF,aAAa;YACb,cAAc;YACd,eAAe;YACf,YAAY;YACZ,aAAa;YACb,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAE,CAAC;QACjE,MAAM,MAAM,CACV,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAC/D,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,MAAM,MAAM,CACV,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAChE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
2
+ import type { AgentDefinition } from "../core/agents.js";
3
+ export declare const SUB_AGENT_MAX_TURNS = 50;
4
+ export declare const SUB_AGENT_MAX_OUTPUT_CHARS = 100000;
5
+ export declare const SUB_AGENT_MAX_OUTPUT_LINES = 500;
6
+ export declare const SUB_AGENT_MAX_STDERR_CHARS = 10000;
7
+ export declare const SUB_AGENT_TIMEOUT_MS: number;
8
+ export declare const SUB_AGENT_DEPTH_ENV = "GG_SUBAGENT_DEPTH";
9
+ export declare const MAX_BLOCKING_SUBAGENT_DEPTH = 3;
10
+ export interface SubAgentSelection {
11
+ agentDef?: AgentDefinition;
12
+ provider: Provider;
13
+ parentModel: string;
14
+ model: string;
15
+ }
16
+ export declare function resolveAgentDefinition(agents: AgentDefinition[], requestedName?: string): AgentDefinition | undefined;
17
+ export declare function selectSubAgent(agents: AgentDefinition[], requestedName: string | undefined, provider: Provider, parentModel: string): SubAgentSelection;
18
+ export declare function childThinkingLevel(level: ThinkingLevel | undefined): ThinkingLevel | undefined;
19
+ export declare function subAgentCacheKey(parentCacheKey: string | undefined): string | undefined;
20
+ export declare function currentSubAgentDepth(env?: NodeJS.ProcessEnv): number;
21
+ export declare function childSubAgentEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
22
+ export declare function resolveSubAgentCliEntry(): string;
23
+ export declare function boundSubAgentOutput(raw: string): string;
24
+ //# sourceMappingURL=subagent-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-shared.d.ts","sourceRoot":"","sources":["../../src/tools/subagent-shared.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAClD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,oBAAoB,QAAiB,CAAC;AACnD,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EAAE,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,GAAG,SAAS,CAG7B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EAAE,EACzB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAYnB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAE9F;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAExF;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASvD"}
@@ -0,0 +1,53 @@
1
+ import { existsSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { getFastModel } from "../core/model-registry.js";
4
+ import { truncateTail } from "./truncate.js";
5
+ const MUTATING_TOOLS = new Set(["write", "edit"]);
6
+ export const SUB_AGENT_MAX_TURNS = 50;
7
+ export const SUB_AGENT_MAX_OUTPUT_CHARS = 100_000;
8
+ export const SUB_AGENT_MAX_OUTPUT_LINES = 500;
9
+ export const SUB_AGENT_MAX_STDERR_CHARS = 10_000;
10
+ export const SUB_AGENT_TIMEOUT_MS = 10 * 60 * 1000;
11
+ export const SUB_AGENT_DEPTH_ENV = "GG_SUBAGENT_DEPTH";
12
+ export const MAX_BLOCKING_SUBAGENT_DEPTH = 3;
13
+ export function resolveAgentDefinition(agents, requestedName) {
14
+ if (!requestedName)
15
+ return undefined;
16
+ return agents.find((agent) => agent.name.toLowerCase() === requestedName.toLowerCase());
17
+ }
18
+ export function selectSubAgent(agents, requestedName, provider, parentModel) {
19
+ const agentDef = resolveAgentDefinition(agents, requestedName);
20
+ const readOnly = !!agentDef &&
21
+ agentDef.tools.length > 0 &&
22
+ !agentDef.tools.some((tool) => MUTATING_TOOLS.has(tool.toLowerCase()));
23
+ return {
24
+ agentDef,
25
+ provider,
26
+ parentModel,
27
+ model: readOnly ? getFastModel(provider, parentModel).id : parentModel,
28
+ };
29
+ }
30
+ export function childThinkingLevel(level) {
31
+ return level === "ultra" ? "max" : level;
32
+ }
33
+ export function subAgentCacheKey(parentCacheKey) {
34
+ return parentCacheKey ? `${parentCacheKey}:subagent` : undefined;
35
+ }
36
+ export function currentSubAgentDepth(env = process.env) {
37
+ const parsed = Number.parseInt(env[SUB_AGENT_DEPTH_ENV] ?? "0", 10);
38
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : 0;
39
+ }
40
+ export function childSubAgentEnv(env = process.env) {
41
+ return { ...env, [SUB_AGENT_DEPTH_ENV]: String(currentSubAgentDepth(env) + 1) };
42
+ }
43
+ export function resolveSubAgentCliEntry() {
44
+ const cliPath = fileURLToPath(new URL("../cli.js", import.meta.url));
45
+ return existsSync(cliPath) ? cliPath : process.argv[1];
46
+ }
47
+ export function boundSubAgentOutput(raw) {
48
+ const result = truncateTail(raw || "(no output)", SUB_AGENT_MAX_OUTPUT_LINES, SUB_AGENT_MAX_OUTPUT_CHARS);
49
+ return result.truncated
50
+ ? `[Sub-agent output truncated: ${result.totalLines} total lines, showing last ${result.keptLines}]\n\n${result.content}`
51
+ : result.content;
52
+ }
53
+ //# sourceMappingURL=subagent-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-shared.js","sourceRoot":"","sources":["../../src/tools/subagent-shared.ts"],"names":[],"mappings":"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"}