aws-runtime-bridge 1.9.33 → 1.9.41
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/adapter/AcodeSdkAdapter.d.ts +66 -5
- package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/AcodeSdkAdapter.js +771 -69
- package/dist/adapter/ClaudeSdkAdapter.d.ts +6 -0
- package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/ClaudeSdkAdapter.js +24 -1
- package/dist/adapter/OpencodeSdkAdapter.d.ts +19 -0
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/OpencodeSdkAdapter.js +62 -0
- package/dist/adapter/idle-poll-loop.d.ts +2 -1
- package/dist/adapter/idle-poll-loop.d.ts.map +1 -1
- package/dist/adapter/types.d.ts +86 -9
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/adapter/types.js +15 -5
- package/dist/index.js +15 -0
- package/dist/routes/acode-todos.d.ts +11 -0
- package/dist/routes/acode-todos.d.ts.map +1 -0
- package/dist/routes/acode-todos.js +75 -0
- package/dist/routes/ai-sources.js +4 -1
- package/dist/routes/dashboard.d.ts.map +1 -1
- package/dist/routes/dashboard.js +1 -1
- package/dist/routes/memory.d.ts +1 -1
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +3 -3
- package/dist/routes/pty.d.ts.map +1 -1
- package/dist/routes/pty.js +9 -0
- package/dist/routes/runtime-binding.d.ts.map +1 -1
- package/dist/routes/runtime-binding.js +6 -3
- package/dist/routes/sessions.js +89 -4
- package/dist/routes/sub-agents.d.ts +14 -0
- package/dist/routes/sub-agents.d.ts.map +1 -0
- package/dist/routes/sub-agents.js +267 -0
- package/dist/routes/terminal.d.ts +12 -1
- package/dist/routes/terminal.d.ts.map +1 -1
- package/dist/routes/terminal.js +326 -24
- package/dist/services/acode-package.d.ts +8 -1
- package/dist/services/acode-package.d.ts.map +1 -1
- package/dist/services/acode-package.js +33 -4
- package/dist/services/agent-event-store.d.ts +1 -0
- package/dist/services/agent-event-store.d.ts.map +1 -1
- package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
- package/dist/services/aws-client-agent-mcp.js +11 -4
- package/dist/services/event-delta-pusher.js +4 -4
- package/dist/services/fileSnapshotStore.js +1 -1
- package/dist/services/legacy-path-migration.d.ts +3 -0
- package/dist/services/legacy-path-migration.d.ts.map +1 -0
- package/dist/services/legacy-path-migration.js +66 -0
- package/dist/services/lifecycle-state.d.ts.map +1 -1
- package/dist/services/lifecycle-state.js +1 -1
- package/dist/services/runtime-binding.d.ts +5 -0
- package/dist/services/runtime-binding.d.ts.map +1 -1
- package/dist/services/runtime-binding.js +33 -1
- package/dist/services/session-output.d.ts +10 -1
- package/dist/services/session-output.d.ts.map +1 -1
- package/dist/services/session-output.js +54 -4
- package/dist/services/sub-agent-manager-instance.d.ts +4 -0
- package/dist/services/sub-agent-manager-instance.d.ts.map +1 -0
- package/dist/services/sub-agent-manager-instance.js +12 -0
- package/dist/services/workspace-files.d.ts +1 -0
- package/dist/services/workspace-files.d.ts.map +1 -1
- package/dist/services/workspace-files.js +57 -1
- package/package/acode/dist/ask-user-question-tool.d.ts +47 -0
- package/package/acode/dist/ask-user-question-tool.d.ts.map +1 -0
- package/package/acode/dist/ask-user-question-tool.js +233 -0
- package/package/acode/dist/built-in-file-tools.d.ts +2 -0
- package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
- package/package/acode/dist/built-in-file-tools.js +504 -3
- package/package/acode/dist/compaction.d.ts +242 -0
- package/package/acode/dist/compaction.d.ts.map +1 -0
- package/package/acode/dist/compaction.js +919 -0
- package/package/acode/dist/config.d.ts +6 -1
- package/package/acode/dist/config.d.ts.map +1 -1
- package/package/acode/dist/config.js +27 -2
- package/package/acode/dist/index.d.ts +4 -0
- package/package/acode/dist/index.d.ts.map +1 -1
- package/package/acode/dist/index.js +4 -0
- package/package/acode/dist/runtime.d.ts +257 -0
- package/package/acode/dist/runtime.d.ts.map +1 -1
- package/package/acode/dist/runtime.js +1843 -191
- package/package/acode/dist/skill-tool.d.ts +30 -0
- package/package/acode/dist/skill-tool.d.ts.map +1 -0
- package/package/acode/dist/skill-tool.js +174 -0
- package/package/acode/dist/sub-agent-manager.d.ts +264 -0
- package/package/acode/dist/sub-agent-manager.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-manager.js +825 -0
- package/package/acode/dist/sub-agent-store.d.ts +40 -0
- package/package/acode/dist/sub-agent-store.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-store.js +164 -0
- package/package/acode/dist/sub-agent-tools.d.ts +72 -0
- package/package/acode/dist/sub-agent-tools.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-tools.js +429 -0
- package/package/acode/dist/sub-agent-types.d.ts +85 -0
- package/package/acode/dist/sub-agent-types.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-types.js +8 -0
- package/package/acode/dist/todo-store.d.ts +42 -0
- package/package/acode/dist/todo-store.d.ts.map +1 -0
- package/package/acode/dist/todo-store.js +68 -0
- package/package/acode/dist/todo-tool.d.ts +6 -0
- package/package/acode/dist/todo-tool.d.ts.map +1 -0
- package/package/acode/dist/todo-tool.js +138 -0
- package/package/acode/dist/types.d.ts +41 -1
- package/package/acode/dist/types.d.ts.map +1 -1
- package/package/acode/package.json +13 -2
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +9 -0
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js +69 -10
- package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/config.js +4 -0
- package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/constants.js +3 -1
- package/package/aws-client-agent-mcp/dist/constants.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts +4 -1
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.js +6 -2
- package/package/aws-client-agent-mcp/dist/context-manager.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js +5 -3
- package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
- package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.js +15 -1
- package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +162 -71
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +1007 -504
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +371 -253
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +6 -17
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +20 -75
- package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +45 -45
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js +114 -162
- package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js +175 -164
- package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +3 -9
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -58
- package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +40 -9
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.js +123 -23
- package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +13 -13
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.js +23 -16
- package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +8 -5
- package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js +93 -0
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +12 -25
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +34 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +146 -18
- package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
- package/package.json +17 -7
- package/dist/adapter/AcodeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/AcodeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/AcodeSdkAdapter.test.js +0 -2000
- package/dist/adapter/AdapterRegistry.test.d.ts +0 -5
- package/dist/adapter/AdapterRegistry.test.d.ts.map +0 -1
- package/dist/adapter/AdapterRegistry.test.js +0 -118
- package/dist/adapter/ClaudeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/ClaudeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/ClaudeSdkAdapter.test.js +0 -311
- package/dist/adapter/CodexSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/CodexSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/CodexSdkAdapter.test.js +0 -270
- package/dist/adapter/OpencodeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/OpencodeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/OpencodeSdkAdapter.test.js +0 -158
- package/dist/adapter/acode-tool-names.test.d.ts +0 -2
- package/dist/adapter/acode-tool-names.test.d.ts.map +0 -1
- package/dist/adapter/acode-tool-names.test.js +0 -28
- package/dist/adapter/adapter.test.d.ts +0 -5
- package/dist/adapter/adapter.test.d.ts.map +0 -1
- package/dist/adapter/adapter.test.js +0 -180
- package/dist/adapter/idle-poll-loop.test.d.ts +0 -2
- package/dist/adapter/idle-poll-loop.test.d.ts.map +0 -1
- package/dist/adapter/idle-poll-loop.test.js +0 -85
- package/dist/adapter/types.test.d.ts +0 -2
- package/dist/adapter/types.test.d.ts.map +0 -1
- package/dist/adapter/types.test.js +0 -50
- package/dist/adapters/cc-switch/mcp-acode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-acode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-acode.test.js +0 -80
- package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-claudecode.test.js +0 -75
- package/dist/adapters/cc-switch/mcp-codex.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-codex.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-codex.test.js +0 -126
- package/dist/adapters/cc-switch/mcp-opencode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-opencode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-opencode.test.js +0 -62
- package/dist/adapters/cc-switch/skill-directory.test.d.ts +0 -2
- package/dist/adapters/cc-switch/skill-directory.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-directory.test.js +0 -74
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -107
- package/dist/routes/ai-sources.test.d.ts +0 -2
- package/dist/routes/ai-sources.test.d.ts.map +0 -1
- package/dist/routes/ai-sources.test.js +0 -169
- package/dist/routes/file-browser.test.d.ts +0 -5
- package/dist/routes/file-browser.test.d.ts.map +0 -1
- package/dist/routes/file-browser.test.js +0 -155
- package/dist/routes/git.test.d.ts +0 -2
- package/dist/routes/git.test.d.ts.map +0 -1
- package/dist/routes/git.test.js +0 -330
- package/dist/routes/instance.test.d.ts +0 -5
- package/dist/routes/instance.test.d.ts.map +0 -1
- package/dist/routes/instance.test.js +0 -389
- package/dist/routes/mcp.test.d.ts +0 -5
- package/dist/routes/mcp.test.d.ts.map +0 -1
- package/dist/routes/mcp.test.js +0 -92
- package/dist/routes/memory-route-wiring.test.d.ts +0 -2
- package/dist/routes/memory-route-wiring.test.d.ts.map +0 -1
- package/dist/routes/memory-route-wiring.test.js +0 -15
- package/dist/routes/memory.test.d.ts +0 -2
- package/dist/routes/memory.test.d.ts.map +0 -1
- package/dist/routes/memory.test.js +0 -177
- package/dist/routes/properties.test.d.ts +0 -5
- package/dist/routes/properties.test.d.ts.map +0 -1
- package/dist/routes/properties.test.js +0 -72
- package/dist/routes/pty.test.d.ts +0 -2
- package/dist/routes/pty.test.d.ts.map +0 -1
- package/dist/routes/pty.test.js +0 -82
- package/dist/routes/runtime-binding.test.d.ts +0 -2
- package/dist/routes/runtime-binding.test.d.ts.map +0 -1
- package/dist/routes/runtime-binding.test.js +0 -32
- package/dist/routes/sessions.test.d.ts +0 -5
- package/dist/routes/sessions.test.d.ts.map +0 -1
- package/dist/routes/sessions.test.js +0 -86
- package/dist/routes/skills.test.d.ts +0 -5
- package/dist/routes/skills.test.d.ts.map +0 -1
- package/dist/routes/skills.test.js +0 -50
- package/dist/routes/system-metrics.test.d.ts +0 -2
- package/dist/routes/system-metrics.test.d.ts.map +0 -1
- package/dist/routes/system-metrics.test.js +0 -16
- package/dist/routes/terminal.stop-options.test.d.ts +0 -2
- package/dist/routes/terminal.stop-options.test.d.ts.map +0 -1
- package/dist/routes/terminal.stop-options.test.js +0 -39
- package/dist/routes/terminal.test.d.ts +0 -2
- package/dist/routes/terminal.test.d.ts.map +0 -1
- package/dist/routes/terminal.test.js +0 -746
- package/dist/routes/yml.test.d.ts +0 -5
- package/dist/routes/yml.test.d.ts.map +0 -1
- package/dist/routes/yml.test.js +0 -58
- package/dist/services/ai-source-apply.test.d.ts +0 -2
- package/dist/services/ai-source-apply.test.d.ts.map +0 -1
- package/dist/services/ai-source-apply.test.js +0 -138
- package/dist/services/auto-register.test.d.ts +0 -2
- package/dist/services/auto-register.test.d.ts.map +0 -1
- package/dist/services/auto-register.test.js +0 -184
- package/dist/services/aws-client-agent-mcp.test.d.ts +0 -2
- package/dist/services/aws-client-agent-mcp.test.d.ts.map +0 -1
- package/dist/services/aws-client-agent-mcp.test.js +0 -242
- package/dist/services/bridge-package-publish-hooks.test.d.ts +0 -2
- package/dist/services/bridge-package-publish-hooks.test.d.ts.map +0 -1
- package/dist/services/bridge-package-publish-hooks.test.js +0 -136
- package/dist/services/cc-switch-discovery.test.d.ts +0 -2
- package/dist/services/cc-switch-discovery.test.d.ts.map +0 -1
- package/dist/services/cc-switch-discovery.test.js +0 -56
- package/dist/services/cli-commands.test.d.ts +0 -2
- package/dist/services/cli-commands.test.d.ts.map +0 -1
- package/dist/services/cli-commands.test.js +0 -230
- package/dist/services/instance-init-service.test.d.ts +0 -2
- package/dist/services/instance-init-service.test.d.ts.map +0 -1
- package/dist/services/instance-init-service.test.js +0 -140
- package/dist/services/instance-state.test.d.ts +0 -2
- package/dist/services/instance-state.test.d.ts.map +0 -1
- package/dist/services/instance-state.test.js +0 -245
- package/dist/services/mcp-launch-binding-queue.test.d.ts +0 -2
- package/dist/services/mcp-launch-binding-queue.test.d.ts.map +0 -1
- package/dist/services/mcp-launch-binding-queue.test.js +0 -181
- package/dist/services/runtime-binding.test.d.ts +0 -2
- package/dist/services/runtime-binding.test.d.ts.map +0 -1
- package/dist/services/runtime-binding.test.js +0 -78
- package/dist/services/runtime-lifecycle-policy.test.d.ts +0 -2
- package/dist/services/runtime-lifecycle-policy.test.d.ts.map +0 -1
- package/dist/services/runtime-lifecycle-policy.test.js +0 -41
- package/dist/services/session-output.test.d.ts +0 -5
- package/dist/services/session-output.test.d.ts.map +0 -1
- package/dist/services/session-output.test.js +0 -177
- package/dist/services/startup-config-wizard.test.d.ts +0 -2
- package/dist/services/startup-config-wizard.test.d.ts.map +0 -1
- package/dist/services/startup-config-wizard.test.js +0 -184
- package/dist/services/terminal-persistence.test.d.ts +0 -5
- package/dist/services/terminal-persistence.test.d.ts.map +0 -1
- package/dist/services/terminal-persistence.test.js +0 -159
- package/dist/services/tool-installer.test.d.ts +0 -2
- package/dist/services/tool-installer.test.d.ts.map +0 -1
- package/dist/services/tool-installer.test.js +0 -225
- package/dist/services/workspace-files.test.d.ts +0 -2
- package/dist/services/workspace-files.test.d.ts.map +0 -1
- package/dist/services/workspace-files.test.js +0 -648
- package/dist/services/workspace-watch.test.d.ts +0 -2
- package/dist/services/workspace-watch.test.d.ts.map +0 -1
- package/dist/services/workspace-watch.test.js +0 -38
- package/dist/utils/file-utils.test.d.ts +0 -2
- package/dist/utils/file-utils.test.d.ts.map +0 -1
- package/dist/utils/file-utils.test.js +0 -244
- package/dist/utils/logger.test.d.ts +0 -2
- package/dist/utils/logger.test.d.ts.map +0 -1
- package/dist/utils/logger.test.js +0 -93
- package/dist/utils/sdk-package-loader.test.d.ts +0 -2
- package/dist/utils/sdk-package-loader.test.d.ts.map +0 -1
- package/dist/utils/sdk-package-loader.test.js +0 -84
- package/dist/utils/validation.test.d.ts +0 -2
- package/dist/utils/validation.test.d.ts.map +0 -1
- package/dist/utils/validation.test.js +0 -88
- package/dist/utils/yaml-utils.test.d.ts +0 -2
- package/dist/utils/yaml-utils.test.d.ts.map +0 -1
- package/dist/utils/yaml-utils.test.js +0 -363
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ACodeBuiltInTool } from "./built-in-file-tools.js";
|
|
2
|
+
import type { ACodeSkillMetadata } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* 可动态刷新的 SkillTool:在 ACodeBuiltInTool 基础上增加 refresh 方法,
|
|
5
|
+
* 让 runtime 在监听到 skill 目录变更时能即时更新工具描述与 name→metadata 映射。
|
|
6
|
+
*/
|
|
7
|
+
export interface ACodeSkillTool extends ACodeBuiltInTool {
|
|
8
|
+
/**
|
|
9
|
+
* 用新的 skill 列表重建内部映射,并更新工具描述(`<available_skills>` XML 块)。
|
|
10
|
+
* 已在运行中的会话下一轮 turn 会通过更新后的 description 让 LLM 感知到新 skill。
|
|
11
|
+
*/
|
|
12
|
+
refresh(skills: ACodeSkillMetadata[]): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 创建 SkillTool 实例。
|
|
16
|
+
*
|
|
17
|
+
* SkillTool 是一个内置工具,允许 LLM 按名称加载已安装的 skill。
|
|
18
|
+
* 工具描述中内嵌 `<available_skills>` XML,列出当前所有可用 skill;
|
|
19
|
+
* 执行时返回 `<skill_content>` 块,包含 SKILL.md body 内容与目录下的文件列表。
|
|
20
|
+
*
|
|
21
|
+
* 工具名固定为 `skill`,与 compaction.ts 的 PRUNE_PROTECTED_TOOLS 白名单对应,
|
|
22
|
+
* 确保 skill 加载内容不会被上下文压缩裁剪。
|
|
23
|
+
*
|
|
24
|
+
* 返回的工具对象额外提供 `refresh(skills)` 方法,支持运行时动态更新:
|
|
25
|
+
* runtime 监听到 skills 目录变更后会调用它,重建 name→metadata 映射并刷新工具描述。
|
|
26
|
+
*
|
|
27
|
+
* @param skills 启动时加载的 skill 元数据列表
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSkillTool(skills: ACodeSkillMetadata[]): ACodeSkillTool;
|
|
30
|
+
//# sourceMappingURL=skill-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-tool.d.ts","sourceRoot":"","sources":["../src/skill-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;CAC7C;AAgFD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,kBAAkB,EAAE,GAC3B,cAAc,CA4FhB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
/**
|
|
5
|
+
* 采样的 skill 文件数量上限(参考 opencode)。
|
|
6
|
+
* 超出部分不会被列出,避免 SKILL 目录过大时输出过长。
|
|
7
|
+
*/
|
|
8
|
+
const MAX_SKILL_FILES_SAMPLE = 10;
|
|
9
|
+
/**
|
|
10
|
+
* 递归遍历 skill 目录,收集文件路径(跳过 SKILL.md 与隐藏文件/目录)。
|
|
11
|
+
* 模拟 opencode 中 Ripgrep.files 的行为,但不依赖外部 ripgrep 二进制。
|
|
12
|
+
*/
|
|
13
|
+
async function listSkillFiles(directory, limit) {
|
|
14
|
+
const files = [];
|
|
15
|
+
async function walk(dir) {
|
|
16
|
+
if (files.length >= limit)
|
|
17
|
+
return;
|
|
18
|
+
let entries;
|
|
19
|
+
try {
|
|
20
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
if (files.length >= limit)
|
|
27
|
+
return;
|
|
28
|
+
if (entry.name.startsWith("."))
|
|
29
|
+
continue;
|
|
30
|
+
const fullPath = path.join(dir, entry.name);
|
|
31
|
+
if (entry.isDirectory()) {
|
|
32
|
+
await walk(fullPath);
|
|
33
|
+
}
|
|
34
|
+
else if (entry.isFile() && entry.name !== "SKILL.md") {
|
|
35
|
+
files.push(fullPath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
await walk(directory);
|
|
40
|
+
return files;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 构建 SkillTool 的动态描述:包含 `<available_skills>` XML 块,
|
|
44
|
+
* 让 LLM 能在工具描述中直接看到所有可用 skill 的名称、简介与目录位置。
|
|
45
|
+
*
|
|
46
|
+
* 参考 opencode 的 tool/skill.ts 实现。
|
|
47
|
+
*/
|
|
48
|
+
function buildSkillDescription(skills) {
|
|
49
|
+
if (skills.length === 0) {
|
|
50
|
+
return [
|
|
51
|
+
"Load a specialized skill that provides domain-specific instructions and workflows.",
|
|
52
|
+
"No skills are currently available.",
|
|
53
|
+
].join(" ");
|
|
54
|
+
}
|
|
55
|
+
const lines = [
|
|
56
|
+
"Load a specialized skill that provides domain-specific instructions and workflows.",
|
|
57
|
+
"",
|
|
58
|
+
"When you recognize that a task matches one of the available skills listed below, use this tool to load the full skill instructions.",
|
|
59
|
+
"",
|
|
60
|
+
"The skill will inject detailed instructions, workflows, and access to bundled resources (scripts, references, templates) into the conversation context.",
|
|
61
|
+
"",
|
|
62
|
+
'Tool output includes a `<skill_content name="...">` block with the loaded content.',
|
|
63
|
+
"",
|
|
64
|
+
"The following skills provide specialized sets of instructions for particular tasks.",
|
|
65
|
+
"Invoke this tool to load a skill when a task matches one of the available skills listed below:",
|
|
66
|
+
"",
|
|
67
|
+
"<available_skills>",
|
|
68
|
+
];
|
|
69
|
+
for (const skill of skills) {
|
|
70
|
+
lines.push(" <skill>");
|
|
71
|
+
lines.push(` <name>${skill.name}</name>`);
|
|
72
|
+
lines.push(` <description>${skill.description ?? ""}</description>`);
|
|
73
|
+
lines.push(` <location>${pathToFileURL(skill.directory).href}</location>`);
|
|
74
|
+
lines.push(" </skill>");
|
|
75
|
+
}
|
|
76
|
+
lines.push("</available_skills>");
|
|
77
|
+
return lines.join("\n");
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 创建 SkillTool 实例。
|
|
81
|
+
*
|
|
82
|
+
* SkillTool 是一个内置工具,允许 LLM 按名称加载已安装的 skill。
|
|
83
|
+
* 工具描述中内嵌 `<available_skills>` XML,列出当前所有可用 skill;
|
|
84
|
+
* 执行时返回 `<skill_content>` 块,包含 SKILL.md body 内容与目录下的文件列表。
|
|
85
|
+
*
|
|
86
|
+
* 工具名固定为 `skill`,与 compaction.ts 的 PRUNE_PROTECTED_TOOLS 白名单对应,
|
|
87
|
+
* 确保 skill 加载内容不会被上下文压缩裁剪。
|
|
88
|
+
*
|
|
89
|
+
* 返回的工具对象额外提供 `refresh(skills)` 方法,支持运行时动态更新:
|
|
90
|
+
* runtime 监听到 skills 目录变更后会调用它,重建 name→metadata 映射并刷新工具描述。
|
|
91
|
+
*
|
|
92
|
+
* @param skills 启动时加载的 skill 元数据列表
|
|
93
|
+
*/
|
|
94
|
+
export function createSkillTool(skills) {
|
|
95
|
+
// 用 holder 对象包装可变状态,让 execute 闭包始终读到最新值
|
|
96
|
+
const skillByName = new Map();
|
|
97
|
+
function rebuildSkillMap(list) {
|
|
98
|
+
skillByName.clear();
|
|
99
|
+
for (const skill of list) {
|
|
100
|
+
skillByName.set(skill.name, skill);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
rebuildSkillMap(skills);
|
|
104
|
+
// examples hint 是静态提示(仅基于启动时的 skill 列表),refresh 时不更新。
|
|
105
|
+
// 边界限制:运行时新增的 skill 不会出现在 examples hint 中,但仍会出现在
|
|
106
|
+
// <available_skills> XML 块(description 字段,由 refresh 更新)中。
|
|
107
|
+
// examples 仅用于给 LLM 一个 name 参数格式示例,不影响 skill 的发现与调用。
|
|
108
|
+
const examples = skills
|
|
109
|
+
.map((skill) => `'${skill.name}'`)
|
|
110
|
+
.slice(0, 3)
|
|
111
|
+
.join(", ");
|
|
112
|
+
const hint = examples.length > 0 ? ` (e.g., ${examples}, ...)` : "";
|
|
113
|
+
const tool = {
|
|
114
|
+
kind: "builtin",
|
|
115
|
+
toolName: "skill",
|
|
116
|
+
exposedName: "skill",
|
|
117
|
+
description: buildSkillDescription(skills),
|
|
118
|
+
inputSchema: {
|
|
119
|
+
type: "object",
|
|
120
|
+
properties: {
|
|
121
|
+
name: {
|
|
122
|
+
type: "string",
|
|
123
|
+
description: `The name of the skill from available_skills${hint}`,
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
required: ["name"],
|
|
127
|
+
additionalProperties: false,
|
|
128
|
+
},
|
|
129
|
+
async execute(args) {
|
|
130
|
+
const rawName = args.name;
|
|
131
|
+
if (typeof rawName !== "string" || !rawName.trim()) {
|
|
132
|
+
throw new Error("name is required");
|
|
133
|
+
}
|
|
134
|
+
const name = rawName.trim();
|
|
135
|
+
const skill = skillByName.get(name);
|
|
136
|
+
if (!skill) {
|
|
137
|
+
const available = Array.from(skillByName.keys()).join(", ") || "none";
|
|
138
|
+
throw new Error(`Skill "${name}" not found. Available skills: ${available}`);
|
|
139
|
+
}
|
|
140
|
+
const base = pathToFileURL(skill.directory).href;
|
|
141
|
+
const files = await listSkillFiles(skill.directory, MAX_SKILL_FILES_SAMPLE);
|
|
142
|
+
const fileList = files
|
|
143
|
+
.map((file) => `<file>${file}</file>`)
|
|
144
|
+
.join("\n");
|
|
145
|
+
const content = skill.content || "";
|
|
146
|
+
const output = [
|
|
147
|
+
`<skill_content name="${skill.name}">`,
|
|
148
|
+
`# Skill: ${skill.name}`,
|
|
149
|
+
"",
|
|
150
|
+
content,
|
|
151
|
+
"",
|
|
152
|
+
`Base directory for this skill: ${base}`,
|
|
153
|
+
"Relative paths in this skill (e.g., scripts/, reference/) are relative to this base directory.",
|
|
154
|
+
"Note: file list is sampled.",
|
|
155
|
+
"",
|
|
156
|
+
"<skill_files>",
|
|
157
|
+
fileList,
|
|
158
|
+
"</skill_files>",
|
|
159
|
+
"</skill_content>",
|
|
160
|
+
].join("\n");
|
|
161
|
+
// 使用 content 数组格式,让 runtime.ts 的 toToolResultText 直接提取纯文本,
|
|
162
|
+
// 避免 JSON.stringify 包裹导致 LLM 看到转义后的 JSON 字符串。
|
|
163
|
+
return {
|
|
164
|
+
content: [{ type: "text", text: output }],
|
|
165
|
+
};
|
|
166
|
+
},
|
|
167
|
+
refresh(newSkills) {
|
|
168
|
+
rebuildSkillMap(newSkills);
|
|
169
|
+
// 直接更新返回对象的 description 字段,下一轮 turn 取该字段时会读到新值
|
|
170
|
+
this.description = buildSkillDescription(newSkills);
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
return tool;
|
|
174
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { ACodeRuntime } from "./runtime.js";
|
|
2
|
+
import type { ACodeRuntimeConfig } from "./types.js";
|
|
3
|
+
import { SubAgentStore } from "./sub-agent-store.js";
|
|
4
|
+
import type { SubAgentContextSnapshot, SubAgentEvent, SubAgentStatus, SubAgentType } from "./sub-agent-types.js";
|
|
5
|
+
/**
|
|
6
|
+
* 子 agent 终态通知(供 poll_message race 使用)。
|
|
7
|
+
* 当子 agent 到达 completed/failed/cancelled 时入队,由 takeCompletedSubAgents 消费。
|
|
8
|
+
*/
|
|
9
|
+
export interface SubAgentCompletionNotification {
|
|
10
|
+
subId: string;
|
|
11
|
+
subagentType: SubAgentType;
|
|
12
|
+
description: string;
|
|
13
|
+
status: SubAgentStatus;
|
|
14
|
+
output: string;
|
|
15
|
+
error?: string;
|
|
16
|
+
durationMs?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sub-agent 完成一轮后由外部执行的重新检查回调。
|
|
20
|
+
* - 返回 { done: true } 表示目标已达成,sub-agent 可正常结束
|
|
21
|
+
* - 返回 { done: false, continueMessage } 表示未完成,将 continueMessage 作为下一轮 submit 注入同一 sub-agent
|
|
22
|
+
*
|
|
23
|
+
* 回调内可查询服务端真实状态(如 read_memory / get_memory_stats),
|
|
24
|
+
* 而非依赖 LLM 自报结果,提供系统级硬保证。
|
|
25
|
+
*/
|
|
26
|
+
export type SubAgentRecheckFn = (output: string, turn: number) => Promise<{
|
|
27
|
+
done: boolean;
|
|
28
|
+
continueMessage?: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** spawn 选项 */
|
|
31
|
+
export interface SubAgentSpawnOptions {
|
|
32
|
+
parentAgentId: string;
|
|
33
|
+
parentSessionId: string;
|
|
34
|
+
subagentType: SubAgentType;
|
|
35
|
+
description: string;
|
|
36
|
+
prompt: string;
|
|
37
|
+
workingDirectory: string;
|
|
38
|
+
/** 父 agent 的 ACodeRuntimeConfig,子 agent 继承 model/prompt 等 */
|
|
39
|
+
parentConfig: ACodeRuntimeConfig;
|
|
40
|
+
/** 静默完成:为 true 时子 agent 到达终态后不进入 completionQueue,不通过 poll_message 通知主 agent */
|
|
41
|
+
silent?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** 内存中的 sub-agent entry(含运行时实例) */
|
|
44
|
+
export interface SubAgentEntry {
|
|
45
|
+
subId: string;
|
|
46
|
+
parentAgentId: string;
|
|
47
|
+
parentSessionId: string;
|
|
48
|
+
subagentType: SubAgentType;
|
|
49
|
+
description: string;
|
|
50
|
+
prompt: string;
|
|
51
|
+
status: SubAgentStatus;
|
|
52
|
+
result?: string;
|
|
53
|
+
errorMessage?: string;
|
|
54
|
+
startedAt: number;
|
|
55
|
+
endedAt?: number;
|
|
56
|
+
durationMs?: number;
|
|
57
|
+
runtime: ACodeRuntime;
|
|
58
|
+
abortController: AbortController;
|
|
59
|
+
contextSnapshot: SubAgentContextSnapshot;
|
|
60
|
+
/** 该 sub-agent 创建时可用的工具列表(exposedName) */
|
|
61
|
+
availableTools: string[];
|
|
62
|
+
/** 运行完成后的 Promise resolve/reject(供 awaitCompletion 等待) */
|
|
63
|
+
completionResolve?: (result: {
|
|
64
|
+
output: string;
|
|
65
|
+
error?: string;
|
|
66
|
+
}) => void;
|
|
67
|
+
completionReject?: (err: any) => void;
|
|
68
|
+
/** 运行完成 Promise(start 时创建,终态时 settle) */
|
|
69
|
+
completionPromise?: Promise<{
|
|
70
|
+
output: string;
|
|
71
|
+
error?: string;
|
|
72
|
+
}>;
|
|
73
|
+
/** 静默完成:为 true 时不进入 completionQueue,不通过 poll_message 通知主 agent */
|
|
74
|
+
silent?: boolean;
|
|
75
|
+
/** 已通过 awaitCompletion 消费:为 true 时不进入 completionQueue,避免 poll_message 重复返回 */
|
|
76
|
+
awaited?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** SubAgentManager 构造配置 */
|
|
79
|
+
export interface SubAgentManagerOptions {
|
|
80
|
+
store: SubAgentStore;
|
|
81
|
+
/** 并发上限,默认 5 */
|
|
82
|
+
maxConcurrent?: number;
|
|
83
|
+
}
|
|
84
|
+
type EventSubscriber = (event: SubAgentEvent) => void;
|
|
85
|
+
/**
|
|
86
|
+
* SubAgentManager:管理独立 ACodeRuntime 实例池。
|
|
87
|
+
*
|
|
88
|
+
* 核心职责:
|
|
89
|
+
* 1. spawn 创建独立 ACodeRuntime 实例(避免父 agent 的 submitQueue 死锁)
|
|
90
|
+
* 2. start 异步启动子 agent(不阻塞),awaitCompletion 显式等待完成
|
|
91
|
+
* 3. abort 取消运行中的 sub-agent
|
|
92
|
+
* 4. 维护父子关系映射(parentAgentId -> subIds)
|
|
93
|
+
* 5. SSE 事件订阅(subscribe/unsubscribe)
|
|
94
|
+
* 6. 状态持久化到 SubAgentStore
|
|
95
|
+
*
|
|
96
|
+
* 线程模型:单进程 Node.js,所有 ACodeRuntime 实例共享事件循环。
|
|
97
|
+
* 非阻塞模式:spawn 后调 start 立即返回,主 agent 可继续工作;
|
|
98
|
+
* 主 agent 通过 awaitCompletion 显式阻塞等待指定 sub-agent 数组完成。
|
|
99
|
+
*
|
|
100
|
+
* 重要:ACodeRuntime.submit() 返回 Promise<void>,assistant 文本通过
|
|
101
|
+
* "event" 上的 "assistant_delta" 事件传递,turn 结束时发出 "turn_complete"。
|
|
102
|
+
* 因此 start 内部注册事件监听器累积输出文本,awaitCompletion 通过 Promise 等待。
|
|
103
|
+
*
|
|
104
|
+
* Entry 生命周期:
|
|
105
|
+
* - pending: spawn 后未 start
|
|
106
|
+
* - running: start 后运行中
|
|
107
|
+
* - completed/failed/cancelled: 终态,entry 保留在内存中 TTL=30min,
|
|
108
|
+
* 供 list/get_status 查询;超时后从内存清理(store 仍持久化)
|
|
109
|
+
*/
|
|
110
|
+
export declare class SubAgentManager {
|
|
111
|
+
private readonly store;
|
|
112
|
+
private readonly maxConcurrent;
|
|
113
|
+
private readonly subAgents;
|
|
114
|
+
private readonly parentToSubs;
|
|
115
|
+
private readonly subscribers;
|
|
116
|
+
/** 已完成 entry 的清理定时器 */
|
|
117
|
+
private cleanupTimer;
|
|
118
|
+
/**
|
|
119
|
+
* 终态通知队列:子 agent 到达终态时入队,takeCompletedSubAgents 消费。
|
|
120
|
+
* 供 poll_message 在 ACode 运行时层检测子 agent 完成事件。
|
|
121
|
+
*/
|
|
122
|
+
private readonly completionQueue;
|
|
123
|
+
/**
|
|
124
|
+
* waitForAnyCompletion 的 resolve 回调,终态事件到达时调用。
|
|
125
|
+
* null 表示当前没有等待者。
|
|
126
|
+
*/
|
|
127
|
+
private completionWaiterResolve;
|
|
128
|
+
constructor(opts: SubAgentManagerOptions);
|
|
129
|
+
/** 创建 sub-agent(不立即运行;调 start 才执行) */
|
|
130
|
+
spawn(opts: SubAgentSpawnOptions): Promise<string>;
|
|
131
|
+
/**
|
|
132
|
+
* 异步启动 sub-agent(不阻塞,立即返回)。
|
|
133
|
+
*
|
|
134
|
+
* 内部创建 completionPromise 供后续 awaitCompletion 等待。
|
|
135
|
+
* 启动后立即返回,主 agent 可继续做其他事。
|
|
136
|
+
*
|
|
137
|
+
* 同一 sub-agent 只能 start 一次;重复 start 抛错。
|
|
138
|
+
*/
|
|
139
|
+
start(subId: string): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* 带 recheck 循环的异步启动(不阻塞,立即返回)。
|
|
142
|
+
*
|
|
143
|
+
* 与 start 的区别:每轮 submit 完成后调用 recheck 回调查询服务端真实状态。
|
|
144
|
+
* 若 recheck 返回 { done: false, continueMessage },将 continueMessage 作为
|
|
145
|
+
* 下一轮 submit 注入同一 sub-agent(保持上下文连续性),最多重试 maxRetries 次。
|
|
146
|
+
*
|
|
147
|
+
* 适用场景:memory 过期整理 / 文件变更更新 / 容量整理等需要系统级硬保证
|
|
148
|
+
* "确实完成"的场景,不依赖 LLM 自报结果。
|
|
149
|
+
*/
|
|
150
|
+
startWithRecheck(subId: string, recheck: SubAgentRecheckFn, maxRetries?: number): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* 阻塞等待指定 sub-agent 数组全部完成(completed/failed/cancelled)。
|
|
153
|
+
*
|
|
154
|
+
* - 已完成的立即 resolve
|
|
155
|
+
* - 未 start 的会先 start(自动启动)
|
|
156
|
+
* - 返回每个 sub-agent 的最终结果
|
|
157
|
+
*
|
|
158
|
+
* 注意:本方法不取消 sub-agent,仅等待。如需取消用 abort。
|
|
159
|
+
*/
|
|
160
|
+
awaitCompletion(subIds: string[], timeoutMs?: number): Promise<Array<{
|
|
161
|
+
subId: string;
|
|
162
|
+
output: string;
|
|
163
|
+
error?: string;
|
|
164
|
+
status: SubAgentStatus;
|
|
165
|
+
}>>;
|
|
166
|
+
/**
|
|
167
|
+
* 内部方法:执行 entry 直到完成。
|
|
168
|
+
*
|
|
169
|
+
* 实际 ACodeRuntime.submit() 返回 Promise<void>,assistant 文本通过
|
|
170
|
+
* assistant_delta 事件传递。本方法注册临时监听器累积输出文本,
|
|
171
|
+
* 同时检测 turn_complete 事件中的 failed 标志以处理运行时内部错误。
|
|
172
|
+
*
|
|
173
|
+
* 完成后:
|
|
174
|
+
* - 更新 entry 状态(completed/failed)
|
|
175
|
+
* - 持久化到 store
|
|
176
|
+
* - settle completionPromise
|
|
177
|
+
* - 清理 runtime 实例(释放内存)
|
|
178
|
+
* - **不删除 entry**(保留在内存供 list/get_status 查询,30min 后由定时器清理)
|
|
179
|
+
*/
|
|
180
|
+
private runEntryToCompletion;
|
|
181
|
+
/**
|
|
182
|
+
* 带 recheck 循环的 entry 执行(多轮 submit)。
|
|
183
|
+
*
|
|
184
|
+
* 与 runEntryToCompletion 的区别:
|
|
185
|
+
* 1. 第一轮 submit(entry.prompt) 完成后,调用 recheck 回调查询服务端真实状态
|
|
186
|
+
* 2. 若 recheck 返回 { done: false, continueMessage },将 continueMessage 注入下一轮 submit
|
|
187
|
+
* 3. 最多重试 maxRetries 次;超过后视为完成(不再继续)
|
|
188
|
+
* 4. onEvent 监听器跨所有轮次累积 assistant_delta,最终 output 包含全部轮次的文本
|
|
189
|
+
*
|
|
190
|
+
* turnFailed 标志在每轮 submit 前重置,确保上一轮的失败状态不影响下一轮判断。
|
|
191
|
+
* recheck 自身抛错时视为 done(不阻塞 sub-agent 结束),仅记录日志。
|
|
192
|
+
*/
|
|
193
|
+
private runEntryToCompletionWithRecheck;
|
|
194
|
+
/**
|
|
195
|
+
* @deprecated 兼容旧接口:spawn + 阻塞等待完成。
|
|
196
|
+
* 新代码应使用 spawn + start + awaitCompletion。
|
|
197
|
+
*/
|
|
198
|
+
runToCompletion(subId: string): Promise<{
|
|
199
|
+
output: string;
|
|
200
|
+
error?: string;
|
|
201
|
+
}>;
|
|
202
|
+
/** 取消运行中的 sub-agent */
|
|
203
|
+
abort(subId: string): Promise<void>;
|
|
204
|
+
/** 获取内存中的 entry */
|
|
205
|
+
getSubAgent(subId: string): SubAgentEntry | undefined;
|
|
206
|
+
/** 列出某 agent 的全部内存中 sub-agent(含运行中和已完成未清理) */
|
|
207
|
+
listByParent(parentAgentId: string): SubAgentEntry[];
|
|
208
|
+
/**
|
|
209
|
+
* 列出某父 agent 下处于活跃状态(pending / running)的 sub-agent。
|
|
210
|
+
*
|
|
211
|
+
* 已完成/失败/取消的 entry 在内存中仍保留 TTL=30min 供查询,但不应计入
|
|
212
|
+
* "进行中" 列表。前端 "进行中" tab 与 SSE snapshot 都应使用此方法。
|
|
213
|
+
*/
|
|
214
|
+
listActiveByParent(parentAgentId: string): SubAgentEntry[];
|
|
215
|
+
/**
|
|
216
|
+
* 取走并清空终态通知队列。
|
|
217
|
+
*
|
|
218
|
+
* 主流程:返回 completionQueue 中的所有通知并清空队列。
|
|
219
|
+
* 供 ACode 运行时在 poll_message 调用前后检查子 agent 是否已完成。
|
|
220
|
+
* 每次 poll_message 调用前先调此方法,若有已完成子 agent 则直接返回,无需等待 MCP。
|
|
221
|
+
*/
|
|
222
|
+
takeCompletedSubAgents(): SubAgentCompletionNotification[];
|
|
223
|
+
/**
|
|
224
|
+
* 等待任意子 agent 到达终态(completed/failed/cancelled)。
|
|
225
|
+
*
|
|
226
|
+
* 主流程:如果 completionQueue 中已有通知,立即 resolve;
|
|
227
|
+
* 否则注册一个 resolve 回调,在下次子 agent 终态事件到达时触发。
|
|
228
|
+
* 供 ACode 运行时在 poll_message 期间 race 子 agent 完成事件。
|
|
229
|
+
*
|
|
230
|
+
* 返回 { promise, cancel }:
|
|
231
|
+
* - promise: 子 agent 终态时 resolve
|
|
232
|
+
* - cancel: 取消等待(poll_message 先返回时调用,清理 resolve 回调)
|
|
233
|
+
*/
|
|
234
|
+
waitForAnyCompletion(): {
|
|
235
|
+
promise: Promise<SubAgentCompletionNotification>;
|
|
236
|
+
cancel: () => void;
|
|
237
|
+
};
|
|
238
|
+
/** 订阅 sub-agent 事件(subId 或 "*" 全局) */
|
|
239
|
+
subscribe(subId: string, cb: EventSubscriber): () => void;
|
|
240
|
+
/** 清理所有运行中的 sub-agent(bridge 关闭时调用) */
|
|
241
|
+
dispose(): Promise<void>;
|
|
242
|
+
/**
|
|
243
|
+
* 将子 agent 终态事件入队并通知等待者。
|
|
244
|
+
* 主流程:构建通知对象 -> 入队 completionQueue -> 若有 waitForAnyCompletion 等待者则立即 resolve。
|
|
245
|
+
*/
|
|
246
|
+
private enqueueCompletion;
|
|
247
|
+
private countByStatus;
|
|
248
|
+
private addToParentMap;
|
|
249
|
+
private removeFromParentMap;
|
|
250
|
+
/**
|
|
251
|
+
* 清理已超过 TTL 的终态 entry(completed/failed/cancelled)。
|
|
252
|
+
* 释放内存,store 仍保留历史记录供查询。
|
|
253
|
+
*/
|
|
254
|
+
private cleanupCompletedEntries;
|
|
255
|
+
/** 从 store 中查找记录(entry 已从内存清理时使用) */
|
|
256
|
+
private findRecordInStore;
|
|
257
|
+
private handleRuntimeEvent;
|
|
258
|
+
private emitEvent;
|
|
259
|
+
private toRecord;
|
|
260
|
+
/** 获取当前上下文快照(供 HTTP 路由调用) */
|
|
261
|
+
getContextSnapshot(subId: string): SubAgentContextSnapshot | undefined;
|
|
262
|
+
}
|
|
263
|
+
export {};
|
|
264
|
+
//# sourceMappingURL=sub-agent-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent-manager.d.ts","sourceRoot":"","sources":["../src/sub-agent-manager.ts"],"names":[],"mappings":"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"}
|