aws-runtime-bridge 1.9.79 → 1.9.81

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 (596) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +0 -1
  2. package/dist/adapter/AcodeSdkAdapter.js +11 -1986
  3. package/dist/adapter/AdapterRegistry.d.ts +0 -1
  4. package/dist/adapter/AdapterRegistry.js +2 -100
  5. package/dist/adapter/ClaudeSdkAdapter.d.ts +0 -1
  6. package/dist/adapter/ClaudeSdkAdapter.js +4 -1300
  7. package/dist/adapter/CodexSdkAdapter.d.ts +0 -1
  8. package/dist/adapter/CodexSdkAdapter.js +4 -836
  9. package/dist/adapter/OpencodeSdkAdapter.d.ts +0 -1
  10. package/dist/adapter/OpencodeSdkAdapter.js +4 -879
  11. package/dist/adapter/SdkProviderSpi.d.ts +0 -1
  12. package/dist/adapter/SdkProviderSpi.js +2 -55
  13. package/dist/adapter/acode-tool-names.d.ts +0 -1
  14. package/dist/adapter/acode-tool-names.js +2 -37
  15. package/dist/adapter/idle-poll-loop.d.ts +0 -1
  16. package/dist/adapter/idle-poll-loop.js +2 -59
  17. package/dist/adapter/index.d.ts +0 -1
  18. package/dist/adapter/index.js +2 -11
  19. package/dist/adapter/instance-ai-config-resolver.d.ts +0 -1
  20. package/dist/adapter/instance-ai-config-resolver.js +2 -46
  21. package/dist/adapter/types.d.ts +0 -1
  22. package/dist/adapter/types.js +2 -443
  23. package/dist/adapters/cc-switch/common.d.ts +0 -1
  24. package/dist/adapters/cc-switch/common.js +2 -61
  25. package/dist/adapters/cc-switch/index.d.ts +0 -1
  26. package/dist/adapters/cc-switch/index.js +2 -57
  27. package/dist/adapters/cc-switch/mcp-acode.d.ts +0 -1
  28. package/dist/adapters/cc-switch/mcp-acode.js +2 -71
  29. package/dist/adapters/cc-switch/mcp-claude.d.ts +0 -1
  30. package/dist/adapters/cc-switch/mcp-claude.js +2 -89
  31. package/dist/adapters/cc-switch/mcp-claudecode.d.ts +0 -1
  32. package/dist/adapters/cc-switch/mcp-claudecode.js +2 -77
  33. package/dist/adapters/cc-switch/mcp-codex.d.ts +0 -1
  34. package/dist/adapters/cc-switch/mcp-codex.js +11 -249
  35. package/dist/adapters/cc-switch/mcp-opencode.d.ts +0 -1
  36. package/dist/adapters/cc-switch/mcp-opencode.js +2 -97
  37. package/dist/adapters/cc-switch/mcp-placeholder.d.ts +0 -1
  38. package/dist/adapters/cc-switch/mcp-placeholder.js +2 -19
  39. package/dist/adapters/cc-switch/skill-acode.d.ts +0 -1
  40. package/dist/adapters/cc-switch/skill-acode.js +2 -12
  41. package/dist/adapters/cc-switch/skill-claude.d.ts +0 -1
  42. package/dist/adapters/cc-switch/skill-claude.js +2 -11
  43. package/dist/adapters/cc-switch/skill-claudecode.d.ts +0 -1
  44. package/dist/adapters/cc-switch/skill-claudecode.js +2 -11
  45. package/dist/adapters/cc-switch/skill-codex.d.ts +0 -1
  46. package/dist/adapters/cc-switch/skill-codex.js +2 -6
  47. package/dist/adapters/cc-switch/skill-directory.d.ts +0 -1
  48. package/dist/adapters/cc-switch/skill-directory.js +3 -137
  49. package/dist/adapters/cc-switch/skill-opencode.d.ts +0 -1
  50. package/dist/adapters/cc-switch/skill-opencode.js +2 -11
  51. package/dist/adapters/cc-switch/skill-placeholder.d.ts +0 -1
  52. package/dist/adapters/cc-switch/skill-placeholder.js +2 -19
  53. package/dist/config.d.ts +0 -1
  54. package/dist/config.js +2 -290
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.js +2 -573
  57. package/dist/middleware/auth.d.ts +0 -1
  58. package/dist/middleware/auth.js +2 -98
  59. package/dist/routes/acode-todos.d.ts +0 -1
  60. package/dist/routes/acode-todos.js +2 -75
  61. package/dist/routes/ai-sources.d.ts +0 -1
  62. package/dist/routes/ai-sources.js +2 -132
  63. package/dist/routes/dashboard.d.ts +0 -1
  64. package/dist/routes/dashboard.js +182 -649
  65. package/dist/routes/events.d.ts +0 -1
  66. package/dist/routes/events.js +2 -22
  67. package/dist/routes/file-browser.d.ts +0 -1
  68. package/dist/routes/file-browser.js +2 -781
  69. package/dist/routes/file-diff-rollback.d.ts +0 -1
  70. package/dist/routes/file-diff-rollback.js +2 -301
  71. package/dist/routes/file-snapshot.d.ts +0 -1
  72. package/dist/routes/file-snapshot.js +2 -156
  73. package/dist/routes/git.d.ts +0 -1
  74. package/dist/routes/git.js +28 -1900
  75. package/dist/routes/instance.d.ts +0 -1
  76. package/dist/routes/instance.js +3 -748
  77. package/dist/routes/mcp.d.ts +0 -1
  78. package/dist/routes/mcp.js +2 -196
  79. package/dist/routes/processes.d.ts +0 -1
  80. package/dist/routes/processes.js +2 -252
  81. package/dist/routes/properties.d.ts +0 -1
  82. package/dist/routes/properties.js +2 -72
  83. package/dist/routes/pty.d.ts +0 -1
  84. package/dist/routes/pty.js +6 -560
  85. package/dist/routes/runtime-binding.d.ts +0 -1
  86. package/dist/routes/runtime-binding.js +2 -263
  87. package/dist/routes/sessions.d.ts +0 -1
  88. package/dist/routes/sessions.js +2 -758
  89. package/dist/routes/skills.d.ts +0 -1
  90. package/dist/routes/skills.js +2 -187
  91. package/dist/routes/sub-agents.d.ts +0 -1
  92. package/dist/routes/sub-agents.js +20 -279
  93. package/dist/routes/system-metrics.d.ts +0 -1
  94. package/dist/routes/system-metrics.js +2 -20
  95. package/dist/routes/task-context.d.ts +0 -1
  96. package/dist/routes/task-context.js +2 -78
  97. package/dist/routes/terminal.d.ts +0 -1
  98. package/dist/routes/terminal.js +54 -2882
  99. package/dist/routes/yml.d.ts +0 -1
  100. package/dist/routes/yml.js +2 -223
  101. package/dist/services/acode-package.d.ts +0 -1
  102. package/dist/services/acode-package.js +2 -111
  103. package/dist/services/agent-event-store.d.ts +0 -1
  104. package/dist/services/agent-event-store.js +2 -81
  105. package/dist/services/agent-process-manager.d.ts +0 -1
  106. package/dist/services/agent-process-manager.js +2 -796
  107. package/dist/services/ai-source-apply.d.ts +0 -1
  108. package/dist/services/ai-source-apply.js +2 -83
  109. package/dist/services/auto-register.d.ts +5 -1
  110. package/dist/services/auto-register.js +2 -1053
  111. package/dist/services/aws-client-agent-mcp.d.ts +0 -1
  112. package/dist/services/aws-client-agent-mcp.js +3 -337
  113. package/dist/services/bridge-package-publish-hooks.d.ts +0 -1
  114. package/dist/services/bridge-package-publish-hooks.js +2 -115
  115. package/dist/services/cc-switch-sdk.d.ts +0 -1
  116. package/dist/services/cc-switch-sdk.js +2 -135
  117. package/dist/services/cli-commands.d.ts +6 -1
  118. package/dist/services/cli-commands.js +6 -645
  119. package/dist/services/event-delta-pusher.d.ts +0 -1
  120. package/dist/services/event-delta-pusher.js +2 -95
  121. package/dist/services/fileSnapshotStore.d.ts +0 -1
  122. package/dist/services/fileSnapshotStore.js +2 -500
  123. package/dist/services/instance-ai-config-service.d.ts +0 -1
  124. package/dist/services/instance-ai-config-service.js +2 -174
  125. package/dist/services/instance-init-service.d.ts +0 -1
  126. package/dist/services/instance-init-service.js +2 -193
  127. package/dist/services/instance-service.d.ts +0 -1
  128. package/dist/services/instance-service.js +2 -237
  129. package/dist/services/instance-state.d.ts +0 -1
  130. package/dist/services/instance-state.js +2 -94
  131. package/dist/services/legacy-path-migration.d.ts +0 -1
  132. package/dist/services/legacy-path-migration.js +2 -66
  133. package/dist/services/lifecycle-state.d.ts +0 -1
  134. package/dist/services/lifecycle-state.js +3 -110
  135. package/dist/services/mcp-launch-binding-queue.d.ts +0 -1
  136. package/dist/services/mcp-launch-binding-queue.js +2 -175
  137. package/dist/services/orphan-monitor.d.ts +0 -1
  138. package/dist/services/orphan-monitor.js +2 -382
  139. package/dist/services/panel-auth.d.ts +0 -1
  140. package/dist/services/panel-auth.js +2 -168
  141. package/dist/services/process-detector.d.ts +0 -1
  142. package/dist/services/process-detector.js +18 -1019
  143. package/dist/services/process-registry.d.ts +0 -1
  144. package/dist/services/process-registry.js +2 -375
  145. package/dist/services/ring-buffer.d.ts +0 -1
  146. package/dist/services/ring-buffer.js +2 -103
  147. package/dist/services/runtime-binding.d.ts +0 -1
  148. package/dist/services/runtime-binding.js +6 -363
  149. package/dist/services/runtime-lifecycle-policy.d.ts +0 -1
  150. package/dist/services/runtime-lifecycle-policy.js +2 -35
  151. package/dist/services/session-output.d.ts +0 -1
  152. package/dist/services/session-output.js +5 -539
  153. package/dist/services/startup-config-wizard.d.ts +0 -1
  154. package/dist/services/startup-config-wizard.js +14 -258
  155. package/dist/services/sub-agent-manager-instance.d.ts +0 -1
  156. package/dist/services/sub-agent-manager-instance.js +2 -12
  157. package/dist/services/system-metrics.d.ts +0 -1
  158. package/dist/services/system-metrics.js +2 -252
  159. package/dist/services/terminal-persistence.d.ts +0 -1
  160. package/dist/services/terminal-persistence.js +2 -176
  161. package/dist/services/tool-installer.d.ts +0 -1
  162. package/dist/services/tool-installer.js +5 -751
  163. package/dist/services/tunnel-client.d.ts +0 -1
  164. package/dist/services/tunnel-client.js +2 -402
  165. package/dist/services/windows-service-manager.d.ts +3 -3
  166. package/dist/services/windows-service-manager.js +2 -59
  167. package/dist/services/workspace-files.d.ts +0 -1
  168. package/dist/services/workspace-files.js +2 -1275
  169. package/dist/services/workspace-watch.d.ts +0 -1
  170. package/dist/services/workspace-watch.js +2 -123
  171. package/dist/services/workspaceTaskChangeWatcher.d.ts +0 -1
  172. package/dist/services/workspaceTaskChangeWatcher.js +2 -483
  173. package/dist/types.d.ts +0 -1
  174. package/dist/types.js +1 -1
  175. package/dist/utils/file-utils.d.ts +0 -1
  176. package/dist/utils/file-utils.js +3 -208
  177. package/dist/utils/instance-ai-config-debug-logger.d.ts +0 -1
  178. package/dist/utils/instance-ai-config-debug-logger.js +4 -63
  179. package/dist/utils/logger.d.ts +0 -1
  180. package/dist/utils/logger.js +2 -154
  181. package/dist/utils/mcp-utils.d.ts +0 -1
  182. package/dist/utils/mcp-utils.js +2 -187
  183. package/dist/utils/path-utils.d.ts +0 -1
  184. package/dist/utils/path-utils.js +2 -44
  185. package/dist/utils/sdk-package-loader.d.ts +0 -1
  186. package/dist/utils/sdk-package-loader.js +2 -78
  187. package/dist/utils/validation.d.ts +0 -1
  188. package/dist/utils/validation.js +2 -53
  189. package/dist/utils/yaml-utils.d.ts +0 -1
  190. package/dist/utils/yaml-utils.js +2 -312
  191. package/node_modules/@cc-switch/sdk/dist/constants.d.ts +0 -1
  192. package/node_modules/@cc-switch/sdk/dist/constants.js +2 -63
  193. package/node_modules/@cc-switch/sdk/dist/errors.d.ts +0 -1
  194. package/node_modules/@cc-switch/sdk/dist/errors.js +2 -8
  195. package/node_modules/@cc-switch/sdk/dist/index.d.ts +0 -1
  196. package/node_modules/@cc-switch/sdk/dist/index.js +2 -9
  197. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts +0 -1
  198. package/node_modules/@cc-switch/sdk/dist/schemas.js +2 -38
  199. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +0 -1
  200. package/node_modules/@cc-switch/sdk/dist/sdk.js +2 -470
  201. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts +0 -1
  202. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.js +4 -307
  203. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts +0 -1
  204. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.js +2 -37
  205. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts +0 -1
  206. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.js +2 -9
  207. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts +0 -1
  208. package/node_modules/@cc-switch/sdk/dist/services/skill-model.js +2 -41
  209. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts +0 -1
  210. package/node_modules/@cc-switch/sdk/dist/services/skill-service.js +2 -9
  211. package/node_modules/@cc-switch/sdk/dist/state.d.ts +0 -1
  212. package/node_modules/@cc-switch/sdk/dist/state.js +2 -19
  213. package/node_modules/@cc-switch/sdk/dist/types.d.ts +0 -1
  214. package/node_modules/@cc-switch/sdk/dist/types.js +1 -1
  215. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts +0 -1
  216. package/node_modules/@cc-switch/sdk/dist/utils/fs.js +3 -114
  217. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts +0 -1
  218. package/node_modules/@cc-switch/sdk/dist/utils/id.js +2 -12
  219. package/node_modules/@cc-switch/sdk/package.json +1 -1
  220. package/package/acode/dist/ask-user-question-tool.d.ts +0 -1
  221. package/package/acode/dist/ask-user-question-tool.js +4 -233
  222. package/package/acode/dist/built-in-file-tools.d.ts +0 -1
  223. package/package/acode/dist/built-in-file-tools.js +4 -966
  224. package/package/acode/dist/built-in-symbols-tool.d.ts +0 -1
  225. package/package/acode/dist/built-in-symbols-tool.js +2 -117
  226. package/package/acode/dist/builtins/commandArtifacts.d.ts +0 -1
  227. package/package/acode/dist/builtins/commandArtifacts.js +9 -97
  228. package/package/acode/dist/builtins/commandOutputEvents.d.ts +0 -1
  229. package/package/acode/dist/builtins/commandOutputEvents.js +2 -56
  230. package/package/acode/dist/builtins/shellCommandPreparation.d.ts +0 -1
  231. package/package/acode/dist/builtins/shellCommandPreparation.js +5 -44
  232. package/package/acode/dist/builtins/shellCommandResult.d.ts +0 -1
  233. package/package/acode/dist/builtins/shellCommandResult.js +2 -71
  234. package/package/acode/dist/builtins/shellCommandRunner.d.ts +0 -1
  235. package/package/acode/dist/builtins/shellCommandRunner.js +2 -115
  236. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +0 -1
  237. package/package/acode/dist/builtins/shellOutputDecoder.js +2 -94
  238. package/package/acode/dist/cli.d.ts +0 -1
  239. package/package/acode/dist/cli.js +4 -38
  240. package/package/acode/dist/commands/commandLoader.d.ts +0 -1
  241. package/package/acode/dist/commands/commandLoader.js +2 -33
  242. package/package/acode/dist/commands/commandParser.d.ts +0 -1
  243. package/package/acode/dist/commands/commandParser.js +3 -77
  244. package/package/acode/dist/commands/commandRegistry.d.ts +0 -1
  245. package/package/acode/dist/commands/commandRegistry.js +2 -30
  246. package/package/acode/dist/compaction.d.ts +0 -1
  247. package/package/acode/dist/compaction.js +7 -919
  248. package/package/acode/dist/config.d.ts +0 -1
  249. package/package/acode/dist/config.js +5 -105
  250. package/package/acode/dist/fs-utils.d.ts +0 -1
  251. package/package/acode/dist/fs-utils.js +2 -79
  252. package/package/acode/dist/hooks/hookBus.d.ts +0 -1
  253. package/package/acode/dist/hooks/hookBus.js +2 -40
  254. package/package/acode/dist/index.d.ts +0 -1
  255. package/package/acode/dist/index.js +2 -19
  256. package/package/acode/dist/mcpToolNames.d.ts +0 -1
  257. package/package/acode/dist/mcpToolNames.js +2 -17
  258. package/package/acode/dist/parsers/ast-cache.d.ts +0 -1
  259. package/package/acode/dist/parsers/ast-cache.js +2 -76
  260. package/package/acode/dist/parsers/language-detector.d.ts +0 -1
  261. package/package/acode/dist/parsers/language-detector.js +2 -44
  262. package/package/acode/dist/parsers/language-queries.d.ts +0 -1
  263. package/package/acode/dist/parsers/language-queries.js +12 -602
  264. package/package/acode/dist/parsers/symbol-extractor.d.ts +0 -1
  265. package/package/acode/dist/parsers/symbol-extractor.js +3 -164
  266. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +0 -1
  267. package/package/acode/dist/parsers/tree-sitter-loader.js +2 -64
  268. package/package/acode/dist/parsers/types.d.ts +0 -1
  269. package/package/acode/dist/parsers/types.js +1 -7
  270. package/package/acode/dist/runtime.d.ts +0 -1
  271. package/package/acode/dist/runtime.js +86 -3771
  272. package/package/acode/dist/skill-tool.d.ts +0 -1
  273. package/package/acode/dist/skill-tool.js +5 -174
  274. package/package/acode/dist/sub-agent-manager.d.ts +0 -1
  275. package/package/acode/dist/sub-agent-manager.js +2 -1159
  276. package/package/acode/dist/sub-agent-store.d.ts +0 -1
  277. package/package/acode/dist/sub-agent-store.js +4 -236
  278. package/package/acode/dist/sub-agent-tools.d.ts +0 -1
  279. package/package/acode/dist/sub-agent-tools.js +15 -369
  280. package/package/acode/dist/sub-agent-types.d.ts +0 -1
  281. package/package/acode/dist/sub-agent-types.js +1 -8
  282. package/package/acode/dist/todo-store.d.ts +0 -1
  283. package/package/acode/dist/todo-store.js +2 -73
  284. package/package/acode/dist/todo-tool.d.ts +0 -1
  285. package/package/acode/dist/todo-tool.js +5 -121
  286. package/package/acode/dist/types.d.ts +0 -1
  287. package/package/acode/dist/types.js +1 -1
  288. package/package/acode/package.json +2 -2
  289. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +0 -1
  290. package/package/aws-client-agent-mcp/dist/agent-client.js +2 -890
  291. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +0 -1
  292. package/package/aws-client-agent-mcp/dist/agent-client.test.js +0 -1
  293. package/package/aws-client-agent-mcp/dist/config.d.ts +0 -1
  294. package/package/aws-client-agent-mcp/dist/config.js +2 -243
  295. package/package/aws-client-agent-mcp/dist/config.test.d.ts +0 -1
  296. package/package/aws-client-agent-mcp/dist/config.test.js +0 -1
  297. package/package/aws-client-agent-mcp/dist/constants.d.ts +0 -1
  298. package/package/aws-client-agent-mcp/dist/constants.js +2 -24
  299. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +0 -1
  300. package/package/aws-client-agent-mcp/dist/context-manager.js +2 -477
  301. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +0 -1
  302. package/package/aws-client-agent-mcp/dist/context-manager.test.js +0 -1
  303. package/package/aws-client-agent-mcp/dist/http-client.d.ts +0 -1
  304. package/package/aws-client-agent-mcp/dist/http-client.js +2 -446
  305. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +0 -1
  306. package/package/aws-client-agent-mcp/dist/http-client.test.js +0 -1
  307. package/package/aws-client-agent-mcp/dist/index.d.ts +0 -1
  308. package/package/aws-client-agent-mcp/dist/index.js +2 -34
  309. package/package/aws-client-agent-mcp/dist/logger.d.ts +0 -1
  310. package/package/aws-client-agent-mcp/dist/logger.js +3 -178
  311. package/package/aws-client-agent-mcp/dist/logger.test.d.ts +0 -1
  312. package/package/aws-client-agent-mcp/dist/logger.test.js +0 -1
  313. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +0 -1
  314. package/package/aws-client-agent-mcp/dist/mcp-server.js +38 -2709
  315. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +0 -1
  316. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +0 -1
  317. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +0 -1
  318. package/package/aws-client-agent-mcp/dist/mcp-tools.js +22 -562
  319. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts +0 -1
  320. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +0 -1
  321. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +0 -1
  322. package/package/aws-client-agent-mcp/dist/memory-store.js +4 -826
  323. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +0 -1
  324. package/package/aws-client-agent-mcp/dist/memory-store.test.js +0 -1
  325. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +0 -1
  326. package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -294
  327. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +0 -1
  328. package/package/aws-client-agent-mcp/dist/message-buffer.js +2 -288
  329. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +0 -1
  330. package/package/aws-client-agent-mcp/dist/message-buffer.test.js +0 -1
  331. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +0 -1
  332. package/package/aws-client-agent-mcp/dist/messageContent.js +2 -125
  333. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +0 -1
  334. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +2 -103
  335. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts +0 -1
  336. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +0 -1
  337. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +0 -1
  338. package/package/aws-client-agent-mcp/dist/server-memory-store.js +2 -96
  339. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +0 -1
  340. package/package/aws-client-agent-mcp/dist/status-reporter.js +3 -327
  341. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +0 -1
  342. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +0 -1
  343. package/package/aws-client-agent-mcp/dist/types.d.ts +0 -1
  344. package/package/aws-client-agent-mcp/dist/types.js +2 -9
  345. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +0 -1
  346. package/package/aws-client-agent-mcp/dist/websocket-client.js +2 -677
  347. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +0 -1
  348. package/package/aws-client-agent-mcp/dist/websocket-client.test.js +0 -1
  349. package/package/aws-client-agent-mcp/package.json +1 -1
  350. package/package/cc-switch-sdk/dist/constants.d.ts +0 -1
  351. package/package/cc-switch-sdk/dist/constants.js +2 -63
  352. package/package/cc-switch-sdk/dist/errors.d.ts +0 -1
  353. package/package/cc-switch-sdk/dist/errors.js +2 -8
  354. package/package/cc-switch-sdk/dist/index.d.ts +0 -1
  355. package/package/cc-switch-sdk/dist/index.js +2 -9
  356. package/package/cc-switch-sdk/dist/schemas.d.ts +0 -1
  357. package/package/cc-switch-sdk/dist/schemas.js +2 -38
  358. package/package/cc-switch-sdk/dist/sdk.d.ts +0 -1
  359. package/package/cc-switch-sdk/dist/sdk.js +2 -470
  360. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts +0 -1
  361. package/package/cc-switch-sdk/dist/services/ai-config-service.js +4 -307
  362. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts +0 -1
  363. package/package/cc-switch-sdk/dist/services/mcp-model.js +2 -37
  364. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts +0 -1
  365. package/package/cc-switch-sdk/dist/services/mcp-service.js +2 -9
  366. package/package/cc-switch-sdk/dist/services/skill-model.d.ts +0 -1
  367. package/package/cc-switch-sdk/dist/services/skill-model.js +2 -41
  368. package/package/cc-switch-sdk/dist/services/skill-service.d.ts +0 -1
  369. package/package/cc-switch-sdk/dist/services/skill-service.js +2 -9
  370. package/package/cc-switch-sdk/dist/state.d.ts +0 -1
  371. package/package/cc-switch-sdk/dist/state.js +2 -19
  372. package/package/cc-switch-sdk/dist/types.d.ts +0 -1
  373. package/package/cc-switch-sdk/dist/types.js +1 -1
  374. package/package/cc-switch-sdk/dist/utils/fs.d.ts +0 -1
  375. package/package/cc-switch-sdk/dist/utils/fs.js +3 -114
  376. package/package/cc-switch-sdk/dist/utils/id.d.ts +0 -1
  377. package/package/cc-switch-sdk/dist/utils/id.js +2 -12
  378. package/package/cc-switch-sdk/package.json +1 -1
  379. package/package.json +4 -2
  380. package/dist/adapter/AcodeSdkAdapter.d.ts.map +0 -1
  381. package/dist/adapter/AdapterRegistry.d.ts.map +0 -1
  382. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +0 -1
  383. package/dist/adapter/CodexSdkAdapter.d.ts.map +0 -1
  384. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +0 -1
  385. package/dist/adapter/SdkProviderSpi.d.ts.map +0 -1
  386. package/dist/adapter/acode-tool-names.d.ts.map +0 -1
  387. package/dist/adapter/idle-poll-loop.d.ts.map +0 -1
  388. package/dist/adapter/index.d.ts.map +0 -1
  389. package/dist/adapter/instance-ai-config-resolver.d.ts.map +0 -1
  390. package/dist/adapter/types.d.ts.map +0 -1
  391. package/dist/adapters/cc-switch/common.d.ts.map +0 -1
  392. package/dist/adapters/cc-switch/index.d.ts.map +0 -1
  393. package/dist/adapters/cc-switch/mcp-acode.d.ts.map +0 -1
  394. package/dist/adapters/cc-switch/mcp-claude.d.ts.map +0 -1
  395. package/dist/adapters/cc-switch/mcp-claudecode.d.ts.map +0 -1
  396. package/dist/adapters/cc-switch/mcp-codex.d.ts.map +0 -1
  397. package/dist/adapters/cc-switch/mcp-opencode.d.ts.map +0 -1
  398. package/dist/adapters/cc-switch/mcp-placeholder.d.ts.map +0 -1
  399. package/dist/adapters/cc-switch/skill-acode.d.ts.map +0 -1
  400. package/dist/adapters/cc-switch/skill-claude.d.ts.map +0 -1
  401. package/dist/adapters/cc-switch/skill-claudecode.d.ts.map +0 -1
  402. package/dist/adapters/cc-switch/skill-codex.d.ts.map +0 -1
  403. package/dist/adapters/cc-switch/skill-directory.d.ts.map +0 -1
  404. package/dist/adapters/cc-switch/skill-opencode.d.ts.map +0 -1
  405. package/dist/adapters/cc-switch/skill-placeholder.d.ts.map +0 -1
  406. package/dist/config.d.ts.map +0 -1
  407. package/dist/index.d.ts.map +0 -1
  408. package/dist/middleware/auth.d.ts.map +0 -1
  409. package/dist/routes/acode-todos.d.ts.map +0 -1
  410. package/dist/routes/ai-sources.d.ts.map +0 -1
  411. package/dist/routes/dashboard.d.ts.map +0 -1
  412. package/dist/routes/events.d.ts.map +0 -1
  413. package/dist/routes/file-browser.d.ts.map +0 -1
  414. package/dist/routes/file-diff-rollback.d.ts.map +0 -1
  415. package/dist/routes/file-snapshot.d.ts.map +0 -1
  416. package/dist/routes/git.d.ts.map +0 -1
  417. package/dist/routes/instance.d.ts.map +0 -1
  418. package/dist/routes/mcp.d.ts.map +0 -1
  419. package/dist/routes/processes.d.ts.map +0 -1
  420. package/dist/routes/properties.d.ts.map +0 -1
  421. package/dist/routes/pty.d.ts.map +0 -1
  422. package/dist/routes/runtime-binding.d.ts.map +0 -1
  423. package/dist/routes/sessions.d.ts.map +0 -1
  424. package/dist/routes/skills.d.ts.map +0 -1
  425. package/dist/routes/sub-agents.d.ts.map +0 -1
  426. package/dist/routes/system-metrics.d.ts.map +0 -1
  427. package/dist/routes/task-context.d.ts.map +0 -1
  428. package/dist/routes/terminal.d.ts.map +0 -1
  429. package/dist/routes/yml.d.ts.map +0 -1
  430. package/dist/services/acode-package.d.ts.map +0 -1
  431. package/dist/services/agent-event-store.d.ts.map +0 -1
  432. package/dist/services/agent-process-manager.d.ts.map +0 -1
  433. package/dist/services/ai-source-apply.d.ts.map +0 -1
  434. package/dist/services/auto-register.d.ts.map +0 -1
  435. package/dist/services/aws-client-agent-mcp.d.ts.map +0 -1
  436. package/dist/services/bridge-package-publish-hooks.d.ts.map +0 -1
  437. package/dist/services/cc-switch-sdk.d.ts.map +0 -1
  438. package/dist/services/cli-commands.d.ts.map +0 -1
  439. package/dist/services/event-delta-pusher.d.ts.map +0 -1
  440. package/dist/services/fileSnapshotStore.d.ts.map +0 -1
  441. package/dist/services/instance-ai-config-service.d.ts.map +0 -1
  442. package/dist/services/instance-init-service.d.ts.map +0 -1
  443. package/dist/services/instance-service.d.ts.map +0 -1
  444. package/dist/services/instance-state.d.ts.map +0 -1
  445. package/dist/services/legacy-path-migration.d.ts.map +0 -1
  446. package/dist/services/lifecycle-state.d.ts.map +0 -1
  447. package/dist/services/mcp-launch-binding-queue.d.ts.map +0 -1
  448. package/dist/services/orphan-monitor.d.ts.map +0 -1
  449. package/dist/services/panel-auth.d.ts.map +0 -1
  450. package/dist/services/process-detector.d.ts.map +0 -1
  451. package/dist/services/process-registry.d.ts.map +0 -1
  452. package/dist/services/ring-buffer.d.ts.map +0 -1
  453. package/dist/services/runtime-binding.d.ts.map +0 -1
  454. package/dist/services/runtime-lifecycle-policy.d.ts.map +0 -1
  455. package/dist/services/session-output.d.ts.map +0 -1
  456. package/dist/services/startup-config-wizard.d.ts.map +0 -1
  457. package/dist/services/sub-agent-manager-instance.d.ts.map +0 -1
  458. package/dist/services/system-metrics.d.ts.map +0 -1
  459. package/dist/services/terminal-persistence.d.ts.map +0 -1
  460. package/dist/services/tool-installer.d.ts.map +0 -1
  461. package/dist/services/tunnel-client.d.ts.map +0 -1
  462. package/dist/services/windows-service-manager.d.ts.map +0 -1
  463. package/dist/services/workspace-files.d.ts.map +0 -1
  464. package/dist/services/workspace-watch.d.ts.map +0 -1
  465. package/dist/services/workspaceTaskChangeWatcher.d.ts.map +0 -1
  466. package/dist/types.d.ts.map +0 -1
  467. package/dist/utils/file-utils.d.ts.map +0 -1
  468. package/dist/utils/instance-ai-config-debug-logger.d.ts.map +0 -1
  469. package/dist/utils/logger.d.ts.map +0 -1
  470. package/dist/utils/mcp-utils.d.ts.map +0 -1
  471. package/dist/utils/path-utils.d.ts.map +0 -1
  472. package/dist/utils/sdk-package-loader.d.ts.map +0 -1
  473. package/dist/utils/validation.d.ts.map +0 -1
  474. package/dist/utils/yaml-utils.d.ts.map +0 -1
  475. package/node_modules/@cc-switch/sdk/dist/constants.d.ts.map +0 -1
  476. package/node_modules/@cc-switch/sdk/dist/errors.d.ts.map +0 -1
  477. package/node_modules/@cc-switch/sdk/dist/index.d.ts.map +0 -1
  478. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts.map +0 -1
  479. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts.map +0 -1
  480. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts.map +0 -1
  481. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts.map +0 -1
  482. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts.map +0 -1
  483. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts.map +0 -1
  484. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts.map +0 -1
  485. package/node_modules/@cc-switch/sdk/dist/state.d.ts.map +0 -1
  486. package/node_modules/@cc-switch/sdk/dist/types.d.ts.map +0 -1
  487. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts.map +0 -1
  488. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts.map +0 -1
  489. package/package/acode/dist/ask-user-question-tool.d.ts.map +0 -1
  490. package/package/acode/dist/built-in-file-tools.d.ts.map +0 -1
  491. package/package/acode/dist/built-in-symbols-tool.d.ts.map +0 -1
  492. package/package/acode/dist/builtins/commandArtifacts.d.ts.map +0 -1
  493. package/package/acode/dist/builtins/commandOutputEvents.d.ts.map +0 -1
  494. package/package/acode/dist/builtins/shellCommandPreparation.d.ts.map +0 -1
  495. package/package/acode/dist/builtins/shellCommandResult.d.ts.map +0 -1
  496. package/package/acode/dist/builtins/shellCommandRunner.d.ts.map +0 -1
  497. package/package/acode/dist/builtins/shellOutputDecoder.d.ts.map +0 -1
  498. package/package/acode/dist/cli.d.ts.map +0 -1
  499. package/package/acode/dist/commands/commandLoader.d.ts.map +0 -1
  500. package/package/acode/dist/commands/commandParser.d.ts.map +0 -1
  501. package/package/acode/dist/commands/commandRegistry.d.ts.map +0 -1
  502. package/package/acode/dist/compaction.d.ts.map +0 -1
  503. package/package/acode/dist/config.d.ts.map +0 -1
  504. package/package/acode/dist/fs-utils.d.ts.map +0 -1
  505. package/package/acode/dist/hooks/hookBus.d.ts.map +0 -1
  506. package/package/acode/dist/index.d.ts.map +0 -1
  507. package/package/acode/dist/mcpToolNames.d.ts.map +0 -1
  508. package/package/acode/dist/parsers/ast-cache.d.ts.map +0 -1
  509. package/package/acode/dist/parsers/language-detector.d.ts.map +0 -1
  510. package/package/acode/dist/parsers/language-queries.d.ts.map +0 -1
  511. package/package/acode/dist/parsers/symbol-extractor.d.ts.map +0 -1
  512. package/package/acode/dist/parsers/tree-sitter-loader.d.ts.map +0 -1
  513. package/package/acode/dist/parsers/types.d.ts.map +0 -1
  514. package/package/acode/dist/runtime.d.ts.map +0 -1
  515. package/package/acode/dist/skill-tool.d.ts.map +0 -1
  516. package/package/acode/dist/sub-agent-manager.d.ts.map +0 -1
  517. package/package/acode/dist/sub-agent-store.d.ts.map +0 -1
  518. package/package/acode/dist/sub-agent-tools.d.ts.map +0 -1
  519. package/package/acode/dist/sub-agent-types.d.ts.map +0 -1
  520. package/package/acode/dist/todo-store.d.ts.map +0 -1
  521. package/package/acode/dist/todo-tool.d.ts.map +0 -1
  522. package/package/acode/dist/types.d.ts.map +0 -1
  523. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +0 -1
  524. package/package/aws-client-agent-mcp/dist/agent-client.js.map +0 -1
  525. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +0 -1
  526. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +0 -1
  527. package/package/aws-client-agent-mcp/dist/config.d.ts.map +0 -1
  528. package/package/aws-client-agent-mcp/dist/config.js.map +0 -1
  529. package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +0 -1
  530. package/package/aws-client-agent-mcp/dist/config.test.js.map +0 -1
  531. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +0 -1
  532. package/package/aws-client-agent-mcp/dist/constants.js.map +0 -1
  533. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +0 -1
  534. package/package/aws-client-agent-mcp/dist/context-manager.js.map +0 -1
  535. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts.map +0 -1
  536. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +0 -1
  537. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +0 -1
  538. package/package/aws-client-agent-mcp/dist/http-client.js.map +0 -1
  539. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +0 -1
  540. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +0 -1
  541. package/package/aws-client-agent-mcp/dist/index.d.ts.map +0 -1
  542. package/package/aws-client-agent-mcp/dist/index.js.map +0 -1
  543. package/package/aws-client-agent-mcp/dist/logger.d.ts.map +0 -1
  544. package/package/aws-client-agent-mcp/dist/logger.js.map +0 -1
  545. package/package/aws-client-agent-mcp/dist/logger.test.d.ts.map +0 -1
  546. package/package/aws-client-agent-mcp/dist/logger.test.js.map +0 -1
  547. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +0 -1
  548. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +0 -1
  549. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +0 -1
  550. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +0 -1
  551. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +0 -1
  552. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +0 -1
  553. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts.map +0 -1
  554. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js.map +0 -1
  555. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +0 -1
  556. package/package/aws-client-agent-mcp/dist/memory-store.js.map +0 -1
  557. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +0 -1
  558. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +0 -1
  559. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +0 -1
  560. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +0 -1
  561. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +0 -1
  562. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +0 -1
  563. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +0 -1
  564. package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +0 -1
  565. package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +0 -1
  566. package/package/aws-client-agent-mcp/dist/messageContent.js.map +0 -1
  567. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +0 -1
  568. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +0 -1
  569. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts.map +0 -1
  570. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js.map +0 -1
  571. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +0 -1
  572. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +0 -1
  573. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +0 -1
  574. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +0 -1
  575. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +0 -1
  576. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +0 -1
  577. package/package/aws-client-agent-mcp/dist/types.d.ts.map +0 -1
  578. package/package/aws-client-agent-mcp/dist/types.js.map +0 -1
  579. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +0 -1
  580. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +0 -1
  581. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +0 -1
  582. package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +0 -1
  583. package/package/cc-switch-sdk/dist/constants.d.ts.map +0 -1
  584. package/package/cc-switch-sdk/dist/errors.d.ts.map +0 -1
  585. package/package/cc-switch-sdk/dist/index.d.ts.map +0 -1
  586. package/package/cc-switch-sdk/dist/schemas.d.ts.map +0 -1
  587. package/package/cc-switch-sdk/dist/sdk.d.ts.map +0 -1
  588. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts.map +0 -1
  589. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts.map +0 -1
  590. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts.map +0 -1
  591. package/package/cc-switch-sdk/dist/services/skill-model.d.ts.map +0 -1
  592. package/package/cc-switch-sdk/dist/services/skill-service.d.ts.map +0 -1
  593. package/package/cc-switch-sdk/dist/state.d.ts.map +0 -1
  594. package/package/cc-switch-sdk/dist/types.d.ts.map +0 -1
  595. package/package/cc-switch-sdk/dist/utils/fs.d.ts.map +0 -1
  596. package/package/cc-switch-sdk/dist/utils/id.d.ts.map +0 -1
@@ -37,4 +37,3 @@ export declare function stopHeartbeatScheduler(): void;
37
37
  * 返回所有 agent 的推送统计。
38
38
  */
39
39
  export declare function getAllPushStats(): PushStatEntry[];
40
- //# sourceMappingURL=event-delta-pusher.d.ts.map
@@ -1,95 +1,2 @@
1
- /**
2
- * 事件差量推送调度器
3
- *
4
- * 将 agent 事件缓冲区中的新事件差量推送到调度中心。
5
- * 提供全局心跳调度和推送统计查询。
6
- */
7
- import axios from "axios";
8
- import { resolveSchedulerBaseUrl, resolveSchedulerBaseUrlFrom } from "../config.js";
9
- import { agentEventStore } from "./agent-event-store.js";
10
- import { getRuntimeAccessToken } from "./runtime-binding.js";
11
- const pushStates = new Map();
12
- function runtimeAuthHeaders(authOptions, callbackBaseUrl) {
13
- const resolvedBaseUrl = callbackBaseUrl ?? resolveSchedulerBaseUrlFrom(authOptions?.schedulerBaseUrl).url;
14
- const token = authOptions?.runtimeAccessToken ||
15
- getRuntimeAccessToken(resolvedBaseUrl) ||
16
- getRuntimeAccessToken();
17
- return token ? { "X-Runtime-Token": token } : undefined;
18
- }
19
- // ── 差量推送 ─────────────────────────────────────────────
20
- /**
21
- * 调度一次差量推送:将 agent 的新事件推送到调度中心。
22
- * 暂以单次 push 模式实现,后续可按需改为批量/定时 flush。
23
- */
24
- export async function scheduleEventPush(agentId, _entry, authOptions) {
25
- // 事件传输由 sendStatus() / sendOutput() 中的 HTTP 回调直接完成(POST /api/runtime/callback/status|output),
26
- // 调度中心收到回调后持久化到 DB SSOT 并通过 WebSocket AGENT_EVENTS_DELTA 广播给前端。
27
- // 此函数仅用于记录推送统计,不做实际 HTTP 推送。
28
- // 桥接侧 ring buffer 作为本地事件备份,可用于调试面板和增量查询。
29
- const state = getOrCreatePushState(agentId);
30
- state.success++;
31
- state.consecutiveFailures = 0;
32
- }
33
- // ── 全局心跳 ─────────────────────────────────────────────
34
- let heartbeatTimer = null;
35
- const HEARTBEAT_INTERVAL_MS = 30_000;
36
- /**
37
- * 启动全局心跳调度器。
38
- * 每 30s 向调度中心发送空包,检测连接存活。
39
- */
40
- export function startHeartbeatScheduler() {
41
- if (heartbeatTimer)
42
- return;
43
- const baseUrl = resolveSchedulerBaseUrl().url;
44
- heartbeatTimer = setInterval(async () => {
45
- try {
46
- const headers = runtimeAuthHeaders();
47
- if (!headers)
48
- return;
49
- await axios.post(`${baseUrl}/api/runtime/callback/heartbeat`, { timestamp: Date.now() }, { headers, timeout: 5000 });
50
- }
51
- catch {
52
- // 心跳失败仅记录,不阻塞
53
- }
54
- }, HEARTBEAT_INTERVAL_MS);
55
- // 允许进程在 timer 存在时正常退出
56
- if (heartbeatTimer && typeof heartbeatTimer === "object" && "unref" in heartbeatTimer) {
57
- heartbeatTimer.unref();
58
- }
59
- }
60
- /**
61
- * 停止全局心跳调度器。
62
- */
63
- export function stopHeartbeatScheduler() {
64
- if (heartbeatTimer) {
65
- clearInterval(heartbeatTimer);
66
- heartbeatTimer = null;
67
- }
68
- }
69
- // ── 推送统计 ─────────────────────────────────────────────
70
- function getOrCreatePushState(agentId) {
71
- let state = pushStates.get(agentId);
72
- if (!state) {
73
- state = { success: 0, failure: 0, consecutiveFailures: 0 };
74
- pushStates.set(agentId, state);
75
- }
76
- return state;
77
- }
78
- /**
79
- * 返回所有 agent 的推送统计。
80
- */
81
- export function getAllPushStats() {
82
- const stats = [];
83
- for (const [agentId, state] of pushStates) {
84
- stats.push({
85
- agentId,
86
- pending: agentEventStore.size(agentId),
87
- success: state.success,
88
- failure: state.failure,
89
- consecutiveFailures: state.consecutiveFailures,
90
- lastLatencyMs: state.lastLatencyMs,
91
- lastError: state.lastError,
92
- });
93
- }
94
- return stats;
95
- }
1
+ import o from"axios";import{resolveSchedulerBaseUrl as u,resolveSchedulerBaseUrlFrom as i}from"../config.js";import{agentEventStore as l}from"./agent-event-store.js";import{getRuntimeAccessToken as c}from"./runtime-binding.js";const a=new Map;function f(t,e){const s=e??i(t?.schedulerBaseUrl).url,n=t?.runtimeAccessToken||c(s)||c();return n?{"X-Runtime-Token":n}:void 0}async function b(t,e,s){const n=p(t);n.success++,n.consecutiveFailures=0}let r=null;const m=3e4;function y(){if(r)return;const t=u().url;r=setInterval(async()=>{try{const e=f();if(!e)return;await o.post(`${t}/api/runtime/callback/heartbeat`,{timestamp:Date.now()},{headers:e,timeout:5e3})}catch{}},m),r&&typeof r=="object"&&"unref"in r&&r.unref()}function A(){r&&(clearInterval(r),r=null)}function p(t){let e=a.get(t);return e||(e={success:0,failure:0,consecutiveFailures:0},a.set(t,e)),e}function E(){const t=[];for(const[e,s]of a)t.push({agentId:e,pending:l.size(e),success:s.success,failure:s.failure,consecutiveFailures:s.consecutiveFailures,lastLatencyMs:s.lastLatencyMs,lastError:s.lastError});return t}export{E as getAllPushStats,b as scheduleEventPush,y as startHeartbeatScheduler,A as stopHeartbeatScheduler};
2
+
@@ -93,4 +93,3 @@ export declare function deleteSnapshot(snapshotKey: string): Promise<{
93
93
  * 获取快照根目录(供诊断/调试使用)
94
94
  */
95
95
  export declare function getSnapshotRootPath(): string;
96
- //# sourceMappingURL=fileSnapshotStore.d.ts.map
@@ -1,500 +1,2 @@
1
- /**
2
- * 文件快照存储服务
3
- *
4
- * 借鉴 Claude Code fileHistory 的确定性整文件覆盖方案,替代 git stash 实现稳定快照。
5
- * - 快照 = 工作区那一刻所有文件的内容哈希副本 + index.json 映射
6
- * - 还原 = "先清后写"整文件覆盖,零冲突,幂等
7
- * - 内容哈希去重:相同文件内容跨快照共享一份物理副本
8
- */
9
- import { createHash } from "node:crypto";
10
- import { promises as fs } from "node:fs";
11
- import path from "node:path";
12
- import { homedir } from "node:os";
13
- import { createLogger } from "../utils/logger.js";
14
- const log = createLogger("file-snapshot-store");
15
- // ── 常量 ──────────────────────────────────────────────────────
16
- /** 快照根目录,可通过环境变量覆盖 */
17
- function resolveSnapshotRoot() {
18
- const envRoot = String(process.env.AWS_RUNTIME_SNAPSHOT_ROOT || "").trim();
19
- if (envRoot)
20
- return envRoot;
21
- return path.join(homedir(), ".aws-bridge", "snapshots");
22
- }
23
- /** 快照操作超时(毫秒),默认 120s */
24
- function resolveSnapshotTimeoutMs() {
25
- const configured = Number(process.env.AWS_RUNTIME_SNAPSHOT_TIMEOUT_MS);
26
- if (Number.isFinite(configured) && configured >= 5_000)
27
- return configured;
28
- return 120_000;
29
- }
30
- /** 快照时排除的目录/文件名(精确匹配首层或任意层级) */
31
- const EXCLUDED_NAMES = new Set([
32
- ".git",
33
- "node_modules",
34
- ".agentswork-snapshots",
35
- "__pycache__",
36
- ".cache",
37
- ".next",
38
- "target",
39
- "dist",
40
- ".idea",
41
- ".vscode",
42
- ]);
43
- /** 单文件最大备份大小(默认 50MB),超过则跳过 */
44
- const MAX_FILE_SIZE = Number(process.env.AWS_RUNTIME_SNAPSHOT_MAX_FILE_SIZE || 50 * 1024 * 1024);
45
- /** 单快照最大文件数(防止超大工作区耗尽磁盘) */
46
- const MAX_FILE_COUNT = Number(process.env.AWS_RUNTIME_SNAPSHOT_MAX_FILES || 50_000);
47
- // ── 工具函数 ──────────────────────────────────────────────────
48
- function sha256Short(data) {
49
- return createHash("sha256").update(data).digest("hex").slice(0, 16);
50
- }
51
- function workspaceHash(workspacePath) {
52
- return sha256Short(path.resolve(workspacePath));
53
- }
54
- function snapshotDirFor(snapshotRoot, wsHash, snapshotId) {
55
- return path.join(snapshotRoot, wsHash, snapshotId);
56
- }
57
- /**
58
- * 判断路径是否应被排除。
59
- * 主流程:遍历路径段,命中 EXCLUDED_NAMES 则排除。
60
- */
61
- function isExcludedPath(relPath) {
62
- const parts = relPath.split(path.sep);
63
- return parts.some((segment) => EXCLUDED_NAMES.has(segment));
64
- }
65
- /**
66
- * 递归遍历工作区,收集所有普通文件的相对路径。
67
- * 遵守排除规则,不递归排除目录。
68
- */
69
- async function collectWorkspaceFiles(dirPath, basePath, result, fileCountLimit) {
70
- let entries;
71
- try {
72
- entries = await fs.readdir(dirPath, { withFileTypes: true });
73
- }
74
- catch (error) {
75
- const err = error;
76
- if (err.code === "ENOENT" || err.code === "EACCES")
77
- return;
78
- throw error;
79
- }
80
- for (const entry of entries) {
81
- if (result.length >= fileCountLimit) {
82
- log.warn(`[FileSnapshot] 文件数已达上限 ${fileCountLimit},停止遍历`);
83
- return;
84
- }
85
- if (EXCLUDED_NAMES.has(entry.name))
86
- continue;
87
- const fullPath = path.join(dirPath, entry.name);
88
- const relPath = path.relative(basePath, fullPath);
89
- if (entry.isDirectory()) {
90
- await collectWorkspaceFiles(fullPath, basePath, result, fileCountLimit);
91
- }
92
- else if (entry.isFile()) {
93
- result.push(relPath);
94
- }
95
- // 忽略符号链接和其他特殊文件
96
- }
97
- }
98
- /**
99
- * 安全删除文件,忽略 ENOENT
100
- */
101
- async function safeUnlink(filePath) {
102
- try {
103
- await fs.unlink(filePath);
104
- }
105
- catch (error) {
106
- const err = error;
107
- if (err.code !== "ENOENT")
108
- throw error;
109
- }
110
- }
111
- /**
112
- * 递归删除空目录
113
- */
114
- async function removeEmptyDirs(dirPath, basePath) {
115
- if (dirPath === basePath)
116
- return;
117
- try {
118
- const entries = await fs.readdir(dirPath);
119
- if (entries.length === 0) {
120
- await fs.rmdir(dirPath);
121
- // 尝试递归清理父目录
122
- await removeEmptyDirs(path.dirname(dirPath), basePath);
123
- }
124
- }
125
- catch {
126
- // 忽略
127
- }
128
- }
129
- // ── 核心 API ──────────────────────────────────────────────────
130
- /**
131
- * 创建工作区文件快照。
132
- *
133
- * 算法(借鉴 Claude Code fileHistoryMakeSnapshot):
134
- * 1. 遍历工作区收集所有文件
135
- * 2. 对每个文件计算内容哈希,拷贝到快照目录(去重)
136
- * 3. 写入 index.json 和 meta.json
137
- */
138
- export async function createSnapshot(params) {
139
- const startTime = Date.now();
140
- const snapshotRoot = resolveSnapshotRoot();
141
- const normalizedPath = path.resolve(String(params.workspacePath).trim());
142
- const wsHash = workspaceHash(normalizedPath);
143
- // 验证工作区存在
144
- try {
145
- const stat = await fs.stat(normalizedPath);
146
- if (!stat.isDirectory()) {
147
- return { ok: false, snapshotId: "", snapshotKey: "", fileCount: 0, totalBytes: 0, workspaceHash: wsHash, error: "workspace path is not a directory" };
148
- }
149
- }
150
- catch {
151
- return { ok: false, snapshotId: "", snapshotKey: "", fileCount: 0, totalBytes: 0, workspaceHash: wsHash, error: "workspace path does not exist" };
152
- }
153
- const snapshotId = params.snapshotId?.trim() || crypto.randomUUID();
154
- const snapshotName = params.snapshotName?.trim() || `snapshot-${new Date().toISOString()}`;
155
- const triggerType = params.triggerType?.trim() || "MANUAL";
156
- const snapshotKey = `${wsHash}/${snapshotId}`;
157
- const snapshotDir = snapshotDirFor(snapshotRoot, wsHash, snapshotId);
158
- const filesDir = path.join(snapshotDir, "files");
159
- try {
160
- // 创建目录
161
- await fs.mkdir(filesDir, { recursive: true });
162
- // 收集工作区文件
163
- const files = [];
164
- await collectWorkspaceFiles(normalizedPath, normalizedPath, files, MAX_FILE_COUNT);
165
- const index = {};
166
- let totalBytes = 0;
167
- let fileCount = 0;
168
- // 超时保护
169
- const timeoutMs = resolveSnapshotTimeoutMs();
170
- const deadline = Date.now() + timeoutMs;
171
- for (const relPath of files) {
172
- if (Date.now() > deadline) {
173
- log.warn(`[FileSnapshot] 快照超时 ${timeoutMs}ms,已备份 ${fileCount}/${files.length} 个文件`);
174
- break;
175
- }
176
- const fullPath = path.join(normalizedPath, relPath);
177
- try {
178
- const stat = await fs.stat(fullPath);
179
- if (!stat.isFile())
180
- continue;
181
- if (stat.size > MAX_FILE_SIZE) {
182
- log.warn(`[FileSnapshot] 跳过大文件: ${relPath} (${(stat.size / 1024 / 1024).toFixed(1)}MB)`);
183
- continue;
184
- }
185
- const content = await fs.readFile(fullPath);
186
- const contentHash = sha256Short(content);
187
- const backupPath = path.join(filesDir, contentHash);
188
- // 内容去重:只在物理文件不存在时拷贝
189
- try {
190
- await fs.access(backupPath);
191
- }
192
- catch {
193
- await fs.writeFile(backupPath, content);
194
- }
195
- index[relPath] = {
196
- backupName: contentHash,
197
- size: stat.size,
198
- mtime: stat.mtimeMs,
199
- mode: stat.mode,
200
- };
201
- totalBytes += stat.size;
202
- fileCount++;
203
- }
204
- catch (error) {
205
- const err = error;
206
- if (err.code === "ENOENT" || err.code === "EACCES") {
207
- log.warn(`[FileSnapshot] 跳过不可读文件: ${relPath}`);
208
- continue;
209
- }
210
- throw error;
211
- }
212
- }
213
- // 写入 index.json
214
- await fs.writeFile(path.join(snapshotDir, "index.json"), JSON.stringify(index, null, 2));
215
- // 写入 meta.json
216
- const meta = {
217
- snapshotId,
218
- workspacePath: normalizedPath,
219
- snapshotName,
220
- triggerType,
221
- createdAt: new Date().toISOString(),
222
- fileCount,
223
- totalBytes,
224
- workspaceHash: wsHash,
225
- };
226
- await fs.writeFile(path.join(snapshotDir, "meta.json"), JSON.stringify(meta, null, 2));
227
- const elapsed = Date.now() - startTime;
228
- log.info(`[FileSnapshot] 创建快照完成: ${snapshotKey}, ${fileCount} files, ${(totalBytes / 1024 / 1024).toFixed(1)}MB, ${elapsed}ms`);
229
- return { ok: true, snapshotId, snapshotKey, fileCount, totalBytes, workspaceHash: wsHash };
230
- }
231
- catch (error) {
232
- const err = error;
233
- log.error(`[FileSnapshot] 创建快照失败: ${err.message}`);
234
- // 清理部分写入的目录
235
- try {
236
- await fs.rm(snapshotDir, { recursive: true, force: true });
237
- }
238
- catch {
239
- // 忽略清理错误
240
- }
241
- return { ok: false, snapshotId, snapshotKey, fileCount: 0, totalBytes: 0, workspaceHash: wsHash, error: err.message };
242
- }
243
- }
244
- /**
245
- * 还原工作区到快照状态。
246
- *
247
- * 算法(借鉴 Claude Code applySnapshot):
248
- * 1. 可选:还原前自动创建安全网快照(preRestoreBackup)
249
- * 2. 读取目标快照 index.json
250
- * 3. 删除工作区中"快照后新增"的文件
251
- * 4. 从备份逐文件覆盖,内容相同则跳过
252
- */
253
- export async function restoreSnapshot(params) {
254
- const startTime = Date.now();
255
- const snapshotRoot = resolveSnapshotRoot();
256
- const normalizedPath = path.resolve(String(params.workspacePath).trim());
257
- const preRestoreBackup = params.preRestoreBackup !== false; // 默认 true
258
- // 解析 snapshotKey
259
- const [wsHash, snapshotId] = params.snapshotKey.split("/");
260
- if (!wsHash || !snapshotId) {
261
- return { ok: false, filesRestored: 0, filesDeleted: 0, filesSkipped: 0, error: "invalid snapshotKey format" };
262
- }
263
- const snapshotDir = snapshotDirFor(snapshotRoot, wsHash, snapshotId);
264
- const indexPath = path.join(snapshotDir, "index.json");
265
- // 验证快照存在
266
- try {
267
- await fs.access(indexPath);
268
- }
269
- catch {
270
- return { ok: false, filesRestored: 0, filesDeleted: 0, filesSkipped: 0, error: `snapshot not found: ${params.snapshotKey}` };
271
- }
272
- try {
273
- // 安全网:还原前自动快照
274
- let preRestoreSnapshotKey;
275
- if (preRestoreBackup) {
276
- try {
277
- const guardResult = await createSnapshot({
278
- workspacePath: normalizedPath,
279
- snapshotName: `pre-restore-guard-${snapshotId}`,
280
- triggerType: "AUTO_RESTORE_GUARD",
281
- });
282
- if (guardResult.ok) {
283
- preRestoreSnapshotKey = guardResult.snapshotKey;
284
- log.info(`[FileSnapshot] 还原前安全网快照: ${preRestoreSnapshotKey}`);
285
- }
286
- else {
287
- log.warn(`[FileSnapshot] 还原前安全网快照失败: ${guardResult.error}`);
288
- // 不阻断还原
289
- }
290
- }
291
- catch (error) {
292
- log.warn(`[FileSnapshot] 还原前安全网快照异常: ${error.message}`);
293
- }
294
- }
295
- // 读取 index
296
- const indexRaw = await fs.readFile(indexPath, "utf-8");
297
- const targetIndex = JSON.parse(indexRaw);
298
- // 确保工作区目录存在
299
- await fs.mkdir(normalizedPath, { recursive: true });
300
- // 收集当前工作区文件
301
- const currentFiles = [];
302
- await collectWorkspaceFiles(normalizedPath, normalizedPath, currentFiles, MAX_FILE_COUNT * 2);
303
- const targetRelPaths = new Set(Object.keys(targetIndex));
304
- let filesDeleted = 0;
305
- let filesRestored = 0;
306
- let filesSkipped = 0;
307
- // 第一步:删除"快照后新增"的文件(存在于当前但不在快照中)
308
- for (const relPath of currentFiles) {
309
- if (!targetRelPaths.has(relPath)) {
310
- const fullPath = path.join(normalizedPath, relPath);
311
- await safeUnlink(fullPath);
312
- filesDeleted++;
313
- // 尝试清理空目录
314
- const parentDir = path.dirname(fullPath);
315
- if (parentDir !== normalizedPath) {
316
- await removeEmptyDirs(parentDir, normalizedPath);
317
- }
318
- }
319
- }
320
- // 第二步:还原目标文件
321
- const timeoutMs = resolveSnapshotTimeoutMs();
322
- const deadline = Date.now() + timeoutMs;
323
- for (const [relPath, entry] of Object.entries(targetIndex)) {
324
- if (Date.now() > deadline) {
325
- log.warn(`[FileSnapshot] 还原超时 ${timeoutMs}ms,已还原 ${filesRestored} 个文件`);
326
- break;
327
- }
328
- const fullPath = path.join(normalizedPath, relPath);
329
- const backupPath = path.join(snapshotDir, "files", entry.backupName);
330
- try {
331
- // 检查备份文件存在
332
- try {
333
- await fs.access(backupPath);
334
- }
335
- catch {
336
- log.warn(`[FileSnapshot] 备份文件丢失,跳过: ${relPath}`);
337
- filesSkipped++;
338
- continue;
339
- }
340
- // 优化:当前文件内容哈希相同则跳过
341
- try {
342
- const currentContent = await fs.readFile(fullPath);
343
- const currentHash = sha256Short(currentContent);
344
- if (currentHash === entry.backupName) {
345
- filesSkipped++;
346
- continue;
347
- }
348
- }
349
- catch {
350
- // 文件不存在或不可读,继续还原
351
- }
352
- // 确保父目录存在
353
- await fs.mkdir(path.dirname(fullPath), { recursive: true });
354
- // 拷贝备份到工作区
355
- await fs.copyFile(backupPath, fullPath);
356
- // 恢复权限(Windows 下 chmod 为 no-op)
357
- try {
358
- await fs.chmod(fullPath, entry.mode);
359
- }
360
- catch {
361
- // Windows 或部分文件系统不支持 chmod,忽略
362
- }
363
- filesRestored++;
364
- }
365
- catch (error) {
366
- log.warn(`[FileSnapshot] 还原文件失败: ${relPath} - ${error.message}`);
367
- filesSkipped++;
368
- }
369
- }
370
- const elapsed = Date.now() - startTime;
371
- log.info(`[FileSnapshot] 还原完成: ${params.snapshotKey}, restored=${filesRestored}, deleted=${filesDeleted}, skipped=${filesSkipped}, ${elapsed}ms`);
372
- return {
373
- ok: true,
374
- filesRestored,
375
- filesDeleted,
376
- filesSkipped,
377
- preRestoreSnapshotKey,
378
- };
379
- }
380
- catch (error) {
381
- const err = error;
382
- log.error(`[FileSnapshot] 还原快照失败: ${err.message}`);
383
- return { ok: false, filesRestored: 0, filesDeleted: 0, filesSkipped: 0, error: err.message };
384
- }
385
- }
386
- /**
387
- * 列出指定工作区的所有快照
388
- */
389
- export async function listSnapshots(workspacePath) {
390
- const snapshotRoot = resolveSnapshotRoot();
391
- const normalizedPath = path.resolve(String(workspacePath).trim());
392
- const wsHash = workspaceHash(normalizedPath);
393
- const wsDir = path.join(snapshotRoot, wsHash);
394
- try {
395
- await fs.access(wsDir);
396
- }
397
- catch {
398
- return [];
399
- }
400
- const entries = await fs.readdir(wsDir, { withFileTypes: true });
401
- const results = [];
402
- for (const entry of entries) {
403
- if (!entry.isDirectory())
404
- continue;
405
- const metaPath = path.join(wsDir, entry.name, "meta.json");
406
- try {
407
- const metaRaw = await fs.readFile(metaPath, "utf-8");
408
- const meta = JSON.parse(metaRaw);
409
- results.push({
410
- snapshotId: meta.snapshotId,
411
- snapshotKey: `${wsHash}/${meta.snapshotId}`,
412
- snapshotName: meta.snapshotName,
413
- triggerType: meta.triggerType,
414
- createdAt: meta.createdAt,
415
- fileCount: meta.fileCount,
416
- totalBytes: meta.totalBytes,
417
- });
418
- }
419
- catch {
420
- // 跳过损坏的快照
421
- log.warn(`[FileSnapshot] 跳过损坏快照: ${entry.name}`);
422
- }
423
- }
424
- // 按创建时间倒序
425
- results.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
426
- return results;
427
- }
428
- /**
429
- * 删除指定快照
430
- */
431
- export async function deleteSnapshot(snapshotKey) {
432
- const snapshotRoot = resolveSnapshotRoot();
433
- const [wsHash, snapshotId] = snapshotKey.split("/");
434
- if (!wsHash || !snapshotId) {
435
- return { ok: false, error: "invalid snapshotKey format" };
436
- }
437
- const snapshotDir = snapshotDirFor(snapshotRoot, wsHash, snapshotId);
438
- try {
439
- await fs.access(snapshotDir);
440
- }
441
- catch {
442
- return { ok: false, error: `snapshot not found: ${snapshotKey}` };
443
- }
444
- try {
445
- // 读取 index 获取备份文件列表(引用计数)
446
- const indexRaw = await fs.readFile(path.join(snapshotDir, "index.json"), "utf-8");
447
- const index = JSON.parse(indexRaw);
448
- const backupNames = new Set(Object.values(index).map((e) => e.backupName));
449
- // 删除快照目录
450
- await fs.rm(snapshotDir, { recursive: true, force: true });
451
- // 引用计数:检查同工作区下其他快照是否还引用同一备份文件
452
- const wsDir = path.join(snapshotRoot, wsHash);
453
- try {
454
- const otherSnapshots = await fs.readdir(wsDir, { withFileTypes: true });
455
- const referencedHashes = new Set();
456
- for (const other of otherSnapshots) {
457
- if (!other.isDirectory())
458
- continue;
459
- try {
460
- const otherIndexRaw = await fs.readFile(path.join(wsDir, other.name, "index.json"), "utf-8");
461
- const otherIndex = JSON.parse(otherIndexRaw);
462
- for (const entry of Object.values(otherIndex)) {
463
- referencedHashes.add(entry.backupName);
464
- }
465
- }
466
- catch {
467
- // 忽略损坏的快照
468
- }
469
- }
470
- // 删除不再被引用的备份文件
471
- const filesDir = path.join(wsDir, "files");
472
- try {
473
- for (const backupName of backupNames) {
474
- if (!referencedHashes.has(backupName)) {
475
- await safeUnlink(path.join(filesDir, backupName));
476
- }
477
- }
478
- }
479
- catch {
480
- // 忽略清理错误
481
- }
482
- }
483
- catch {
484
- // 工作区目录不存在,无需清理
485
- }
486
- log.info(`[FileSnapshot] 删除快照: ${snapshotKey}`);
487
- return { ok: true };
488
- }
489
- catch (error) {
490
- const err = error;
491
- log.error(`[FileSnapshot] 删除快照失败: ${err.message}`);
492
- return { ok: false, error: err.message };
493
- }
494
- }
495
- /**
496
- * 获取快照根目录(供诊断/调试使用)
497
- */
498
- export function getSnapshotRootPath() {
499
- return resolveSnapshotRoot();
500
- }
1
+ import{createHash as M}from"node:crypto";import{promises as e}from"node:fs";import s from"node:path";import{homedir as U}from"node:os";import{createLogger as C}from"../utils/logger.js";const l=C("file-snapshot-store");function T(){const t=String(process.env.AWS_RUNTIME_SNAPSHOT_ROOT||"").trim();return t||s.join(U(),".aws-bridge","snapshots")}function A(){const t=Number(process.env.AWS_RUNTIME_SNAPSHOT_TIMEOUT_MS);return Number.isFinite(t)&&t>=5e3?t:12e4}const v=new Set([".git","node_modules",".agentswork-snapshots","__pycache__",".cache",".next","target","dist",".idea",".vscode"]),B=Number(process.env.AWS_RUNTIME_SNAPSHOT_MAX_FILE_SIZE||50*1024*1024),x=Number(process.env.AWS_RUNTIME_SNAPSHOT_MAX_FILES||5e4);function R(t){return M("sha256").update(t).digest("hex").slice(0,16)}function P(t){return R(s.resolve(t))}function I(t,n,c){return s.join(t,n,c)}function G(t){return t.split(s.sep).some(c=>v.has(c))}async function O(t,n,c,o){let a;try{a=await e.readdir(t,{withFileTypes:!0})}catch(r){const i=r;if(i.code==="ENOENT"||i.code==="EACCES")return;throw r}for(const r of a){if(c.length>=o){l.warn(`[FileSnapshot] \u6587\u4EF6\u6570\u5DF2\u8FBE\u4E0A\u9650 ${o}\uFF0C\u505C\u6B62\u904D\u5386`);return}if(v.has(r.name))continue;const i=s.join(t,r.name),d=s.relative(n,i);r.isDirectory()?await O(i,n,c,o):r.isFile()&&c.push(d)}}async function H(t){try{await e.unlink(t)}catch(n){if(n.code!=="ENOENT")throw n}}async function b(t,n){if(t!==n)try{(await e.readdir(t)).length===0&&(await e.rmdir(t),await b(s.dirname(t),n))}catch{}}async function K(t){const n=Date.now(),c=T(),o=s.resolve(String(t.workspacePath).trim()),a=P(o);try{if(!(await e.stat(o)).isDirectory())return{ok:!1,snapshotId:"",snapshotKey:"",fileCount:0,totalBytes:0,workspaceHash:a,error:"workspace path is not a directory"}}catch{return{ok:!1,snapshotId:"",snapshotKey:"",fileCount:0,totalBytes:0,workspaceHash:a,error:"workspace path does not exist"}}const r=t.snapshotId?.trim()||crypto.randomUUID(),i=t.snapshotName?.trim()||`snapshot-${new Date().toISOString()}`,d=t.triggerType?.trim()||"MANUAL",w=`${a}/${r}`,f=I(c,a,r),h=s.join(f,"files");try{await e.mkdir(h,{recursive:!0});const y=[];await O(o,o,y,x);const m={};let F=0,k=0;const g=A(),N=Date.now()+g;for(const $ of y){if(Date.now()>N){l.warn(`[FileSnapshot] \u5FEB\u7167\u8D85\u65F6 ${g}ms\uFF0C\u5DF2\u5907\u4EFD ${k}/${y.length} \u4E2A\u6587\u4EF6`);break}const u=s.join(o,$);try{const p=await e.stat(u);if(!p.isFile())continue;if(p.size>B){l.warn(`[FileSnapshot] \u8DF3\u8FC7\u5927\u6587\u4EF6: ${$} (${(p.size/1024/1024).toFixed(1)}MB)`);continue}const S=await e.readFile(u),_=R(S),D=s.join(h,_);try{await e.access(D)}catch{await e.writeFile(D,S)}m[$]={backupName:_,size:p.size,mtime:p.mtimeMs,mode:p.mode},F+=p.size,k++}catch(p){const S=p;if(S.code==="ENOENT"||S.code==="EACCES"){l.warn(`[FileSnapshot] \u8DF3\u8FC7\u4E0D\u53EF\u8BFB\u6587\u4EF6: ${$}`);continue}throw p}}await e.writeFile(s.join(f,"index.json"),JSON.stringify(m,null,2));const j={snapshotId:r,workspacePath:o,snapshotName:i,triggerType:d,createdAt:new Date().toISOString(),fileCount:k,totalBytes:F,workspaceHash:a};await e.writeFile(s.join(f,"meta.json"),JSON.stringify(j,null,2));const E=Date.now()-n;return l.info(`[FileSnapshot] \u521B\u5EFA\u5FEB\u7167\u5B8C\u6210: ${w}, ${k} files, ${(F/1024/1024).toFixed(1)}MB, ${E}ms`),{ok:!0,snapshotId:r,snapshotKey:w,fileCount:k,totalBytes:F,workspaceHash:a}}catch(y){const m=y;l.error(`[FileSnapshot] \u521B\u5EFA\u5FEB\u7167\u5931\u8D25: ${m.message}`);try{await e.rm(f,{recursive:!0,force:!0})}catch{}return{ok:!1,snapshotId:r,snapshotKey:w,fileCount:0,totalBytes:0,workspaceHash:a,error:m.message}}}async function q(t){const n=Date.now(),c=T(),o=s.resolve(String(t.workspacePath).trim()),a=t.preRestoreBackup!==!1,[r,i]=t.snapshotKey.split("/");if(!r||!i)return{ok:!1,filesRestored:0,filesDeleted:0,filesSkipped:0,error:"invalid snapshotKey format"};const d=I(c,r,i),w=s.join(d,"index.json");try{await e.access(w)}catch{return{ok:!1,filesRestored:0,filesDeleted:0,filesSkipped:0,error:`snapshot not found: ${t.snapshotKey}`}}try{let f;if(a)try{const u=await K({workspacePath:o,snapshotName:`pre-restore-guard-${i}`,triggerType:"AUTO_RESTORE_GUARD"});u.ok?(f=u.snapshotKey,l.info(`[FileSnapshot] \u8FD8\u539F\u524D\u5B89\u5168\u7F51\u5FEB\u7167: ${f}`)):l.warn(`[FileSnapshot] \u8FD8\u539F\u524D\u5B89\u5168\u7F51\u5FEB\u7167\u5931\u8D25: ${u.error}`)}catch(u){l.warn(`[FileSnapshot] \u8FD8\u539F\u524D\u5B89\u5168\u7F51\u5FEB\u7167\u5F02\u5E38: ${u.message}`)}const h=await e.readFile(w,"utf-8"),y=JSON.parse(h);await e.mkdir(o,{recursive:!0});const m=[];await O(o,o,m,x*2);const F=new Set(Object.keys(y));let k=0,g=0,N=0;for(const u of m)if(!F.has(u)){const p=s.join(o,u);await H(p),k++;const S=s.dirname(p);S!==o&&await b(S,o)}const j=A(),E=Date.now()+j;for(const[u,p]of Object.entries(y)){if(Date.now()>E){l.warn(`[FileSnapshot] \u8FD8\u539F\u8D85\u65F6 ${j}ms\uFF0C\u5DF2\u8FD8\u539F ${g} \u4E2A\u6587\u4EF6`);break}const S=s.join(o,u),_=s.join(d,"files",p.backupName);try{try{await e.access(_)}catch{l.warn(`[FileSnapshot] \u5907\u4EFD\u6587\u4EF6\u4E22\u5931\uFF0C\u8DF3\u8FC7: ${u}`),N++;continue}try{const D=await e.readFile(S);if(R(D)===p.backupName){N++;continue}}catch{}await e.mkdir(s.dirname(S),{recursive:!0}),await e.copyFile(_,S);try{await e.chmod(S,p.mode)}catch{}g++}catch(D){l.warn(`[FileSnapshot] \u8FD8\u539F\u6587\u4EF6\u5931\u8D25: ${u} - ${D.message}`),N++}}const $=Date.now()-n;return l.info(`[FileSnapshot] \u8FD8\u539F\u5B8C\u6210: ${t.snapshotKey}, restored=${g}, deleted=${k}, skipped=${N}, ${$}ms`),{ok:!0,filesRestored:g,filesDeleted:k,filesSkipped:N,preRestoreSnapshotKey:f}}catch(f){const h=f;return l.error(`[FileSnapshot] \u8FD8\u539F\u5FEB\u7167\u5931\u8D25: ${h.message}`),{ok:!1,filesRestored:0,filesDeleted:0,filesSkipped:0,error:h.message}}}async function Q(t){const n=T(),c=s.resolve(String(t).trim()),o=P(c),a=s.join(n,o);try{await e.access(a)}catch{return[]}const r=await e.readdir(a,{withFileTypes:!0}),i=[];for(const d of r){if(!d.isDirectory())continue;const w=s.join(a,d.name,"meta.json");try{const f=await e.readFile(w,"utf-8"),h=JSON.parse(f);i.push({snapshotId:h.snapshotId,snapshotKey:`${o}/${h.snapshotId}`,snapshotName:h.snapshotName,triggerType:h.triggerType,createdAt:h.createdAt,fileCount:h.fileCount,totalBytes:h.totalBytes})}catch{l.warn(`[FileSnapshot] \u8DF3\u8FC7\u635F\u574F\u5FEB\u7167: ${d.name}`)}}return i.sort((d,w)=>new Date(w.createdAt).getTime()-new Date(d.createdAt).getTime()),i}async function V(t){const n=T(),[c,o]=t.split("/");if(!c||!o)return{ok:!1,error:"invalid snapshotKey format"};const a=I(n,c,o);try{await e.access(a)}catch{return{ok:!1,error:`snapshot not found: ${t}`}}try{const r=await e.readFile(s.join(a,"index.json"),"utf-8"),i=JSON.parse(r),d=new Set(Object.values(i).map(f=>f.backupName));await e.rm(a,{recursive:!0,force:!0});const w=s.join(n,c);try{const f=await e.readdir(w,{withFileTypes:!0}),h=new Set;for(const m of f)if(m.isDirectory())try{const F=await e.readFile(s.join(w,m.name,"index.json"),"utf-8"),k=JSON.parse(F);for(const g of Object.values(k))h.add(g.backupName)}catch{}const y=s.join(w,"files");try{for(const m of d)h.has(m)||await H(s.join(y,m))}catch{}}catch{}return l.info(`[FileSnapshot] \u5220\u9664\u5FEB\u7167: ${t}`),{ok:!0}}catch(r){const i=r;return l.error(`[FileSnapshot] \u5220\u9664\u5FEB\u7167\u5931\u8D25: ${i.message}`),{ok:!1,error:i.message}}}function Y(){return T()}export{K as createSnapshot,V as deleteSnapshot,Y as getSnapshotRootPath,Q as listSnapshots,q as restoreSnapshot};
2
+
@@ -46,4 +46,3 @@ export declare function redactForLog(obj: Record<string, unknown>): Record<strin
46
46
  */
47
47
  export declare function prepareAcodeInstanceConfig(options: PrepareOptions): Promise<PrepareResult>;
48
48
  export {};
49
- //# sourceMappingURL=instance-ai-config-service.d.ts.map