hoomanjs 1.29.2 → 1.31.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/README.md +216 -69
- package/dist/acp/acp-agent.d.ts +5 -5
- package/dist/acp/acp-agent.js +55 -54
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/approvals.d.ts +3 -3
- package/dist/acp/approvals.js +73 -115
- package/dist/acp/approvals.js.map +1 -1
- package/dist/acp/sessions/options.js +11 -25
- package/dist/acp/sessions/options.js.map +1 -1
- package/dist/acp/utils/tool-kind.js +1 -5
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/chat/app.d.ts +5 -1
- package/dist/chat/app.js +469 -234
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/approvals.d.ts +4 -3
- package/dist/chat/approvals.js +11 -45
- package/dist/chat/approvals.js.map +1 -1
- package/dist/chat/components/BottomChrome.d.ts +52 -0
- package/dist/chat/components/BottomChrome.js +12 -0
- package/dist/chat/components/BottomChrome.js.map +1 -0
- package/dist/chat/components/ChatMessage.d.ts +2 -2
- package/dist/chat/components/ChatMessage.js +5 -6
- package/dist/chat/components/ChatMessage.js.map +1 -1
- package/dist/chat/components/ChromePicker.d.ts +17 -0
- package/dist/chat/components/ChromePicker.js +35 -0
- package/dist/chat/components/ChromePicker.js.map +1 -0
- package/dist/chat/components/EmptyChatBanner.js +2 -3
- package/dist/chat/components/EmptyChatBanner.js.map +1 -1
- package/dist/chat/components/StatusBar.d.ts +1 -2
- package/dist/chat/components/StatusBar.js +8 -5
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/components/ThoughtEvent.d.ts +7 -0
- package/dist/chat/components/ThoughtEvent.js +30 -0
- package/dist/chat/components/ThoughtEvent.js.map +1 -0
- package/dist/chat/components/TodoPanel.js +52 -2
- package/dist/chat/components/TodoPanel.js.map +1 -1
- package/dist/chat/components/ToolEvent.js +1 -1
- package/dist/chat/components/ToolEvent.js.map +1 -1
- package/dist/chat/components/Transcript.d.ts +11 -2
- package/dist/chat/components/Transcript.js +78 -4
- package/dist/chat/components/Transcript.js.map +1 -1
- package/dist/chat/components/markdown/BlockRenderer.js +7 -7
- package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
- package/dist/chat/components/markdown/MarkdownMessage.js +1 -1
- package/dist/chat/components/markdown/MarkdownMessage.js.map +1 -1
- package/dist/chat/components/shared.js +2 -0
- package/dist/chat/components/shared.js.map +1 -1
- package/dist/chat/index.d.ts +4 -0
- package/dist/chat/index.js +21 -4
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/steering.d.ts +20 -0
- package/dist/chat/steering.js +67 -0
- package/dist/chat/steering.js.map +1 -0
- package/dist/chat/types.d.ts +5 -1
- package/dist/cli.js +91 -13
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.d.ts +1 -1
- package/dist/configure/app.js +581 -303
- package/dist/configure/app.js.map +1 -1
- package/dist/configure/components/MenuScreen.d.ts +4 -2
- package/dist/configure/components/MenuScreen.js +33 -6
- package/dist/configure/components/MenuScreen.js.map +1 -1
- package/dist/configure/components/SelectMenuItem.d.ts +1 -0
- package/dist/configure/components/SelectMenuItem.js +19 -10
- package/dist/configure/components/SelectMenuItem.js.map +1 -1
- package/dist/configure/index.js +4 -2
- package/dist/configure/index.js.map +1 -1
- package/dist/configure/types.d.ts +14 -12
- package/dist/configure/utils.d.ts +2 -0
- package/dist/configure/utils.js +21 -2
- package/dist/configure/utils.js.map +1 -1
- package/dist/core/agent/index.d.ts +3 -3
- package/dist/core/agent/index.js +26 -29
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/agent/mode-aware-tool-registry.js +2 -1
- package/dist/core/agent/mode-aware-tool-registry.js.map +1 -1
- package/dist/core/approvals/intervention.d.ts +34 -0
- package/dist/core/approvals/intervention.js +94 -0
- package/dist/core/approvals/intervention.js.map +1 -0
- package/dist/core/config.d.ts +49 -28
- package/dist/core/config.js +85 -26
- package/dist/core/config.js.map +1 -1
- package/dist/core/context/index.d.ts +11 -2
- package/dist/core/context/index.js +54 -4
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/model-extractor.d.ts +13 -0
- package/dist/core/context/model-extractor.js +98 -0
- package/dist/core/context/model-extractor.js.map +1 -0
- package/dist/core/index.d.ts +6 -2
- package/dist/core/index.js +6 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/config.d.ts +28 -0
- package/dist/core/mcp/index.d.ts +5 -3
- package/dist/core/mcp/index.js +4 -2
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/manager.d.ts +14 -1
- package/dist/core/mcp/manager.js +76 -4
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/mcp/oauth/callback-server.d.ts +16 -0
- package/dist/core/mcp/oauth/callback-server.js +134 -0
- package/dist/core/mcp/oauth/callback-server.js.map +1 -0
- package/dist/core/mcp/oauth/identity.d.ts +9 -0
- package/dist/core/mcp/oauth/identity.js +31 -0
- package/dist/core/mcp/oauth/identity.js.map +1 -0
- package/dist/core/mcp/oauth/index.d.ts +11 -0
- package/dist/core/mcp/oauth/index.js +15 -0
- package/dist/core/mcp/oauth/index.js.map +1 -0
- package/dist/core/mcp/oauth/provider.d.ts +43 -0
- package/dist/core/mcp/oauth/provider.js +203 -0
- package/dist/core/mcp/oauth/provider.js.map +1 -0
- package/dist/core/mcp/oauth/service.d.ts +29 -0
- package/dist/core/mcp/oauth/service.js +139 -0
- package/dist/core/mcp/oauth/service.js.map +1 -0
- package/dist/core/mcp/oauth/store.d.ts +14 -0
- package/dist/core/mcp/oauth/store.js +86 -0
- package/dist/core/mcp/oauth/store.js.map +1 -0
- package/dist/core/mcp/oauth/types.d.ts +87 -0
- package/dist/core/mcp/oauth/types.js +45 -0
- package/dist/core/mcp/oauth/types.js.map +1 -0
- package/dist/core/mcp/types.d.ts +56 -0
- package/dist/core/mcp/types.js +3 -0
- package/dist/core/mcp/types.js.map +1 -1
- package/dist/core/memory/file-store.d.ts +24 -0
- package/dist/core/memory/file-store.js +151 -0
- package/dist/core/memory/file-store.js.map +1 -0
- package/dist/core/memory/index.d.ts +2 -5
- package/dist/core/memory/index.js +2 -3
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/memory/runtime.d.ts +4 -0
- package/dist/core/memory/runtime.js +37 -0
- package/dist/core/memory/runtime.js.map +1 -0
- package/dist/core/models/anthropic.js +24 -1
- package/dist/core/models/anthropic.js.map +1 -1
- package/dist/core/models/moonshot.js +33 -1
- package/dist/core/models/moonshot.js.map +1 -1
- package/dist/core/modes/definitions.d.ts +19 -0
- package/dist/core/modes/definitions.js +99 -0
- package/dist/core/modes/definitions.js.map +1 -0
- package/dist/core/modes/index.d.ts +3 -0
- package/dist/core/modes/index.js +4 -0
- package/dist/core/modes/index.js.map +1 -0
- package/dist/core/modes/registry.d.ts +9 -0
- package/dist/core/modes/registry.js +57 -0
- package/dist/core/modes/registry.js.map +1 -0
- package/dist/core/modes/schema.d.ts +5 -0
- package/dist/core/modes/schema.js +6 -0
- package/dist/core/modes/schema.js.map +1 -0
- package/dist/core/prompts/agents/research.md +8 -8
- package/dist/core/prompts/bundled.d.ts +3 -0
- package/dist/core/prompts/bundled.js +14 -0
- package/dist/core/prompts/bundled.js.map +1 -0
- package/dist/core/prompts/environment.d.ts +0 -1
- package/dist/core/prompts/environment.js +0 -2
- package/dist/core/prompts/environment.js.map +1 -1
- package/dist/core/prompts/index.d.ts +1 -4
- package/dist/core/prompts/index.js +1 -7
- package/dist/core/prompts/index.js.map +1 -1
- package/dist/core/prompts/modes/agent.md +3 -0
- package/dist/core/prompts/modes/ask.md +5 -3
- package/dist/core/prompts/modes/plan.md +2 -2
- package/dist/core/prompts/runtime.d.ts +10 -0
- package/dist/core/prompts/runtime.js +136 -0
- package/dist/core/prompts/runtime.js.map +1 -0
- package/dist/core/prompts/session-mode-appendix.d.ts +3 -9
- package/dist/core/prompts/session-mode-appendix.js +32 -69
- package/dist/core/prompts/session-mode-appendix.js.map +1 -1
- package/dist/core/prompts/static/environment.md +2 -2
- package/dist/core/prompts/static/filesystem.md +2 -0
- package/dist/core/prompts/static/init.md +25 -0
- package/dist/core/prompts/static/memory.md +9 -123
- package/dist/core/prompts/static/planning.md +1 -1
- package/dist/core/prompts/static/skills.md +6 -5
- package/dist/core/prompts/static/subagents.md +2 -2
- package/dist/core/prompts/static/web-search.md +2 -1
- package/dist/core/prompts/system.js +12 -29
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +105 -32
- package/dist/core/skills/built-in/hooman-skills/SKILL.md +1 -1
- package/dist/core/skills/index.d.ts +1 -0
- package/dist/core/skills/index.js +1 -0
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/plugin.d.ts +7 -0
- package/dist/core/skills/plugin.js +40 -0
- package/dist/core/skills/plugin.js.map +1 -0
- package/dist/core/state/agent-app-state.d.ts +1 -1
- package/dist/core/state/agent-app-state.js +1 -1
- package/dist/core/state/session-mode.d.ts +2 -9
- package/dist/core/state/session-mode.js +4 -12
- package/dist/core/state/session-mode.js.map +1 -1
- package/dist/core/state/tool-approvals.d.ts +4 -8
- package/dist/core/state/tool-approvals.js +14 -76
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/subagents/index.d.ts +3 -0
- package/dist/core/subagents/index.js +4 -0
- package/dist/core/subagents/index.js.map +1 -0
- package/dist/core/subagents/research.d.ts +16 -0
- package/dist/core/subagents/research.js +58 -0
- package/dist/core/subagents/research.js.map +1 -0
- package/dist/core/{agents → subagents}/runner.d.ts +6 -5
- package/dist/core/{agents → subagents}/runner.js +8 -10
- package/dist/core/subagents/runner.js.map +1 -0
- package/dist/core/{agents/tools.d.ts → subagents/tool.d.ts} +6 -6
- package/dist/core/{agents/tools.js → subagents/tool.js} +14 -16
- package/dist/core/subagents/tool.js.map +1 -0
- package/dist/core/tools/filesystem.d.ts +1 -0
- package/dist/core/tools/filesystem.js +38 -3
- package/dist/core/tools/filesystem.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -1
- package/dist/core/tools/index.js +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/plan.js +2 -6
- package/dist/core/tools/plan.js.map +1 -1
- package/dist/core/tools/time.js +1 -1
- package/dist/core/tools/time.js.map +1 -1
- package/dist/core/utils/browser.d.ts +1 -0
- package/dist/core/utils/browser.js +25 -0
- package/dist/core/utils/browser.js.map +1 -0
- package/dist/core/utils/paths.d.ts +2 -4
- package/dist/core/utils/paths.js +2 -4
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/daemon/approvals.d.ts +2 -2
- package/dist/daemon/approvals.js +51 -56
- package/dist/daemon/approvals.js.map +1 -1
- package/dist/daemon/index.js +9 -6
- package/dist/daemon/index.js.map +1 -1
- package/dist/exec/approvals.d.ts +2 -4
- package/dist/exec/approvals.js +16 -48
- package/dist/exec/approvals.js.map +1 -1
- package/dist/index.d.ts +13 -18
- package/dist/index.js +9 -11
- package/dist/index.js.map +1 -1
- package/package.json +5 -18
- package/dist/chat/components/ScrollView.d.ts +0 -106
- package/dist/chat/components/ScrollView.js +0 -80
- package/dist/chat/components/ScrollView.js.map +0 -1
- package/dist/chat/components/TranscriptViewport.d.ts +0 -9
- package/dist/chat/components/TranscriptViewport.js +0 -124
- package/dist/chat/components/TranscriptViewport.js.map +0 -1
- package/dist/core/agents/definitions.d.ts +0 -12
- package/dist/core/agents/definitions.js +0 -20
- package/dist/core/agents/definitions.js.map +0 -1
- package/dist/core/agents/index.d.ts +0 -4
- package/dist/core/agents/index.js +0 -5
- package/dist/core/agents/index.js.map +0 -1
- package/dist/core/agents/registry.d.ts +0 -5
- package/dist/core/agents/registry.js +0 -84
- package/dist/core/agents/registry.js.map +0 -1
- package/dist/core/agents/runner.js.map +0 -1
- package/dist/core/agents/tools.js.map +0 -1
- package/dist/core/inference/embedder.d.ts +0 -26
- package/dist/core/inference/embedder.js +0 -85
- package/dist/core/inference/embedder.js.map +0 -1
- package/dist/core/inference/index.d.ts +0 -9
- package/dist/core/inference/index.js +0 -13
- package/dist/core/inference/index.js.map +0 -1
- package/dist/core/inference/loader.d.ts +0 -16
- package/dist/core/inference/loader.js +0 -129
- package/dist/core/inference/loader.js.map +0 -1
- package/dist/core/inference/reranker.d.ts +0 -28
- package/dist/core/inference/reranker.js +0 -66
- package/dist/core/inference/reranker.js.map +0 -1
- package/dist/core/memory/brain.d.ts +0 -25
- package/dist/core/memory/brain.js +0 -137
- package/dist/core/memory/brain.js.map +0 -1
- package/dist/core/memory/database.d.ts +0 -4
- package/dist/core/memory/database.js +0 -87
- package/dist/core/memory/database.js.map +0 -1
- package/dist/core/memory/tools.d.ts +0 -16
- package/dist/core/memory/tools.js +0 -110
- package/dist/core/memory/tools.js.map +0 -1
- package/dist/core/memory/types.d.ts +0 -11
- package/dist/core/memory/types.js +0 -2
- package/dist/core/memory/types.js.map +0 -1
- package/dist/core/prompts/skills.d.ts +0 -15
- package/dist/core/prompts/skills.js +0 -92
- package/dist/core/prompts/skills.js.map +0 -1
- package/dist/core/prompts/static/wiki.md +0 -25
- package/dist/core/wiki/converters.d.ts +0 -12
- package/dist/core/wiki/converters.js +0 -73
- package/dist/core/wiki/converters.js.map +0 -1
- package/dist/core/wiki/database.d.ts +0 -39
- package/dist/core/wiki/database.js +0 -177
- package/dist/core/wiki/database.js.map +0 -1
- package/dist/core/wiki/index.d.ts +0 -7
- package/dist/core/wiki/index.js +0 -5
- package/dist/core/wiki/index.js.map +0 -1
- package/dist/core/wiki/storage.d.ts +0 -38
- package/dist/core/wiki/storage.js +0 -206
- package/dist/core/wiki/storage.js.map +0 -1
- package/dist/core/wiki/tools.d.ts +0 -5
- package/dist/core/wiki/tools.js +0 -32
- package/dist/core/wiki/tools.js.map +0 -1
|
@@ -34,7 +34,7 @@ Example layout:
|
|
|
34
34
|
5. Treat files inside a skill directory as user data. Read before overwriting.
|
|
35
35
|
6. Never delete a skill folder unless the user explicitly asks to remove that skill.
|
|
36
36
|
7. For custom local authoring or edits, create/edit files directly under `~/.hooman/skills/<folder>`.
|
|
37
|
-
8. Any skill install, removal, creation, or edit requires restarting the running Hooman agent/session before the
|
|
37
|
+
8. Any skill install, removal, creation, or edit requires restarting the running Hooman agent/session before the runtime skill inventory changes.
|
|
38
38
|
|
|
39
39
|
## Exact CLI Commands
|
|
40
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oCAAoC,EACpC,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LocalAgent } from "@strands-agents/sdk";
|
|
2
|
+
import { AgentSkills, type SkillSource } from "@strands-agents/sdk/vended-plugins/skills";
|
|
3
|
+
export declare const AGENT_SKILLS_STATE_KEY = "hooman.agentSkills";
|
|
4
|
+
export declare function builtInSkillsPath(): string;
|
|
5
|
+
export declare function createAgentSkillSources(): SkillSource[];
|
|
6
|
+
export declare function createAgentSkillsPlugin(): AgentSkills;
|
|
7
|
+
export declare function clearAgentSkillsPromptInjectionState(agent: LocalAgent): void;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { AgentSkills, } from "@strands-agents/sdk/vended-plugins/skills";
|
|
5
|
+
import { skillsPath } from "../utils/paths.js";
|
|
6
|
+
export const AGENT_SKILLS_STATE_KEY = "hooman.agentSkills";
|
|
7
|
+
export function builtInSkillsPath() {
|
|
8
|
+
return join(dirname(fileURLToPath(import.meta.url)), "./built-in");
|
|
9
|
+
}
|
|
10
|
+
export function createAgentSkillSources() {
|
|
11
|
+
const sources = [];
|
|
12
|
+
const bundled = builtInSkillsPath();
|
|
13
|
+
if (existsSync(bundled)) {
|
|
14
|
+
sources.push(bundled);
|
|
15
|
+
}
|
|
16
|
+
const installed = skillsPath();
|
|
17
|
+
if (existsSync(installed)) {
|
|
18
|
+
sources.push(installed);
|
|
19
|
+
}
|
|
20
|
+
return sources;
|
|
21
|
+
}
|
|
22
|
+
export function createAgentSkillsPlugin() {
|
|
23
|
+
return new AgentSkills({
|
|
24
|
+
skills: createAgentSkillSources(),
|
|
25
|
+
stateKey: AGENT_SKILLS_STATE_KEY,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function clearAgentSkillsPromptInjectionState(agent) {
|
|
29
|
+
const value = agent.appState.get(AGENT_SKILLS_STATE_KEY);
|
|
30
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const next = { ...value };
|
|
34
|
+
if (!Object.prototype.hasOwnProperty.call(next, "lastInjectedXml")) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
delete next.lastInjectedXml;
|
|
38
|
+
agent.appState.set(AGENT_SKILLS_STATE_KEY, next);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/core/skills/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EACL,WAAW,GAEZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAE3D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,WAAW,CAAC;QACrB,MAAM,EAAE,uBAAuB,EAAE;QACjC,QAAQ,EAAE,sBAAsB;KACjC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAiB;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAA+B,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACnE,OAAO;IACT,CAAC;IAED,OAAO,IAAI,CAAC,eAAe,CAAC;IAC5B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Agent } from "@strands-agents/sdk";
|
|
2
2
|
/**
|
|
3
3
|
* Copies every entry from `from.appState` onto `to.appState` (via Strands `getAll` / `set`).
|
|
4
|
-
* Use
|
|
4
|
+
* Use when appState must survive agent replacement or rehydration.
|
|
5
5
|
*/
|
|
6
6
|
export declare function copyAgentAppState(from: Agent, to: Agent): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copies every entry from `from.appState` onto `to.appState` (via Strands `getAll` / `set`).
|
|
3
|
-
* Use
|
|
3
|
+
* Use when appState must survive agent replacement or rehydration.
|
|
4
4
|
*/
|
|
5
5
|
export function copyAgentAppState(from, to) {
|
|
6
6
|
const data = from.appState.getAll();
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type SessionMode } from "../modes/schema.js";
|
|
2
2
|
export declare const MODE_STATE_KEY = "mode";
|
|
3
|
-
export
|
|
4
|
-
default: "default";
|
|
5
|
-
plan: "plan";
|
|
6
|
-
ask: "ask";
|
|
7
|
-
}>;
|
|
8
|
-
export type SessionMode = z.infer<typeof SessionModeSchema>;
|
|
3
|
+
export type { SessionMode } from "../modes/schema.js";
|
|
9
4
|
type AppStateLike = {
|
|
10
5
|
get<T = unknown>(key: string): T;
|
|
11
6
|
set(key: string, value: unknown): void;
|
|
@@ -16,8 +11,6 @@ type AgentLike = {
|
|
|
16
11
|
export type ModeState = {
|
|
17
12
|
mode: SessionMode;
|
|
18
13
|
};
|
|
19
|
-
export declare function normalizeSessionMode(value: unknown): SessionMode;
|
|
20
14
|
export declare function getModeState(agent: AgentLike): ModeState;
|
|
21
15
|
export declare function setSessionMode(agent: AgentLike, mode: SessionMode): void;
|
|
22
16
|
export declare function clearModeToDefault(agent: AgentLike): void;
|
|
23
|
-
export {};
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_SESSION_MODE } from "../modes/schema.js";
|
|
2
2
|
export const MODE_STATE_KEY = "mode";
|
|
3
|
-
export const SessionModeSchema = z.enum(["default", "plan", "ask"]);
|
|
4
|
-
export function normalizeSessionMode(value) {
|
|
5
|
-
const parsed = SessionModeSchema.safeParse(value);
|
|
6
|
-
return parsed.success ? parsed.data : "default";
|
|
7
|
-
}
|
|
8
|
-
function normalizeMode(value) {
|
|
9
|
-
return normalizeSessionMode(value);
|
|
10
|
-
}
|
|
11
3
|
export function getModeState(agent) {
|
|
12
|
-
const mode =
|
|
13
|
-
return { mode };
|
|
4
|
+
const mode = agent.appState.get(MODE_STATE_KEY) ?? DEFAULT_SESSION_MODE;
|
|
5
|
+
return { mode: mode };
|
|
14
6
|
}
|
|
15
7
|
export function setSessionMode(agent, mode) {
|
|
16
8
|
agent.appState.set(MODE_STATE_KEY, mode);
|
|
17
9
|
}
|
|
18
10
|
export function clearModeToDefault(agent) {
|
|
19
|
-
agent.appState.set(MODE_STATE_KEY,
|
|
11
|
+
agent.appState.set(MODE_STATE_KEY, DEFAULT_SESSION_MODE);
|
|
20
12
|
}
|
|
21
13
|
//# sourceMappingURL=session-mode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-mode.js","sourceRoot":"","sources":["../../../src/core/state/session-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session-mode.js","sourceRoot":"","sources":["../../../src/core/state/session-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,oBAAoB,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAgBrC,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC;IACxE,OAAO,EAAE,IAAI,EAAE,IAAc,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,IAAiB;IAChE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SessionMode } from "./session-mode.js";
|
|
1
2
|
type AppStateLike = {
|
|
2
3
|
get<T = unknown>(key: string): T;
|
|
3
4
|
set(key: string, value: unknown): void;
|
|
@@ -8,10 +9,6 @@ type AgentLike = {
|
|
|
8
9
|
export declare const ENTER_PLAN_MODE_TOOL = "enter_plan_mode";
|
|
9
10
|
export declare const EXIT_PLAN_MODE_TOOL = "exit_plan_mode";
|
|
10
11
|
export declare const INTERNAL_ALWAYS_ALLOWED: Set<string>;
|
|
11
|
-
export declare const PLAN_MODE_ALWAYS_ALLOWED: Set<string>;
|
|
12
|
-
export declare const PLAN_MODE_VISIBLE: Set<string>;
|
|
13
|
-
/** Same narrowed surface as plan mode but without plan lifecycle tools. */
|
|
14
|
-
export declare const ASK_MODE_VISIBLE: Set<string>;
|
|
15
12
|
/**
|
|
16
13
|
* In session mode `plan`, block `write_file` / `edit_file` unless the target path resolves
|
|
17
14
|
* under the app plans directory. Runs before session-wide “always allow” so plan boundaries
|
|
@@ -21,12 +18,11 @@ export declare function planModeWriteEditRejectionMessage(agent: AgentLike, tool
|
|
|
21
18
|
export declare function getSessionAllowedTools(agent: AgentLike): string[];
|
|
22
19
|
/**
|
|
23
20
|
* Session-wide tool allowlist ("always allow" in UI), plus implicit allow for
|
|
24
|
-
* read/write/edit when paths resolve under attachments
|
|
25
|
-
*
|
|
26
|
-
* only (writes/edits).
|
|
21
|
+
* read/write/edit when paths resolve under attachments or plans (reads), or
|
|
22
|
+
* plans only (writes/edits).
|
|
27
23
|
*/
|
|
28
24
|
export declare function isToolSessionAllowed(agent: AgentLike, toolName: string, toolInput?: unknown): boolean;
|
|
29
|
-
export declare function isToolVisible(mode:
|
|
25
|
+
export declare function isToolVisible(mode: SessionMode, toolName: string, options?: {
|
|
30
26
|
mcpReadOnlyHint?: boolean;
|
|
31
27
|
}): boolean;
|
|
32
28
|
export declare function allowToolForSession(agent: AgentLike, toolName: string): void;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { RUN_AGENTS_TOOL_NAME } from "../agents/tools.js";
|
|
1
|
+
import { RUN_SUBAGENTS_TOOL_NAME } from "../subagents/tool.js";
|
|
2
|
+
import { getModeTools } from "../modes/definitions.js";
|
|
4
3
|
import { getModeState } from "./session-mode.js";
|
|
5
4
|
import { isResolvedPathInsideDir, normalizeUserPath, } from "../utils/normalize-user-path.js";
|
|
6
|
-
import { attachmentsPath, plansPath
|
|
7
|
-
/** Bundled `SKILL.md` tree (`dist/core/skills/built-in` or `src/...` under tsx). */
|
|
8
|
-
const BUILTIN_SKILLS_ROOT = join(dirname(fileURLToPath(import.meta.url)), "../skills/built-in");
|
|
5
|
+
import { attachmentsPath, plansPath } from "../utils/paths.js";
|
|
9
6
|
const SESSION_ALLOWED_TOOLS_KEY = "allowedTools";
|
|
10
7
|
const READ_FILE_TOOL = "read_file";
|
|
11
8
|
const READ_MULTIPLE_FILES_TOOL = "read_multiple_files";
|
|
@@ -15,13 +12,16 @@ export const ENTER_PLAN_MODE_TOOL = "enter_plan_mode";
|
|
|
15
12
|
export const EXIT_PLAN_MODE_TOOL = "exit_plan_mode";
|
|
16
13
|
export const INTERNAL_ALWAYS_ALLOWED = new Set([
|
|
17
14
|
// Strands / runtime
|
|
15
|
+
"skills",
|
|
16
|
+
"retrieve_offloaded_content",
|
|
17
|
+
"search_memory",
|
|
18
18
|
"strands_structured_output",
|
|
19
19
|
// Todos
|
|
20
20
|
"update_todos",
|
|
21
21
|
// Thinking
|
|
22
22
|
"think",
|
|
23
23
|
// Agent orchestration
|
|
24
|
-
|
|
24
|
+
RUN_SUBAGENTS_TOOL_NAME,
|
|
25
25
|
// Sleep
|
|
26
26
|
"sleep",
|
|
27
27
|
// Process lifecycle
|
|
@@ -29,12 +29,6 @@ export const INTERNAL_ALWAYS_ALLOWED = new Set([
|
|
|
29
29
|
// Time
|
|
30
30
|
"convert_time",
|
|
31
31
|
"get_current_time",
|
|
32
|
-
// Wiki
|
|
33
|
-
"wiki_search",
|
|
34
|
-
// Long-term memory
|
|
35
|
-
"memory_add",
|
|
36
|
-
"memory_archive",
|
|
37
|
-
"memory_search",
|
|
38
32
|
// Filesystem (list / search / metadata)
|
|
39
33
|
"directory_tree",
|
|
40
34
|
"get_file_info",
|
|
@@ -44,50 +38,6 @@ export const INTERNAL_ALWAYS_ALLOWED = new Set([
|
|
|
44
38
|
ENTER_PLAN_MODE_TOOL,
|
|
45
39
|
EXIT_PLAN_MODE_TOOL,
|
|
46
40
|
]);
|
|
47
|
-
export const PLAN_MODE_ALWAYS_ALLOWED = new Set([
|
|
48
|
-
"read_file",
|
|
49
|
-
"read_multiple_files",
|
|
50
|
-
"fetch",
|
|
51
|
-
"web_search",
|
|
52
|
-
]);
|
|
53
|
-
export const PLAN_MODE_VISIBLE = new Set([
|
|
54
|
-
// Internet
|
|
55
|
-
"fetch",
|
|
56
|
-
"web_search",
|
|
57
|
-
// Strands / runtime
|
|
58
|
-
"strands_structured_output",
|
|
59
|
-
// Todos
|
|
60
|
-
"update_todos",
|
|
61
|
-
// Thinking
|
|
62
|
-
"think",
|
|
63
|
-
// Agent orchestration
|
|
64
|
-
RUN_AGENTS_TOOL_NAME,
|
|
65
|
-
// Sleep
|
|
66
|
-
"sleep",
|
|
67
|
-
// Process lifecycle
|
|
68
|
-
"bye",
|
|
69
|
-
// Time
|
|
70
|
-
"convert_time",
|
|
71
|
-
"get_current_time",
|
|
72
|
-
// Wiki
|
|
73
|
-
"wiki_search",
|
|
74
|
-
// Long-term memory
|
|
75
|
-
"memory_search",
|
|
76
|
-
// Filesystem (list / search / metadata)
|
|
77
|
-
"directory_tree",
|
|
78
|
-
"get_file_info",
|
|
79
|
-
"list_directory",
|
|
80
|
-
"search_files",
|
|
81
|
-
"read_file",
|
|
82
|
-
"read_multiple_files",
|
|
83
|
-
"write_file",
|
|
84
|
-
"edit_file",
|
|
85
|
-
// Planning session (mode / plan file)
|
|
86
|
-
ENTER_PLAN_MODE_TOOL,
|
|
87
|
-
EXIT_PLAN_MODE_TOOL,
|
|
88
|
-
]);
|
|
89
|
-
/** Same narrowed surface as plan mode but without plan lifecycle tools. */
|
|
90
|
-
export const ASK_MODE_VISIBLE = new Set([...PLAN_MODE_VISIBLE].filter((name) => name !== ENTER_PLAN_MODE_TOOL && name !== EXIT_PLAN_MODE_TOOL));
|
|
91
41
|
function isPlainObjectRecord(value) {
|
|
92
42
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93
43
|
}
|
|
@@ -121,8 +71,7 @@ export function planModeWriteEditRejectionMessage(agent, toolName, toolInput) {
|
|
|
121
71
|
function isImplicitPathAllowed(toolName, toolInput) {
|
|
122
72
|
const attachments = attachmentsPath();
|
|
123
73
|
const plans = plansPath();
|
|
124
|
-
const
|
|
125
|
-
const readRoots = [attachments, plans, skills, BUILTIN_SKILLS_ROOT];
|
|
74
|
+
const readRoots = [attachments, plans];
|
|
126
75
|
if (toolName === READ_FILE_TOOL) {
|
|
127
76
|
const raw = toolInput.path;
|
|
128
77
|
if (typeof raw !== "string" || !raw.trim()) {
|
|
@@ -185,19 +134,13 @@ export function getSessionAllowedTools(agent) {
|
|
|
185
134
|
}
|
|
186
135
|
/**
|
|
187
136
|
* Session-wide tool allowlist ("always allow" in UI), plus implicit allow for
|
|
188
|
-
* read/write/edit when paths resolve under attachments
|
|
189
|
-
*
|
|
190
|
-
* only (writes/edits).
|
|
137
|
+
* read/write/edit when paths resolve under attachments or plans (reads), or
|
|
138
|
+
* plans only (writes/edits).
|
|
191
139
|
*/
|
|
192
140
|
export function isToolSessionAllowed(agent, toolName, toolInput) {
|
|
193
|
-
const mode = getModeState(agent).mode;
|
|
194
141
|
if (getSessionAllowedTools(agent).includes(toolName)) {
|
|
195
142
|
return true;
|
|
196
143
|
}
|
|
197
|
-
if ((mode === "plan" || mode === "ask") &&
|
|
198
|
-
PLAN_MODE_ALWAYS_ALLOWED.has(toolName)) {
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
144
|
if (isPlainObjectRecord(toolInput) &&
|
|
202
145
|
isImplicitPathAllowed(toolName, toolInput)) {
|
|
203
146
|
return true;
|
|
@@ -206,20 +149,15 @@ export function isToolSessionAllowed(agent, toolName, toolInput) {
|
|
|
206
149
|
}
|
|
207
150
|
export function isToolVisible(mode, toolName, options) {
|
|
208
151
|
const readOnlyHinted = options?.mcpReadOnlyHint === true;
|
|
209
|
-
if (mode === "
|
|
152
|
+
if (mode === "agent") {
|
|
210
153
|
return true;
|
|
211
154
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
return PLAN_MODE_VISIBLE.has(toolName);
|
|
217
|
-
}
|
|
218
|
-
if (mode === "ask") {
|
|
155
|
+
const visibleTools = getModeTools(mode);
|
|
156
|
+
if (visibleTools) {
|
|
219
157
|
if (readOnlyHinted) {
|
|
220
158
|
return true;
|
|
221
159
|
}
|
|
222
|
-
return
|
|
160
|
+
return visibleTools.includes(toolName);
|
|
223
161
|
}
|
|
224
162
|
return false;
|
|
225
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { RESEARCH_SUBAGENT, loadResearchSubagent, type ResearchSubagentConfig, type ResearchSubagentDefinition, } from "./research.js";
|
|
2
|
+
export { runSubagentJobs, type AgentJob, type AgentJobResult, type RunAgentJobsResult, } from "./runner.js";
|
|
3
|
+
export { RUN_SUBAGENTS_TOOL_NAME, createRunSubagentTools } from "./tool.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/subagents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,GAIhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Config } from "../config.js";
|
|
2
|
+
export type ResearchSubagentConfig = {
|
|
3
|
+
id: "research";
|
|
4
|
+
name: string;
|
|
5
|
+
instructions: string;
|
|
6
|
+
description: string;
|
|
7
|
+
tools: readonly string[];
|
|
8
|
+
};
|
|
9
|
+
export type ResearchSubagentDefinition = Omit<ResearchSubagentConfig, "instructions"> & {
|
|
10
|
+
instructions: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const RESEARCH_SUBAGENT: ResearchSubagentConfig;
|
|
13
|
+
export declare function loadResearchSubagent(config: Config, options?: {
|
|
14
|
+
knownTools?: readonly string[];
|
|
15
|
+
baseSystemPrompt?: string;
|
|
16
|
+
}): ResearchSubagentDefinition;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import handlebars from "handlebars";
|
|
2
|
+
import { hasBundledPrompt, readBundledPrompt } from "../prompts/bundled.js";
|
|
3
|
+
import { getEnvironmentPromptContext } from "../prompts/environment.js";
|
|
4
|
+
const { compile } = handlebars;
|
|
5
|
+
const SECTION_BREAK = "\n\n---\n\n";
|
|
6
|
+
export const RESEARCH_SUBAGENT = {
|
|
7
|
+
id: "research",
|
|
8
|
+
name: "Research",
|
|
9
|
+
instructions: "agents/research.md",
|
|
10
|
+
description: "explores the workspace to gather information",
|
|
11
|
+
tools: [
|
|
12
|
+
"read_file",
|
|
13
|
+
"read_multiple_files",
|
|
14
|
+
"list_directory",
|
|
15
|
+
"directory_tree",
|
|
16
|
+
"search_files",
|
|
17
|
+
"get_file_info",
|
|
18
|
+
"fetch",
|
|
19
|
+
"web_search",
|
|
20
|
+
"think",
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
function promptContext(config) {
|
|
24
|
+
return {
|
|
25
|
+
name: config.name,
|
|
26
|
+
llm: config.llm,
|
|
27
|
+
environment: getEnvironmentPromptContext(),
|
|
28
|
+
compaction: config.compaction,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function loadResearchSubagent(config, options) {
|
|
32
|
+
const entry = RESEARCH_SUBAGENT;
|
|
33
|
+
const knownTools = options?.knownTools;
|
|
34
|
+
if (!hasBundledPrompt(...entry.instructions.split("/"))) {
|
|
35
|
+
throw new Error(`Subagent '${entry.id}' instructions file not found: ${entry.instructions}`);
|
|
36
|
+
}
|
|
37
|
+
const raw = readBundledPrompt(...entry.instructions.split("/"));
|
|
38
|
+
if (!raw) {
|
|
39
|
+
throw new Error(`Subagent '${entry.id}' instructions file is empty: ${entry.instructions}`);
|
|
40
|
+
}
|
|
41
|
+
const renderedInstructions = compile(raw)(promptContext(config)).trim();
|
|
42
|
+
const instructions = [options?.baseSystemPrompt?.trim(), renderedInstructions]
|
|
43
|
+
.filter(Boolean)
|
|
44
|
+
.join(SECTION_BREAK)
|
|
45
|
+
.trim();
|
|
46
|
+
if (!instructions) {
|
|
47
|
+
throw new Error(`Subagent '${entry.id}' instructions rendered to empty content.`);
|
|
48
|
+
}
|
|
49
|
+
const tools = knownTools
|
|
50
|
+
? entry.tools.filter((toolName) => knownTools.includes(toolName))
|
|
51
|
+
: [...entry.tools];
|
|
52
|
+
return {
|
|
53
|
+
...entry,
|
|
54
|
+
instructions,
|
|
55
|
+
tools,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=research.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/core/subagents/research.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,aAAa,CAAC;AAiBpC,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,8CAA8C;IAC3D,KAAK,EAAE;QACL,WAAW;QACX,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,OAAO;QACP,YAAY;QACZ,OAAO;KACR;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,WAAW,EAAE,2BAA2B,EAAE;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,OAAuE;IAEvE,MAAM,KAAK,GAAG,iBAAiB,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,kCAAkC,KAAK,CAAC,YAAY,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,iCAAiC,KAAK,CAAC,YAAY,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC;SAC3E,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,aAAa,CAAC;SACnB,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,2CAA2C,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO;QACL,GAAG,KAAK;QACR,YAAY;QACZ,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { BaseModelConfig, Model, Tool } from "@strands-agents/sdk";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ResearchSubagentDefinition } from "./research.js";
|
|
3
3
|
export type AgentJob = {
|
|
4
4
|
id: string;
|
|
5
|
-
kind:
|
|
5
|
+
kind: string;
|
|
6
6
|
description: string;
|
|
7
7
|
prompt: string;
|
|
8
8
|
};
|
|
9
9
|
export type AgentJobResult = {
|
|
10
10
|
id: string;
|
|
11
|
-
kind:
|
|
11
|
+
kind: string;
|
|
12
12
|
description: string;
|
|
13
13
|
status: "completed" | "failed";
|
|
14
14
|
content: string;
|
|
@@ -21,7 +21,7 @@ export type RunAgentJobsResult = {
|
|
|
21
21
|
};
|
|
22
22
|
type RunAgentJobsOptions = {
|
|
23
23
|
jobs: readonly AgentJob[];
|
|
24
|
-
|
|
24
|
+
research: ResearchSubagentDefinition;
|
|
25
25
|
tools: readonly Tool[];
|
|
26
26
|
createModel: () => Model<BaseModelConfig>;
|
|
27
27
|
concurrency: number;
|
|
@@ -32,5 +32,6 @@ type RunAgentJobsOptions = {
|
|
|
32
32
|
};
|
|
33
33
|
cancelSignal?: AbortSignal;
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
type RunSubagentJobsOptions = RunAgentJobsOptions;
|
|
36
|
+
export declare function runSubagentJobs(options: RunSubagentJobsOptions): Promise<RunAgentJobsResult>;
|
|
36
37
|
export {};
|
|
@@ -46,7 +46,7 @@ function selectTools(definition, tools) {
|
|
|
46
46
|
for (const name of definition.tools) {
|
|
47
47
|
const tool = byName.get(name);
|
|
48
48
|
if (!tool) {
|
|
49
|
-
throw new Error(`
|
|
49
|
+
throw new Error(`Subagent '${definition.id}' cannot access missing tool '${name}'.`);
|
|
50
50
|
}
|
|
51
51
|
selected.push(tool);
|
|
52
52
|
}
|
|
@@ -69,16 +69,16 @@ async function runSingleJob(job, definition, options) {
|
|
|
69
69
|
try {
|
|
70
70
|
const child = new Agent({
|
|
71
71
|
name: `${options.parent}-${definition.id}-${job.id}`,
|
|
72
|
-
systemPrompt: definition.
|
|
72
|
+
systemPrompt: definition.instructions,
|
|
73
73
|
model: options.createModel(),
|
|
74
74
|
appState: {
|
|
75
75
|
...(options.appState.userId ? { userId: options.appState.userId } : {}),
|
|
76
76
|
...(options.appState.sessionId
|
|
77
77
|
? { sessionId: options.appState.sessionId }
|
|
78
78
|
: {}),
|
|
79
|
-
|
|
79
|
+
string: definition.id,
|
|
80
80
|
},
|
|
81
|
-
tools: selectTools(definition, options.tools),
|
|
81
|
+
tools: [...selectTools(definition, options.tools)],
|
|
82
82
|
printer: false,
|
|
83
83
|
});
|
|
84
84
|
const result = await child.invoke(buildJobPrompt(job), {
|
|
@@ -134,7 +134,7 @@ function cancelledResult(job, message) {
|
|
|
134
134
|
stopReason: "cancelled",
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
|
-
export async function
|
|
137
|
+
export async function runSubagentJobs(options) {
|
|
138
138
|
if (options.jobs.length === 0) {
|
|
139
139
|
return { results: [] };
|
|
140
140
|
}
|
|
@@ -152,7 +152,6 @@ export async function runAgentJobs(options) {
|
|
|
152
152
|
})),
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
|
-
const defsByKind = new Map(options.definitions.map((entry) => [entry.id, entry]));
|
|
156
155
|
const ordered = [...options.jobs];
|
|
157
156
|
const results = ordered.map(() => null);
|
|
158
157
|
const graphNodes = [];
|
|
@@ -160,8 +159,7 @@ export async function runAgentJobs(options) {
|
|
|
160
159
|
const nodeToIndex = new Map();
|
|
161
160
|
const graphNodeResults = new Map();
|
|
162
161
|
for (const [index, job] of ordered.entries()) {
|
|
163
|
-
|
|
164
|
-
if (!definition) {
|
|
162
|
+
if (job.kind !== options.research.id) {
|
|
165
163
|
results[index] = {
|
|
166
164
|
id: job.id,
|
|
167
165
|
kind: job.kind,
|
|
@@ -178,7 +176,7 @@ export async function runAgentJobs(options) {
|
|
|
178
176
|
nodeToIndex.set(nodeId, index);
|
|
179
177
|
graphSources.push(nodeId);
|
|
180
178
|
graphNodes.push(new JobNode(nodeId, async () => {
|
|
181
|
-
const jobResult = await runSingleJob(job,
|
|
179
|
+
const jobResult = await runSingleJob(job, options.research, {
|
|
182
180
|
tools: options.tools,
|
|
183
181
|
createModel: options.createModel,
|
|
184
182
|
parent: options.parent,
|
|
@@ -192,7 +190,7 @@ export async function runAgentJobs(options) {
|
|
|
192
190
|
if (graphNodes.length > 0) {
|
|
193
191
|
try {
|
|
194
192
|
const graph = new Graph({
|
|
195
|
-
id: "
|
|
193
|
+
id: "run_subagents_graph",
|
|
196
194
|
nodes: graphNodes,
|
|
197
195
|
edges: [],
|
|
198
196
|
sources: graphSources,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/subagents/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { type JSONValue, type Tool } from "@strands-agents/sdk";
|
|
2
2
|
import type { BaseModelConfig, Model } from "@strands-agents/sdk";
|
|
3
|
-
import {
|
|
4
|
-
export declare const
|
|
5
|
-
type
|
|
3
|
+
import type { ResearchSubagentDefinition } from "./research.js";
|
|
4
|
+
export declare const RUN_SUBAGENTS_TOOL_NAME = "run_subagents";
|
|
5
|
+
type RunSubagentToolsOptions = {
|
|
6
6
|
parent: string;
|
|
7
|
-
|
|
7
|
+
research: ResearchSubagentDefinition;
|
|
8
8
|
tools: readonly Tool[];
|
|
9
9
|
createModel: () => Model<BaseModelConfig>;
|
|
10
|
-
|
|
10
|
+
concurrency: number;
|
|
11
11
|
};
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function createRunSubagentTools(options: RunSubagentToolsOptions): import("@strands-agents/sdk").InvokableTool<{
|
|
13
13
|
jobs: {
|
|
14
14
|
kind: "research";
|
|
15
15
|
description: string;
|