@qduc/term2 0.10.0 → 0.11.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.
- package/dist/agent.d.ts +7 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +20 -14
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +10 -11
- package/dist/app.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts +10 -0
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -0
- package/dist/components/layout/BackgroundTasksPanel.js +60 -0
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -0
- package/dist/components/layout/BottomArea.d.ts +3 -0
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +3 -1
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +33 -30
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts +1 -0
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +27 -4
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/MessageList.js +1 -1
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/SubagentActivityMessage.d.ts +1 -0
- package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +3 -3
- package/dist/components/message/SubagentActivityMessage.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +10 -0
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +35 -8
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +4 -0
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +3 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +23 -1
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/lib/agent-client.d.ts +16 -1
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +22 -1
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +2 -0
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +7 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +2 -0
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +37 -3
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +115 -8
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/prompts/async-subagent-delegation.d.ts +9 -0
- package/dist/prompts/async-subagent-delegation.d.ts.map +1 -0
- package/dist/prompts/async-subagent-delegation.js +36 -0
- package/dist/prompts/async-subagent-delegation.js.map +1 -0
- package/dist/prompts/async-subagent-delegation.ts +45 -0
- package/dist/prompts/orchestrator.md +16 -3
- package/dist/prompts/prompt-constructor.d.ts +1 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +5 -1
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +51 -0
- package/dist/prompts/prompt-constructor.ts +7 -0
- package/dist/prompts/subagent-delegation.d.ts.map +1 -1
- package/dist/prompts/subagent-delegation.js +2 -1
- package/dist/prompts/subagent-delegation.js.map +1 -1
- package/dist/prompts/subagent-delegation.ts +2 -1
- package/dist/services/agent-runtime/execution-budget.d.ts +6 -0
- package/dist/services/agent-runtime/execution-budget.d.ts.map +1 -1
- package/dist/services/agent-runtime/execution-budget.js +32 -24
- package/dist/services/agent-runtime/execution-budget.js.map +1 -1
- package/dist/services/agent-runtime/permission-resolver.js +1 -1
- package/dist/services/agent-runtime/permission-resolver.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +12 -2
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.js +5 -4
- package/dist/services/approval/shell-sandbox-approval.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +2 -0
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +12 -1
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +138 -22
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +1 -0
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +22 -0
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +40 -0
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-store.d.ts +6 -0
- package/dist/services/conversation/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation/conversation-store.js +17 -0
- package/dist/services/conversation/conversation-store.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +13 -0
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts +1 -0
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/logging/conversation-logger.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.js +1 -0
- package/dist/services/logging/conversation-logger.js.map +1 -1
- package/dist/services/plan-mode-interceptor.js +2 -2
- package/dist/services/plan-mode-interceptor.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +23 -0
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +65 -1
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +7 -1
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +2 -0
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +15 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +23 -0
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts +3 -0
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +33 -7
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts +5 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +40 -2
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/runtime.d.ts +2 -0
- package/dist/services/subagents/runtime.d.ts.map +1 -1
- package/dist/services/subagents/runtime.js +20 -0
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +39 -0
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -0
- package/dist/services/subagents/subagent-async-registry.js +233 -0
- package/dist/services/subagents/subagent-async-registry.js.map +1 -0
- package/dist/services/subagents/subagent-manager.d.ts +17 -0
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +45 -1
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +89 -0
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -0
- package/dist/services/subagents/subagent-notification-store.js +167 -0
- package/dist/services/subagents/subagent-notification-store.js.map +1 -0
- package/dist/services/subagents/subagent-session.d.ts +12 -1
- package/dist/services/subagents/subagent-session.d.ts.map +1 -1
- package/dist/services/subagents/subagent-session.js +29 -6
- package/dist/services/subagents/subagent-session.js.map +1 -1
- package/dist/services/subagents/types.d.ts +11 -0
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js +1 -0
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +6 -0
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +21 -0
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/tools/agent/run-subagent-async.d.ts +25 -0
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -0
- package/dist/tools/agent/run-subagent-async.js +178 -0
- package/dist/tools/agent/run-subagent-async.js.map +1 -0
- package/dist/tools/system/shell.d.ts +1 -3
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +32 -15
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +1 -0
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +10 -0
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts +8 -0
- package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control-grants.js +21 -0
- package/dist/utils/shell/sandbox/docker-host-control-grants.js.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control.d.ts +21 -0
- package/dist/utils/shell/sandbox/docker-host-control.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control.js +132 -0
- package/dist/utils/shell/sandbox/docker-host-control.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts +8 -1
- package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-failure-classifier.js +13 -1
- package/dist/utils/shell/sandbox/sandbox-failure-classifier.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts +2 -1
- package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-network-approval.js +17 -1
- package/dist/utils/shell/sandbox/sandbox-network-approval.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-network-store.d.ts +20 -0
- package/dist/utils/shell/sandbox/sandbox-network-store.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-network-store.js +99 -0
- package/dist/utils/shell/sandbox/sandbox-network-store.js.map +1 -0
- package/dist/utils/streaming/extract-command-messages.d.ts +2 -0
- package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/streaming/extract-command-messages.js +26 -4
- package/dist/utils/streaming/extract-command-messages.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../source/lib/agent-factory.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,cAAc,EAAa,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG5G,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,wBAAwB,IAAI,8BAA8B,EAC1D,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../source/lib/agent-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import type { ExecutionContext } from '../services/execution-context.js';
|
|
|
5
5
|
import type { SubagentResult } from '../services/subagents/types.js';
|
|
6
6
|
import type { AgentRuntime } from '../services/agent-runtime/agent-runtime.js';
|
|
7
7
|
import type { SkillsService } from '../services/skills/skills-service.js';
|
|
8
|
+
import type { SubagentRunHandle } from '../services/subagents/types.js';
|
|
8
9
|
export interface SubagentBridgeDeps {
|
|
9
10
|
logger: ILoggingService;
|
|
10
11
|
settings: ISettingsService;
|
|
@@ -30,6 +31,13 @@ export declare class SubagentBridge {
|
|
|
30
31
|
#private;
|
|
31
32
|
constructor(deps: SubagentBridgeDeps);
|
|
32
33
|
setEventSink(sink: ((event: ConversationEvent) => void) | null): void;
|
|
34
|
+
/**
|
|
35
|
+
* Conversation-scoped sink that outlives individual turns. Unlike
|
|
36
|
+
* {@link setEventSink}, it is never torn down at turn end, so subagent
|
|
37
|
+
* activity that settles while the conversation is idle is still observed
|
|
38
|
+
* instead of being buffered until the next turn attaches a sink.
|
|
39
|
+
*/
|
|
40
|
+
setBackgroundEventSink(sink: ((event: ConversationEvent) => void) | null): void;
|
|
33
41
|
/**
|
|
34
42
|
* Obtain an AgentRuntime backed by this bridge's SubagentManager.
|
|
35
43
|
* This is the stable production boundary for creating and running
|
|
@@ -41,16 +49,42 @@ export declare class SubagentBridge {
|
|
|
41
49
|
clearSubagentCache(): void;
|
|
42
50
|
clearCache(): void;
|
|
43
51
|
get activeSubagentsCount(): number;
|
|
44
|
-
/** Abort signal shared by
|
|
52
|
+
/** Abort signal shared by the foreground subagent runs of the current turn. */
|
|
45
53
|
get signal(): AbortSignal;
|
|
46
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Conversation-scoped abort signal for background (async) runs. It is never
|
|
56
|
+
* reset or aborted by turn boundaries, only by {@link cancelBackgroundRuns}.
|
|
57
|
+
*/
|
|
58
|
+
get backgroundSignal(): AbortSignal;
|
|
59
|
+
/** Replace the per-turn abort controller so a new parent run starts fresh. */
|
|
47
60
|
resetAbortController(): void;
|
|
48
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Abort the foreground subagent runs of the current turn and prepare a fresh
|
|
63
|
+
* controller. Background runs are conversation-bound and are deliberately
|
|
64
|
+
* left alone; use {@link cancelBackgroundRuns} for those.
|
|
65
|
+
*/
|
|
49
66
|
abort(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Cancel every conversation-bound background run. Reserved for an explicit
|
|
69
|
+
* user interrupt, conversation disposal, or shutdown.
|
|
70
|
+
*/
|
|
71
|
+
cancelBackgroundRuns(): void;
|
|
50
72
|
createMentor: (question: string) => Promise<string>;
|
|
51
73
|
runSubagent: (params: {
|
|
52
74
|
role: string;
|
|
53
75
|
task: string;
|
|
54
76
|
}, _context?: unknown, details?: unknown) => Promise<SubagentResult>;
|
|
77
|
+
runSubagentAsync: (params: {
|
|
78
|
+
role: string;
|
|
79
|
+
task: string;
|
|
80
|
+
continue_run_id?: string;
|
|
81
|
+
}, _context?: unknown, details?: unknown) => Promise<SubagentRunHandle>;
|
|
82
|
+
getSubagentResult: (params: {
|
|
83
|
+
runId: string;
|
|
84
|
+
}, _context?: unknown, details?: unknown) => Promise<SubagentResult>;
|
|
85
|
+
abortAsyncRun: (runId: string) => void;
|
|
86
|
+
resetAsyncRuns: () => void;
|
|
87
|
+
/** @deprecated Ordinary turns do not cancel async runs. */
|
|
88
|
+
cancelAsyncRuns: () => void;
|
|
55
89
|
}
|
|
56
90
|
//# sourceMappingURL=subagent-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-bridge.d.ts","sourceRoot":"","sources":["../../source/lib/subagent-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-bridge.d.ts","sourceRoot":"","sources":["../../source/lib/subagent-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,19 @@ export class SubagentBridge {
|
|
|
4
4
|
#subagentManager;
|
|
5
5
|
#sessionContextService;
|
|
6
6
|
#subagentEventSink = null;
|
|
7
|
+
#backgroundEventSink = null;
|
|
8
|
+
#backgroundRunIds = new Set();
|
|
7
9
|
#activeSubagentsCount = 0;
|
|
8
10
|
#pendingClearSink = false;
|
|
11
|
+
#bufferedEvents = [];
|
|
9
12
|
#logger;
|
|
13
|
+
/** Per-turn scope: foreground subagent work belonging to the running turn. */
|
|
10
14
|
#abortController = new AbortController();
|
|
15
|
+
/**
|
|
16
|
+
* Conversation scope: background (async) runs outlive the turn that launched
|
|
17
|
+
* them, so they must not share the per-turn controller.
|
|
18
|
+
*/
|
|
19
|
+
#backgroundAbortController = new AbortController();
|
|
11
20
|
constructor(deps) {
|
|
12
21
|
this.#logger = deps.logger;
|
|
13
22
|
this.#sessionContextService = deps.sessionContextService;
|
|
@@ -20,7 +29,7 @@ export class SubagentBridge {
|
|
|
20
29
|
settings: deps.settings,
|
|
21
30
|
executionContext: deps.executionContext,
|
|
22
31
|
sessionContextService: deps.sessionContextService,
|
|
23
|
-
onEvent: (event) => this.#
|
|
32
|
+
onEvent: (event) => this.#emitEvent(event),
|
|
24
33
|
agentClient: { chat: (message, options) => deps.chat(message, options) },
|
|
25
34
|
createClient: deps.createClient,
|
|
26
35
|
skillsService: deps.skillsService,
|
|
@@ -28,12 +37,54 @@ export class SubagentBridge {
|
|
|
28
37
|
}
|
|
29
38
|
}
|
|
30
39
|
setEventSink(sink) {
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
this.#subagentEventSink = sink;
|
|
41
|
+
this.#pendingClearSink = false;
|
|
42
|
+
if (sink)
|
|
43
|
+
this.#flushBufferedEvents('foreground', sink);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Conversation-scoped sink that outlives individual turns. Unlike
|
|
47
|
+
* {@link setEventSink}, it is never torn down at turn end, so subagent
|
|
48
|
+
* activity that settles while the conversation is idle is still observed
|
|
49
|
+
* instead of being buffered until the next turn attaches a sink.
|
|
50
|
+
*/
|
|
51
|
+
setBackgroundEventSink(sink) {
|
|
52
|
+
this.#backgroundEventSink = sink;
|
|
53
|
+
if (sink)
|
|
54
|
+
this.#flushBufferedEvents('background', sink);
|
|
55
|
+
}
|
|
56
|
+
#flushBufferedEvents(scope, sink) {
|
|
57
|
+
const pending = [];
|
|
58
|
+
for (const buffered of this.#bufferedEvents) {
|
|
59
|
+
if (buffered.scope === scope) {
|
|
60
|
+
sink(buffered.event);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
pending.push(buffered);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.#bufferedEvents = pending;
|
|
67
|
+
}
|
|
68
|
+
#emitEvent(event) {
|
|
69
|
+
const agentId = event.type === 'subagent_completed'
|
|
70
|
+
? event.result.agentId
|
|
71
|
+
: 'agentId' in event && typeof event.agentId === 'string'
|
|
72
|
+
? event.agentId
|
|
73
|
+
: undefined;
|
|
74
|
+
const explicitlyAsync = 'async' in event && event.async === true;
|
|
75
|
+
if (event.type === 'subagent_started' && explicitlyAsync && agentId) {
|
|
76
|
+
this.#backgroundRunIds.add(agentId);
|
|
77
|
+
}
|
|
78
|
+
const scope = explicitlyAsync || (agentId !== undefined && this.#backgroundRunIds.has(agentId)) ? 'background' : 'foreground';
|
|
79
|
+
const sink = scope === 'background' ? this.#backgroundEventSink : this.#subagentEventSink;
|
|
80
|
+
if (sink) {
|
|
81
|
+
sink(event);
|
|
33
82
|
}
|
|
34
83
|
else {
|
|
35
|
-
this.#
|
|
36
|
-
|
|
84
|
+
this.#bufferedEvents.push({ event, scope });
|
|
85
|
+
}
|
|
86
|
+
if (scope === 'background' && event.type === 'subagent_completed' && agentId) {
|
|
87
|
+
this.#backgroundRunIds.delete(agentId);
|
|
37
88
|
}
|
|
38
89
|
}
|
|
39
90
|
/**
|
|
@@ -57,19 +108,39 @@ export class SubagentBridge {
|
|
|
57
108
|
get activeSubagentsCount() {
|
|
58
109
|
return this.#activeSubagentsCount;
|
|
59
110
|
}
|
|
60
|
-
/** Abort signal shared by
|
|
111
|
+
/** Abort signal shared by the foreground subagent runs of the current turn. */
|
|
61
112
|
get signal() {
|
|
62
113
|
return this.#abortController.signal;
|
|
63
114
|
}
|
|
64
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Conversation-scoped abort signal for background (async) runs. It is never
|
|
117
|
+
* reset or aborted by turn boundaries, only by {@link cancelBackgroundRuns}.
|
|
118
|
+
*/
|
|
119
|
+
get backgroundSignal() {
|
|
120
|
+
return this.#backgroundAbortController.signal;
|
|
121
|
+
}
|
|
122
|
+
/** Replace the per-turn abort controller so a new parent run starts fresh. */
|
|
65
123
|
resetAbortController() {
|
|
66
124
|
this.#abortController = new AbortController();
|
|
67
125
|
}
|
|
68
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* Abort the foreground subagent runs of the current turn and prepare a fresh
|
|
128
|
+
* controller. Background runs are conversation-bound and are deliberately
|
|
129
|
+
* left alone; use {@link cancelBackgroundRuns} for those.
|
|
130
|
+
*/
|
|
69
131
|
abort() {
|
|
70
132
|
this.#abortController.abort();
|
|
71
133
|
this.#abortController = new AbortController();
|
|
72
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Cancel every conversation-bound background run. Reserved for an explicit
|
|
137
|
+
* user interrupt, conversation disposal, or shutdown.
|
|
138
|
+
*/
|
|
139
|
+
cancelBackgroundRuns() {
|
|
140
|
+
this.#backgroundAbortController.abort();
|
|
141
|
+
this.#subagentManager?.cancelAllAsyncRuns();
|
|
142
|
+
this.#backgroundAbortController = new AbortController();
|
|
143
|
+
}
|
|
73
144
|
/** Increment active count and return a disposer that decrements + handles pending sink clear */
|
|
74
145
|
#beginSubagentRun() {
|
|
75
146
|
this.#activeSubagentsCount++;
|
|
@@ -141,5 +212,41 @@ export class SubagentBridge {
|
|
|
141
212
|
endRun();
|
|
142
213
|
}
|
|
143
214
|
};
|
|
215
|
+
runSubagentAsync = async (params, _context, details) => {
|
|
216
|
+
if (!this.#subagentManager) {
|
|
217
|
+
throw new Error('Transient agent clients cannot spawn subagents.');
|
|
218
|
+
}
|
|
219
|
+
const detailsRecord = details;
|
|
220
|
+
const request = {
|
|
221
|
+
role: params.role,
|
|
222
|
+
task: params.task,
|
|
223
|
+
...(params.continue_run_id ? { continueRunId: params.continue_run_id } : {}),
|
|
224
|
+
parentTool: 'run_subagent_async',
|
|
225
|
+
// Conversation-scoped, not per-turn: this run must survive the turn that
|
|
226
|
+
// launched it and every ordinary abort.
|
|
227
|
+
signal: this.backgroundSignal,
|
|
228
|
+
};
|
|
229
|
+
return this.#withSubagentTrafficContext(detailsRecord?.toolCall?.callId, () => {
|
|
230
|
+
const handle = this.#subagentManager.startRunAsync(request);
|
|
231
|
+
return handle;
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
getSubagentResult = async (params, _context, details) => {
|
|
235
|
+
if (!this.#subagentManager) {
|
|
236
|
+
throw new Error('Transient agent clients cannot spawn subagents.');
|
|
237
|
+
}
|
|
238
|
+
const detailsRecord = details;
|
|
239
|
+
return this.#subagentManager.getRunResult(params.runId, detailsRecord?.signal);
|
|
240
|
+
};
|
|
241
|
+
abortAsyncRun = (runId) => {
|
|
242
|
+
this.#subagentManager?.abortAsyncRun(runId);
|
|
243
|
+
};
|
|
244
|
+
resetAsyncRuns = () => {
|
|
245
|
+
this.#subagentManager?.resetAsyncRuns();
|
|
246
|
+
};
|
|
247
|
+
/** @deprecated Ordinary turns do not cancel async runs. */
|
|
248
|
+
cancelAsyncRuns = () => {
|
|
249
|
+
// Kept for callers compiled against the Phase 1 bridge.
|
|
250
|
+
};
|
|
144
251
|
}
|
|
145
252
|
//# sourceMappingURL=subagent-bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-bridge.js","sourceRoot":"","sources":["../../source/lib/subagent-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAM5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-bridge.js","sourceRoot":"","sources":["../../source/lib/subagent-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guidance for the asynchronous subagent tools (`run_subagent_async` and
|
|
3
|
+
* `get_subagent_result`). Injected when both tools are available.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getAsyncSubagentDelegationAddendum({ memoryEnabled, orchestratorMode, }?: {
|
|
6
|
+
memoryEnabled?: boolean;
|
|
7
|
+
orchestratorMode?: boolean;
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=async-subagent-delegation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-subagent-delegation.d.ts","sourceRoot":"","sources":["../../source/prompts/async-subagent-delegation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,aAAoB,EACpB,gBAAwB,GACzB,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAmCvE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getSubagentsRolesSection } from '../tools/agent/run-subagent.js';
|
|
2
|
+
/**
|
|
3
|
+
* Guidance for the asynchronous subagent tools (`run_subagent_async` and
|
|
4
|
+
* `get_subagent_result`). Injected when both tools are available.
|
|
5
|
+
*/
|
|
6
|
+
export function getAsyncSubagentDelegationAddendum({ memoryEnabled = true, orchestratorMode = false, } = {}) {
|
|
7
|
+
const header = `### Asynchronous subagents
|
|
8
|
+
|
|
9
|
+
You have two tools for running subagents in the background:
|
|
10
|
+
|
|
11
|
+
- \`run_subagent_async\`: starts a subagent and returns a \`runId\` immediately.
|
|
12
|
+
- \`get_subagent_result\`: blocks until the started subagent finishes and returns the final \`SubagentResult\`.
|
|
13
|
+
|
|
14
|
+
Use these when you want to start a background investigation, return control while it runs, and collect the result after the automatic completion notification.`;
|
|
15
|
+
const rules = `**Rules for async subagents:**
|
|
16
|
+
- Fresh async runs support explorer, worker, researcher, mentor, and librarian.
|
|
17
|
+
- Runs persist across parent turns in process memory until their 30-minute sliding TTL expires or the 50-session cap evicts them. Ordinary turn completion does not cancel them.
|
|
18
|
+
- A returned handle with \`status: "running"\` means delegation succeeded.
|
|
19
|
+
- Use \`get_subagent_result\` with the exact \`runId\` returned by \`run_subagent_async\`.
|
|
20
|
+
- Mentor and librarian fresh calls reuse their default session. Explorer and researcher fresh calls start a new session; pass \`continue_run_id\` to explicitly continue a completed explorer or researcher run. Worker runs are always fresh and cannot be continued.
|
|
21
|
+
- Only completed runs can be continued. A continuation uses the same runId; do not invent runIds or continue an active, failed, cancelled, missing, or evicted run.
|
|
22
|
+
- The result uses the structured \`SubagentResult\` shape: status, final text, tools used, and files changed.`;
|
|
23
|
+
const triggers = `**When to use async subagents:**
|
|
24
|
+
- A codebase exploration or web research task can run in parallel with other reasoning.
|
|
25
|
+
- You want to keep your context focused while a mentor pressure-tests a plan in the background.
|
|
26
|
+
- The result is needed later, not immediately, and you have other useful work to do first.${orchestratorMode
|
|
27
|
+
? `
|
|
28
|
+
|
|
29
|
+
In Orchestrator mode, use \`run_subagent_async\` for delegable work. A returned handle with \`status: "running"\` means delegation succeeded. Do not duplicate or independently perform the delegated unit. After a successful launch, end the current turn and wait for the automatic completion notification. Use \`get_subagent_result\` from that notification turn, or call it earlier only when the result is explicitly needed immediately.`
|
|
30
|
+
: ''}`;
|
|
31
|
+
const framing = `**Task framing:** Describe the goal, relevant context, and constraints—not implementation steps. Do not repeat automatically supplied context: role instructions, generic tool guidance, worktree hygiene, environment metadata, root \`AGENTS.md\`, or skills catalog.`;
|
|
32
|
+
return `${header}\n\n${rules}\n\n${triggers}\n\n${framing}\n\n${getSubagentsRolesSection({
|
|
33
|
+
includeLibrarian: memoryEnabled,
|
|
34
|
+
})}`;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=async-subagent-delegation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-subagent-delegation.js","sourceRoot":"","sources":["../../source/prompts/async-subagent-delegation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;;GAGG;AACH,MAAM,UAAU,kCAAkC,CAAC,EACjD,aAAa,GAAG,IAAI,EACpB,gBAAgB,GAAG,KAAK,GACzB,GAA4D,EAAE;IAC7D,MAAM,MAAM,GAAG;;;;;;;+JAO8I,CAAC;IAE9J,MAAM,KAAK,GAAG;;;;;;;8GAO8F,CAAC;IAE7G,MAAM,QAAQ,GAAG;;;4FAIf,gBAAgB;QACd,CAAC,CAAC;;mbAE2a;QAC7a,CAAC,CAAC,EACN,EAAE,CAAC;IAEH,MAAM,OAAO,GAAG,yQAAyQ,CAAC;IAE1R,OAAO,GAAG,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,OAAO,OAAO,wBAAwB,CAAC;QACvF,gBAAgB,EAAE,aAAa;KAChC,CAAC,EAAE,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getSubagentsRolesSection } from '../tools/agent/run-subagent.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Guidance for the asynchronous subagent tools (`run_subagent_async` and
|
|
5
|
+
* `get_subagent_result`). Injected when both tools are available.
|
|
6
|
+
*/
|
|
7
|
+
export function getAsyncSubagentDelegationAddendum({
|
|
8
|
+
memoryEnabled = true,
|
|
9
|
+
orchestratorMode = false,
|
|
10
|
+
}: { memoryEnabled?: boolean; orchestratorMode?: boolean } = {}): string {
|
|
11
|
+
const header = `### Asynchronous subagents
|
|
12
|
+
|
|
13
|
+
You have two tools for running subagents in the background:
|
|
14
|
+
|
|
15
|
+
- \`run_subagent_async\`: starts a subagent and returns a \`runId\` immediately.
|
|
16
|
+
- \`get_subagent_result\`: blocks until the started subagent finishes and returns the final \`SubagentResult\`.
|
|
17
|
+
|
|
18
|
+
Use these when you want to start a background investigation, return control while it runs, and collect the result after the automatic completion notification.`;
|
|
19
|
+
|
|
20
|
+
const rules = `**Rules for async subagents:**
|
|
21
|
+
- Fresh async runs support explorer, worker, researcher, mentor, and librarian.
|
|
22
|
+
- Runs persist across parent turns in process memory until their 30-minute sliding TTL expires or the 50-session cap evicts them. Ordinary turn completion does not cancel them.
|
|
23
|
+
- A returned handle with \`status: "running"\` means delegation succeeded.
|
|
24
|
+
- Use \`get_subagent_result\` with the exact \`runId\` returned by \`run_subagent_async\`.
|
|
25
|
+
- Mentor and librarian fresh calls reuse their default session. Explorer and researcher fresh calls start a new session; pass \`continue_run_id\` to explicitly continue a completed explorer or researcher run. Worker runs are always fresh and cannot be continued.
|
|
26
|
+
- Only completed runs can be continued. A continuation uses the same runId; do not invent runIds or continue an active, failed, cancelled, missing, or evicted run.
|
|
27
|
+
- The result uses the structured \`SubagentResult\` shape: status, final text, tools used, and files changed.`;
|
|
28
|
+
|
|
29
|
+
const triggers = `**When to use async subagents:**
|
|
30
|
+
- A codebase exploration or web research task can run in parallel with other reasoning.
|
|
31
|
+
- You want to keep your context focused while a mentor pressure-tests a plan in the background.
|
|
32
|
+
- The result is needed later, not immediately, and you have other useful work to do first.${
|
|
33
|
+
orchestratorMode
|
|
34
|
+
? `
|
|
35
|
+
|
|
36
|
+
In Orchestrator mode, use \`run_subagent_async\` for delegable work. A returned handle with \`status: "running"\` means delegation succeeded. Do not duplicate or independently perform the delegated unit. After a successful launch, end the current turn and wait for the automatic completion notification. Use \`get_subagent_result\` from that notification turn, or call it earlier only when the result is explicitly needed immediately.`
|
|
37
|
+
: ''
|
|
38
|
+
}`;
|
|
39
|
+
|
|
40
|
+
const framing = `**Task framing:** Describe the goal, relevant context, and constraints—not implementation steps. Do not repeat automatically supplied context: role instructions, generic tool guidance, worktree hygiene, environment metadata, root \`AGENTS.md\`, or skills catalog.`;
|
|
41
|
+
|
|
42
|
+
return `${header}\n\n${rules}\n\n${triggers}\n\n${framing}\n\n${getSubagentsRolesSection({
|
|
43
|
+
includeLibrarian: memoryEnabled,
|
|
44
|
+
})}`;
|
|
45
|
+
}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
You are in Orchestrator mode. You own the user-requested outcome end to end: investigate, decide, act, integrate results, correct mistakes, validate, and report. Continue through obvious necessary next steps without waiting for another user prompt.
|
|
1
|
+
You are in Orchestrator mode. You own the user-requested outcome end to end: investigate, decide, act, integrate results, correct mistakes, validate, and report. Continue through obvious necessary next steps without waiting for another user prompt. Remain the single point of contact for the user.
|
|
2
2
|
|
|
3
3
|
## How to work
|
|
4
|
+
|
|
4
5
|
Choose investigation, planning, delegation, implementation, review, and validation adaptively. Let uncertainty, impact, reversibility, and coordination risk determine the next useful action; there is no universal task pipeline.
|
|
5
6
|
|
|
6
|
-
Directly inspect, edit, run commands, and test small or clear work when delegation has no meaningful leverage. Delegate for specialization, context compression, safe parallelism, or cohesive separable work—not merely because workspace access
|
|
7
|
+
Get the work done with the least delegation that fully and safely covers it. Directly inspect, edit, run commands, and test small or clear work when delegation has no meaningful leverage. Delegate for specialization, context compression, safe parallelism, or cohesive separable work — not merely because workspace access or tools are involved. Decompose only when a task genuinely spans multiple concerns; one bounded agent is correct for a one-step task, and do not split a small task across roles merely because roles exist.
|
|
7
8
|
|
|
8
|
-
Delegation transfers execution, never outcome ownership. Treat subagent results as internal checkpoints: integrate them, follow up on gaps, correct errors, and complete the task yourself.
|
|
9
|
+
Delegation transfers execution, never outcome ownership. Treat subagent results as internal checkpoints: integrate them, follow up on gaps, correct errors, and complete the task yourself. Do not quietly take over worker work, and do not treat a subagent summary as completion without evidence. Avoid concurrent overlapping edits; sequence work that shares files, contracts, schemas, state flows, or dependencies.
|
|
9
10
|
|
|
10
11
|
Resolve discoverable ambiguity from available evidence and use ordinary engineering judgment. Ask the user only for genuine blockers, unavailable information, consequential product choices, destructive or risky authorization, or materially divergent outcomes that cannot responsibly be inferred.
|
|
11
12
|
|
|
12
13
|
Protect pre-existing user work. Report truthfully. Apply stricter scrutiny to destructive, irreversible, security-sensitive, migration, persistence, concurrency, and broadly coupled work.
|
|
13
14
|
|
|
15
|
+
## Delegation discipline
|
|
16
|
+
|
|
17
|
+
Choose the most fitting available role for the task. Give each task one owner and avoid overlapping edits.
|
|
18
|
+
|
|
19
|
+
For modifying work, ask the worker to use an isolated git worktree when the change is non-trivial or concurrent work is active and the repository and provider support it. Otherwise assign one writer per checkout and escalate conflicts rather than racing edits. Keep scouts and reviewers read-only unless edits are explicitly authorized. Escalate destructive, irreversible, external, production, credential, security-sensitive, or materially scope-changing decisions when the consequence is genuinely material.
|
|
20
|
+
|
|
21
|
+
Do not treat a summary as completion. For modifications, require changed-file or diff/commit evidence and relevant test output when the change plausibly affects behavior; for inert changes such as docs or comments, the diff/commit is sufficient. Report outcomes, evidence, blockers, risks, integration instructions, and needed user decisions concisely.
|
|
22
|
+
|
|
14
23
|
## Using memory
|
|
15
24
|
|
|
16
25
|
The memory index at the bottom of this prompt is a retrieval trigger, not a reference manual. Read each summary as a description of the conditions under which its memory applies.
|
|
@@ -21,9 +30,13 @@ The memory index at the bottom of this prompt is a retrieval trigger, not a refe
|
|
|
21
30
|
- When delegating, restate any loaded memory that constrains the subagent's work as an explicit instruction — the subagent does not see your conversation or the index.
|
|
22
31
|
|
|
23
32
|
## Delegating well
|
|
33
|
+
|
|
24
34
|
Give each subagent the objective, task-specific scope, non-discoverable parent findings or decisions, constraints, deliverable or acceptance criteria, and validation when applicable. Do not repeat automatically supplied context: role instructions, generic tool guidance, worktree hygiene, environment metadata, root `AGENTS.md`, or skills catalog. The subagent does not see your conversation or reasoning. Frame a cohesive unit with a concrete done condition while leaving the worker autonomy over how to execute it.
|
|
25
35
|
|
|
26
36
|
Do not redo completed work without reason. If a result looks wrong, inspect the evidence, then directly fix it or delegate a corrected cohesive scope. If a subagent returns a partial result, use what is sound and finish the remaining work.
|
|
27
37
|
|
|
28
38
|
## Verifying and reporting
|
|
39
|
+
|
|
29
40
|
Treat subagent "done" reports as claims, not facts. Before reporting completion, validate against the task's acceptance criteria at a level proportionate to the risk and breadth of the change.
|
|
41
|
+
|
|
42
|
+
For modifications, require changed-file or diff/commit evidence and relevant test output when the change plausibly affects behavior; for inert changes such as docs or comments, the diff/commit is sufficient. Report outcomes, evidence, blockers, risks, integration instructions, and needed user decisions concisely.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-constructor.d.ts","sourceRoot":"","sources":["../../source/prompts/prompt-constructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-constructor.d.ts","sourceRoot":"","sources":["../../source/prompts/prompt-constructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAOzE,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,wBAAwB,GAAG,UAAU,CAkE7E"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { selectPromptProfile } from './prompt-profiles.js';
|
|
2
2
|
import { getSearchViaShellAddendum } from './search-via-shell.js';
|
|
3
3
|
import { getSubagentDelegationAddendum } from './subagent-delegation.js';
|
|
4
|
+
import { getAsyncSubagentDelegationAddendum } from './async-subagent-delegation.js';
|
|
4
5
|
import { getShellSandboxAddendum } from './shell-sandbox.js';
|
|
5
6
|
export function buildPromptSpec(options) {
|
|
6
|
-
const { model, liteMode, orchestratorMode = false, mentorMode = false, searchViaShell = false, runSubagentEnabled = false, sandboxEnabled = true, memoryEnabled = false, memoryGuidance = '', executionContext, } = options;
|
|
7
|
+
const { model, liteMode, orchestratorMode = false, mentorMode = false, searchViaShell = false, runSubagentEnabled = false, runSubagentAsyncEnabled = false, sandboxEnabled = true, memoryEnabled = false, memoryGuidance = '', executionContext, } = options;
|
|
7
8
|
const profile = selectPromptProfile({ model, liteMode, orchestratorMode });
|
|
8
9
|
const fragmentFiles = [...(profile.fragmentFiles ?? [])];
|
|
9
10
|
const inlineSections = [];
|
|
@@ -27,6 +28,9 @@ export function buildPromptSpec(options) {
|
|
|
27
28
|
if (orchestratorMode && runSubagentEnabled) {
|
|
28
29
|
inlineSections.push(getSubagentDelegationAddendum({ orchestratorMode, memoryEnabled }));
|
|
29
30
|
}
|
|
31
|
+
if (runSubagentAsyncEnabled && !liteMode) {
|
|
32
|
+
inlineSections.push(getAsyncSubagentDelegationAddendum({ memoryEnabled, orchestratorMode }));
|
|
33
|
+
}
|
|
30
34
|
if (isRegularMode && isAgentMode) {
|
|
31
35
|
fragmentFiles.push('plan-mode-info.md');
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-constructor.js","sourceRoot":"","sources":["../../source/prompts/prompt-constructor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-constructor.js","sourceRoot":"","sources":["../../source/prompts/prompt-constructor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAwB7D,MAAM,UAAU,eAAe,CAAC,OAAiC;IAC/D,MAAM,EACJ,KAAK,EACL,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,UAAU,GAAG,KAAK,EAClB,cAAc,GAAG,KAAK,EACtB,kBAAkB,GAAG,KAAK,EAC1B,uBAAuB,GAAG,KAAK,EAC/B,cAAc,GAAG,IAAI,EACrB,aAAa,GAAG,KAAK,EACrB,cAAc,GAAG,EAAE,EACnB,gBAAgB,GACjB,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC;IAChC,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC;IACtC,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,4BAA4B,GAAG,CAAC,QAAQ,CAAC;IAE/C,IAAI,4BAA4B,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;QAClC,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,gBAAgB,IAAI,kBAAkB,EAAE,CAAC;QAC3C,cAAc,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,uBAAuB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,aAAa;QACb,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -111,3 +111,54 @@ it('adds persistent-memory guidance only when memory tools are enabled', () => {
|
|
|
111
111
|
'memory.md',
|
|
112
112
|
);
|
|
113
113
|
});
|
|
114
|
+
|
|
115
|
+
it('buildPromptSpec includes async subagent guidance when async tools are enabled', () => {
|
|
116
|
+
const spec = buildPromptSpec({
|
|
117
|
+
model: 'gpt-4o',
|
|
118
|
+
liteMode: false,
|
|
119
|
+
runSubagentAsyncEnabled: true,
|
|
120
|
+
});
|
|
121
|
+
expect(spec.inlineSections.some((s) => s.includes('Asynchronous subagents'))).toBe(true);
|
|
122
|
+
expect(spec.inlineSections.some((s) => s.includes('run_subagent_async'))).toBe(true);
|
|
123
|
+
expect(spec.inlineSections.some((s) => s.includes('get_subagent_result'))).toBe(true);
|
|
124
|
+
expect(spec.inlineSections.some((s) => s.includes('explorer'))).toBe(true);
|
|
125
|
+
expect(spec.inlineSections.some((s) => s.includes('researcher'))).toBe(true);
|
|
126
|
+
expect(spec.inlineSections.some((s) => s.includes('mentor'))).toBe(true);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('buildPromptSpec tells orchestrators to trust successful delegation and wait without duplicating it', () => {
|
|
130
|
+
const spec = buildPromptSpec({
|
|
131
|
+
model: 'gpt-4o',
|
|
132
|
+
liteMode: false,
|
|
133
|
+
orchestratorMode: true,
|
|
134
|
+
runSubagentEnabled: true,
|
|
135
|
+
runSubagentAsyncEnabled: true,
|
|
136
|
+
});
|
|
137
|
+
const guidance = spec.inlineSections.join('\n');
|
|
138
|
+
|
|
139
|
+
expect(guidance).toContain('use `run_subagent_async` for delegable work');
|
|
140
|
+
expect(guidance).toContain('A returned handle with `status: "running"` means delegation succeeded');
|
|
141
|
+
expect(guidance).toContain('Do not duplicate or independently perform the delegated unit');
|
|
142
|
+
expect(guidance).toContain('end the current turn and wait for the automatic completion notification');
|
|
143
|
+
expect(guidance).toContain('Use `get_subagent_result` from that notification turn');
|
|
144
|
+
expect(guidance).toContain('only when the result is explicitly needed immediately');
|
|
145
|
+
expect(guidance).not.toContain('Use `run_subagent` only');
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('buildPromptSpec excludes async subagent guidance in lite mode', () => {
|
|
149
|
+
const spec = buildPromptSpec({
|
|
150
|
+
model: 'gpt-4o',
|
|
151
|
+
liteMode: true,
|
|
152
|
+
runSubagentAsyncEnabled: true,
|
|
153
|
+
});
|
|
154
|
+
expect(spec.inlineSections.some((s) => s.includes('Asynchronous subagents'))).toBe(false);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('buildPromptSpec excludes async subagent guidance when disabled', () => {
|
|
158
|
+
const spec = buildPromptSpec({
|
|
159
|
+
model: 'gpt-4o',
|
|
160
|
+
liteMode: false,
|
|
161
|
+
runSubagentAsyncEnabled: false,
|
|
162
|
+
});
|
|
163
|
+
expect(spec.inlineSections.some((s) => s.includes('Asynchronous subagents'))).toBe(false);
|
|
164
|
+
});
|
|
@@ -2,6 +2,7 @@ import type { ExecutionContext } from '../services/execution-context.js';
|
|
|
2
2
|
import { selectPromptProfile } from './prompt-profiles.js';
|
|
3
3
|
import { getSearchViaShellAddendum } from './search-via-shell.js';
|
|
4
4
|
import { getSubagentDelegationAddendum } from './subagent-delegation.js';
|
|
5
|
+
import { getAsyncSubagentDelegationAddendum } from './async-subagent-delegation.js';
|
|
5
6
|
import { getShellSandboxAddendum } from './shell-sandbox.js';
|
|
6
7
|
|
|
7
8
|
export type PromptConstructorOptions = {
|
|
@@ -13,6 +14,7 @@ export type PromptConstructorOptions = {
|
|
|
13
14
|
searchViaShell?: boolean;
|
|
14
15
|
codeContextEnabled?: boolean;
|
|
15
16
|
runSubagentEnabled?: boolean;
|
|
17
|
+
runSubagentAsyncEnabled?: boolean;
|
|
16
18
|
sandboxEnabled?: boolean;
|
|
17
19
|
memoryEnabled?: boolean;
|
|
18
20
|
memoryGuidance?: string;
|
|
@@ -33,6 +35,7 @@ export function buildPromptSpec(options: PromptConstructorOptions): PromptSpec {
|
|
|
33
35
|
mentorMode = false,
|
|
34
36
|
searchViaShell = false,
|
|
35
37
|
runSubagentEnabled = false,
|
|
38
|
+
runSubagentAsyncEnabled = false,
|
|
36
39
|
sandboxEnabled = true,
|
|
37
40
|
memoryEnabled = false,
|
|
38
41
|
memoryGuidance = '',
|
|
@@ -69,6 +72,10 @@ export function buildPromptSpec(options: PromptConstructorOptions): PromptSpec {
|
|
|
69
72
|
inlineSections.push(getSubagentDelegationAddendum({ orchestratorMode, memoryEnabled }));
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
if (runSubagentAsyncEnabled && !liteMode) {
|
|
76
|
+
inlineSections.push(getAsyncSubagentDelegationAddendum({ memoryEnabled, orchestratorMode }));
|
|
77
|
+
}
|
|
78
|
+
|
|
72
79
|
if (isRegularMode && isAgentMode) {
|
|
73
80
|
fragmentFiles.push('plan-mode-info.md');
|
|
74
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-delegation.d.ts","sourceRoot":"","sources":["../../source/prompts/subagent-delegation.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,gBAAwB,EACxB,aAAoB,GACrB,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"subagent-delegation.d.ts","sourceRoot":"","sources":["../../source/prompts/subagent-delegation.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,gBAAwB,EACxB,aAAoB,GACrB,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CA6BvE"}
|