@qduc/term2 0.10.1 → 0.11.1
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 +18 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +66 -24
- 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 +79 -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/message/CommandMessage.js +25 -3
- package/dist/components/message/CommandMessage.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 +4 -4
- 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 +28 -3
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts +5 -0
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +8 -0
- package/dist/hooks/conversation-ui-reducer.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 +24 -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 +5 -0
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +18 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +5 -0
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/chained-input-filter.d.ts +20 -0
- package/dist/lib/chained-input-filter.d.ts.map +1 -1
- package/dist/lib/chained-input-filter.js +75 -0
- package/dist/lib/chained-input-filter.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +57 -4
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +141 -8
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/prompts/anthropic.md +6 -55
- package/dist/prompts/async-subagent-delegation.d.ts +10 -0
- package/dist/prompts/async-subagent-delegation.d.ts.map +1 -0
- package/dist/prompts/async-subagent-delegation.js +50 -0
- package/dist/prompts/async-subagent-delegation.js.map +1 -0
- package/dist/prompts/async-subagent-delegation.ts +65 -0
- package/dist/prompts/gpt-5.6.md +49 -0
- package/dist/prompts/kimi.md +25 -63
- package/dist/prompts/orchestrator-prompt.test.ts +77 -0
- package/dist/prompts/orchestrator.md +30 -3
- package/dist/prompts/prompt-constructor.d.ts +2 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +9 -1
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +72 -0
- package/dist/prompts/prompt-constructor.ts +15 -0
- package/dist/prompts/prompt-profiles.d.ts.map +1 -1
- package/dist/prompts/prompt-profiles.js +5 -0
- package/dist/prompts/prompt-profiles.js.map +1 -1
- package/dist/prompts/prompt-profiles.test.ts +20 -0
- package/dist/prompts/prompt-profiles.ts +5 -0
- package/dist/prompts/search-via-shell.d.ts.map +1 -1
- package/dist/prompts/search-via-shell.js +8 -25
- package/dist/prompts/search-via-shell.js.map +1 -1
- package/dist/prompts/search-via-shell.test.ts +18 -0
- package/dist/prompts/search-via-shell.ts +8 -25
- 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.test.ts +15 -0
- package/dist/prompts/subagent-delegation.ts +2 -1
- package/dist/prompts/subagents/researcher.md +6 -0
- package/dist/prompts/subagents/worker-prompt.test.ts +35 -0
- package/dist/prompts/subagents/worker.md +8 -0
- 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/conversation/conversation-adapter.d.ts +11 -3
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +125 -31
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +36 -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 +263 -32
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +2 -0
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.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 +25 -0
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +44 -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 +10 -1
- 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-log-writer.d.ts +1 -0
- package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-writer.js +1 -1
- package/dist/services/logging/conversation-log-writer.js.map +1 -1
- package/dist/services/logging/conversation-logger.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.js +11 -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/queue/queue-controller.d.ts +1 -0
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +7 -4
- package/dist/services/queue/queue-controller.js.map +1 -1
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +4 -2
- package/dist/services/retry/retry-classifier.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/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 +5 -2
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +125 -10
- 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 +60 -3
- 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 +32 -2
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +67 -0
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -0
- package/dist/services/subagents/subagent-async-registry.js +506 -0
- package/dist/services/subagents/subagent-async-registry.js.map +1 -0
- package/dist/services/subagents/subagent-manager.d.ts +31 -0
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +61 -1
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +107 -0
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -0
- package/dist/services/subagents/subagent-notification-store.js +209 -0
- package/dist/services/subagents/subagent-notification-store.js.map +1 -0
- package/dist/services/subagents/subagent-run-control.d.ts +41 -0
- package/dist/services/subagents/subagent-run-control.d.ts.map +1 -0
- package/dist/services/subagents/subagent-run-control.js +166 -0
- package/dist/services/subagents/subagent-run-control.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/tool-policy.d.ts +24 -4
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +134 -14
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +104 -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/ask-orchestrator.d.ts +11 -0
- package/dist/tools/agent/ask-orchestrator.d.ts.map +1 -0
- package/dist/tools/agent/ask-orchestrator.js +39 -0
- package/dist/tools/agent/ask-orchestrator.js.map +1 -0
- package/dist/tools/agent/run-subagent-async.d.ts +67 -0
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -0
- package/dist/tools/agent/run-subagent-async.js +401 -0
- package/dist/tools/agent/run-subagent-async.js.map +1 -0
- package/dist/tools/file/code-context.d.ts +1 -0
- package/dist/tools/file/code-context.d.ts.map +1 -1
- package/dist/tools/file/code-context.js +4 -4
- package/dist/tools/file/code-context.js.map +1 -1
- package/dist/tools/file/grep.d.ts +1 -0
- package/dist/tools/file/grep.d.ts.map +1 -1
- package/dist/tools/file/grep.js +16 -10
- package/dist/tools/file/grep.js.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 +7 -3
- 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/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/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { it, expect } from 'vitest';
|
|
4
|
+
import { PROMPT_PROFILES, selectPromptProfile } from './prompt-profiles.js';
|
|
5
|
+
|
|
6
|
+
const PROMPTS_DIR = import.meta.dirname;
|
|
7
|
+
|
|
8
|
+
it('every prompt profile points at a base prompt file that exists on disk', () => {
|
|
9
|
+
const missing = PROMPT_PROFILES.filter(
|
|
10
|
+
(profile) => !fs.existsSync(path.join(PROMPTS_DIR, profile.basePromptFile)),
|
|
11
|
+
).map((profile) => `${profile.id} -> ${profile.basePromptFile}`);
|
|
12
|
+
|
|
13
|
+
expect(missing).toEqual([]);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('selectPromptProfile resolves a profile for any model string', () => {
|
|
17
|
+
for (const model of ['gpt-5.6', 'gpt-5.5', 'claude-opus-5', 'kimi-k2.5', 'some-unknown-model', '']) {
|
|
18
|
+
expect(selectPromptProfile({ model, liteMode: false }).basePromptFile).toBeTruthy();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
@@ -31,6 +31,11 @@ export const PROMPT_PROFILES: PromptProfile[] = [
|
|
|
31
31
|
basePromptFile: 'codex.md',
|
|
32
32
|
matches: ({ normalizedModel }) => normalizedModel.includes('gpt-5') && normalizedModel.includes('codex'),
|
|
33
33
|
},
|
|
34
|
+
{
|
|
35
|
+
id: 'gpt-5.6',
|
|
36
|
+
basePromptFile: 'gpt-5.6.md',
|
|
37
|
+
matches: ({ normalizedModel }) => normalizedModel.includes('gpt-5.6'),
|
|
38
|
+
},
|
|
34
39
|
{
|
|
35
40
|
id: 'gpt-5.5',
|
|
36
41
|
basePromptFile: 'gpt-5.5.md',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-via-shell.d.ts","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAcpE,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"search-via-shell.d.ts","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAcpE,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAgCrF"}
|
|
@@ -22,32 +22,15 @@ export function getSearchViaShellAddendum(options = {}) {
|
|
|
22
22
|
|
|
23
23
|
Use the \`shell\` tool with the standard CLI binaries.`;
|
|
24
24
|
const textSearch = hasRg
|
|
25
|
-
? `**For text search**, use \`rg\` (ripgrep).
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- \`rg -uu "pattern" .\` — include hidden + gitignored.
|
|
30
|
-
- \`rg -g '*.ts' "pattern" .\` — restrict by glob.
|
|
31
|
-
- \`rg -t ts "pattern" .\` — restrict by language preset.
|
|
32
|
-
- \`rg -n "pattern" .\` — show line numbers (useful for follow-up edits).
|
|
33
|
-
- \`rg -l "pattern" .\` — list files only.
|
|
34
|
-
- \`rg -C 3 "pattern" .\` — 3 lines of context.
|
|
35
|
-
- **Always pass an explicit path** (e.g. \`.\` or \`src/\`) to \`rg\`. When no path is given and stdin is a pipe, ripgrep reads stdin instead of searching the filesystem, returning no results.`
|
|
36
|
-
: `**For text search**, use \`grep\`. Examples:
|
|
37
|
-
- \`grep -rn "pattern" src/\` — recursive search with line numbers.
|
|
38
|
-
- \`grep -ri "pattern" src/\` — case-insensitive recursive search.
|
|
39
|
-
- \`grep -rl "pattern" src/\` — list matching files only.
|
|
40
|
-
- \`grep -C 3 "pattern" src/\` — show 3 lines of context.`;
|
|
25
|
+
? `**For text search**, use \`rg\` (ripgrep). It respects \`.gitignore\` by default; \`--no-ignore\` or \`-uu\` when you need to search past it.
|
|
26
|
+
|
|
27
|
+
**Always pass an explicit path** (e.g. \`.\` or \`src/\`). With no path given and stdin attached to a pipe, ripgrep reads stdin instead of searching the filesystem and silently returns no results.`
|
|
28
|
+
: `**For text search**, use \`grep\`, with \`-rn\` for a recursive search reporting line numbers.`;
|
|
41
29
|
const fileSearch = hasFd
|
|
42
|
-
? `**For file search**, use \`fd\`.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- \`fd 'pattern' path/\` — scoped to a directory.`
|
|
47
|
-
: `**For file search**, use \`find\`. Examples:
|
|
48
|
-
- \`find src/ -type f -name '*.ts'\` — search a subtree by basename glob.
|
|
49
|
-
- **Always search from a specific path, not \`/\`.** Scanning the whole filesystem can exhaust resources on large trees.
|
|
50
|
-
- When using \`find -regex\` with alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` works; \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
30
|
+
? `**For file search**, use \`fd\`. It also respects \`.gitignore\`; \`-H -I\` includes hidden and ignored files.`
|
|
31
|
+
: `**For file search**, use \`find\`, scoped to a specific path rather than \`/\` — scanning the whole filesystem can exhaust resources on large trees.
|
|
32
|
+
|
|
33
|
+
With \`find -regex\` alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` matches, while \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
51
34
|
const hygiene = `**General shell hygiene:**
|
|
52
35
|
- Quote paths that contain spaces.
|
|
53
36
|
- Prefer absolute paths or paths relative to a known root; avoid \`cd\`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-via-shell.js","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3C,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,yBAAyB,CAAC,OAAO,GAA0B,EAAE;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;IAE/D,sEAAsE;IACtE,6EAA6E;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG;;uDAEsC,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"search-via-shell.js","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3C,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,yBAAyB,CAAC,OAAO,GAA0B,EAAE;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;IAE/D,sEAAsE;IACtE,6EAA6E;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG;;uDAEsC,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC;;qMAE+L;QACjM,CAAC,CAAC,gGAAgG,CAAC;IAErG,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC,gHAAgH;QAClH,CAAC,CAAC;;qJAE+I,CAAC;IAEpJ,MAAM,OAAO,GAAG;;;;2GAIyF,CAAC;IAE1G,OAAO,GAAG,MAAM,OAAO,UAAU,OAAO,UAAU,OAAO,OAAO,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -49,3 +49,21 @@ it('getSearchViaShellAddendum falls back to grep and find when both missing', ()
|
|
|
49
49
|
expect(includesWord(result, 'find')).toBe(true);
|
|
50
50
|
expect(result.toLowerCase().includes('hygiene')).toBe(true);
|
|
51
51
|
});
|
|
52
|
+
|
|
53
|
+
it('getSearchViaShellAddendum warns that pathless rg reads stdin', () => {
|
|
54
|
+
const result = getSearchViaShellAddendum({
|
|
55
|
+
checkBinary: () => true,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
expect(result.toLowerCase()).toContain('explicit path');
|
|
59
|
+
expect(result.toLowerCase()).toContain('stdin');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('getSearchViaShellAddendum warns about find -regex alternation ordering', () => {
|
|
63
|
+
const result = getSearchViaShellAddendum({
|
|
64
|
+
checkBinary: () => false,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(result).toContain('-regex');
|
|
68
|
+
expect(result.toLowerCase()).toContain('longest alternative first');
|
|
69
|
+
});
|
|
@@ -32,33 +32,16 @@ export function getSearchViaShellAddendum(options: SearchViaShellOptions = {}):
|
|
|
32
32
|
Use the \`shell\` tool with the standard CLI binaries.`;
|
|
33
33
|
|
|
34
34
|
const textSearch = hasRg
|
|
35
|
-
? `**For text search**, use \`rg\` (ripgrep).
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- \`rg -uu "pattern" .\` — include hidden + gitignored.
|
|
40
|
-
- \`rg -g '*.ts' "pattern" .\` — restrict by glob.
|
|
41
|
-
- \`rg -t ts "pattern" .\` — restrict by language preset.
|
|
42
|
-
- \`rg -n "pattern" .\` — show line numbers (useful for follow-up edits).
|
|
43
|
-
- \`rg -l "pattern" .\` — list files only.
|
|
44
|
-
- \`rg -C 3 "pattern" .\` — 3 lines of context.
|
|
45
|
-
- **Always pass an explicit path** (e.g. \`.\` or \`src/\`) to \`rg\`. When no path is given and stdin is a pipe, ripgrep reads stdin instead of searching the filesystem, returning no results.`
|
|
46
|
-
: `**For text search**, use \`grep\`. Examples:
|
|
47
|
-
- \`grep -rn "pattern" src/\` — recursive search with line numbers.
|
|
48
|
-
- \`grep -ri "pattern" src/\` — case-insensitive recursive search.
|
|
49
|
-
- \`grep -rl "pattern" src/\` — list matching files only.
|
|
50
|
-
- \`grep -C 3 "pattern" src/\` — show 3 lines of context.`;
|
|
35
|
+
? `**For text search**, use \`rg\` (ripgrep). It respects \`.gitignore\` by default; \`--no-ignore\` or \`-uu\` when you need to search past it.
|
|
36
|
+
|
|
37
|
+
**Always pass an explicit path** (e.g. \`.\` or \`src/\`). With no path given and stdin attached to a pipe, ripgrep reads stdin instead of searching the filesystem and silently returns no results.`
|
|
38
|
+
: `**For text search**, use \`grep\`, with \`-rn\` for a recursive search reporting line numbers.`;
|
|
51
39
|
|
|
52
40
|
const fileSearch = hasFd
|
|
53
|
-
? `**For file search**, use \`fd\`.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- \`fd 'pattern' path/\` — scoped to a directory.`
|
|
58
|
-
: `**For file search**, use \`find\`. Examples:
|
|
59
|
-
- \`find src/ -type f -name '*.ts'\` — search a subtree by basename glob.
|
|
60
|
-
- **Always search from a specific path, not \`/\`.** Scanning the whole filesystem can exhaust resources on large trees.
|
|
61
|
-
- When using \`find -regex\` with alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` works; \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
41
|
+
? `**For file search**, use \`fd\`. It also respects \`.gitignore\`; \`-H -I\` includes hidden and ignored files.`
|
|
42
|
+
: `**For file search**, use \`find\`, scoped to a specific path rather than \`/\` — scanning the whole filesystem can exhaust resources on large trees.
|
|
43
|
+
|
|
44
|
+
With \`find -regex\` alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` matches, while \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
62
45
|
|
|
63
46
|
const hygiene = `**General shell hygiene:**
|
|
64
47
|
- Quote paths that contain spaces.
|
|
@@ -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"}
|
|
@@ -6,9 +6,10 @@ import { getSubagentsRolesSection } from '../tools/agent/run-subagent.js';
|
|
|
6
6
|
* The tool description covers mechanics; behavioral guidance lives here.
|
|
7
7
|
*/
|
|
8
8
|
export function getSubagentDelegationAddendum({ orchestratorMode = false, memoryEnabled = true, } = {}) {
|
|
9
|
+
const delegationTool = orchestratorMode ? 'run_subagent_async' : 'run_subagent';
|
|
9
10
|
const header = `### Delegating to subagents
|
|
10
11
|
|
|
11
|
-
You have a \`
|
|
12
|
+
You have a \`${delegationTool}\` tool. A subagent runs in its own context and returns only a summary — use it to keep your own context focused on high-level reasoning.`;
|
|
12
13
|
const triggers = `**Delegate when it provides meaningful leverage:**
|
|
13
14
|
- Need focused codebase investigation or context compression → \`explorer\`.
|
|
14
15
|
- Needs online info (library docs, current best practices, version-specific behavior) → \`researcher\`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-delegation.js","sourceRoot":"","sources":["../../source/prompts/subagent-delegation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,EAC5C,gBAAgB,GAAG,KAAK,EACxB,aAAa,GAAG,IAAI,GACrB,GAA4D,EAAE;IAC7D,MAAM,MAAM,GAAG;;
|
|
1
|
+
{"version":3,"file":"subagent-delegation.js","sourceRoot":"","sources":["../../source/prompts/subagent-delegation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,EAC5C,gBAAgB,GAAG,KAAK,EACxB,aAAa,GAAG,IAAI,GACrB,GAA4D,EAAE;IAC7D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC;IAChF,MAAM,MAAM,GAAG;;eAEF,cAAc,2IAA2I,CAAC;IAEvK,MAAM,QAAQ,GAAG;;;;EAKjB,aAAa,CAAC,CAAC,CAAC,kFAAkF,CAAC,CAAC,CAAC,EACvG,2GACI,gBAAgB;QACd,CAAC,CAAC;;6cAEqc;QACvc,CAAC,CAAC;;6LAGN,EAAE,CAAC;IAEH,MAAM,YAAY,GAAG;;iZAE0X,CAAC;IAEhZ,OAAO,GAAG,MAAM,OAAO,QAAQ,OAAO,YAAY,OAAO,wBAAwB,CAAC;QAChF,gBAAgB,EAAE,aAAa;KAChC,CAAC,EAAE,CAAC;AACP,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { it, expect } from 'vitest';
|
|
2
2
|
import { getSubagentDelegationAddendum } from './subagent-delegation.js';
|
|
3
|
+
import { getAsyncSubagentDelegationAddendum } from './async-subagent-delegation.js';
|
|
3
4
|
|
|
4
5
|
it('getSubagentDelegationAddendum returns non-empty delegation guidance', () => {
|
|
5
6
|
const result = getSubagentDelegationAddendum();
|
|
@@ -70,3 +71,17 @@ it('does not advertise the librarian when persistent memory is disabled', () =>
|
|
|
70
71
|
const result = getSubagentDelegationAddendum({ memoryEnabled: false });
|
|
71
72
|
expect(result.includes('librarian')).toBe(false);
|
|
72
73
|
});
|
|
74
|
+
|
|
75
|
+
it('async control guidance distinguishes steering, cancellation, answers, and fresh-turn limits honestly', () => {
|
|
76
|
+
const result = getAsyncSubagentDelegationAddendum({ orchestratorMode: true, controlsEnabled: true });
|
|
77
|
+
|
|
78
|
+
expect(result).toContain('`send_message`');
|
|
79
|
+
expect(result).toContain('`cancel_run`');
|
|
80
|
+
expect(result).toContain('name or runId');
|
|
81
|
+
expect(result).toContain('`reply_to`');
|
|
82
|
+
expect(result).toContain('fresh session turn');
|
|
83
|
+
expect(result).toContain('maximum of three continuation segments');
|
|
84
|
+
expect(result).toContain('not SDK live injection');
|
|
85
|
+
expect(result).toContain('single point of contact');
|
|
86
|
+
expect(result).toContain('Do NOT call `get_subagent_result` immediately');
|
|
87
|
+
});
|
|
@@ -10,9 +10,10 @@ export function getSubagentDelegationAddendum({
|
|
|
10
10
|
orchestratorMode = false,
|
|
11
11
|
memoryEnabled = true,
|
|
12
12
|
}: { orchestratorMode?: boolean; memoryEnabled?: boolean } = {}): string {
|
|
13
|
+
const delegationTool = orchestratorMode ? 'run_subagent_async' : 'run_subagent';
|
|
13
14
|
const header = `### Delegating to subagents
|
|
14
15
|
|
|
15
|
-
You have a \`
|
|
16
|
+
You have a \`${delegationTool}\` tool. A subagent runs in its own context and returns only a summary — use it to keep your own context focused on high-level reasoning.`;
|
|
16
17
|
|
|
17
18
|
const triggers = `**Delegate when it provides meaningful leverage:**
|
|
18
19
|
- Need focused codebase investigation or context compression → \`explorer\`.
|
|
@@ -23,6 +23,12 @@ You have access to web search and web fetch tools, and read-only access to the w
|
|
|
23
23
|
- Use only tools listed in the Available Tool Guidance section. If a tool is not listed there, it is not available.
|
|
24
24
|
- Use available read, search, and code-context tools to inspect workspace files when relevant.
|
|
25
25
|
|
|
26
|
+
## Asking the orchestrator
|
|
27
|
+
|
|
28
|
+
- Use `ask_orchestrator` only for a genuine blocker that cannot be resolved from the task, workspace, or available research tools. State the specific decision needed.
|
|
29
|
+
- The tool is available only when listed in your tools. It asks the owning orchestrator, never the user; do not contact the user directly.
|
|
30
|
+
- Continue after the answer and finish the research task rather than ending or relaunching it.
|
|
31
|
+
|
|
26
32
|
## Approach
|
|
27
33
|
|
|
28
34
|
1. Identify what information is needed.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { it, expect } from 'vitest';
|
|
4
|
+
|
|
5
|
+
const workerPrompt = fs.readFileSync(path.join(import.meta.dirname, 'worker.md'), 'utf-8');
|
|
6
|
+
const researcherPrompt = fs.readFileSync(path.join(import.meta.dirname, 'researcher.md'), 'utf-8');
|
|
7
|
+
|
|
8
|
+
it('worker prompt still requires running a validation command', () => {
|
|
9
|
+
const lower = workerPrompt.toLowerCase();
|
|
10
|
+
expect(lower).toContain('validation command');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('worker prompt notes that validation and diff stat are auto-captured', () => {
|
|
14
|
+
const lower = workerPrompt.toLowerCase();
|
|
15
|
+
expect(lower).toContain('automatically captures');
|
|
16
|
+
expect(lower).toContain('diff stat');
|
|
17
|
+
expect(lower).toContain('do not need to paste the full output');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('worker prompt mentions that shell-driven edits may not appear in diff stat', () => {
|
|
21
|
+
const lower = workerPrompt.toLowerCase();
|
|
22
|
+
expect(lower).toContain('shell-driven edits');
|
|
23
|
+
expect(lower).toContain('may not appear');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('execution role prompts reserve ask_orchestrator for genuine blockers and never direct user contact', () => {
|
|
27
|
+
for (const prompt of [workerPrompt, researcherPrompt]) {
|
|
28
|
+
const lower = prompt.toLowerCase();
|
|
29
|
+
expect(lower).toContain('ask_orchestrator');
|
|
30
|
+
expect(lower).toContain('genuine blocker');
|
|
31
|
+
expect(lower).toContain('decision needed');
|
|
32
|
+
expect(lower).toContain('continue after');
|
|
33
|
+
expect(lower).toContain('do not contact the user');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
@@ -24,6 +24,12 @@ You have read and write access to the workspace (within the assigned write bound
|
|
|
24
24
|
- Read relevant files before editing them.
|
|
25
25
|
- Keep edits limited to the assigned scope. Do not broaden the task.
|
|
26
26
|
|
|
27
|
+
## Asking the orchestrator
|
|
28
|
+
|
|
29
|
+
- Use `ask_orchestrator` only for a genuine blocker that cannot be resolved from the task, workspace, or available tools. State the specific decision needed, not an open-ended status update.
|
|
30
|
+
- The tool is available only when listed in your tools. It asks the owning orchestrator, never the user; do not contact the user directly.
|
|
31
|
+
- After the answer arrives, continue after it and complete the assigned work. Do not terminate or relaunch the task merely because you asked.
|
|
32
|
+
|
|
27
33
|
## Scope discipline
|
|
28
34
|
|
|
29
35
|
- If the parent names editable, read-only, or forbidden files in the task, obey those boundaries strictly.
|
|
@@ -45,5 +51,7 @@ After completing the task, return a concise report that includes:
|
|
|
45
51
|
- Any issues encountered or assumptions made
|
|
46
52
|
- Any scope conflicts: work you identified as needed but that fell outside your assigned scope
|
|
47
53
|
|
|
54
|
+
The harness automatically captures the last validation command you ran (test/lint/typecheck/tsc/build) with its exit status and output, and a per-file line-change diff stat from your write-tool edits. You still need to run a validation command and may state which command you ran, but you do not need to paste the full output — the structured evidence is captured for you. Shell-driven edits outside the write tools may not appear in the diff stat; mention them in your summary if they matter.
|
|
55
|
+
|
|
48
56
|
Do not include implementation details that are already visible in the diff.
|
|
49
57
|
Do not claim work you did not do.
|
|
@@ -34,6 +34,12 @@ export declare class ExecutionBudget {
|
|
|
34
34
|
maxTokens?: number;
|
|
35
35
|
currentDepth?: number;
|
|
36
36
|
abortController?: AbortController;
|
|
37
|
+
sharedState?: {
|
|
38
|
+
childCount: number;
|
|
39
|
+
activeChildren: number;
|
|
40
|
+
aggregateTokens: number;
|
|
41
|
+
released: boolean;
|
|
42
|
+
};
|
|
37
43
|
});
|
|
38
44
|
/** Shared abort signal for the tree. */
|
|
39
45
|
get signal(): AbortSignal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-budget.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/execution-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,kDAAkD;IAClD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-budget.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/execution-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,kDAAkD;IAClD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAG1C,YAAY,OAAO,EAAE;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,WAAW,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAC;KAC1G,EAQA;IAED,wCAAwC;IACxC,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,4CAA4C;IAC5C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,6CAA6C;IAC7C,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,6CAA6C;IAC7C,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,mEAAmE;IACnE,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;OAKG;IACH,eAAe,IAAI,iBAAiB,GAAG,qBAAqB,CA2C3D;IASD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAYxC;IAED,6BAA6B;IAC7B,KAAK,IAAI,IAAI,CAOZ;IAED;;;;OAIG;IACH,iBAAiB,IAAI,eAAe,CAiBnC;IAED,oEAAoE;IACpE,OAAO,IAAI,IAAI,CAOd;CACF;AAED;;;GAGG;AACH,qBAAa,iBAAiB;;IAK5B,YAAY,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,EAGzD;IAED,uEAAuE;IACvE,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,4DAA4D;IAC5D,OAAO,IAAI,IAAI,CAId;IAED;;;;OAIG;IACH,iBAAiB,IAAI,eAAe,CAEnC;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EACF,iBAAiB,GACjB,WAAW,GACX,uBAAuB,GACvB,0BAA0B,GAC1B,qBAAqB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,eAAe,CAOlB"}
|
|
@@ -25,10 +25,7 @@ export class ExecutionBudget {
|
|
|
25
25
|
currentDepth;
|
|
26
26
|
/** Shared AbortController for the entire tree. */
|
|
27
27
|
abortController;
|
|
28
|
-
#
|
|
29
|
-
#activeChildren = 0;
|
|
30
|
-
#aggregateTokens = 0;
|
|
31
|
-
#released = false;
|
|
28
|
+
#state;
|
|
32
29
|
constructor(options) {
|
|
33
30
|
this.maxChildren = options.maxChildren;
|
|
34
31
|
this.maxDepth = options.maxDepth;
|
|
@@ -36,6 +33,7 @@ export class ExecutionBudget {
|
|
|
36
33
|
this.maxTokens = options.maxTokens;
|
|
37
34
|
this.currentDepth = options.currentDepth ?? 0;
|
|
38
35
|
this.abortController = options.abortController ?? new AbortController();
|
|
36
|
+
this.#state = options.sharedState ?? { childCount: 0, activeChildren: 0, aggregateTokens: 0, released: false };
|
|
39
37
|
}
|
|
40
38
|
/** Shared abort signal for the tree. */
|
|
41
39
|
get signal() {
|
|
@@ -43,19 +41,19 @@ export class ExecutionBudget {
|
|
|
43
41
|
}
|
|
44
42
|
/** Current child count (for inspection). */
|
|
45
43
|
get childCount() {
|
|
46
|
-
return this.#childCount;
|
|
44
|
+
return this.#state.childCount;
|
|
47
45
|
}
|
|
48
46
|
/** Current active (in-progress) children. */
|
|
49
47
|
get activeChildren() {
|
|
50
|
-
return this.#activeChildren;
|
|
48
|
+
return this.#state.activeChildren;
|
|
51
49
|
}
|
|
52
50
|
/** Aggregate token usage across the tree. */
|
|
53
51
|
get aggregateTokens() {
|
|
54
|
-
return this.#aggregateTokens;
|
|
52
|
+
return this.#state.aggregateTokens;
|
|
55
53
|
}
|
|
56
54
|
/** Whether any limit has been exceeded or the tree was aborted. */
|
|
57
55
|
get isExhausted() {
|
|
58
|
-
return this.#released || this.abortController.signal.aborted;
|
|
56
|
+
return this.#state.released || this.abortController.signal.aborted;
|
|
59
57
|
}
|
|
60
58
|
/**
|
|
61
59
|
* Try to acquire a child slot. Returns an AcquiredChildSlot or a rejection reason.
|
|
@@ -64,42 +62,47 @@ export class ExecutionBudget {
|
|
|
64
62
|
* Callers MUST call `release()` on the returned slot in a finally block.
|
|
65
63
|
*/
|
|
66
64
|
tryAcquireChild() {
|
|
67
|
-
if (this.#released) {
|
|
65
|
+
if (this.#state.released) {
|
|
68
66
|
return { accepted: false, reason: 'budget_released' };
|
|
69
67
|
}
|
|
70
68
|
if (this.abortController.signal.aborted) {
|
|
71
69
|
return { accepted: false, reason: 'cancelled' };
|
|
72
70
|
}
|
|
73
71
|
// Check maxChildren
|
|
74
|
-
if (this.maxChildren !== undefined && this.#childCount >= this.maxChildren) {
|
|
75
|
-
return {
|
|
72
|
+
if (this.maxChildren !== undefined && this.#state.childCount >= this.maxChildren) {
|
|
73
|
+
return {
|
|
74
|
+
accepted: false,
|
|
75
|
+
reason: 'max_children_exceeded',
|
|
76
|
+
current: this.#state.childCount,
|
|
77
|
+
max: this.maxChildren,
|
|
78
|
+
};
|
|
76
79
|
}
|
|
77
80
|
// Check maxConcurrency
|
|
78
|
-
if (this.maxConcurrency !== undefined && this.#activeChildren >= this.maxConcurrency) {
|
|
81
|
+
if (this.maxConcurrency !== undefined && this.#state.activeChildren >= this.maxConcurrency) {
|
|
79
82
|
return {
|
|
80
83
|
accepted: false,
|
|
81
84
|
reason: 'max_concurrency_exceeded',
|
|
82
|
-
current: this.#activeChildren,
|
|
85
|
+
current: this.#state.activeChildren,
|
|
83
86
|
max: this.maxConcurrency,
|
|
84
87
|
};
|
|
85
88
|
}
|
|
86
89
|
// Check token budget
|
|
87
|
-
if (this.maxTokens !== undefined && this.#aggregateTokens >= this.maxTokens) {
|
|
90
|
+
if (this.maxTokens !== undefined && this.#state.aggregateTokens >= this.maxTokens) {
|
|
88
91
|
return {
|
|
89
92
|
accepted: false,
|
|
90
93
|
reason: 'max_tokens_exceeded',
|
|
91
|
-
current: this.#aggregateTokens,
|
|
94
|
+
current: this.#state.aggregateTokens,
|
|
92
95
|
max: this.maxTokens,
|
|
93
96
|
};
|
|
94
97
|
}
|
|
95
|
-
this.#childCount++;
|
|
96
|
-
this.#activeChildren++;
|
|
98
|
+
this.#state.childCount++;
|
|
99
|
+
this.#state.activeChildren++;
|
|
97
100
|
return new AcquiredChildSlot(this, () => this.#releaseChild());
|
|
98
101
|
}
|
|
99
102
|
/** Called by AcquiredChildSlot to release a slot. */
|
|
100
103
|
#releaseChild() {
|
|
101
|
-
if (this.#activeChildren > 0) {
|
|
102
|
-
this.#activeChildren--;
|
|
104
|
+
if (this.#state.activeChildren > 0) {
|
|
105
|
+
this.#state.activeChildren--;
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
/**
|
|
@@ -108,9 +111,9 @@ export class ExecutionBudget {
|
|
|
108
111
|
*/
|
|
109
112
|
recordUsage(usage) {
|
|
110
113
|
const tokens = usage.total_tokens ?? (usage.prompt_tokens ?? 0) + (usage.completion_tokens ?? 0);
|
|
111
|
-
this.#aggregateTokens += tokens;
|
|
112
|
-
if (this.maxTokens !== undefined && this.#aggregateTokens >= this.maxTokens) {
|
|
113
|
-
this.#released = true;
|
|
114
|
+
this.#state.aggregateTokens += tokens;
|
|
115
|
+
if (this.maxTokens !== undefined && this.#state.aggregateTokens >= this.maxTokens) {
|
|
116
|
+
this.#state.released = true;
|
|
114
117
|
try {
|
|
115
118
|
this.abortController.abort();
|
|
116
119
|
}
|
|
@@ -121,7 +124,7 @@ export class ExecutionBudget {
|
|
|
121
124
|
}
|
|
122
125
|
/** Abort the entire tree. */
|
|
123
126
|
abort() {
|
|
124
|
-
this.#released = true;
|
|
127
|
+
this.#state.released = true;
|
|
125
128
|
try {
|
|
126
129
|
this.abortController.abort();
|
|
127
130
|
}
|
|
@@ -147,11 +150,12 @@ export class ExecutionBudget {
|
|
|
147
150
|
maxTokens: this.maxTokens,
|
|
148
151
|
currentDepth: depth,
|
|
149
152
|
abortController: this.abortController,
|
|
153
|
+
sharedState: this.#state,
|
|
150
154
|
});
|
|
151
155
|
}
|
|
152
156
|
/** Release all resources (called when root execution completes). */
|
|
153
157
|
release() {
|
|
154
|
-
this.#released = true;
|
|
158
|
+
this.#state.released = true;
|
|
155
159
|
try {
|
|
156
160
|
this.abortController.abort();
|
|
157
161
|
}
|
|
@@ -167,6 +171,7 @@ export class ExecutionBudget {
|
|
|
167
171
|
export class AcquiredChildSlot {
|
|
168
172
|
#budget;
|
|
169
173
|
#releaseFn;
|
|
174
|
+
#released = false;
|
|
170
175
|
constructor(budget, releaseFn) {
|
|
171
176
|
this.#budget = budget;
|
|
172
177
|
this.#releaseFn = releaseFn;
|
|
@@ -177,6 +182,9 @@ export class AcquiredChildSlot {
|
|
|
177
182
|
}
|
|
178
183
|
/** Release the slot, decrementing active children count. */
|
|
179
184
|
release() {
|
|
185
|
+
if (this.#released)
|
|
186
|
+
return;
|
|
187
|
+
this.#released = true;
|
|
180
188
|
this.#releaseFn();
|
|
181
189
|
}
|
|
182
190
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-budget.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/execution-budget.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,eAAe;IAC1B,iEAAiE;IACxD,WAAW,CAAqB;IACzC,sEAAsE;IAC7D,QAAQ,CAAqB;IACtC,0DAA0D;IACjD,cAAc,CAAqB;IAC5C,uEAAuE;IAC9D,SAAS,CAAqB;IAEvC,6DAA6D;IACpD,YAAY,CAAS;IAE9B,kDAAkD;IACzC,eAAe,CAAkB;IAE1C,
|
|
1
|
+
{"version":3,"file":"execution-budget.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/execution-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,7 +71,7 @@ function deriveCanUseNestedAgents(perms) {
|
|
|
71
71
|
// Explicit denial via agents.create: false overrides everything.
|
|
72
72
|
if (perms.agents?.create === false)
|
|
73
73
|
return false;
|
|
74
|
-
const nestedTools = new Set(['run_subagent', 'ask_mentor']);
|
|
74
|
+
const nestedTools = new Set(['run_subagent', 'run_subagent_async', 'get_subagent_result', 'ask_mentor']);
|
|
75
75
|
if (perms.tools?.some((t) => nestedTools.has(t)))
|
|
76
76
|
return true;
|
|
77
77
|
if (perms.agents?.create === true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-resolver.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/permission-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAUpF,qEAAqE;AAErE,mDAAmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAA6B,MAAM,CAAC,MAAM,CAAC;IAClF,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,KAAK;CAC1B,CAAC,CAAC;AAEH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAgB,MAAM,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAEH,qEAAqE;AAErE;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAuB;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,WAAW;QACX,MAAM;QACN,MAAM;QACN,mBAAmB;QACnB,qBAAqB;QACrB,YAAY;QACZ,WAAW;QACX,UAAU;QACV,gBAAgB;KACjB,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iEAAiE;AACjE,SAAS,cAAc,CAAC,KAAuB;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,SAAS,iBAAiB,CAAC,KAAuB;IAChD,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,SAAS,kBAAkB,CAAC,KAAuB;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2EAA2E;AAC3E,SAAS,wBAAwB,CAAC,KAAuB;IACvD,iEAAiE;IACjE,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"permission-resolver.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/permission-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export type SendMessageOptions = {
|
|
|
16
16
|
bypassInputSurgeGuard?: boolean;
|
|
17
17
|
replayFromHistory?: boolean;
|
|
18
18
|
preferredMessageId?: string;
|
|
19
|
+
/** The turn is model input only and must not be projected as a user message in the UI. */
|
|
20
|
+
suppressUserMessageDisplay?: boolean;
|
|
19
21
|
};
|
|
20
22
|
export type HandleApprovalDecisionOptions = {
|
|
21
23
|
onTextChunk?: (fullText: string, chunk: string) => void;
|
|
@@ -52,6 +54,7 @@ export type ConversationEventSink = (event: ConversationEvent) => void;
|
|
|
52
54
|
export type QueuedTurnStartObserver = (execution: {
|
|
53
55
|
readonly requestId: string;
|
|
54
56
|
readonly input: string | UserTurn;
|
|
57
|
+
readonly suppressUserMessageDisplay?: boolean;
|
|
55
58
|
}) => void;
|
|
56
59
|
export declare class ConversationAdapter {
|
|
57
60
|
#private;
|
|
@@ -68,13 +71,18 @@ export declare class ConversationAdapter {
|
|
|
68
71
|
approval: SessionApprovalQuery;
|
|
69
72
|
turnFlow: TurnFlow;
|
|
70
73
|
queueForeground?: boolean;
|
|
74
|
+
queueCapacity?: number;
|
|
75
|
+
/** Test seam: bound how long cancel waits for a hung active turn. */
|
|
76
|
+
activeCancelTimeoutMs?: number;
|
|
71
77
|
queuePersistence?: QueuePersistence<QueuedMessageSnapshot>;
|
|
72
78
|
});
|
|
73
79
|
setEventSink(sink: ConversationEventSink | null): void;
|
|
74
80
|
setQueueStateObserver(observer: QueueStateObserver | null): void;
|
|
75
81
|
setQueuedTurnStartObserver(observer: QueuedTurnStartObserver | null): void;
|
|
76
82
|
isQueueActive(): boolean;
|
|
77
|
-
|
|
83
|
+
/** Whether the foreground queue owns a new submission's UI lifecycle. */
|
|
84
|
+
isQueueOwningSubmissions(): boolean;
|
|
85
|
+
sendMessage(input: string | UserTurn, { onTextChunk, onReasoningChunk, onCommandMessage, onEvent, hallucinationRetryCount, bypassInputSurgeGuard, replayFromHistory, preferredMessageId, suppressUserMessageDisplay, }?: SendMessageOptions): Promise<ConversationTerminal>;
|
|
78
86
|
resumeQueue(): Promise<void>;
|
|
79
87
|
discardQueue(): Promise<void>;
|
|
80
88
|
/**
|
|
@@ -83,10 +91,10 @@ export declare class ConversationAdapter {
|
|
|
83
91
|
* the queue is empty, the adapter has no queue (pass-through mode), or the
|
|
84
92
|
* underlying controller rejects the removal.
|
|
85
93
|
*
|
|
86
|
-
*
|
|
87
|
-
* the queue/pending state observers fire consistently.
|
|
94
|
+
* The item is correlated by its controller id, never its queue position.
|
|
88
95
|
*/
|
|
89
96
|
removeLastQueuedItem(): Promise<{
|
|
97
|
+
id: string;
|
|
90
98
|
text: string;
|
|
91
99
|
} | null>;
|
|
92
100
|
abort(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-adapter.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-adapter.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-adapter.ts"],"names":[],"mappings":"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"}
|