aws-runtime-bridge 1.9.92 → 1.9.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +22 -126
  2. package/dist/adapter/AdapterRegistry.d.ts +10 -38
  3. package/dist/adapter/ClaudeSdkAdapter.d.ts +21 -84
  4. package/dist/adapter/CodexSdkAdapter.d.ts +2 -10
  5. package/dist/adapter/OpencodeSdkAdapter.d.ts +6 -42
  6. package/dist/adapter/acode-tool-names.d.ts +3 -12
  7. package/dist/adapter/idle-poll-loop.d.ts +4 -16
  8. package/dist/adapter/index.d.ts +1 -4
  9. package/dist/adapter/instance-ai-config-resolver.d.ts +9 -29
  10. package/dist/adapter/types.d.ts +124 -242
  11. package/dist/adapters/cc-switch/common.d.ts +4 -14
  12. package/dist/adapters/cc-switch/index.d.ts +3 -11
  13. package/dist/adapters/cc-switch/mcp-acode.d.ts +1 -7
  14. package/dist/adapters/cc-switch/mcp-claude.d.ts +1 -5
  15. package/dist/adapters/cc-switch/mcp-claudecode.d.ts +1 -5
  16. package/dist/adapters/cc-switch/mcp-codex.d.ts +1 -7
  17. package/dist/adapters/cc-switch/mcp-opencode.d.ts +3 -11
  18. package/dist/adapters/cc-switch/mcp-placeholder.d.ts +1 -5
  19. package/dist/adapters/cc-switch/skill-acode.d.ts +1 -6
  20. package/dist/adapters/cc-switch/skill-claude.d.ts +1 -5
  21. package/dist/adapters/cc-switch/skill-claudecode.d.ts +1 -5
  22. package/dist/adapters/cc-switch/skill-opencode.d.ts +1 -5
  23. package/dist/adapters/cc-switch/skill-placeholder.d.ts +1 -5
  24. package/dist/config.d.ts +39 -57
  25. package/dist/index.d.ts +1 -5
  26. package/dist/middleware/auth.d.ts +4 -22
  27. package/dist/routes/acode-todos.d.ts +1 -9
  28. package/dist/routes/dashboard.d.ts +1 -6
  29. package/dist/routes/events.d.ts +1 -5
  30. package/dist/routes/file-browser.d.ts +2 -8
  31. package/dist/routes/file-diff-rollback.d.ts +13 -41
  32. package/dist/routes/file-snapshot.d.ts +1 -8
  33. package/dist/routes/git.d.ts +18 -91
  34. package/dist/routes/instance.d.ts +4 -15
  35. package/dist/routes/processes.d.ts +1 -5
  36. package/dist/routes/properties.d.ts +1 -5
  37. package/dist/routes/pty.d.ts +9 -36
  38. package/dist/routes/runtime-binding.d.ts +1 -4
  39. package/dist/routes/sessions.d.ts +2 -9
  40. package/dist/routes/sub-agents.d.ts +1 -12
  41. package/dist/routes/task-context.d.ts +1 -6
  42. package/dist/routes/terminal.d.ts +18 -92
  43. package/dist/routes/yml.d.ts +1 -5
  44. package/dist/services/acode-package.d.ts +2 -12
  45. package/dist/services/agent-event-store.d.ts +6 -26
  46. package/dist/services/agent-process-manager.d.ts +30 -184
  47. package/dist/services/ai-source-apply.d.ts +1 -3
  48. package/dist/services/auto-register.d.ts +29 -106
  49. package/dist/services/bridge-package-publish-hooks.d.ts +5 -19
  50. package/dist/services/cc-switch-sdk.d.ts +1 -6
  51. package/dist/services/cli-commands.d.ts +12 -33
  52. package/dist/services/event-delta-pusher.d.ts +5 -20
  53. package/dist/services/fileSnapshotStore.d.ts +7 -35
  54. package/dist/services/instance-ai-config-service.d.ts +4 -21
  55. package/dist/services/instance-service.d.ts +1 -10
  56. package/dist/services/instance-state.d.ts +5 -30
  57. package/dist/services/legacy-path-migration.d.ts +1 -1
  58. package/dist/services/lifecycle-state.d.ts +1 -4
  59. package/dist/services/mcp-launch-binding-queue.d.ts +2 -8
  60. package/dist/services/orphan-monitor.d.ts +20 -63
  61. package/dist/services/panel-auth.d.ts +12 -28
  62. package/dist/services/process-detector.d.ts +18 -122
  63. package/dist/services/process-registry.d.ts +30 -150
  64. package/dist/services/ring-buffer.d.ts +9 -42
  65. package/dist/services/runtime-binding.d.ts +2 -9
  66. package/dist/services/runtime-lifecycle-policy.d.ts +3 -15
  67. package/dist/services/session-output.d.ts +14 -67
  68. package/dist/services/startup-config-wizard.d.ts +3 -10
  69. package/dist/services/system-metrics.d.ts +1 -4
  70. package/dist/services/terminal-persistence.d.ts +10 -53
  71. package/dist/services/tool-installer.d.ts +6 -18
  72. package/dist/services/tunnel-client.d.ts +3 -18
  73. package/dist/services/windows-service-manager.d.ts +1 -13
  74. package/dist/services/workspace-files.d.ts +17 -57
  75. package/dist/services/workspace-watch.d.ts +2 -6
  76. package/dist/services/workspaceTaskChangeWatcher.d.ts +13 -51
  77. package/dist/types.d.ts +2 -8
  78. package/dist/utils/instance-ai-config-debug-logger.d.ts +5 -20
  79. package/dist/utils/logger.d.ts +7 -20
  80. package/dist/utils/mcp-utils.d.ts +8 -44
  81. package/dist/utils/path-utils.d.ts +3 -15
  82. package/dist/utils/sdk-package-loader.d.ts +2 -8
  83. package/dist/utils/validation.d.ts +3 -20
  84. package/dist/utils/yaml-utils.d.ts +8 -56
  85. package/node_modules/@cc-switch/sdk/dist/index.d.ts +1 -6
  86. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +11 -42
  87. package/package/acode/dist/ask-user-question-tool.d.ts +7 -20
  88. package/package/acode/dist/built-in-file-tools.d.ts +3 -6
  89. package/package/acode/dist/built-in-symbols-tool.d.ts +1 -4
  90. package/package/acode/dist/builtins/commandArtifacts.d.ts +1 -4
  91. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +3 -18
  92. package/package/acode/dist/commands/commandLoader.d.ts +1 -4
  93. package/package/acode/dist/commands/commandParser.d.ts +1 -4
  94. package/package/acode/dist/compaction.d.ts +38 -175
  95. package/package/acode/dist/config.d.ts +1 -4
  96. package/package/acode/dist/fs-utils.d.ts +1 -19
  97. package/package/acode/dist/hooks/hookBus.d.ts +1 -4
  98. package/package/acode/dist/mcpToolNames.d.ts +2 -8
  99. package/package/acode/dist/parsers/ast-cache.d.ts +7 -20
  100. package/package/acode/dist/parsers/language-detector.d.ts +1 -5
  101. package/package/acode/dist/parsers/language-queries.d.ts +1 -1
  102. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +4 -12
  103. package/package/acode/dist/parsers/types.d.ts +19 -30
  104. package/package/acode/dist/runtime.d.ts +47 -269
  105. package/package/acode/dist/skill-tool.d.ts +3 -23
  106. package/package/acode/dist/sub-agent-manager.d.ts +41 -206
  107. package/package/acode/dist/sub-agent-store.d.ts +12 -61
  108. package/package/acode/dist/sub-agent-tools.d.ts +9 -18
  109. package/package/acode/dist/sub-agent-types.d.ts +32 -38
  110. package/package/acode/dist/todo-store.d.ts +8 -23
  111. package/package/acode/dist/todo-tool.d.ts +2 -2
  112. package/package/acode/dist/types.d.ts +17 -38
  113. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +44 -161
  114. package/package/aws-client-agent-mcp/dist/config.d.ts +4 -18
  115. package/package/aws-client-agent-mcp/dist/constants.d.ts +1 -3
  116. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +25 -95
  117. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +1 -4
  118. package/package/aws-client-agent-mcp/dist/http-client.d.ts +15 -56
  119. package/package/aws-client-agent-mcp/dist/index.d.ts +1 -11
  120. package/package/aws-client-agent-mcp/dist/logger.d.ts +5 -22
  121. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +76 -365
  122. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +21 -83
  123. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +15 -70
  124. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +4 -17
  125. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +23 -92
  126. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +5 -29
  127. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +2 -9
  128. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +17 -55
  129. package/package/aws-client-agent-mcp/dist/types.d.ts +66 -125
  130. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +30 -125
  131. package/package/cc-switch-sdk/dist/index.d.ts +1 -6
  132. package/package/cc-switch-sdk/dist/sdk.d.ts +11 -42
  133. package/package.json +1 -1
@@ -23,341 +23,119 @@ export declare class ACodeRuntime extends EventEmitter {
23
23
  private initialConversation;
24
24
  private state;
25
25
  private abortController;
26
- /**
27
- * 正在处理中的 memory 子 agent 跟踪表。
28
- * key = memory URI,value = subId(用于防止同一 memory 被重复委托)。
29
- * 子 agent 完成后通过 SubAgentManager 事件回调移除对应 URI。
30
- */
26
+
31
27
  private readonly pendingMemorySubAgents;
32
- /**
33
- * memory 委托冷却表(「已解决/已处理」守卫,区别于 pendingMemorySubAgents 的「进行中」守卫)。
34
- * key = memory URI,value = 冷却到期时间戳(ms)。
35
- * 子 agent 进入终态时写入;冷却期内即使 memory 仍待处理也不再 spawn 新子任务。
36
- * 这是切断「委托完成→复发」循环的关键:原实现只有进行中守卫,子 agent 一结束 URI 立即释放,
37
- * 导致下一轮 poll 对 sticky 的 updating memory 再次委托。
38
- */
28
+
39
29
  private readonly memoryDelegateCooldownUntil;
40
30
  private submitQueue;
41
31
  private activeTurn;
42
32
  private abortRequested;
43
- /**
44
- * 当前正在 await_sub_agents 工具中阻塞等待的子 agent subId 集合。
45
- *
46
- * 用于让 abort()/stop() 能中断 awaitSubAgents 的阻塞:
47
- * - awaitSubAgents 调用前把 subIds 加入此 set,finally 中移除
48
- * - abort()/stop() 时对此 set 中每个 subId 调用 manager.abort(subId)
49
- * - manager.abort 会 settle completionPromise(resolve with error)
50
- * - 从而让 await completionPromise 解除阻塞,execute() 正常返回,
51
- * executeSubmit 不再永久 pending,submitQueue 链恢复,后续 submit 可执行。
52
- *
53
- * 没有此机制时:abort() 只能中断 fetch 流,对 await completionPromise 无效,
54
- * 导致 executeSubmit 永久阻塞 → submitQueue 死锁 → 后续 sendMessage 全部排队 → agent 无反应。
55
- */
33
+
56
34
  private pendingAwaitedSubIds;
57
35
  private sessionCompleteEmitted;
58
36
  private contextVersion;
59
37
  private readonly stopWaiters;
60
- /** 上下文压缩调试定时器(每 5 秒输出一次) */
38
+
61
39
  private compactionDebugTimer;
62
- /** 可动态刷新的 SkillTool 引用(含 refresh 方法),运行中变更时调用其 refresh */
40
+
63
41
  private skillTool;
64
- /** 监听 skills 目录变更的 FSWatcher 列表 */
42
+
65
43
  private skillWatchers;
66
- /** skill 目录变更后的防抖定时器,避免短时间多次触发重扫 */
44
+
67
45
  private skillRefreshTimer;
68
- /** skill 重扫防抖间隔(毫秒) */
46
+
69
47
  private static readonly SKILL_REFRESH_DEBOUNCE_MS;
70
- /**
71
- * ask_user_question 工具的挂起等待队列。
72
- * key: toolCallId;value: resolve/reject 回调 + 创建时的 contextVersion。
73
- * submitQuestionAnswer() 调用时 resolve;abort/stop/supersede 时 reject。
74
- */
48
+
75
49
  private readonly questionWaiters;
76
50
  constructor(config: ACodeRuntimeConfig);
77
- /** 获取当前已暴露的工具名称列表(供 SubAgentManager 记录) */
51
+
78
52
  getAvailableTools(): string[];
79
53
  private emitAcodeEvent;
80
- /**
81
- * 发射压缩子事件(phase 事件)到面板时间线。
82
- * 子事件通过 parentId 关联到父压缩事件,在前端以嵌套子元素形式展示。
83
- *
84
- * @param compactionId 父压缩事件 ID
85
- * @param phase 阶段标识(detect/prune/prune_done/summarize/summarize_done)
86
- * @param phaseLabel 阶段显示标签(如"阶段1: 裁剪工具输出")
87
- * @param phaseDetail 阶段详情(如"裁剪了 5 条工具输出")
88
- */
54
+
89
55
  private emitCompactionPhase;
90
- /**
91
- * performCompaction 的 onPhase 回调处理:将 CompactionPhaseEvent 转换为面板子事件。
92
- */
56
+
93
57
  private handleCompactionPhase;
94
- /**
95
- * 启动 ACode headless 会话。
96
- * 主流程:加载 `.acode/config.json` 与 skills 目录 -> 发出 MCP/Skill 状态 ->
97
- * 如有初始 prompt 则执行一轮响应。
98
- */
58
+
99
59
  start(): Promise<void>;
100
- /**
101
- * 加载所有 skills 来源目录并合并。
102
- *
103
- * 三个来源(按优先级,后加载的覆盖先加载的同名 skill):
104
- * 1. 全局目录(~/.acode/skills,由 config.skillsDir 指定)
105
- * 2. 项目目录(<workingDirectory>/.acode/skills)
106
- * 3. 项目目录(<workingDirectory>/.agentswork/skills)
107
- *
108
- * 返回合并后的 skills 列表、按目录分组的 skillGroups,以及需要监听的目录列表
109
- * (已去重、规范化)。watchedDirs 用于启动 fs.watch 监听运行时变更。
110
- */
60
+
111
61
  private loadAllSkills;
112
- /**
113
- * 启动 fs.watch 监听 skills 目录变更。
114
- *
115
- * 使用 recursive: true(Windows/macOS 原生支持,Linux 在 Node 19+ 支持)。
116
- * Linux 旧版本不支持时会抛 ERR_FEATURE_UNAVAILABLE,fallback 到非 recursive
117
- * 监听顶层目录(只能感知 skill 子目录的新增/删除,无法感知 SKILL.md 内容修改)。
118
- *
119
- * 变更事件经防抖后触发 refreshSkills(),重新扫描目录、刷新 SkillTool、重发 skill_status。
120
- */
62
+
121
63
  private startSkillWatchers;
122
- /**
123
- * 防抖调度 skill 重扫。短时间内多次变更事件只触发一次重扫。
124
- */
64
+
125
65
  private scheduleSkillRefresh;
126
- /**
127
- * 重新扫描 skills 目录并刷新 SkillTool 与 state。
128
- *
129
- * 调用时机:fs.watch 监听到目录变更后(经防抖)。
130
- * 副作用:
131
- * - 更新 this.skillTool 的内部 Map 与工具描述(让下一轮 turn 的 LLM 感知新 skill)
132
- * - 更新 this.state.skills(影响 fallback 响应等)
133
- * - 重发 skill_status 事件(让 DevTools 面板刷新"能力"标签页)
134
- */
66
+
135
67
  private refreshSkills;
136
- /**
137
- * 关闭所有 skills 目录监听器与防抖定时器。在 stop() 中调用。
138
- */
68
+
139
69
  private stopSkillWatchers;
140
- /**
141
- * 启动上下文压缩调试日志,每 5 秒写入系统临时目录下的 acode-compaction-debug.log。
142
- * 仅当环境变量 ACODE_COMPACTION_DEBUG=1 时启用,使用异步写入避免阻塞事件循环。
143
- */
70
+
144
71
  private startCompactionDebugLog;
145
- /**
146
- * 停止上下文压缩调试日志。
147
- */
72
+
148
73
  private stopCompactionDebugLog;
149
- /**
150
- * 处理一轮用户输入。
151
- * 主流程:将用户输入追加到会话 -> 调用 OpenAI-compatible 模型 -> 如模型请求
152
- * MCP tool call 则执行工具并继续同一轮,最后输出 assistant 文本与 usage。
153
- */
74
+
154
75
  submit(message: string): Promise<void>;
155
- /**
156
- * Reset only the conversation context while keeping the live ACode session,
157
- * MCP connections, exposed tools, commands, and hooks available.
158
- */
76
+
159
77
  resetContext(): Promise<void>;
160
78
  private isTurnSuperseded;
161
79
  private executeSubmit;
162
- /** 中止当前轮次;由执行轮次统一发出一个终态事件,避免 aborted/failed 双终态。 */
80
+
163
81
  abort(): Promise<void>;
164
- /**
165
- * 构造 ask_user_question 工具的依赖注入。
166
- * onQuestion: 发出 question_request 事件,让 adapter 转发到前端。
167
- * waitForAnswer: 阻塞等待 submitQuestionAnswer() 调用 resolve,或 abort/stop/supersede 时 reject。
168
- */
82
+
169
83
  private buildAskUserQuestionDeps;
170
- /**
171
- * 构造 sub-agent 工具集依赖(注入 SubAgentManager 句柄)。
172
- *
173
- * 5 个工具的依赖:
174
- * - spawnSubAgent: 创建子 agent(不阻塞,不自动 start)
175
- * - listSubAgents: 列出当前 agent 的所有子 agent
176
- * - getSubAgentStatus: 查询某子 agent 实时状态
177
- * - awaitSubAgents: 阻塞等待指定子 agent 数组完成
178
- * - abortSubAgent: 终止某子 agent
179
- */
84
+
180
85
  private buildSubAgentToolDeps;
181
- /**
182
- * 接收用户对 ask_user_question 的回答(由 AcodeSdkAdapter.sendQuestionAnswer 调用)。
183
- * 若当前 turn 已被 supersede(contextVersion 变更),返回 false 让 adapter 知晓。
184
- */
86
+
185
87
  submitQuestionAnswer(toolCallId: string, answers: Record<string, string>): boolean;
186
- /**
187
- * 中止所有 ask_user_question 等待,让工具 execute() 抛错走 appendToolFailureResult。
188
- * 在 abort()/stop() 中调用,确保用户点停止或会话终止时 execute 不会永久阻塞。
189
- */
88
+
190
89
  private rejectAllQuestionWaiters;
191
- /**
192
- * 取消当前正在 await_sub_agents 工具中阻塞等待的子 agent。
193
- *
194
- * 核心作用:让 abort()/stop() 能解除 awaitSubAgents 的阻塞,避免 submitQueue 死锁。
195
- *
196
- * 工作原理:
197
- * 1. 遍历 pendingAwaitedSubIds(awaitSubAgents 工具执行期间记录的 subIds)
198
- * 2. 对每个 subId 调用 manager.abort(subId)
199
- * 3. manager.abort 会 settle completionPromise(resolve with error="aborted")
200
- * 4. awaitSubAgents 中 await completionPromise 解除阻塞,execute() 正常返回
201
- * 5. executeSubmit 完成,submit() Promise resolve,submitQueue 链恢复
202
- * 6. 后续 sendMessage / auto-poll 的 submit 能正常排队执行
203
- *
204
- * 场景:看门狗触发 abort() 或用户点击停止时,agent 正卡在 await_sub_agents
205
- * 等待子 agent 完成。若不取消子 agent,completionPromise 永不 settle,
206
- * executeSubmit 永久 pending,submitQueue 死锁,agent 彻底无反应。
207
- *
208
- * 注意:此方法 fire-and-forget,不 await manager.abort 完成。
209
- * manager.abort 内部会同步 settle completionPromise(通过 completionResolve),
210
- * 解除 awaitSubAgents 阻塞无需等待 abort I/O 完成。
211
- */
90
+
212
91
  private cancelPendingAwaitedSubAgents;
213
- /** 终止 ACode 会话并发出 session_complete。 */
92
+
214
93
  stop(): Promise<void>;
215
94
  private resolveCommandDirs;
216
95
  private runModelTurn;
217
- /**
218
- * LLM 摘要器:调用当前 provider 生成结构化对话摘要。
219
- *
220
- * 这是把 OpenCode 的 LLM 摘要能力赋能到 ACode 的核心方法:
221
- * - OpenCode 在 compaction.process 中调用独立的 compaction agent
222
- * - ACode 复用当前 provider 配置,发起一次非流式 chat completion 请求
223
- * - 使用 COMPACTION_LLM_PROMPT_TEMPLATE 作为 prompt 模板
224
- *
225
- * 设计要点:
226
- * 1. 非流式调用(不需要流式,简化处理)
227
- * 2. 不带 tools(纯文本生成)
228
- * 3. 失败时抛出异常,由 summarizeConversation 降级到规则摘要
229
- * 4. 独立的 AbortController,避免主请求取消影响摘要
230
- * 5. 复用 provider 的 timeout 配置
231
- *
232
- * @param input 摘要输入(conversationText + messageCount + contextLimit)
233
- * @returns LLM 生成的结构化摘要文本
234
- */
96
+
235
97
  private summarizeConversationWithLLM;
236
98
  private requestChatCompletion;
237
99
  private readChatCompletionStream;
238
100
  private handleToolCalls;
239
101
  private callMcpToolWithTimeout;
240
- /**
241
- * 将子 agent 终态通知转为 poll_message 格式的合成 DirectMessage。
242
- * 主流程:构建符合 MCP poll_message 返回格式的 JSON 字符串。
243
- */
102
+
244
103
  private static formatSubAgentCompletionAsPollResult;
245
- /**
246
- * 将子 agent 终态通知合并到已有的 MCP poll_message 返回结果中。
247
- * 主流程:解析 MCP 返回的 JSON -> 将通知转为 DirectMessage 插入到 directMessages 前面 -> 重新序列化。
248
- */
104
+
249
105
  private static mergeSubAgentCompletionsIntoMcpResult;
250
- /**
251
- * Memory 自动委托 sub-agent 完成一轮后的外部重新检查。
252
- *
253
- * 查询服务端 memory 真实状态(通过 MCP 工具直接调用,非 LLM 自报),
254
- * 判断 sub-agent 是否真正完成了处理:
255
- * - memory_file_change:检查每条 memory 的 memory_status 是否已回到 normal
256
- * - memory_expiration:检查每条 memory 是否已续期(expiresAt 在未来)或已清理(read 返回 null)
257
- * - memory_cleanup:检查 get_memory_stats 中对应类型/域是否仍 exceeded
258
- *
259
- * 若仍有未完成项,返回 { done: false, continueMessage } 包含 "经检查,未完成对xxx的处理,请继续"
260
- * 及具体未完成列表,由 SubAgentManager 注入同一 sub-agent 的下一轮 submit。
261
- *
262
- * recheck 自身出错(MCP 连接不可用、工具调用超时等)时返回 { done: true },不阻塞 sub-agent 结束。
263
- */
106
+
264
107
  private recheckMemoryDelegate;
265
- /**
266
- * 通过 MCP read_memory 工具读取单条 memory 记录。
267
- * 注入 _aws_sub_agent=true 避免状态上报污染父 agent 时间线。
268
- * 返回 null 表示 memory 明确不存在(服务端返回 null/undefined 或非对象)。
269
- * 读取/解析异常(网络抖动、超时、服务端错误)会向上抛出,交由 recheckMemoryDelegate
270
- * 统一判定为「未完成」,避免被误当作「已处理」。
271
- */
108
+
272
109
  private readMemoryViaMcp;
273
- /** recheck memory_file_change:检查 memory_status 是否仍为 updating */
110
+
274
111
  private recheckMemoryFileChange;
275
- /** recheck memory_expiration:检查 expiresAt 是否仍过期 或 memory_status 是否仍为 recalling */
112
+
276
113
  private recheckMemoryExpiration;
277
- /** recheck memory_cleanup:检查 get_memory_stats 中对应类型/域是否仍 exceeded */
114
+
278
115
  private recheckMemoryCleanup;
279
- /**
280
- * 构造 memory 自动委托子 agent 的 prompt。
281
- * 主流程:根据 delegate 类型(过期整理/文件变更更新)生成自包含指令。
282
- */
116
+
283
117
  private buildMemoryDelegatePrompt;
284
- /**
285
- * 处理 poll_message 结果中的 memory 自动委托标记 (_acodeAutoDelegate)。
286
- * 主流程:解析 MCP 返回 -> 识别标记 -> spawn 子 agent -> 返回简化结果。
287
- * 非 ACode 运行时(无 subAgentManager)直接透传原结果,不受影响。
288
- * 返回 null 表示全部消息已被委托,调用方应重新 poll_message 继续等待真正的消息。
289
- */
118
+
290
119
  private processMemoryAutoDelegates;
291
- /**
292
- * poll_message MCP 工具调用的子 agent 完成事件 race 包装器。
293
- *
294
- * 主流程:
295
- * 1. 先检查 completionQueue 中是否有已完成的子 agent -> 有则直接返回合成结果(不调 MCP)
296
- * 2. 启动 MCP poll_message 调用与 waitForAnyCompletion 的 race
297
- * 3. 子 agent 先完成 -> 返回合成结果(MCP 调用被放弃但仍在运行,下次 poll_message 会复用 pendingPollMessage)
298
- * 4. MCP 先返回 -> 合并新完成的子 agent 事件后返回
299
- *
300
- * 设计说明:
301
- * - MCP server 的 poll_message 内部有 while(true) 永久阻塞,只在有消息时返回
302
- * - 子 agent 完成事件由 SubAgentManager 在同进程内产生,通过 completionQueue 传递
303
- * - 当子 agent 先完成时,MCP 调用被放弃(Promise 不再被 await),MCP server 侧的
304
- * pendingPollMessage 仍在运行,下次 poll_message 调用会通过 pendingPollMessage 复用
305
- */
120
+
306
121
  private callPollMessageWithSubAgentRace;
307
- /**
308
- * 检查 poll_message 结果是否包含实际消息(directMessages 或 groupMessages 非空)。
309
- * 用于循环中过滤空结果,确保 poll_message 只在有消息时返回。
310
- */
122
+
311
123
  private pollResultHasMessages;
312
- /**
313
- * 在 memory 委托消息被全部处理后,等待一段时间再重新 poll_message。
314
- *
315
- * 背景:MCP doPollMessage 对 updating memory 每次都返回通知(无去重),
316
- * 而 processMemoryAutoDelegates 因 URI 已在 pendingMemorySubAgents 中而返回 null,
317
- * 导致 while(true) 无延迟重 poll,每轮触发 handleToolCall 的 reportToolUse/reportThinking
318
- * 状态上报,引发"思考→MCP→跳过"快速循环,最终连接丢失。
319
- *
320
- * 等待策略:
321
- * 1. 固定延迟 DELEGATE_REPOLL_DELAY_MS(5s),给子 agent 时间完成 memory 更新
322
- * 2. 可被 runtime stop 中断(通过 createRuntimeStopWaiter)
323
- * 3. 不消费 completionQueue(下一轮 takeCompletedSubAgents 会取到)
324
- */
124
+
325
125
  private waitForDelegateRepoll;
326
- /**
327
- * Build a one-shot waiter that rejects long-running MCP calls when the runtime stops.
328
- * Main flow: register a stop callback -> race it with the SDK call -> remove it after either side settles.
329
- */
126
+
330
127
  private createRuntimeStopWaiter;
331
- /**
332
- * Notify and clear every pending runtime-stop waiter.
333
- * Main flow: snapshot callbacks -> clear the set -> reject each pending MCP race exactly once.
334
- */
128
+
335
129
  private notifyRuntimeStop;
336
130
  private appendSyntheticMultimodalUserMessage;
337
131
  private appendToolFailureResult;
338
- /**
339
- * 为子 agent 过滤共享 MCP 连接:只保留 memory 工具。
340
- *
341
- * 原 MCP server 进程通过 AWS_SUB_AGENT=true 限制子 agent 只能调用 memory 工具,
342
- * 共享连接后绕过了该机制。此方法在 ACode runtime 层重新施加限制:
343
- * - 复用同一 client/transport(不创建新连接)
344
- * - 仅暴露 MEMORY_TOOL_NAMES 中的工具
345
- * - 防止子 agent 调用 poll_message(与父 agent 冲突)、send_group 等
346
- */
132
+
347
133
  private filterSharedMcpConnectionsForSubAgent;
348
134
  private connectMcpServers;
349
135
  private createMcpTransport;
350
- /**
351
- * 通过 MCP 连接调用 get_profile 工具获取用户 profile 信息,
352
- * 格式化为文本后返回,用于拼接到 rolePrompt 下方。
353
- * 主流程:遍历已连接的 MCP -> 找到 get_profile 工具 -> 调用 -> 格式化结果。
354
- * 容错:任何步骤失败都返回空字符串,不阻塞启动。
355
- */
136
+
356
137
  private fetchProfilePrompt;
357
- /**
358
- * 从 MCP callTool 返回值中提取 profile 对象。
359
- * 主流程:优先取 content[0].text JSON -> 回退到 result 本身为对象。
360
- */
138
+
361
139
  private extractProfileFromToolResult;
362
140
  private disconnectMcpServers;
363
141
  }
@@ -1,29 +1,9 @@
1
1
  import type { ACodeBuiltInTool } from "./built-in-file-tools.js";
2
2
  import type { ACodeSkillMetadata } from "./types.js";
3
- /**
4
- * 可动态刷新的 SkillTool:在 ACodeBuiltInTool 基础上增加 refresh 方法,
5
- * 让 runtime 在监听到 skill 目录变更时能即时更新工具描述与 name→metadata 映射。
6
- */
3
+
7
4
  export interface ACodeSkillTool extends ACodeBuiltInTool {
8
- /**
9
- * 用新的 skill 列表重建内部映射,并更新工具描述(`<available_skills>` XML 块)。
10
- * 已在运行中的会话下一轮 turn 会通过更新后的 description 让 LLM 感知到新 skill。
11
- */
5
+
12
6
  refresh(skills: ACodeSkillMetadata[]): void;
13
7
  }
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
- */
8
+
29
9
  export declare function createSkillTool(skills: ACodeSkillMetadata[]): ACodeSkillTool;