aws-runtime-bridge 1.9.91 → 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 (134) 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/cli-commands.js +6 -6
  53. package/dist/services/event-delta-pusher.d.ts +5 -20
  54. package/dist/services/fileSnapshotStore.d.ts +7 -35
  55. package/dist/services/instance-ai-config-service.d.ts +4 -21
  56. package/dist/services/instance-service.d.ts +1 -10
  57. package/dist/services/instance-state.d.ts +5 -30
  58. package/dist/services/legacy-path-migration.d.ts +1 -1
  59. package/dist/services/lifecycle-state.d.ts +1 -4
  60. package/dist/services/mcp-launch-binding-queue.d.ts +2 -8
  61. package/dist/services/orphan-monitor.d.ts +20 -63
  62. package/dist/services/panel-auth.d.ts +12 -28
  63. package/dist/services/process-detector.d.ts +18 -122
  64. package/dist/services/process-registry.d.ts +30 -150
  65. package/dist/services/ring-buffer.d.ts +9 -42
  66. package/dist/services/runtime-binding.d.ts +2 -9
  67. package/dist/services/runtime-lifecycle-policy.d.ts +3 -15
  68. package/dist/services/session-output.d.ts +14 -67
  69. package/dist/services/startup-config-wizard.d.ts +3 -10
  70. package/dist/services/system-metrics.d.ts +1 -4
  71. package/dist/services/terminal-persistence.d.ts +10 -53
  72. package/dist/services/tool-installer.d.ts +6 -18
  73. package/dist/services/tunnel-client.d.ts +3 -18
  74. package/dist/services/windows-service-manager.d.ts +1 -13
  75. package/dist/services/workspace-files.d.ts +17 -57
  76. package/dist/services/workspace-watch.d.ts +2 -6
  77. package/dist/services/workspaceTaskChangeWatcher.d.ts +13 -51
  78. package/dist/types.d.ts +2 -8
  79. package/dist/utils/instance-ai-config-debug-logger.d.ts +5 -20
  80. package/dist/utils/logger.d.ts +7 -20
  81. package/dist/utils/mcp-utils.d.ts +8 -44
  82. package/dist/utils/path-utils.d.ts +3 -15
  83. package/dist/utils/sdk-package-loader.d.ts +2 -8
  84. package/dist/utils/validation.d.ts +3 -20
  85. package/dist/utils/yaml-utils.d.ts +8 -56
  86. package/node_modules/@cc-switch/sdk/dist/index.d.ts +1 -6
  87. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +11 -42
  88. package/package/acode/dist/ask-user-question-tool.d.ts +7 -20
  89. package/package/acode/dist/built-in-file-tools.d.ts +3 -6
  90. package/package/acode/dist/built-in-symbols-tool.d.ts +1 -4
  91. package/package/acode/dist/builtins/commandArtifacts.d.ts +1 -4
  92. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +3 -18
  93. package/package/acode/dist/commands/commandLoader.d.ts +1 -4
  94. package/package/acode/dist/commands/commandParser.d.ts +1 -4
  95. package/package/acode/dist/compaction.d.ts +38 -175
  96. package/package/acode/dist/config.d.ts +1 -4
  97. package/package/acode/dist/fs-utils.d.ts +1 -19
  98. package/package/acode/dist/hooks/hookBus.d.ts +1 -4
  99. package/package/acode/dist/mcpToolNames.d.ts +2 -8
  100. package/package/acode/dist/parsers/ast-cache.d.ts +7 -20
  101. package/package/acode/dist/parsers/language-detector.d.ts +1 -5
  102. package/package/acode/dist/parsers/language-queries.d.ts +1 -1
  103. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +4 -12
  104. package/package/acode/dist/parsers/types.d.ts +19 -30
  105. package/package/acode/dist/runtime.d.ts +47 -269
  106. package/package/acode/dist/skill-tool.d.ts +3 -23
  107. package/package/acode/dist/sub-agent-manager.d.ts +41 -206
  108. package/package/acode/dist/sub-agent-store.d.ts +12 -61
  109. package/package/acode/dist/sub-agent-tools.d.ts +9 -18
  110. package/package/acode/dist/sub-agent-types.d.ts +32 -38
  111. package/package/acode/dist/todo-store.d.ts +8 -23
  112. package/package/acode/dist/todo-tool.d.ts +2 -2
  113. package/package/acode/dist/types.d.ts +17 -38
  114. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +44 -161
  115. package/package/aws-client-agent-mcp/dist/config.d.ts +4 -18
  116. package/package/aws-client-agent-mcp/dist/constants.d.ts +1 -3
  117. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +25 -95
  118. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +1 -4
  119. package/package/aws-client-agent-mcp/dist/http-client.d.ts +15 -56
  120. package/package/aws-client-agent-mcp/dist/index.d.ts +1 -11
  121. package/package/aws-client-agent-mcp/dist/logger.d.ts +5 -22
  122. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +76 -365
  123. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +21 -83
  124. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +15 -70
  125. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +4 -17
  126. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +23 -92
  127. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +5 -29
  128. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +2 -9
  129. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +17 -55
  130. package/package/aws-client-agent-mcp/dist/types.d.ts +66 -125
  131. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +30 -125
  132. package/package/cc-switch-sdk/dist/index.d.ts +1 -6
  133. package/package/cc-switch-sdk/dist/sdk.d.ts +11 -42
  134. package/package.json +1 -1
@@ -1,42 +1,15 @@
1
- /**
2
- * 上下文压缩模块 — 参考 OpenCode compaction.ts 的设计
3
- *
4
- * 核心策略:
5
- * 1. Prune(裁剪):从旧到新遍历工具输出,超过保护线后用占位符替换内容
6
- * 2. Summarize(摘要):将早期对话结构化摘要,保留目标/指令/发现/已完成/相关文件
7
- *
8
- * 触发时机:在每次 AI 请求前检测 token 是否溢出,溢出则执行压缩
9
- *
10
- * 与 OpenCode 的对应关系:
11
- * - isOverflow ↔ SessionCompaction.isOverflow
12
- * - prune ↔ SessionCompaction.prune
13
- * - summarize ↔ SessionCompaction.process (LLM 摘要的简化版)
14
- */
15
- /** 压缩缓冲区:保留这么多 token 的空闲空间,避免压缩过程中溢出 */
1
+
2
+
16
3
  export declare const COMPACTION_BUFFER = 20000;
17
- /**
18
- * 基础压缩触发比例(兜底默认值,仅用于 contextLimit <= 0 的异常场景)。
19
- * 正常情况下通过 {@link getCompactionTriggerRatio} 按窗口大小动态分级。
20
- */
4
+
21
5
  export declare const COMPACTION_TRIGGER_RATIO = 0.55;
22
- /** 按上下文窗口大小返回压缩触发比例(大窗口更高,充分利用空间)。 */
6
+
23
7
  export declare function getCompactionTriggerRatio(contextLimit: number): number;
24
- /** Prune 保护线默认值:保留最近 PRUNE_PROTECT token 的工具输出完整。
25
- * 注意:实际使用时会按 contextLimit 比例调整(见 pruneToolOutputs),
26
- * 避免在小上下文窗口(如 60k)下保护线过高导致 prune 永不触发。
27
- */
8
+
28
9
  export declare const PRUNE_PROTECT = 40000;
29
- /** Prune 最小收益默认值:累计可释放 token 不足此数时跳过修剪。
30
- * 注意:实际使用时会按 contextLimit 比例调整。
31
- */
10
+
32
11
  export declare const PRUNE_MINIMUM = 20000;
33
- /**
34
- * LLM 摘要 prompt 模板(OpenCode 风格结构化摘要)。
35
- *
36
- * 用于 summarizeConversationWithLLM:追加到 user 消息末尾,指导 LLM 按结构化
37
- * 段落(Goal/Instructions/Discoveries/Accomplished/Files)输出摘要,便于后续
38
- * 轮次快速恢复上下文。LLM 摘要失败时降级到 rule-based summarizeConversation。
39
- */
12
+
40
13
  export declare const COMPACTION_LLM_PROMPT_TEMPLATE: string;
41
14
  interface ChatMessageLike {
42
15
  role: "system" | "user" | "assistant" | "tool";
@@ -44,72 +17,52 @@ interface ChatMessageLike {
44
17
  tool_call_id?: string;
45
18
  tool_calls?: unknown[];
46
19
  }
47
- /** 压缩结果 */
20
+
48
21
  export interface CompactionResult {
49
- /** 使用的策略 */
22
+
50
23
  strategy: "prune" | "summarize" | "prune+summarize" | "none";
51
- /** 释放的 token 数 */
24
+
52
25
  freedTokens: number;
53
- /** 压缩前对话大小(KB) */
26
+
54
27
  sizeBeforeKB: number;
55
- /** 压缩后对话大小(KB) */
28
+
56
29
  sizeAfterKB: number;
57
- /** 压缩前估算 token 数 */
30
+
58
31
  tokensBefore: number;
59
- /** 压缩后估算 token 数 */
32
+
60
33
  tokensAfter: number;
61
- /** 压缩前消息数 */
34
+
62
35
  messageCountBefore: number;
63
- /** 压缩后消息数 */
36
+
64
37
  messageCountAfter: number;
65
- /** 被裁剪的工具消息数 */
38
+
66
39
  prunedToolMessages: number;
67
- /** 被摘要化的消息数 */
40
+
68
41
  summarizedMessages: number;
69
42
  }
70
- /**
71
- * 压缩阶段事件:由 performCompaction 通过 onPhase 回调发射,
72
- * 供 runtime 转换为时间线父子树结构(start → phase* → end)。
73
- */
43
+
74
44
  export interface CompactionPhaseEvent {
75
45
  phase: "prune_start" | "prune_end" | "summarize_start" | "summarize_end";
76
- /** 涉及的消息数(prune/summarize 阶段开始时) */
46
+
77
47
  messageCount?: number;
78
- /** 已裁剪的工具消息数(prune_end) */
48
+
79
49
  prunedCount?: number;
80
- /** 释放的 token 数(prune_end) */
50
+
81
51
  freedTokens?: number;
82
- /** 已摘要化的消息数(summarize_end) */
52
+
83
53
  summarizedCount?: number;
84
- /** 是否使用了 LLM 摘要(summarize_end) */
54
+
85
55
  usedLLM?: boolean;
86
56
  }
87
- /**
88
- * LLM 摘要器:由 runtime 注入,调用当前 provider 发起一次非流式摘要请求。
89
- * 失败时抛出异常,由 summarizeConversation 降级到规则摘要。
90
- */
57
+
91
58
  export type LLMSummarizer = (input: {
92
59
  conversationText: string;
93
60
  messageCount: number;
94
61
  contextLimit: number;
95
62
  }) => Promise<string>;
96
- /**
97
- * 计算压缩触发阈值:取 min(contextLimit × 动态比例, hardLimit - reserved)。
98
- *
99
- * - ratioBased = contextLimit × getCompactionTriggerRatio(contextLimit)(按窗口大小动态分级)
100
- * - hardLimit = inputLimit ?? contextLimit(provider 显式 inputLimit 优先)
101
- * - reserved = min(COMPACTION_BUFFER, maxOutput)(buffer 不超过输出上限)
102
- *
103
- * 取两者较小者,既避免小窗口下过早触发,又避免接近硬上限时来不及压缩。
104
- */
63
+
105
64
  export declare function calculateCompactionThreshold(contextLimit: number, maxOutput: number, inputLimit?: number): number;
106
- /**
107
- * 根据模型名查找上下文窗口大小。
108
- * 主流程:优先使用传入的 configOverrides → 精确匹配 → 前缀匹配(按长度降序)→ 默认值。
109
- *
110
- * @param modelName 模型名
111
- * @param configOverrides 可选的配置覆盖值(来自 acode.json 的 contextLimit/maxOutput)
112
- */
65
+
113
66
  export declare function lookupModelLimits(modelName: string, configOverrides?: {
114
67
  contextLimit?: number;
115
68
  maxOutput?: number;
@@ -117,125 +70,35 @@ export declare function lookupModelLimits(modelName: string, configOverrides?: {
117
70
  contextLimit: number;
118
71
  maxOutput: number;
119
72
  };
120
- /**
121
- * 中英文分离的文本 token 估算。
122
- * 对纯 ASCII 约 4 字符/token,对中文约 1.5 字符/token。
123
- * 参考:context-manager.ts 的同名方法。
124
- */
73
+
125
74
  export declare function estimateTextTokens(text: string): number;
126
- /**
127
- * 粗略估算文本的 token 数(保留向后兼容)。
128
- * 使用 estimateTextTokens 的中英文分离 + 安全填充。
129
- */
75
+
130
76
  export declare function estimateTokens(text: string): number;
131
- /**
132
- * 估算整个对话的 token 数。
133
- * 使用块级识别 + 中英文分离 + 安全填充。
134
- */
77
+
135
78
  export declare function estimateConversationTokens(messages: readonly ChatMessageLike[]): number;
136
- /**
137
- * 计算对话的 KB 大小。
138
- */
79
+
139
80
  export declare function conversationSizeKB(messages: readonly ChatMessageLike[]): number;
140
- /**
141
- * 判断对话是否上下文溢出(基于文本估算)。
142
- * 使用显式传入的 contextLimit 和比例触发,不依赖模型名查找表。
143
- *
144
- * @param messages 对话消息数组
145
- * @param contextLimit 上下文窗口上限
146
- * @param maxOutput 模型最大输出 token(未使用,保留参数兼容)
147
- */
81
+
148
82
  export declare function isOverflow(messages: readonly ChatMessageLike[], contextLimit: number, _maxOutput?: number): boolean;
149
- /**
150
- * 基于 provider 实际返回的累积 token 使用量判断是否应触发压缩。
151
- *
152
- * provider 每次请求都会返回实际 token 计数(input + output),
153
- * 这个计数比基于文本的估算(estimateConversationTokens)要准确得多。
154
- *
155
- * 触发条件:累积 tokens >= contextLimit * getCompactionTriggerRatio(contextLimit)
156
- * 使用显式传入的 contextLimit,不依赖模型名查找表。
157
- *
158
- * @param accumulatedInput provider 实际累积的 input tokens
159
- * @param accumulatedOutput provider 实际累积的 output tokens
160
- * @param contextLimit 上下文窗口上限(来自模板配置,未配置时使用默认值)
161
- */
83
+
162
84
  export declare function isOverflowByActualUsage(accumulatedInput: number, accumulatedOutput: number, contextLimit: number): boolean;
163
- /**
164
- * Prune:从消息列表中裁剪旧工具消息的输出内容。
165
- *
166
- * 算法(参考 OpenCode compaction.ts:58-99):
167
- * 1. 从最新消息往旧遍历
168
- * 2. 跳过前 2 轮对话(保护最近上下文)
169
- * 3. 累计工具消息的 token
170
- * 4. 超过保护线后,将工具输出替换为占位符
171
- * 5. 只有收益超过最小阈值才真正执行
172
- *
173
- * 保护线和最小阈值会按 contextLimit 比例调整:
174
- * - protectLine = min(PRUNE_PROTECT, contextLimit * PRUNE_PROTECT_RATIO)
175
- * - minimumGain = min(PRUNE_MINIMUM, contextLimit * PRUNE_MINIMUM_RATIO)
176
- * 这样在小上下文窗口(如 60k)下也能正常触发 prune,
177
- * 而不是固定 40k/20k 导致 60k 上下文永远无法 prune。
178
- *
179
- * @param messages 对话消息数组(会被原地修改)
180
- * @param contextLimit 上下文窗口大小,用于按比例调整阈值(默认使用 DEFAULT_CONTEXT_LIMIT)
181
- * @returns 裁剪结果
182
- */
85
+
183
86
  export declare function pruneToolOutputs(messages: ChatMessageLike[], contextLimit?: number): {
184
87
  prunedCount: number;
185
88
  freedTokens: number;
186
89
  };
187
- /**
188
- * Summarize:将早期对话消息替换为结构化摘要。
189
- *
190
- * 算法(参考 OpenCode compaction.ts:101-229 的 process 函数):
191
- * 1. 分离 base system 消息和可压缩消息
192
- * 2. 保留最近 COMPACTION_RECENT_MESSAGE_COUNT 条消息
193
- * 3. 将早期消息生成结构化摘要
194
- * 4. 用摘要消息替换早期消息
195
- *
196
- * @param messages 对话消息数组(会被原地修改)
197
- * @returns 摘要化的消息数
198
- */
90
+
199
91
  export declare function summarizeConversation(messages: ChatMessageLike[], options?: {
200
92
  llmSummarizer?: LLMSummarizer;
201
93
  contextLimit?: number;
202
94
  }): Promise<number>;
203
- /**
204
- * Snip:删除最旧的一组消息(从第一个非 system 消息到下一个 user 消息之前)。
205
- *
206
- * 作为压缩的最终手段——当 prune 和 summarize 都无法释放足够空间时使用。
207
- * 能确保:
208
- * 1. 不删除 system 消息
209
- * 2. 删除的组不跨 user 边界(保证一个完整轮次)
210
- * 3. 删除后至少保留 1 组非 system 消息
211
- *
212
- * @param messages 对话消息数组(会被原地修改,通过 splice 删除)
213
- * @returns 删除的消息数
214
- */
95
+
215
96
  export declare function snipOldestMessageGroup(messages: ChatMessageLike[]): number;
216
- /**
217
- * 执行完整压缩流程:Prune → 若仍溢出则 Summarize。
218
- *
219
- * 参考 OpenCode 的两阶段策略:
220
- * 1. 先尝试 prune(低成本,只清除旧工具输出)
221
- * 2. 若 prune 后仍溢出,执行 summarize(高成本,摘要化早期对话)
222
- *
223
- * @param messages 对话消息数组(会被原地修改)
224
- * @param contextLimit 上下文窗口上限(来自模板配置,未配置时使用默认值)
225
- * @param maxOutput 模型最大输出 token
226
- * @param options 可选:llmSummarizer(LLM 摘要器,失败降级到规则摘要)、onPhase(阶段事件回调)
227
- * @returns 压缩结果
228
- */
97
+
229
98
  export declare function performCompaction(messages: ChatMessageLike[], contextLimit: number, maxOutput?: number, options?: {
230
99
  llmSummarizer?: LLMSummarizer;
231
100
  onPhase?: (event: CompactionPhaseEvent) => void;
232
- /**
233
- * Provider 实际累积 token 用量(来自 AI 请求返回的 usage)。
234
- * 文本估算(estimateConversationTokens)可能低估实际 token 数,
235
- * 导致 prune 后 isOverflow 返回 false 而跳过 summarize,最终策略为 "none"。
236
- * 传入此值后,post-prune overflow 检测使用 textEstimated 与 actualUsed 的较大值,
237
- * 避免因估算偏差导致压缩失效。
238
- */
101
+
239
102
  actualUsedTokens?: number;
240
103
  }): Promise<CompactionResult>;
241
104
  export {};
@@ -1,8 +1,5 @@
1
1
  import type { ACodeConfigFile, ACodeSkillGroup, ACodeSkillMetadata } from './types.js';
2
2
  export declare function loadAcodeConfig(configPath: string | undefined): Promise<ACodeConfigFile>;
3
3
  export declare function loadAcodeSkills(skillsDir: string | undefined): Promise<ACodeSkillMetadata[]>;
4
- /**
5
- * 加载单个 skills 目录:返回目录路径、是否存在、以及该目录下的 skills 列表。
6
- * 目录不存在时返回 exists=false + 空 skills,供前端展示空节点。
7
- */
4
+
8
5
  export declare function loadAcodeSkillGroup(skillsDir: string): Promise<ACodeSkillGroup>;
@@ -1,20 +1,2 @@
1
- /**
2
- * 对 `fs.rename` 做指数退避重试,仅针对 Windows 上目标被打开时
3
- * 的瞬时错误(EPERM/EBUSY/EACCES/ENOTEMPTY)。
4
- *
5
- * 其他错误(ENOENT 源不存在、ENOSPC 磁盘满等)直接抛出,不重试。
6
- *
7
- * ★ Windows EPERM 终极兜底:若全部重试仍失败(target 持续被 reader 持有 fd),
8
- * fallback 到 `fs.copyFile(src, dest) + fs.unlink(src)`。
9
- * - `fs.copyFile` 在 Windows 上走 `CopyFileEx` API,允许覆盖被其他进程打开的
10
- * target(只要 reader 共享模式允许读,fs.readFile 默认如此),能绕开 EPERM。
11
- * - 代价是失去原子性:写入过程中崩溃可能产生半成品 dest。
12
- * 但 sub-agent 记录非关键数据,配合 SubAgentStore.read() 的
13
- * `SyntaxError → empty` 容错已够用(最坏情况是列表暂时少一条历史)。
14
- * - POSIX 上 rename 重试一般不会失败(原子操作),fallback 路径极少触发。
15
- *
16
- * @param src 源文件路径(通常是 `.tmp` 临时文件)
17
- * @param dest 目标文件路径
18
- * @returns 成功时 resolve,全部重试都失败时 reject 最后一次错误
19
- */
1
+
20
2
  export declare function renameWithRetry(src: string, dest: string): Promise<void>;
@@ -9,10 +9,7 @@ export declare class ACodeHookBus {
9
9
  private readonly handlers;
10
10
  constructor(options: ACodeHookBusOptions);
11
11
  register(handler: ACodeHookHandler): void;
12
- /**
13
- * 分发 ACode 生命周期 Hook。
14
- * 主流程:按注册顺序执行 handler -> fail-open 记录错误 -> 遇到 deny 立即返回。
15
- */
12
+
16
13
  dispatch(name: ACodeHookEventName, data: Record<string, unknown>): Promise<ACodeHookResult[]>;
17
14
  }
18
15
  export declare function findDeniedHookResult(results: readonly ACodeHookResult[]): ACodeHookResult | undefined;
@@ -1,10 +1,4 @@
1
- /**
2
- * Main flow: normalize common MCP separators, then use the final segment as
3
- * the semantic tool name that controls timeout policy.
4
- */
1
+
5
2
  export declare function getSemanticToolName(toolName: string): string;
6
- /**
7
- * Main flow: classify only exact polling tool names so similarly named tools
8
- * keep the regular MCP timeout.
9
- */
3
+
10
4
  export declare function isMcpPollingToolName(toolName: string): boolean;
@@ -1,32 +1,19 @@
1
1
  import type { Tree } from "web-tree-sitter";
2
- /**
3
- * AST 缓存:LRU + mtime/size 失效。
4
- *
5
- * 设计要点:
6
- * - cache key 用 path + mtimeMs + size 三重校验,mtime 秒级精度不够时 size 兜底
7
- * - LRU 用 JS Map 的插入顺序语义实现:命中时 delete+set 让它变最新
8
- * - tree-sitter 的 Tree 是 WASM 对象,必须显式 tree.delete(),不归 V8 GC 管
9
- * - capacity 默认 100,淘汰最旧时调 tree.delete() 释放 WASM 内存
10
- */
2
+
11
3
  export declare class AstCache {
12
4
  private map;
13
5
  private readonly capacity;
14
6
  constructor(capacity?: number);
15
- /**
16
- * 取缓存。mtimeMs 或 size 不匹配则视为 stale,删除并返回 null。
17
- */
7
+
18
8
  get(absolutePath: string, mtimeMs: number, size: number): Tree | null;
19
- /**
20
- * 存缓存。若 key 已存在则覆盖(旧 tree 释放)。
21
- * 超容量时淘汰最旧(Map 的 keys().next().value)。
22
- */
9
+
23
10
  set(absolutePath: string, tree: Tree, language: string, mtimeMs: number, size: number): void;
24
- /** 主动失效:删除并释放 tree */
11
+
25
12
  invalidate(absolutePath: string): void;
26
- /** 清空所有缓存并释放所有 tree */
13
+
27
14
  clear(): void;
28
- /** 当前缓存条目数(测试用) */
15
+
29
16
  size(): number;
30
17
  }
31
- /** 进程级单例,容量 100 */
18
+
32
19
  export declare const astCache: AstCache;
@@ -1,6 +1,2 @@
1
- /**
2
- * 根据文件扩展名检测 tree-sitter language 名。
3
- * 大小写不敏感(扩展名统一转小写后查表)。
4
- * 未知扩展名返回 null。
5
- */
1
+
6
2
  export declare function detectLanguage(filePath: string): string | null;
@@ -1,4 +1,4 @@
1
1
  import type { LanguageQueryPack } from "./types.js";
2
2
  export declare const LANGUAGE_QUERIES: Record<string, LanguageQueryPack>;
3
- /** 所有支持的语言名(15 项,含 tsx/jsx) */
3
+
4
4
  export declare const SUPPORTED_LANGUAGES: string[];
@@ -1,17 +1,9 @@
1
1
  import { Parser, Language } from "web-tree-sitter";
2
- /**
3
- * 懒初始化 Parser 单例。
4
- * web-tree-sitter v0.25 要求在 new Parser() 之前显式 await Parser.init()
5
- * 完成 WASM 运行时初始化,否则抛 "cannot construct a Parser before calling init()"。
6
- */
2
+
7
3
  export declare function getParser(): Promise<Parser>;
8
- /**
9
- * 懒加载语言 grammar。
10
- * 已加载的 language 直接复用 Map 缓存。
11
- * WASM 损坏或不存在返回 null(不抛异常,由 extractor 决定回退)。
12
- */
4
+
13
5
  export declare function loadLanguage(language: string): Promise<Language | null>;
14
- /** 查询某语言 grammar 是否已加载(测试用) */
6
+
15
7
  export declare function isLanguageLoaded(language: string): boolean;
16
- /** 重置 loader 状态(仅测试用:清空 parser 和 language 缓存) */
8
+
17
9
  export declare function resetLoader(): Promise<void>;
@@ -1,60 +1,49 @@
1
- /**
2
- * tree-sitter symbols 工具的共享类型定义。
3
- *
4
- * SymbolKind 统一映射 13 种语言的 AST 节点类型,
5
- * 让 agent 不需要关心具体语言的节点名差异。
6
- */
7
- /** 符号类型(跨语言统一映射) */
1
+
2
+
8
3
  export type SymbolKind = "function" | "class" | "method" | "variable" | "import" | "error";
9
- /** 查询模式 */
4
+
10
5
  export type SymbolMode = "definitions" | "references" | "outline";
11
- /**
12
- * 单个符号结果。
13
- *
14
- * kind 语义:
15
- * - definitions/outline 模式下:声明类型
16
- * - references 模式下:被引用符号的类型(如对函数的调用 kind="function")
17
- */
6
+
18
7
  export interface SymbolResult {
19
8
  kind: SymbolKind;
20
9
  name: string;
21
- /** 1-based 起始行 */
10
+
22
11
  line: number;
23
- /** 1-based 结束行(definitions/outline 才有) */
12
+
24
13
  endLine?: number;
25
- /** 1-based 起始列 */
14
+
26
15
  column?: number;
27
- /** 函数签名/类声明头部(definitions/outline 才有) */
16
+
28
17
  signature?: string;
29
- /** 引用所在行的源码文本(references 模式才有) */
18
+
30
19
  context?: string;
31
20
  }
32
- /** outline 模式下的嵌套节点 */
21
+
33
22
  export interface OutlineNode extends SymbolResult {
34
23
  children?: OutlineNode[];
35
24
  }
36
- /** symbols 工具的统一响应外壳 */
25
+
37
26
  export interface SymbolsResponse {
38
27
  ok: boolean;
39
28
  tool: "symbols";
40
- /** workspace-relative 路径 */
29
+
41
30
  path: string;
42
31
  mode: SymbolMode;
43
- /** "typescript" | "python" | ... | "unknown" */
32
+
44
33
  language: string;
45
34
  symbols: SymbolResult[];
46
35
  truncated: boolean;
47
- /** 解析失败/不支持时的错误说明 */
36
+
48
37
  error?: string;
49
38
  }
50
- /** 单条 query 模板定义 */
39
+
51
40
  export interface QueryPattern {
52
- /** S-expression 查询字符串 */
41
+
53
42
  query: string;
54
- /** 匹配节点的 kind */
43
+
55
44
  kind: SymbolKind;
56
- /** 是否带 endLine(definitions/outline 才有) */
45
+
57
46
  hasEndLine?: boolean;
58
47
  }
59
- /** 每语言的 query 模板集合 */
48
+
60
49
  export type LanguageQueryPack = Record<SymbolMode, QueryPattern[]>;