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
@@ -67,4 +67,3 @@ export interface DiffRollbackResult {
67
67
  /** 每条操作的详细状态 */
68
68
  details: OperationDetail[];
69
69
  }
70
- //# sourceMappingURL=file-diff-rollback.d.ts.map
@@ -1,301 +1,2 @@
1
- /**
2
- * 文件差异回滚路由
3
- *
4
- * 根据变更记录的反向操作执行文件回滚。
5
- * 与全量快照还原不同的是,只还原被修改过的文件。
6
- *
7
- * 核心流程(两步走):
8
- * 1. 内存预检:在内存中按修改时间逆序模拟所有反向操作,验证完整性。不触碰文件系统。
9
- * - CREATE:检查文件是否存在,准备删除
10
- * - UPDATE:读取 diff patch,读取当前文件内容,在内存中应用反向 patch 验证是否成功
11
- * - DELETE:读取删除前的完整内容,准备重建
12
- * 2. 原子执行:预检全部通过后,批量写入文件系统;任一预检失败则返回 previewFailed=true,
13
- * 由调用方(前端)弹出"跳过不通过项 / 文件全量覆盖"二选一对话框。
14
- * skipFailed=true 时仅执行通过项(partial);否则不写盘。
15
- *
16
- * 反向操作映射:
17
- * CREATE → DELETE(删除创建的文件)
18
- * UPDATE → 应用反向 diff patch(精确撤销修改的部分,保留用户后续改动);
19
- * 若补丁无法精确应用(上下文不匹配=冲突),报为预检失败,不静默整文件覆盖
20
- * DELETE → 重新创建被删除的文件(根据 cacheKey 从 bridge 本地缓存读取)
21
- */
22
- import { promises as fs } from 'node:fs';
23
- import path from 'node:path';
24
- import { Router } from 'express';
25
- import * as Diff from 'diff';
26
- import { createLogger } from '../utils/logger.js';
27
- import { validateToken } from '../middleware/auth.js';
28
- import { readBeforeContentFromCache, readDiffFromCache } from '../services/workspaceTaskChangeWatcher.js';
29
- const log = createLogger('file-diff-rollback');
30
- export const fileDiffRollbackRouter = Router();
31
- /**
32
- * 内存预检:在内存中按时间逆序模拟所有反向操作,生成执行计划。
33
- * 不实际触碰文件系统。
34
- *
35
- * 关键:使用内存文件状态跟踪(fileContentMap),每条回滚操作基于前一条执行后的内容,
36
- * 确保同一文件多次 UPDATE 时链式回滚正确(D→C→B→A)。
37
- */
38
- async function previewRollback(workspacePath, operations) {
39
- const errors = [];
40
- const plan = [];
41
- const details = [];
42
- const normalizedWorkspace = path.resolve(String(workspacePath).trim());
43
- // 按 createdAt 逆序排列(最新的变更最先回滚)
44
- const sortedOps = [...operations].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
45
- // 内存中的文件内容跟踪:key = relativePath,value = 当前内容(null = 文件不存在)
46
- // 首次访问某文件时从磁盘读取,后续操作基于内存中的最新状态
47
- const fileContentMap = new Map();
48
- const fileExistedMap = new Map();
49
- for (const op of sortedOps) {
50
- const fullPath = path.join(normalizedWorkspace, op.relativePath);
51
- const relativePath = op.relativePath.replace(/\\/g, '/');
52
- // 安全检查:路径不能跳出工作区
53
- const resolvedPath = path.resolve(fullPath);
54
- if (!resolvedPath.startsWith(normalizedWorkspace)) {
55
- const reason = `Path escape detected: ${relativePath}`;
56
- errors.push(reason);
57
- details.push({ relativePath, originalOperation: op.originalOperation, status: 'preview_failed', reason });
58
- continue;
59
- }
60
- // 获取当前内存中的文件状态(首次从磁盘读取)
61
- if (!fileContentMap.has(relativePath)) {
62
- let diskContent = null;
63
- let diskExists = false;
64
- try {
65
- diskContent = await fs.readFile(fullPath, 'utf-8');
66
- diskExists = true;
67
- }
68
- catch {
69
- diskExists = false;
70
- }
71
- fileContentMap.set(relativePath, diskContent);
72
- fileExistedMap.set(relativePath, diskExists);
73
- }
74
- switch (op.originalOperation) {
75
- case 'CREATE': {
76
- // 逆操作:删除文件
77
- plan.push({ type: 'DELETE', fullPath, relativePath, originalOperation: 'CREATE' });
78
- details.push({ relativePath, originalOperation: 'CREATE', status: 'preview_passed', action: '删除文件' });
79
- // 更新内存状态:文件已删除
80
- fileContentMap.set(relativePath, null);
81
- fileExistedMap.set(relativePath, false);
82
- break;
83
- }
84
- case 'UPDATE': {
85
- if (!op.cacheKey) {
86
- const reason = `缺少 cacheKey,无法读取 diff 补丁`;
87
- errors.push(`UPDATE rollback failed: ${reason} for ${relativePath}`);
88
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_failed', reason });
89
- break;
90
- }
91
- const currentContent = fileContentMap.get(relativePath) ?? null;
92
- if (currentContent === null) {
93
- const reason = `文件当前不存在,无法应用反向 diff 补丁`;
94
- errors.push(`UPDATE rollback failed: ${reason} for ${relativePath}`);
95
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_failed', reason });
96
- break;
97
- }
98
- // 尝试用 diff patch 精确回滚。
99
- // 关键设计:applyPatch 失败时不再静默回退到 beforeContent(那会丢弃用户/其他任务
100
- // 对该文件的所有改动),而是报为 preview_failed,让前端弹出
101
- // "跳过不通过项 / 文件全量覆盖" 二选一对话框。
102
- const patch = await readDiffFromCache(normalizedWorkspace, op.cacheKey);
103
- if (patch === null) {
104
- const reason = `本地缓存中找不到 diff 补丁 (cacheKey=${op.cacheKey}),无法精确回滚`;
105
- errors.push(`UPDATE rollback failed: ${reason} for ${relativePath}`);
106
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_failed', reason });
107
- break;
108
- }
109
- let rollbackContent = null;
110
- try {
111
- const parsed = Diff.parsePatch(patch);
112
- const reversed = Diff.reversePatch(parsed);
113
- const result = Diff.applyPatch(currentContent, reversed);
114
- if (result !== false) {
115
- rollbackContent = result;
116
- }
117
- else {
118
- // 反向 diff 补丁无法精确应用(上下文不匹配),
119
- // 说明文件已被其他任务或用户修改了 AI 改动的同一区域,存在冲突。
120
- const reason = `反向 diff 补丁无法精确应用:文件当前内容与 AI 变更后的预期上下文不匹配,可能已被其他任务或用户修改了相同区域,存在冲突`;
121
- errors.push(`UPDATE rollback failed: ${reason} for ${relativePath}`);
122
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_failed', reason });
123
- break;
124
- }
125
- }
126
- catch (err) {
127
- const reason = `反向 diff 补丁应用异常: ${err.message}`;
128
- errors.push(`UPDATE rollback failed: ${reason} for ${relativePath}`);
129
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_failed', reason });
130
- break;
131
- }
132
- plan.push({ type: 'WRITE', fullPath, relativePath, originalOperation: 'UPDATE', content: rollbackContent });
133
- details.push({ relativePath, originalOperation: 'UPDATE', status: 'preview_passed', action: '应用反向 diff 补丁' });
134
- // 更新内存状态:文件内容已回滚
135
- fileContentMap.set(relativePath, rollbackContent);
136
- break;
137
- }
138
- case 'DELETE': {
139
- if (!op.cacheKey) {
140
- const reason = `缺少 cacheKey,无法读取删除前的文件内容`;
141
- errors.push(`DELETE rollback failed: ${reason} for ${relativePath}`);
142
- details.push({ relativePath, originalOperation: 'DELETE', status: 'preview_failed', reason });
143
- break;
144
- }
145
- const content = await readBeforeContentFromCache(normalizedWorkspace, op.cacheKey);
146
- if (content === null) {
147
- const reason = `本地缓存中找不到删除前的文件内容 (cacheKey=${op.cacheKey})`;
148
- errors.push(`DELETE rollback failed: ${reason} for ${relativePath}`);
149
- details.push({ relativePath, originalOperation: 'DELETE', status: 'preview_failed', reason });
150
- break;
151
- }
152
- plan.push({ type: 'WRITE', fullPath, relativePath, originalOperation: 'DELETE', content });
153
- details.push({ relativePath, originalOperation: 'DELETE', status: 'preview_passed', action: '重建文件' });
154
- // 更新内存状态:文件已重建
155
- fileContentMap.set(relativePath, content);
156
- fileExistedMap.set(relativePath, true);
157
- break;
158
- }
159
- default: {
160
- const reason = `未知的操作类型 "${op.originalOperation}"`;
161
- errors.push(`${reason} for ${relativePath}`);
162
- details.push({ relativePath, originalOperation: op.originalOperation, status: 'preview_failed', reason });
163
- break;
164
- }
165
- }
166
- }
167
- return { ok: errors.length === 0, errors, plan, details };
168
- }
169
- /**
170
- * 批量执行回滚计划。
171
- * 返回每条操作的执行状态详情。
172
- */
173
- async function executePlan(plan, previewDetails) {
174
- let restored = 0;
175
- let skipped = 0;
176
- const errors = [];
177
- // 以预检 details 为基础,更新执行阶段状态
178
- const details = previewDetails.map((d) => ({ ...d }));
179
- for (const item of plan) {
180
- const detail = details.find((d) => d.relativePath === item.relativePath && d.status === 'preview_passed');
181
- try {
182
- if (item.type === 'DELETE') {
183
- await fs.unlink(item.fullPath);
184
- log.info(`Rollback executed: deleted created file ${item.relativePath}`);
185
- if (detail) {
186
- detail.status = 'success';
187
- detail.action = '删除文件';
188
- }
189
- restored++;
190
- }
191
- else if (item.type === 'WRITE') {
192
- await fs.mkdir(path.dirname(item.fullPath), { recursive: true });
193
- await fs.writeFile(item.fullPath, item.content, 'utf-8');
194
- log.info(`Rollback executed: restored file ${item.relativePath}`);
195
- if (detail) {
196
- detail.status = 'success';
197
- detail.action = item.originalOperation === 'UPDATE' ? '应用反向 diff 补丁' : '重建文件';
198
- }
199
- restored++;
200
- }
201
- }
202
- catch (err) {
203
- const reason = `${err.message}`;
204
- const msg = `Rollback failed for ${item.relativePath}: ${reason}`;
205
- errors.push(msg);
206
- log.warn(msg);
207
- if (detail) {
208
- detail.status = 'failed';
209
- detail.reason = reason;
210
- }
211
- skipped++;
212
- }
213
- }
214
- return { restored, skipped, errors, details };
215
- }
216
- /**
217
- * 差异回滚预检接口
218
- * POST /runtime/file-diff-rollback/preview
219
- *
220
- * 仅做内存模拟,不触碰文件系统。
221
- * 返回每条操作的预检状态(preview_passed / preview_failed / skipped)及原因。
222
- */
223
- fileDiffRollbackRouter.post('/file-diff-rollback/preview', validateToken, async (req, res) => {
224
- const { workspacePath, operations } = req.body;
225
- if (!workspacePath || !Array.isArray(operations)) {
226
- res.status(400).json({ error: 'workspacePath and operations (array) are required' });
227
- return;
228
- }
229
- const { ok, errors, plan, details } = await previewRollback(workspacePath, operations);
230
- res.json({
231
- ok,
232
- errors,
233
- plan: plan.map((p) => ({ type: p.type, relativePath: p.relativePath })),
234
- totalOperations: operations.length,
235
- plannedOperations: plan.length,
236
- details,
237
- });
238
- });
239
- /**
240
- * 执行文件差异回滚
241
- * POST /runtime/file-diff-rollback/execute
242
- *
243
- * 第一步:内存预检(previewRollback)。
244
- * 第二步:若预检全部通过,则批量原子写入;若任一预检失败,直接返回错误,不写盘。
245
- *
246
- * 调用方在收到 previewFailed=true 时,可提示用户选择使用文件快照进行完整覆盖。
247
- * 无论成功失败,都返回每条操作的详细状态。
248
- */
249
- fileDiffRollbackRouter.post('/file-diff-rollback/execute', validateToken, async (req, res) => {
250
- const { workspacePath, operations, skipFailed } = req.body;
251
- if (!workspacePath || !Array.isArray(operations)) {
252
- res.status(400).json({ error: 'workspacePath and operations (array) are required' });
253
- return;
254
- }
255
- // ── 第一步:内存预检 ──
256
- const preview = await previewRollback(workspacePath, operations);
257
- if (!preview.ok) {
258
- // 策略:仅执行通过预检的项(跳过失败项)。
259
- // preview.plan 只装通过项,且链式预演中失败项不会污染 fileContentMap,
260
- // 因此通过项预计算出的目标内容天然保留了失败项的改动 —— 直接执行 plan 即等价于"跳过不通过项"。
261
- if (skipFailed && preview.plan.length > 0) {
262
- const execResult = await executePlan(preview.plan, preview.details);
263
- const failedCount = preview.details.filter((d) => d.status === 'preview_failed').length;
264
- log.warn(`Diff rollback partial execute: passed=${execResult.restored}, skippedFailed=${failedCount}, ioSkipped=${execResult.skipped}`);
265
- const result = {
266
- ok: execResult.errors.length === 0,
267
- restored: execResult.restored,
268
- skipped: execResult.skipped + failedCount,
269
- errors: execResult.errors,
270
- previewFailed: false,
271
- partial: true,
272
- details: execResult.details,
273
- };
274
- res.json(result);
275
- return;
276
- }
277
- const result = {
278
- ok: false,
279
- restored: 0,
280
- skipped: operations.length,
281
- errors: preview.errors,
282
- previewFailed: true,
283
- details: preview.details,
284
- };
285
- log.warn(`Diff rollback preview failed, no files touched: errors=${preview.errors.length}`);
286
- res.json(result);
287
- return;
288
- }
289
- // ── 第二步:批量原子执行 ──
290
- const execResult = await executePlan(preview.plan, preview.details);
291
- const result = {
292
- ok: execResult.errors.length === 0,
293
- restored: execResult.restored,
294
- skipped: execResult.skipped,
295
- errors: execResult.errors,
296
- previewFailed: false,
297
- details: execResult.details,
298
- };
299
- log.info(`Diff rollback completed: restored=${execResult.restored}, skipped=${execResult.skipped}, errors=${execResult.errors.length}`);
300
- res.json(result);
301
- });
1
+ import{promises as w}from"node:fs";import g from"node:path";import{Router as O}from"express";import*as P from"diff";import{createLogger as R}from"../utils/logger.js";import{validateToken as T}from"../middleware/auth.js";import{readBeforeContentFromCache as U,readDiffFromCache as _}from"../services/workspaceTaskChangeWatcher.js";const k=R("file-diff-rollback"),D=O();async function m(h,u){const r=[],l=[],s=[],i=g.resolve(String(h).trim()),t=[...u].sort((a,c)=>new Date(c.createdAt).getTime()-new Date(a.createdAt).getTime()),o=new Map,p=new Map;for(const a of t){const c=g.join(i,a.relativePath),e=a.relativePath.replace(/\\/g,"/");if(!g.resolve(c).startsWith(i)){const n=`Path escape detected: ${e}`;r.push(n),s.push({relativePath:e,originalOperation:a.originalOperation,status:"preview_failed",reason:n});continue}if(!o.has(e)){let n=null,f=!1;try{n=await w.readFile(c,"utf-8"),f=!0}catch{f=!1}o.set(e,n),p.set(e,f)}switch(a.originalOperation){case"CREATE":{l.push({type:"DELETE",fullPath:c,relativePath:e,originalOperation:"CREATE"}),s.push({relativePath:e,originalOperation:"CREATE",status:"preview_passed",action:"\u5220\u9664\u6587\u4EF6"}),o.set(e,null),p.set(e,!1);break}case"UPDATE":{if(!a.cacheKey){const d="\u7F3A\u5C11 cacheKey\uFF0C\u65E0\u6CD5\u8BFB\u53D6 diff \u8865\u4E01";r.push(`UPDATE rollback failed: ${d} for ${e}`),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_failed",reason:d});break}const n=o.get(e)??null;if(n===null){const d="\u6587\u4EF6\u5F53\u524D\u4E0D\u5B58\u5728\uFF0C\u65E0\u6CD5\u5E94\u7528\u53CD\u5411 diff \u8865\u4E01";r.push(`UPDATE rollback failed: ${d} for ${e}`),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_failed",reason:d});break}const f=await _(i,a.cacheKey);if(f===null){const d=`\u672C\u5730\u7F13\u5B58\u4E2D\u627E\u4E0D\u5230 diff \u8865\u4E01 (cacheKey=${a.cacheKey})\uFF0C\u65E0\u6CD5\u7CBE\u786E\u56DE\u6EDA`;r.push(`UPDATE rollback failed: ${d} for ${e}`),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_failed",reason:d});break}let v=null;try{const d=P.parsePatch(f),E=P.reversePatch(d),$=P.applyPatch(n,E);if($!==!1)v=$;else{const b="\u53CD\u5411 diff \u8865\u4E01\u65E0\u6CD5\u7CBE\u786E\u5E94\u7528\uFF1A\u6587\u4EF6\u5F53\u524D\u5185\u5BB9\u4E0E AI \u53D8\u66F4\u540E\u7684\u9884\u671F\u4E0A\u4E0B\u6587\u4E0D\u5339\u914D\uFF0C\u53EF\u80FD\u5DF2\u88AB\u5176\u4ED6\u4EFB\u52A1\u6216\u7528\u6237\u4FEE\u6539\u4E86\u76F8\u540C\u533A\u57DF\uFF0C\u5B58\u5728\u51B2\u7A81";r.push(`UPDATE rollback failed: ${b} for ${e}`),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_failed",reason:b});break}}catch(d){const E=`\u53CD\u5411 diff \u8865\u4E01\u5E94\u7528\u5F02\u5E38: ${d.message}`;r.push(`UPDATE rollback failed: ${E} for ${e}`),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_failed",reason:E});break}l.push({type:"WRITE",fullPath:c,relativePath:e,originalOperation:"UPDATE",content:v}),s.push({relativePath:e,originalOperation:"UPDATE",status:"preview_passed",action:"\u5E94\u7528\u53CD\u5411 diff \u8865\u4E01"}),o.set(e,v);break}case"DELETE":{if(!a.cacheKey){const f="\u7F3A\u5C11 cacheKey\uFF0C\u65E0\u6CD5\u8BFB\u53D6\u5220\u9664\u524D\u7684\u6587\u4EF6\u5185\u5BB9";r.push(`DELETE rollback failed: ${f} for ${e}`),s.push({relativePath:e,originalOperation:"DELETE",status:"preview_failed",reason:f});break}const n=await U(i,a.cacheKey);if(n===null){const f=`\u672C\u5730\u7F13\u5B58\u4E2D\u627E\u4E0D\u5230\u5220\u9664\u524D\u7684\u6587\u4EF6\u5185\u5BB9 (cacheKey=${a.cacheKey})`;r.push(`DELETE rollback failed: ${f} for ${e}`),s.push({relativePath:e,originalOperation:"DELETE",status:"preview_failed",reason:f});break}l.push({type:"WRITE",fullPath:c,relativePath:e,originalOperation:"DELETE",content:n}),s.push({relativePath:e,originalOperation:"DELETE",status:"preview_passed",action:"\u91CD\u5EFA\u6587\u4EF6"}),o.set(e,n),p.set(e,!0);break}default:{const n=`\u672A\u77E5\u7684\u64CD\u4F5C\u7C7B\u578B "${a.originalOperation}"`;r.push(`${n} for ${e}`),s.push({relativePath:e,originalOperation:a.originalOperation,status:"preview_failed",reason:n});break}}}return{ok:r.length===0,errors:r,plan:l,details:s}}async function A(h,u){let r=0,l=0;const s=[],i=u.map(t=>({...t}));for(const t of h){const o=i.find(p=>p.relativePath===t.relativePath&&p.status==="preview_passed");try{t.type==="DELETE"?(await w.unlink(t.fullPath),k.info(`Rollback executed: deleted created file ${t.relativePath}`),o&&(o.status="success",o.action="\u5220\u9664\u6587\u4EF6"),r++):t.type==="WRITE"&&(await w.mkdir(g.dirname(t.fullPath),{recursive:!0}),await w.writeFile(t.fullPath,t.content,"utf-8"),k.info(`Rollback executed: restored file ${t.relativePath}`),o&&(o.status="success",o.action=t.originalOperation==="UPDATE"?"\u5E94\u7528\u53CD\u5411 diff \u8865\u4E01":"\u91CD\u5EFA\u6587\u4EF6"),r++)}catch(p){const a=`${p.message}`,c=`Rollback failed for ${t.relativePath}: ${a}`;s.push(c),k.warn(c),o&&(o.status="failed",o.reason=a),l++}}return{restored:r,skipped:l,errors:s,details:i}}D.post("/file-diff-rollback/preview",T,async(h,u)=>{const{workspacePath:r,operations:l}=h.body;if(!r||!Array.isArray(l)){u.status(400).json({error:"workspacePath and operations (array) are required"});return}const{ok:s,errors:i,plan:t,details:o}=await m(r,l);u.json({ok:s,errors:i,plan:t.map(p=>({type:p.type,relativePath:p.relativePath})),totalOperations:l.length,plannedOperations:t.length,details:o})}),D.post("/file-diff-rollback/execute",T,async(h,u)=>{const{workspacePath:r,operations:l,skipFailed:s}=h.body;if(!r||!Array.isArray(l)){u.status(400).json({error:"workspacePath and operations (array) are required"});return}const i=await m(r,l);if(!i.ok){if(s&&i.plan.length>0){const a=await A(i.plan,i.details),c=i.details.filter(y=>y.status==="preview_failed").length;k.warn(`Diff rollback partial execute: passed=${a.restored}, skippedFailed=${c}, ioSkipped=${a.skipped}`);const e={ok:a.errors.length===0,restored:a.restored,skipped:a.skipped+c,errors:a.errors,previewFailed:!1,partial:!0,details:a.details};u.json(e);return}const p={ok:!1,restored:0,skipped:l.length,errors:i.errors,previewFailed:!0,details:i.details};k.warn(`Diff rollback preview failed, no files touched: errors=${i.errors.length}`),u.json(p);return}const t=await A(i.plan,i.details),o={ok:t.errors.length===0,restored:t.restored,skipped:t.skipped,errors:t.errors,previewFailed:!1,details:t.details};k.info(`Diff rollback completed: restored=${t.restored}, skipped=${t.skipped}, errors=${t.errors.length}`),u.json(o)});export{D as fileDiffRollbackRouter};
2
+
@@ -7,4 +7,3 @@
7
7
  * - 列表/删除:按快照 key 管理生命周期
8
8
  */
9
9
  export declare const fileSnapshotRouter: import("express-serve-static-core").Router;
10
- //# sourceMappingURL=file-snapshot.d.ts.map
@@ -1,156 +1,2 @@
1
- /**
2
- * 文件快照 API 路由
3
- *
4
- * 提供基于文件内容哈希的确定性快照,替代 git stash 实现稳定可靠的快照与还原。
5
- * - 创建快照:遍历工作区,整文件备份 + 内容哈希去重
6
- * - 还原快照:先清后写,整文件覆盖,零冲突,幂等
7
- * - 列表/删除:按快照 key 管理生命周期
8
- */
9
- import { Router } from "express";
10
- import { validateToken } from "../middleware/auth.js";
11
- import { createLogger } from "../utils/logger.js";
12
- import { createSnapshot, restoreSnapshot, listSnapshots, deleteSnapshot, getSnapshotRootPath, } from "../services/fileSnapshotStore.js";
13
- export const fileSnapshotRouter = Router();
14
- const log = createLogger("file-snapshot");
15
- /**
16
- * 创建文件快照
17
- * POST /runtime/file-snapshot/create
18
- */
19
- fileSnapshotRouter.post("/file-snapshot/create", validateToken, async (req, res) => {
20
- const { workspacePath, snapshotId, snapshotName, triggerType } = req.body || {};
21
- if (!workspacePath || !String(workspacePath).trim()) {
22
- res.status(400).json({ error: "workspacePath is required" });
23
- return;
24
- }
25
- try {
26
- const result = await createSnapshot({
27
- workspacePath: String(workspacePath).trim(),
28
- snapshotId: snapshotId ? String(snapshotId).trim() : undefined,
29
- snapshotName: snapshotName ? String(snapshotName).trim() : undefined,
30
- triggerType: triggerType ? String(triggerType).trim() : undefined,
31
- });
32
- if (!result.ok) {
33
- log.warn(`[FileSnapshot] 创建快照失败: ${result.error}`);
34
- res.status(500).json({ ok: false, error: result.error });
35
- return;
36
- }
37
- res.json({
38
- ok: true,
39
- snapshotId: result.snapshotId,
40
- snapshotKey: result.snapshotKey,
41
- fileCount: result.fileCount,
42
- totalBytes: result.totalBytes,
43
- workspaceHash: result.workspaceHash,
44
- workspacePath: String(workspacePath).trim(),
45
- });
46
- }
47
- catch (error) {
48
- const err = error;
49
- log.error(`[FileSnapshot] 创建快照异常: ${err.message}`);
50
- res.status(500).json({ ok: false, error: err.message || "create snapshot failed" });
51
- }
52
- });
53
- /**
54
- * 还原文件快照
55
- * POST /runtime/file-snapshot/restore
56
- */
57
- fileSnapshotRouter.post("/file-snapshot/restore", validateToken, async (req, res) => {
58
- const { workspacePath, snapshotKey, preRestoreBackup } = req.body || {};
59
- if (!workspacePath || !String(workspacePath).trim()) {
60
- res.status(400).json({ error: "workspacePath is required" });
61
- return;
62
- }
63
- if (!snapshotKey || !String(snapshotKey).trim()) {
64
- res.status(400).json({ error: "snapshotKey is required" });
65
- return;
66
- }
67
- try {
68
- const result = await restoreSnapshot({
69
- workspacePath: String(workspacePath).trim(),
70
- snapshotKey: String(snapshotKey).trim(),
71
- preRestoreBackup: preRestoreBackup !== false,
72
- });
73
- if (!result.ok) {
74
- log.warn(`[FileSnapshot] 还原快照失败: ${result.error}`);
75
- res.status(500).json({ ok: false, error: result.error });
76
- return;
77
- }
78
- res.json({
79
- ok: true,
80
- filesRestored: result.filesRestored,
81
- filesDeleted: result.filesDeleted,
82
- filesSkipped: result.filesSkipped,
83
- preRestoreSnapshotKey: result.preRestoreSnapshotKey || null,
84
- workspacePath: String(workspacePath).trim(),
85
- });
86
- }
87
- catch (error) {
88
- const err = error;
89
- log.error(`[FileSnapshot] 还原快照异常: ${err.message}`);
90
- res.status(500).json({ ok: false, error: err.message || "restore snapshot failed" });
91
- }
92
- });
93
- /**
94
- * 列出快照
95
- * POST /runtime/file-snapshot/list
96
- */
97
- fileSnapshotRouter.post("/file-snapshot/list", validateToken, async (req, res) => {
98
- const { workspacePath } = req.body || {};
99
- if (!workspacePath || !String(workspacePath).trim()) {
100
- res.status(400).json({ error: "workspacePath is required" });
101
- return;
102
- }
103
- try {
104
- const snapshots = await listSnapshots(String(workspacePath).trim());
105
- res.json({
106
- ok: true,
107
- snapshots,
108
- count: snapshots.length,
109
- workspacePath: String(workspacePath).trim(),
110
- });
111
- }
112
- catch (error) {
113
- const err = error;
114
- log.error(`[FileSnapshot] 列出快照异常: ${err.message}`);
115
- res.status(500).json({ ok: false, error: err.message || "list snapshots failed" });
116
- }
117
- });
118
- /**
119
- * 删除快照
120
- * POST /runtime/file-snapshot/delete
121
- */
122
- fileSnapshotRouter.post("/file-snapshot/delete", validateToken, async (req, res) => {
123
- const { snapshotKey } = req.body || {};
124
- if (!snapshotKey || !String(snapshotKey).trim()) {
125
- res.status(400).json({ error: "snapshotKey is required" });
126
- return;
127
- }
128
- try {
129
- const result = await deleteSnapshot(String(snapshotKey).trim());
130
- if (!result.ok) {
131
- log.warn(`[FileSnapshot] 删除快照失败: ${result.error}`);
132
- res.status(result.error?.includes("not found") ? 404 : 500).json({ ok: false, error: result.error });
133
- return;
134
- }
135
- res.json({
136
- ok: true,
137
- snapshotKey: String(snapshotKey).trim(),
138
- message: `已删除快照 ${snapshotKey}`,
139
- });
140
- }
141
- catch (error) {
142
- const err = error;
143
- log.error(`[FileSnapshot] 删除快照异常: ${err.message}`);
144
- res.status(500).json({ ok: false, error: err.message || "delete snapshot failed" });
145
- }
146
- });
147
- /**
148
- * 快照存储诊断信息
149
- * POST /runtime/file-snapshot/info
150
- */
151
- fileSnapshotRouter.post("/file-snapshot/info", validateToken, async (_req, res) => {
152
- res.json({
153
- ok: true,
154
- snapshotRoot: getSnapshotRootPath(),
155
- });
156
- });
1
+ import{Router as c}from"express";import{validateToken as p}from"../middleware/auth.js";import{createLogger as u}from"../utils/logger.js";import{createSnapshot as f,restoreSnapshot as m,listSnapshots as d,deleteSnapshot as g,getSnapshotRootPath as S}from"../services/fileSnapshotStore.js";const h=c(),i=u("file-snapshot");h.post("/file-snapshot/create",p,async(n,t)=>{const{workspacePath:r,snapshotId:s,snapshotName:a,triggerType:o}=n.body||{};if(!r||!String(r).trim()){t.status(400).json({error:"workspacePath is required"});return}try{const e=await f({workspacePath:String(r).trim(),snapshotId:s?String(s).trim():void 0,snapshotName:a?String(a).trim():void 0,triggerType:o?String(o).trim():void 0});if(!e.ok){i.warn(`[FileSnapshot] \u521B\u5EFA\u5FEB\u7167\u5931\u8D25: ${e.error}`),t.status(500).json({ok:!1,error:e.error});return}t.json({ok:!0,snapshotId:e.snapshotId,snapshotKey:e.snapshotKey,fileCount:e.fileCount,totalBytes:e.totalBytes,workspaceHash:e.workspaceHash,workspacePath:String(r).trim()})}catch(e){const l=e;i.error(`[FileSnapshot] \u521B\u5EFA\u5FEB\u7167\u5F02\u5E38: ${l.message}`),t.status(500).json({ok:!1,error:l.message||"create snapshot failed"})}}),h.post("/file-snapshot/restore",p,async(n,t)=>{const{workspacePath:r,snapshotKey:s,preRestoreBackup:a}=n.body||{};if(!r||!String(r).trim()){t.status(400).json({error:"workspacePath is required"});return}if(!s||!String(s).trim()){t.status(400).json({error:"snapshotKey is required"});return}try{const o=await m({workspacePath:String(r).trim(),snapshotKey:String(s).trim(),preRestoreBackup:a!==!1});if(!o.ok){i.warn(`[FileSnapshot] \u8FD8\u539F\u5FEB\u7167\u5931\u8D25: ${o.error}`),t.status(500).json({ok:!1,error:o.error});return}t.json({ok:!0,filesRestored:o.filesRestored,filesDeleted:o.filesDeleted,filesSkipped:o.filesSkipped,preRestoreSnapshotKey:o.preRestoreSnapshotKey||null,workspacePath:String(r).trim()})}catch(o){const e=o;i.error(`[FileSnapshot] \u8FD8\u539F\u5FEB\u7167\u5F02\u5E38: ${e.message}`),t.status(500).json({ok:!1,error:e.message||"restore snapshot failed"})}}),h.post("/file-snapshot/list",p,async(n,t)=>{const{workspacePath:r}=n.body||{};if(!r||!String(r).trim()){t.status(400).json({error:"workspacePath is required"});return}try{const s=await d(String(r).trim());t.json({ok:!0,snapshots:s,count:s.length,workspacePath:String(r).trim()})}catch(s){const a=s;i.error(`[FileSnapshot] \u5217\u51FA\u5FEB\u7167\u5F02\u5E38: ${a.message}`),t.status(500).json({ok:!1,error:a.message||"list snapshots failed"})}}),h.post("/file-snapshot/delete",p,async(n,t)=>{const{snapshotKey:r}=n.body||{};if(!r||!String(r).trim()){t.status(400).json({error:"snapshotKey is required"});return}try{const s=await g(String(r).trim());if(!s.ok){i.warn(`[FileSnapshot] \u5220\u9664\u5FEB\u7167\u5931\u8D25: ${s.error}`),t.status(s.error?.includes("not found")?404:500).json({ok:!1,error:s.error});return}t.json({ok:!0,snapshotKey:String(r).trim(),message:`\u5DF2\u5220\u9664\u5FEB\u7167 ${r}`})}catch(s){const a=s;i.error(`[FileSnapshot] \u5220\u9664\u5FEB\u7167\u5F02\u5E38: ${a.message}`),t.status(500).json({ok:!1,error:a.message||"delete snapshot failed"})}}),h.post("/file-snapshot/info",p,async(n,t)=>{t.json({ok:!0,snapshotRoot:S()})});export{h as fileSnapshotRouter};
2
+
@@ -141,4 +141,3 @@ export declare function callAiForCommitMessage(aiBaseUrl: string, aiApiKey: stri
141
141
  */
142
142
  export declare function streamAiForCommitMessage(aiBaseUrl: string, aiApiKey: string, aiModel: string, diffContent: string, onDelta: (delta: string, accumulated: string) => void, abortSignal?: AbortSignal): Promise<string>;
143
143
  export {};
144
- //# sourceMappingURL=git.d.ts.map