axon-code 2.4.0

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 (1975) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +261 -0
  3. package/README.zh-CN.md +261 -0
  4. package/dist/agents/context.d.ts +289 -0
  5. package/dist/agents/context.d.ts.map +1 -0
  6. package/dist/agents/context.js +944 -0
  7. package/dist/agents/context.js.map +1 -0
  8. package/dist/agents/explore.d.ts +190 -0
  9. package/dist/agents/explore.d.ts.map +1 -0
  10. package/dist/agents/explore.js +582 -0
  11. package/dist/agents/explore.js.map +1 -0
  12. package/dist/agents/guide.d.ts +117 -0
  13. package/dist/agents/guide.d.ts.map +1 -0
  14. package/dist/agents/guide.js +690 -0
  15. package/dist/agents/guide.js.map +1 -0
  16. package/dist/agents/index.d.ts +11 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +17 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/monitor.d.ts +343 -0
  21. package/dist/agents/monitor.d.ts.map +1 -0
  22. package/dist/agents/monitor.js +963 -0
  23. package/dist/agents/monitor.js.map +1 -0
  24. package/dist/agents/parallel.d.ts +305 -0
  25. package/dist/agents/parallel.d.ts.map +1 -0
  26. package/dist/agents/parallel.js +717 -0
  27. package/dist/agents/parallel.js.map +1 -0
  28. package/dist/agents/plan.d.ts +236 -0
  29. package/dist/agents/plan.d.ts.map +1 -0
  30. package/dist/agents/plan.js +292 -0
  31. package/dist/agents/plan.js.map +1 -0
  32. package/dist/agents/resume.d.ts +209 -0
  33. package/dist/agents/resume.d.ts.map +1 -0
  34. package/dist/agents/resume.js +520 -0
  35. package/dist/agents/resume.js.map +1 -0
  36. package/dist/agents/statusline.d.ts +167 -0
  37. package/dist/agents/statusline.d.ts.map +1 -0
  38. package/dist/agents/statusline.js +546 -0
  39. package/dist/agents/statusline.js.map +1 -0
  40. package/dist/agents/teammate-context.d.ts +163 -0
  41. package/dist/agents/teammate-context.d.ts.map +1 -0
  42. package/dist/agents/teammate-context.js +272 -0
  43. package/dist/agents/teammate-context.js.map +1 -0
  44. package/dist/agents/tools.d.ts +30 -0
  45. package/dist/agents/tools.d.ts.map +1 -0
  46. package/dist/agents/tools.js +116 -0
  47. package/dist/agents/tools.js.map +1 -0
  48. package/dist/auth/index.d.ts +204 -0
  49. package/dist/auth/index.d.ts.map +1 -0
  50. package/dist/auth/index.js +1266 -0
  51. package/dist/auth/index.js.map +1 -0
  52. package/dist/auth/keychain.d.ts +74 -0
  53. package/dist/auth/keychain.d.ts.map +1 -0
  54. package/dist/auth/keychain.js +181 -0
  55. package/dist/auth/keychain.js.map +1 -0
  56. package/dist/auth/settings.d.ts +58 -0
  57. package/dist/auth/settings.d.ts.map +1 -0
  58. package/dist/auth/settings.js +260 -0
  59. package/dist/auth/settings.js.map +1 -0
  60. package/dist/background/index.d.ts +83 -0
  61. package/dist/background/index.d.ts.map +1 -0
  62. package/dist/background/index.js +106 -0
  63. package/dist/background/index.js.map +1 -0
  64. package/dist/background/persistence.d.ts +146 -0
  65. package/dist/background/persistence.d.ts.map +1 -0
  66. package/dist/background/persistence.js +347 -0
  67. package/dist/background/persistence.js.map +1 -0
  68. package/dist/background/shell-manager.d.ts +130 -0
  69. package/dist/background/shell-manager.d.ts.map +1 -0
  70. package/dist/background/shell-manager.js +401 -0
  71. package/dist/background/shell-manager.js.map +1 -0
  72. package/dist/background/task-queue.d.ts +96 -0
  73. package/dist/background/task-queue.d.ts.map +1 -0
  74. package/dist/background/task-queue.js +199 -0
  75. package/dist/background/task-queue.js.map +1 -0
  76. package/dist/background/timeout.d.ts +122 -0
  77. package/dist/background/timeout.d.ts.map +1 -0
  78. package/dist/background/timeout.js +247 -0
  79. package/dist/background/timeout.js.map +1 -0
  80. package/dist/blueprint/agent-decision-maker.d.ts +126 -0
  81. package/dist/blueprint/agent-decision-maker.d.ts.map +1 -0
  82. package/dist/blueprint/agent-decision-maker.js +433 -0
  83. package/dist/blueprint/agent-decision-maker.js.map +1 -0
  84. package/dist/blueprint/autonomous-worker.d.ts +182 -0
  85. package/dist/blueprint/autonomous-worker.d.ts.map +1 -0
  86. package/dist/blueprint/autonomous-worker.js +808 -0
  87. package/dist/blueprint/autonomous-worker.js.map +1 -0
  88. package/dist/blueprint/browser-test-tools.d.ts +277 -0
  89. package/dist/blueprint/browser-test-tools.d.ts.map +1 -0
  90. package/dist/blueprint/browser-test-tools.js +645 -0
  91. package/dist/blueprint/browser-test-tools.js.map +1 -0
  92. package/dist/blueprint/e2e-agent-registry.d.ts +27 -0
  93. package/dist/blueprint/e2e-agent-registry.d.ts.map +1 -0
  94. package/dist/blueprint/e2e-agent-registry.js +39 -0
  95. package/dist/blueprint/e2e-agent-registry.js.map +1 -0
  96. package/dist/blueprint/e2e-test-agent.d.ts +151 -0
  97. package/dist/blueprint/e2e-test-agent.d.ts.map +1 -0
  98. package/dist/blueprint/e2e-test-agent.js +612 -0
  99. package/dist/blueprint/e2e-test-agent.js.map +1 -0
  100. package/dist/blueprint/environment-checker.d.ts +113 -0
  101. package/dist/blueprint/environment-checker.d.ts.map +1 -0
  102. package/dist/blueprint/environment-checker.js +409 -0
  103. package/dist/blueprint/environment-checker.js.map +1 -0
  104. package/dist/blueprint/index.d.ts +26 -0
  105. package/dist/blueprint/index.d.ts.map +1 -0
  106. package/dist/blueprint/index.js +50 -0
  107. package/dist/blueprint/index.js.map +1 -0
  108. package/dist/blueprint/lead-agent.d.ts +97 -0
  109. package/dist/blueprint/lead-agent.d.ts.map +1 -0
  110. package/dist/blueprint/lead-agent.js +905 -0
  111. package/dist/blueprint/lead-agent.js.map +1 -0
  112. package/dist/blueprint/model-selector.d.ts +34 -0
  113. package/dist/blueprint/model-selector.d.ts.map +1 -0
  114. package/dist/blueprint/model-selector.js +83 -0
  115. package/dist/blueprint/model-selector.js.map +1 -0
  116. package/dist/blueprint/planner-session.d.ts +130 -0
  117. package/dist/blueprint/planner-session.d.ts.map +1 -0
  118. package/dist/blueprint/planner-session.js +479 -0
  119. package/dist/blueprint/planner-session.js.map +1 -0
  120. package/dist/blueprint/realtime-coordinator.d.ts +373 -0
  121. package/dist/blueprint/realtime-coordinator.d.ts.map +1 -0
  122. package/dist/blueprint/realtime-coordinator.js +1454 -0
  123. package/dist/blueprint/realtime-coordinator.js.map +1 -0
  124. package/dist/blueprint/smart-planner.d.ts +346 -0
  125. package/dist/blueprint/smart-planner.d.ts.map +1 -0
  126. package/dist/blueprint/smart-planner.js +2426 -0
  127. package/dist/blueprint/smart-planner.js.map +1 -0
  128. package/dist/blueprint/task-queue.d.ts +62 -0
  129. package/dist/blueprint/task-queue.d.ts.map +1 -0
  130. package/dist/blueprint/task-queue.js +185 -0
  131. package/dist/blueprint/task-queue.js.map +1 -0
  132. package/dist/blueprint/task-reviewer.d.ts +168 -0
  133. package/dist/blueprint/task-reviewer.d.ts.map +1 -0
  134. package/dist/blueprint/task-reviewer.js +570 -0
  135. package/dist/blueprint/task-reviewer.js.map +1 -0
  136. package/dist/blueprint/types.d.ts +1054 -0
  137. package/dist/blueprint/types.d.ts.map +1 -0
  138. package/dist/blueprint/types.js +49 -0
  139. package/dist/blueprint/types.js.map +1 -0
  140. package/dist/blueprint/verification-service.d.ts +134 -0
  141. package/dist/blueprint/verification-service.d.ts.map +1 -0
  142. package/dist/blueprint/verification-service.js +315 -0
  143. package/dist/blueprint/verification-service.js.map +1 -0
  144. package/dist/blueprint/visual-comparator.d.ts +112 -0
  145. package/dist/blueprint/visual-comparator.d.ts.map +1 -0
  146. package/dist/blueprint/visual-comparator.js +309 -0
  147. package/dist/blueprint/visual-comparator.js.map +1 -0
  148. package/dist/browser/controller.d.ts +188 -0
  149. package/dist/browser/controller.d.ts.map +1 -0
  150. package/dist/browser/controller.js +1256 -0
  151. package/dist/browser/controller.js.map +1 -0
  152. package/dist/browser/detect.d.ts +14 -0
  153. package/dist/browser/detect.d.ts.map +1 -0
  154. package/dist/browser/detect.js +93 -0
  155. package/dist/browser/detect.js.map +1 -0
  156. package/dist/browser/errors.d.ts +14 -0
  157. package/dist/browser/errors.d.ts.map +1 -0
  158. package/dist/browser/errors.js +45 -0
  159. package/dist/browser/errors.js.map +1 -0
  160. package/dist/browser/extension/background-utils.js +53 -0
  161. package/dist/browser/extension/background.js +895 -0
  162. package/dist/browser/extension/manifest.json +28 -0
  163. package/dist/browser/extension/options.html +214 -0
  164. package/dist/browser/extension/options.js +201 -0
  165. package/dist/browser/extension-relay-auth.d.ts +18 -0
  166. package/dist/browser/extension-relay-auth.d.ts.map +1 -0
  167. package/dist/browser/extension-relay-auth.js +53 -0
  168. package/dist/browser/extension-relay-auth.js.map +1 -0
  169. package/dist/browser/extension-relay.d.ts +39 -0
  170. package/dist/browser/extension-relay.d.ts.map +1 -0
  171. package/dist/browser/extension-relay.js +855 -0
  172. package/dist/browser/extension-relay.js.map +1 -0
  173. package/dist/browser/index.d.ts +11 -0
  174. package/dist/browser/index.d.ts.map +1 -0
  175. package/dist/browser/index.js +11 -0
  176. package/dist/browser/index.js.map +1 -0
  177. package/dist/browser/manager.d.ts +77 -0
  178. package/dist/browser/manager.d.ts.map +1 -0
  179. package/dist/browser/manager.js +911 -0
  180. package/dist/browser/manager.js.map +1 -0
  181. package/dist/browser/navigation-guard.d.ts +15 -0
  182. package/dist/browser/navigation-guard.d.ts.map +1 -0
  183. package/dist/browser/navigation-guard.js +163 -0
  184. package/dist/browser/navigation-guard.js.map +1 -0
  185. package/dist/browser/profiles.d.ts +49 -0
  186. package/dist/browser/profiles.d.ts.map +1 -0
  187. package/dist/browser/profiles.js +211 -0
  188. package/dist/browser/profiles.js.map +1 -0
  189. package/dist/browser/types.d.ts +96 -0
  190. package/dist/browser/types.d.ts.map +1 -0
  191. package/dist/browser/types.js +5 -0
  192. package/dist/browser/types.js.map +1 -0
  193. package/dist/checkpoint/index.d.ts +289 -0
  194. package/dist/checkpoint/index.d.ts.map +1 -0
  195. package/dist/checkpoint/index.js +1424 -0
  196. package/dist/checkpoint/index.js.map +1 -0
  197. package/dist/chrome/index.d.ts +31 -0
  198. package/dist/chrome/index.d.ts.map +1 -0
  199. package/dist/chrome/index.js +41 -0
  200. package/dist/chrome/index.js.map +1 -0
  201. package/dist/chrome-mcp/index.d.ts +84 -0
  202. package/dist/chrome-mcp/index.d.ts.map +1 -0
  203. package/dist/chrome-mcp/index.js +192 -0
  204. package/dist/chrome-mcp/index.js.map +1 -0
  205. package/dist/chrome-mcp/mcp-server.d.ts +115 -0
  206. package/dist/chrome-mcp/mcp-server.d.ts.map +1 -0
  207. package/dist/chrome-mcp/mcp-server.js +312 -0
  208. package/dist/chrome-mcp/mcp-server.js.map +1 -0
  209. package/dist/chrome-mcp/native-host.d.ts +65 -0
  210. package/dist/chrome-mcp/native-host.d.ts.map +1 -0
  211. package/dist/chrome-mcp/native-host.js +357 -0
  212. package/dist/chrome-mcp/native-host.js.map +1 -0
  213. package/dist/chrome-mcp/socket-client.d.ts +105 -0
  214. package/dist/chrome-mcp/socket-client.d.ts.map +1 -0
  215. package/dist/chrome-mcp/socket-client.js +325 -0
  216. package/dist/chrome-mcp/socket-client.js.map +1 -0
  217. package/dist/chrome-mcp/socket-server.d.ts +65 -0
  218. package/dist/chrome-mcp/socket-server.d.ts.map +1 -0
  219. package/dist/chrome-mcp/socket-server.js +354 -0
  220. package/dist/chrome-mcp/socket-server.js.map +1 -0
  221. package/dist/chrome-mcp/tools.d.ts +22 -0
  222. package/dist/chrome-mcp/tools.d.ts.map +1 -0
  223. package/dist/chrome-mcp/tools.js +372 -0
  224. package/dist/chrome-mcp/tools.js.map +1 -0
  225. package/dist/cli.d.ts +7 -0
  226. package/dist/cli.d.ts.map +1 -0
  227. package/dist/cli.js +3302 -0
  228. package/dist/cli.js.map +1 -0
  229. package/dist/codesign/index.d.ts +84 -0
  230. package/dist/codesign/index.d.ts.map +1 -0
  231. package/dist/codesign/index.js +289 -0
  232. package/dist/codesign/index.js.map +1 -0
  233. package/dist/commands/api.d.ts +8 -0
  234. package/dist/commands/api.d.ts.map +1 -0
  235. package/dist/commands/api.js +510 -0
  236. package/dist/commands/api.js.map +1 -0
  237. package/dist/commands/auth.d.ts +13 -0
  238. package/dist/commands/auth.d.ts.map +1 -0
  239. package/dist/commands/auth.js +713 -0
  240. package/dist/commands/auth.js.map +1 -0
  241. package/dist/commands/config-cmd.d.ts +12 -0
  242. package/dist/commands/config-cmd.d.ts.map +1 -0
  243. package/dist/commands/config-cmd.js +578 -0
  244. package/dist/commands/config-cmd.js.map +1 -0
  245. package/dist/commands/config.d.ts +22 -0
  246. package/dist/commands/config.d.ts.map +1 -0
  247. package/dist/commands/config.js +2457 -0
  248. package/dist/commands/config.js.map +1 -0
  249. package/dist/commands/development.d.ts +14 -0
  250. package/dist/commands/development.d.ts.map +1 -0
  251. package/dist/commands/development.js +905 -0
  252. package/dist/commands/development.js.map +1 -0
  253. package/dist/commands/general.d.ts +15 -0
  254. package/dist/commands/general.d.ts.map +1 -0
  255. package/dist/commands/general.js +620 -0
  256. package/dist/commands/general.js.map +1 -0
  257. package/dist/commands/index.d.ts +28 -0
  258. package/dist/commands/index.d.ts.map +1 -0
  259. package/dist/commands/index.js +70 -0
  260. package/dist/commands/index.js.map +1 -0
  261. package/dist/commands/registry.d.ts +16 -0
  262. package/dist/commands/registry.d.ts.map +1 -0
  263. package/dist/commands/registry.js +55 -0
  264. package/dist/commands/registry.js.map +1 -0
  265. package/dist/commands/session.d.ts +14 -0
  266. package/dist/commands/session.d.ts.map +1 -0
  267. package/dist/commands/session.js +1256 -0
  268. package/dist/commands/session.js.map +1 -0
  269. package/dist/commands/settings.d.ts +15 -0
  270. package/dist/commands/settings.d.ts.map +1 -0
  271. package/dist/commands/settings.js +439 -0
  272. package/dist/commands/settings.js.map +1 -0
  273. package/dist/commands/tools.d.ts +14 -0
  274. package/dist/commands/tools.d.ts.map +1 -0
  275. package/dist/commands/tools.js +1579 -0
  276. package/dist/commands/tools.js.map +1 -0
  277. package/dist/commands/types.d.ts +82 -0
  278. package/dist/commands/types.d.ts.map +1 -0
  279. package/dist/commands/types.js +5 -0
  280. package/dist/commands/types.js.map +1 -0
  281. package/dist/commands/utility.d.ts +19 -0
  282. package/dist/commands/utility.d.ts.map +1 -0
  283. package/dist/commands/utility.js +738 -0
  284. package/dist/commands/utility.js.map +1 -0
  285. package/dist/config/axon-md-parser.d.ts +167 -0
  286. package/dist/config/axon-md-parser.d.ts.map +1 -0
  287. package/dist/config/axon-md-parser.js +472 -0
  288. package/dist/config/axon-md-parser.js.map +1 -0
  289. package/dist/config/builtin-api.d.ts +2 -0
  290. package/dist/config/builtin-api.d.ts.map +1 -0
  291. package/dist/config/builtin-api.js +2 -0
  292. package/dist/config/builtin-api.js.map +1 -0
  293. package/dist/config/config-command.d.ts +81 -0
  294. package/dist/config/config-command.d.ts.map +1 -0
  295. package/dist/config/config-command.js +292 -0
  296. package/dist/config/config-command.js.map +1 -0
  297. package/dist/config/index.d.ts +1700 -0
  298. package/dist/config/index.d.ts.map +1 -0
  299. package/dist/config/index.js +1677 -0
  300. package/dist/config/index.js.map +1 -0
  301. package/dist/config/keybindings.d.ts +141 -0
  302. package/dist/config/keybindings.d.ts.map +1 -0
  303. package/dist/config/keybindings.js +708 -0
  304. package/dist/config/keybindings.js.map +1 -0
  305. package/dist/context/__tests__/enhanced.test.d.ts +5 -0
  306. package/dist/context/__tests__/enhanced.test.d.ts.map +1 -0
  307. package/dist/context/__tests__/enhanced.test.js +298 -0
  308. package/dist/context/__tests__/enhanced.test.js.map +1 -0
  309. package/dist/context/enhanced.d.ts +244 -0
  310. package/dist/context/enhanced.d.ts.map +1 -0
  311. package/dist/context/enhanced.js +527 -0
  312. package/dist/context/enhanced.js.map +1 -0
  313. package/dist/context/index.d.ts +249 -0
  314. package/dist/context/index.d.ts.map +1 -0
  315. package/dist/context/index.js +1043 -0
  316. package/dist/context/index.js.map +1 -0
  317. package/dist/context/intent-enricher.d.ts +38 -0
  318. package/dist/context/intent-enricher.d.ts.map +1 -0
  319. package/dist/context/intent-enricher.js +212 -0
  320. package/dist/context/intent-enricher.js.map +1 -0
  321. package/dist/context/link-detector.d.ts +20 -0
  322. package/dist/context/link-detector.d.ts.map +1 -0
  323. package/dist/context/link-detector.js +99 -0
  324. package/dist/context/link-detector.js.map +1 -0
  325. package/dist/context/session-memory.d.ts +206 -0
  326. package/dist/context/session-memory.d.ts.map +1 -0
  327. package/dist/context/session-memory.js +542 -0
  328. package/dist/context/session-memory.js.map +1 -0
  329. package/dist/context/summarizer.d.ts +27 -0
  330. package/dist/context/summarizer.d.ts.map +1 -0
  331. package/dist/context/summarizer.js +157 -0
  332. package/dist/context/summarizer.js.map +1 -0
  333. package/dist/context/window.d.ts +104 -0
  334. package/dist/context/window.d.ts.map +1 -0
  335. package/dist/context/window.js +140 -0
  336. package/dist/context/window.js.map +1 -0
  337. package/dist/core/backgroundTasks.d.ts +87 -0
  338. package/dist/core/backgroundTasks.d.ts.map +1 -0
  339. package/dist/core/backgroundTasks.js +229 -0
  340. package/dist/core/backgroundTasks.js.map +1 -0
  341. package/dist/core/cache-keepalive.d.ts +37 -0
  342. package/dist/core/cache-keepalive.d.ts.map +1 -0
  343. package/dist/core/cache-keepalive.js +130 -0
  344. package/dist/core/cache-keepalive.js.map +1 -0
  345. package/dist/core/client.cache.test.d.ts +13 -0
  346. package/dist/core/client.cache.test.d.ts.map +1 -0
  347. package/dist/core/client.cache.test.js +315 -0
  348. package/dist/core/client.cache.test.js.map +1 -0
  349. package/dist/core/client.d.ts +306 -0
  350. package/dist/core/client.d.ts.map +1 -0
  351. package/dist/core/client.js +1930 -0
  352. package/dist/core/client.js.map +1 -0
  353. package/dist/core/cwd-context.d.ts +53 -0
  354. package/dist/core/cwd-context.d.ts.map +1 -0
  355. package/dist/core/cwd-context.js +102 -0
  356. package/dist/core/cwd-context.js.map +1 -0
  357. package/dist/core/index.d.ts +9 -0
  358. package/dist/core/index.d.ts.map +1 -0
  359. package/dist/core/index.js +9 -0
  360. package/dist/core/index.js.map +1 -0
  361. package/dist/core/loop.d.ts +401 -0
  362. package/dist/core/loop.d.ts.map +1 -0
  363. package/dist/core/loop.js +3375 -0
  364. package/dist/core/loop.js.map +1 -0
  365. package/dist/core/retryLogic.d.ts +84 -0
  366. package/dist/core/retryLogic.d.ts.map +1 -0
  367. package/dist/core/retryLogic.js +157 -0
  368. package/dist/core/retryLogic.js.map +1 -0
  369. package/dist/core/session-context.d.ts +24 -0
  370. package/dist/core/session-context.d.ts.map +1 -0
  371. package/dist/core/session-context.js +35 -0
  372. package/dist/core/session-context.js.map +1 -0
  373. package/dist/core/session.d.ts +229 -0
  374. package/dist/core/session.d.ts.map +1 -0
  375. package/dist/core/session.js +729 -0
  376. package/dist/core/session.js.map +1 -0
  377. package/dist/core/validateToolResults.test.d.ts +6 -0
  378. package/dist/core/validateToolResults.test.d.ts.map +1 -0
  379. package/dist/core/validateToolResults.test.js +303 -0
  380. package/dist/core/validateToolResults.test.js.map +1 -0
  381. package/dist/daemon/alarm.d.ts +62 -0
  382. package/dist/daemon/alarm.d.ts.map +1 -0
  383. package/dist/daemon/alarm.js +145 -0
  384. package/dist/daemon/alarm.js.map +1 -0
  385. package/dist/daemon/config.d.ts +225 -0
  386. package/dist/daemon/config.d.ts.map +1 -0
  387. package/dist/daemon/config.js +104 -0
  388. package/dist/daemon/config.js.map +1 -0
  389. package/dist/daemon/executor.d.ts +52 -0
  390. package/dist/daemon/executor.d.ts.map +1 -0
  391. package/dist/daemon/executor.js +288 -0
  392. package/dist/daemon/executor.js.map +1 -0
  393. package/dist/daemon/index.d.ts +72 -0
  394. package/dist/daemon/index.d.ts.map +1 -0
  395. package/dist/daemon/index.js +394 -0
  396. package/dist/daemon/index.js.map +1 -0
  397. package/dist/daemon/locked.d.ts +15 -0
  398. package/dist/daemon/locked.d.ts.map +1 -0
  399. package/dist/daemon/locked.js +16 -0
  400. package/dist/daemon/locked.js.map +1 -0
  401. package/dist/daemon/notifier.d.ts +25 -0
  402. package/dist/daemon/notifier.d.ts.map +1 -0
  403. package/dist/daemon/notifier.js +87 -0
  404. package/dist/daemon/notifier.js.map +1 -0
  405. package/dist/daemon/run-log.d.ts +43 -0
  406. package/dist/daemon/run-log.d.ts.map +1 -0
  407. package/dist/daemon/run-log.js +126 -0
  408. package/dist/daemon/run-log.js.map +1 -0
  409. package/dist/daemon/scheduler.d.ts +85 -0
  410. package/dist/daemon/scheduler.d.ts.map +1 -0
  411. package/dist/daemon/scheduler.js +379 -0
  412. package/dist/daemon/scheduler.js.map +1 -0
  413. package/dist/daemon/store.d.ts +94 -0
  414. package/dist/daemon/store.d.ts.map +1 -0
  415. package/dist/daemon/store.js +121 -0
  416. package/dist/daemon/store.js.map +1 -0
  417. package/dist/daemon/time-parser.d.ts +15 -0
  418. package/dist/daemon/time-parser.d.ts.map +1 -0
  419. package/dist/daemon/time-parser.js +68 -0
  420. package/dist/daemon/time-parser.js.map +1 -0
  421. package/dist/daemon/watcher.d.ts +34 -0
  422. package/dist/daemon/watcher.d.ts.map +1 -0
  423. package/dist/daemon/watcher.js +105 -0
  424. package/dist/daemon/watcher.js.map +1 -0
  425. package/dist/database/drivers/mongo.d.ts +14 -0
  426. package/dist/database/drivers/mongo.d.ts.map +1 -0
  427. package/dist/database/drivers/mongo.js +112 -0
  428. package/dist/database/drivers/mongo.js.map +1 -0
  429. package/dist/database/drivers/mysql.d.ts +13 -0
  430. package/dist/database/drivers/mysql.d.ts.map +1 -0
  431. package/dist/database/drivers/mysql.js +76 -0
  432. package/dist/database/drivers/mysql.js.map +1 -0
  433. package/dist/database/drivers/postgres.d.ts +13 -0
  434. package/dist/database/drivers/postgres.d.ts.map +1 -0
  435. package/dist/database/drivers/postgres.js +79 -0
  436. package/dist/database/drivers/postgres.js.map +1 -0
  437. package/dist/database/drivers/redis.d.ts +13 -0
  438. package/dist/database/drivers/redis.d.ts.map +1 -0
  439. package/dist/database/drivers/redis.js +100 -0
  440. package/dist/database/drivers/redis.js.map +1 -0
  441. package/dist/database/drivers/sqlite.d.ts +13 -0
  442. package/dist/database/drivers/sqlite.d.ts.map +1 -0
  443. package/dist/database/drivers/sqlite.js +89 -0
  444. package/dist/database/drivers/sqlite.js.map +1 -0
  445. package/dist/database/index.d.ts +21 -0
  446. package/dist/database/index.d.ts.map +1 -0
  447. package/dist/database/index.js +97 -0
  448. package/dist/database/index.js.map +1 -0
  449. package/dist/database/types.d.ts +54 -0
  450. package/dist/database/types.d.ts.map +1 -0
  451. package/dist/database/types.js +2 -0
  452. package/dist/database/types.js.map +1 -0
  453. package/dist/debugger/dap-client.d.ts +32 -0
  454. package/dist/debugger/dap-client.d.ts.map +1 -0
  455. package/dist/debugger/dap-client.js +108 -0
  456. package/dist/debugger/dap-client.js.map +1 -0
  457. package/dist/debugger/index.d.ts +30 -0
  458. package/dist/debugger/index.d.ts.map +1 -0
  459. package/dist/debugger/index.js +574 -0
  460. package/dist/debugger/index.js.map +1 -0
  461. package/dist/debugger/types.d.ts +59 -0
  462. package/dist/debugger/types.d.ts.map +1 -0
  463. package/dist/debugger/types.js +2 -0
  464. package/dist/debugger/types.js.map +1 -0
  465. package/dist/diagnostics/index.d.ts +72 -0
  466. package/dist/diagnostics/index.d.ts.map +1 -0
  467. package/dist/diagnostics/index.js +1013 -0
  468. package/dist/diagnostics/index.js.map +1 -0
  469. package/dist/ear/index.d.ts +73 -0
  470. package/dist/ear/index.d.ts.map +1 -0
  471. package/dist/ear/index.js +114 -0
  472. package/dist/ear/index.js.map +1 -0
  473. package/dist/email-mcp/index.d.ts +12 -0
  474. package/dist/email-mcp/index.d.ts.map +1 -0
  475. package/dist/email-mcp/index.js +11 -0
  476. package/dist/email-mcp/index.js.map +1 -0
  477. package/dist/email-mcp/mcp-server.d.ts +18 -0
  478. package/dist/email-mcp/mcp-server.d.ts.map +1 -0
  479. package/dist/email-mcp/mcp-server.js +381 -0
  480. package/dist/email-mcp/mcp-server.js.map +1 -0
  481. package/dist/email-mcp/tools.d.ts +22 -0
  482. package/dist/email-mcp/tools.d.ts.map +1 -0
  483. package/dist/email-mcp/tools.js +251 -0
  484. package/dist/email-mcp/tools.js.map +1 -0
  485. package/dist/env/index.d.ts +27 -0
  486. package/dist/env/index.d.ts.map +1 -0
  487. package/dist/env/index.js +31 -0
  488. package/dist/env/index.js.map +1 -0
  489. package/dist/env/manager.d.ts +150 -0
  490. package/dist/env/manager.d.ts.map +1 -0
  491. package/dist/env/manager.js +290 -0
  492. package/dist/env/manager.js.map +1 -0
  493. package/dist/env/sensitive.d.ts +134 -0
  494. package/dist/env/sensitive.d.ts.map +1 -0
  495. package/dist/env/sensitive.js +255 -0
  496. package/dist/env/sensitive.js.map +1 -0
  497. package/dist/env/validator.d.ts +93 -0
  498. package/dist/env/validator.d.ts.map +1 -0
  499. package/dist/env/validator.js +122 -0
  500. package/dist/env/validator.js.map +1 -0
  501. package/dist/env/validators/builtin.d.ts +68 -0
  502. package/dist/env/validators/builtin.d.ts.map +1 -0
  503. package/dist/env/validators/builtin.js +294 -0
  504. package/dist/env/validators/builtin.js.map +1 -0
  505. package/dist/eye/camera.py +396 -0
  506. package/dist/eye/index.d.ts +70 -0
  507. package/dist/eye/index.d.ts.map +1 -0
  508. package/dist/eye/index.js +356 -0
  509. package/dist/eye/index.js.map +1 -0
  510. package/dist/fast-mode/index.d.ts +136 -0
  511. package/dist/fast-mode/index.d.ts.map +1 -0
  512. package/dist/fast-mode/index.js +390 -0
  513. package/dist/fast-mode/index.js.map +1 -0
  514. package/dist/fast-mode/provider.d.ts +10 -0
  515. package/dist/fast-mode/provider.d.ts.map +1 -0
  516. package/dist/fast-mode/provider.js +23 -0
  517. package/dist/fast-mode/provider.js.map +1 -0
  518. package/dist/feishu/bot.d.ts +71 -0
  519. package/dist/feishu/bot.d.ts.map +1 -0
  520. package/dist/feishu/bot.js +287 -0
  521. package/dist/feishu/bot.js.map +1 -0
  522. package/dist/feishu/config.d.ts +54 -0
  523. package/dist/feishu/config.d.ts.map +1 -0
  524. package/dist/feishu/config.js +100 -0
  525. package/dist/feishu/config.js.map +1 -0
  526. package/dist/feishu/index.d.ts +7 -0
  527. package/dist/feishu/index.d.ts.map +1 -0
  528. package/dist/feishu/index.js +5 -0
  529. package/dist/feishu/index.js.map +1 -0
  530. package/dist/feishu/message-handler.d.ts +42 -0
  531. package/dist/feishu/message-handler.d.ts.map +1 -0
  532. package/dist/feishu/message-handler.js +112 -0
  533. package/dist/feishu/message-handler.js.map +1 -0
  534. package/dist/feishu/session-manager.d.ts +57 -0
  535. package/dist/feishu/session-manager.d.ts.map +1 -0
  536. package/dist/feishu/session-manager.js +179 -0
  537. package/dist/feishu/session-manager.js.map +1 -0
  538. package/dist/feishu-cli.d.ts +34 -0
  539. package/dist/feishu-cli.d.ts.map +1 -0
  540. package/dist/feishu-cli.js +132 -0
  541. package/dist/feishu-cli.js.map +1 -0
  542. package/dist/git/analysis.d.ts +135 -0
  543. package/dist/git/analysis.d.ts.map +1 -0
  544. package/dist/git/analysis.js +259 -0
  545. package/dist/git/analysis.js.map +1 -0
  546. package/dist/git/core.d.ts +175 -0
  547. package/dist/git/core.d.ts.map +1 -0
  548. package/dist/git/core.js +349 -0
  549. package/dist/git/core.js.map +1 -0
  550. package/dist/git/ignore.d.ts +74 -0
  551. package/dist/git/ignore.d.ts.map +1 -0
  552. package/dist/git/ignore.js +257 -0
  553. package/dist/git/ignore.js.map +1 -0
  554. package/dist/git/index.d.ts +37 -0
  555. package/dist/git/index.d.ts.map +1 -0
  556. package/dist/git/index.js +48 -0
  557. package/dist/git/index.js.map +1 -0
  558. package/dist/git/operations.d.ts +96 -0
  559. package/dist/git/operations.d.ts.map +1 -0
  560. package/dist/git/operations.js +288 -0
  561. package/dist/git/operations.js.map +1 -0
  562. package/dist/git/safety.d.ts +107 -0
  563. package/dist/git/safety.d.ts.map +1 -0
  564. package/dist/git/safety.js +293 -0
  565. package/dist/git/safety.js.map +1 -0
  566. package/dist/github/index.d.ts +58 -0
  567. package/dist/github/index.d.ts.map +1 -0
  568. package/dist/github/index.js +246 -0
  569. package/dist/github/index.js.map +1 -0
  570. package/dist/goals/goal-daemon.d.ts +54 -0
  571. package/dist/goals/goal-daemon.d.ts.map +1 -0
  572. package/dist/goals/goal-daemon.js +171 -0
  573. package/dist/goals/goal-daemon.js.map +1 -0
  574. package/dist/goals/goal-evaluator.d.ts +28 -0
  575. package/dist/goals/goal-evaluator.d.ts.map +1 -0
  576. package/dist/goals/goal-evaluator.js +117 -0
  577. package/dist/goals/goal-evaluator.js.map +1 -0
  578. package/dist/goals/goal-planner.d.ts +21 -0
  579. package/dist/goals/goal-planner.d.ts.map +1 -0
  580. package/dist/goals/goal-planner.js +80 -0
  581. package/dist/goals/goal-planner.js.map +1 -0
  582. package/dist/goals/goal-store.d.ts +31 -0
  583. package/dist/goals/goal-store.d.ts.map +1 -0
  584. package/dist/goals/goal-store.js +238 -0
  585. package/dist/goals/goal-store.js.map +1 -0
  586. package/dist/goals/index.d.ts +15 -0
  587. package/dist/goals/index.d.ts.map +1 -0
  588. package/dist/goals/index.js +22 -0
  589. package/dist/goals/index.js.map +1 -0
  590. package/dist/goals/storage.d.ts +83 -0
  591. package/dist/goals/storage.d.ts.map +1 -0
  592. package/dist/goals/storage.js +235 -0
  593. package/dist/goals/storage.js.map +1 -0
  594. package/dist/goals/types.d.ts +138 -0
  595. package/dist/goals/types.d.ts.map +1 -0
  596. package/dist/goals/types.js +5 -0
  597. package/dist/goals/types.js.map +1 -0
  598. package/dist/hooks/blueprint-hooks.d.ts +52 -0
  599. package/dist/hooks/blueprint-hooks.d.ts.map +1 -0
  600. package/dist/hooks/blueprint-hooks.js +75 -0
  601. package/dist/hooks/blueprint-hooks.js.map +1 -0
  602. package/dist/hooks/index.d.ts +421 -0
  603. package/dist/hooks/index.d.ts.map +1 -0
  604. package/dist/hooks/index.js +1225 -0
  605. package/dist/hooks/index.js.map +1 -0
  606. package/dist/hooks/index.test.d.ts +33 -0
  607. package/dist/hooks/index.test.d.ts.map +1 -0
  608. package/dist/hooks/index.test.js +199 -0
  609. package/dist/hooks/index.test.js.map +1 -0
  610. package/dist/i18n/index.d.ts +25 -0
  611. package/dist/i18n/index.d.ts.map +1 -0
  612. package/dist/i18n/index.js +96 -0
  613. package/dist/i18n/index.js.map +1 -0
  614. package/dist/i18n/locales/en.d.ts +786 -0
  615. package/dist/i18n/locales/en.d.ts.map +1 -0
  616. package/dist/i18n/locales/en.js +865 -0
  617. package/dist/i18n/locales/en.js.map +1 -0
  618. package/dist/i18n/locales/zh.d.ts +7 -0
  619. package/dist/i18n/locales/zh.d.ts.map +1 -0
  620. package/dist/i18n/locales/zh.js +862 -0
  621. package/dist/i18n/locales/zh.js.map +1 -0
  622. package/dist/ide/index.d.ts +81 -0
  623. package/dist/ide/index.d.ts.map +1 -0
  624. package/dist/ide/index.js +371 -0
  625. package/dist/ide/index.js.map +1 -0
  626. package/dist/index.d.ts +39 -0
  627. package/dist/index.d.ts.map +1 -0
  628. package/dist/index.js +63 -0
  629. package/dist/index.js.map +1 -0
  630. package/dist/lifecycle/index.d.ts +120 -0
  631. package/dist/lifecycle/index.d.ts.map +1 -0
  632. package/dist/lifecycle/index.js +178 -0
  633. package/dist/lifecycle/index.js.map +1 -0
  634. package/dist/lsp/index.d.ts +12 -0
  635. package/dist/lsp/index.d.ts.map +1 -0
  636. package/dist/lsp/index.js +20 -0
  637. package/dist/lsp/index.js.map +1 -0
  638. package/dist/lsp/manager.d.ts +307 -0
  639. package/dist/lsp/manager.d.ts.map +1 -0
  640. package/dist/lsp/manager.js +1012 -0
  641. package/dist/lsp/manager.js.map +1 -0
  642. package/dist/map/index.d.ts +2 -0
  643. package/dist/map/index.d.ts.map +1 -0
  644. package/dist/map/index.js +2 -0
  645. package/dist/map/index.js.map +1 -0
  646. package/dist/map/types.d.ts +264 -0
  647. package/dist/map/types.d.ts.map +1 -0
  648. package/dist/map/types.js +6 -0
  649. package/dist/map/types.js.map +1 -0
  650. package/dist/mcp/adapter.d.ts +217 -0
  651. package/dist/mcp/adapter.d.ts.map +1 -0
  652. package/dist/mcp/adapter.js +527 -0
  653. package/dist/mcp/adapter.js.map +1 -0
  654. package/dist/mcp/auto-discovery.d.ts +303 -0
  655. package/dist/mcp/auto-discovery.d.ts.map +1 -0
  656. package/dist/mcp/auto-discovery.js +1009 -0
  657. package/dist/mcp/auto-discovery.js.map +1 -0
  658. package/dist/mcp/cancellation.d.ts +258 -0
  659. package/dist/mcp/cancellation.d.ts.map +1 -0
  660. package/dist/mcp/cancellation.js +478 -0
  661. package/dist/mcp/cancellation.js.map +1 -0
  662. package/dist/mcp/config.d.ts +521 -0
  663. package/dist/mcp/config.d.ts.map +1 -0
  664. package/dist/mcp/config.js +694 -0
  665. package/dist/mcp/config.js.map +1 -0
  666. package/dist/mcp/connection.d.ts +228 -0
  667. package/dist/mcp/connection.d.ts.map +1 -0
  668. package/dist/mcp/connection.js +707 -0
  669. package/dist/mcp/connection.js.map +1 -0
  670. package/dist/mcp/discovery.d.ts +128 -0
  671. package/dist/mcp/discovery.d.ts.map +1 -0
  672. package/dist/mcp/discovery.js +577 -0
  673. package/dist/mcp/discovery.js.map +1 -0
  674. package/dist/mcp/errors.d.ts +273 -0
  675. package/dist/mcp/errors.d.ts.map +1 -0
  676. package/dist/mcp/errors.js +566 -0
  677. package/dist/mcp/errors.js.map +1 -0
  678. package/dist/mcp/index.d.ts +10 -0
  679. package/dist/mcp/index.d.ts.map +1 -0
  680. package/dist/mcp/index.js +29 -0
  681. package/dist/mcp/index.js.map +1 -0
  682. package/dist/mcp/integration.d.ts +71 -0
  683. package/dist/mcp/integration.d.ts.map +1 -0
  684. package/dist/mcp/integration.js +198 -0
  685. package/dist/mcp/integration.js.map +1 -0
  686. package/dist/mcp/lifecycle.d.ts +261 -0
  687. package/dist/mcp/lifecycle.d.ts.map +1 -0
  688. package/dist/mcp/lifecycle.js +714 -0
  689. package/dist/mcp/lifecycle.js.map +1 -0
  690. package/dist/mcp/logging.d.ts +166 -0
  691. package/dist/mcp/logging.d.ts.map +1 -0
  692. package/dist/mcp/logging.js +346 -0
  693. package/dist/mcp/logging.js.map +1 -0
  694. package/dist/mcp/notifications.d.ts +221 -0
  695. package/dist/mcp/notifications.d.ts.map +1 -0
  696. package/dist/mcp/notifications.js +356 -0
  697. package/dist/mcp/notifications.js.map +1 -0
  698. package/dist/mcp/protocol.d.ts +516 -0
  699. package/dist/mcp/protocol.d.ts.map +1 -0
  700. package/dist/mcp/protocol.js +490 -0
  701. package/dist/mcp/protocol.js.map +1 -0
  702. package/dist/mcp/resources.d.ts +197 -0
  703. package/dist/mcp/resources.d.ts.map +1 -0
  704. package/dist/mcp/resources.js +432 -0
  705. package/dist/mcp/resources.js.map +1 -0
  706. package/dist/mcp/roots.d.ts +149 -0
  707. package/dist/mcp/roots.d.ts.map +1 -0
  708. package/dist/mcp/roots.js +368 -0
  709. package/dist/mcp/roots.js.map +1 -0
  710. package/dist/mcp/sampling.d.ts +170 -0
  711. package/dist/mcp/sampling.d.ts.map +1 -0
  712. package/dist/mcp/sampling.js +373 -0
  713. package/dist/mcp/sampling.js.map +1 -0
  714. package/dist/mcp/tools.d.ts +347 -0
  715. package/dist/mcp/tools.d.ts.map +1 -0
  716. package/dist/mcp/tools.js +773 -0
  717. package/dist/mcp/tools.js.map +1 -0
  718. package/dist/mcp/websocket-connection.d.ts +164 -0
  719. package/dist/mcp/websocket-connection.d.ts.map +1 -0
  720. package/dist/mcp/websocket-connection.js +503 -0
  721. package/dist/mcp/websocket-connection.js.map +1 -0
  722. package/dist/mcp-cli.d.ts +26 -0
  723. package/dist/mcp-cli.d.ts.map +1 -0
  724. package/dist/mcp-cli.js +366 -0
  725. package/dist/mcp-cli.js.map +1 -0
  726. package/dist/media/image.d.ts +91 -0
  727. package/dist/media/image.d.ts.map +1 -0
  728. package/dist/media/image.js +400 -0
  729. package/dist/media/image.js.map +1 -0
  730. package/dist/media/index.d.ts +66 -0
  731. package/dist/media/index.d.ts.map +1 -0
  732. package/dist/media/index.js +122 -0
  733. package/dist/media/index.js.map +1 -0
  734. package/dist/media/mime.d.ts +23 -0
  735. package/dist/media/mime.d.ts.map +1 -0
  736. package/dist/media/mime.js +110 -0
  737. package/dist/media/mime.js.map +1 -0
  738. package/dist/media/office.d.ts +93 -0
  739. package/dist/media/office.d.ts.map +1 -0
  740. package/dist/media/office.js +735 -0
  741. package/dist/media/office.js.map +1 -0
  742. package/dist/media/pdf.d.ts +132 -0
  743. package/dist/media/pdf.d.ts.map +1 -0
  744. package/dist/media/pdf.js +281 -0
  745. package/dist/media/pdf.js.map +1 -0
  746. package/dist/media/svg.d.ts +55 -0
  747. package/dist/media/svg.d.ts.map +1 -0
  748. package/dist/media/svg.js +217 -0
  749. package/dist/media/svg.js.map +1 -0
  750. package/dist/memory/embedding-cache.d.ts +40 -0
  751. package/dist/memory/embedding-cache.d.ts.map +1 -0
  752. package/dist/memory/embedding-cache.js +105 -0
  753. package/dist/memory/embedding-cache.js.map +1 -0
  754. package/dist/memory/embedding-provider.d.ts +36 -0
  755. package/dist/memory/embedding-provider.d.ts.map +1 -0
  756. package/dist/memory/embedding-provider.js +105 -0
  757. package/dist/memory/embedding-provider.js.map +1 -0
  758. package/dist/memory/hybrid-search.d.ts +58 -0
  759. package/dist/memory/hybrid-search.d.ts.map +1 -0
  760. package/dist/memory/hybrid-search.js +68 -0
  761. package/dist/memory/hybrid-search.js.map +1 -0
  762. package/dist/memory/index.d.ts +15 -0
  763. package/dist/memory/index.d.ts.map +1 -0
  764. package/dist/memory/index.js +12 -0
  765. package/dist/memory/index.js.map +1 -0
  766. package/dist/memory/long-term-store.d.ts +131 -0
  767. package/dist/memory/long-term-store.d.ts.map +1 -0
  768. package/dist/memory/long-term-store.js +701 -0
  769. package/dist/memory/long-term-store.js.map +1 -0
  770. package/dist/memory/memory-search.d.ts +134 -0
  771. package/dist/memory/memory-search.d.ts.map +1 -0
  772. package/dist/memory/memory-search.js +338 -0
  773. package/dist/memory/memory-search.js.map +1 -0
  774. package/dist/memory/memory-sync.d.ts +66 -0
  775. package/dist/memory/memory-sync.d.ts.map +1 -0
  776. package/dist/memory/memory-sync.js +429 -0
  777. package/dist/memory/memory-sync.js.map +1 -0
  778. package/dist/memory/mmr.d.ts +34 -0
  779. package/dist/memory/mmr.d.ts.map +1 -0
  780. package/dist/memory/mmr.js +101 -0
  781. package/dist/memory/mmr.js.map +1 -0
  782. package/dist/memory/notebook.d.ts +80 -0
  783. package/dist/memory/notebook.d.ts.map +1 -0
  784. package/dist/memory/notebook.js +320 -0
  785. package/dist/memory/notebook.js.map +1 -0
  786. package/dist/memory/query-expansion.d.ts +22 -0
  787. package/dist/memory/query-expansion.d.ts.map +1 -0
  788. package/dist/memory/query-expansion.js +60 -0
  789. package/dist/memory/query-expansion.js.map +1 -0
  790. package/dist/memory/types.d.ts +16 -0
  791. package/dist/memory/types.d.ts.map +1 -0
  792. package/dist/memory/types.js +5 -0
  793. package/dist/memory/types.js.map +1 -0
  794. package/dist/models/config.d.ts +85 -0
  795. package/dist/models/config.d.ts.map +1 -0
  796. package/dist/models/config.js +427 -0
  797. package/dist/models/config.js.map +1 -0
  798. package/dist/models/fallback.d.ts +80 -0
  799. package/dist/models/fallback.d.ts.map +1 -0
  800. package/dist/models/fallback.js +215 -0
  801. package/dist/models/fallback.js.map +1 -0
  802. package/dist/models/index.d.ts +12 -0
  803. package/dist/models/index.d.ts.map +1 -0
  804. package/dist/models/index.js +11 -0
  805. package/dist/models/index.js.map +1 -0
  806. package/dist/models/quota.d.ts +121 -0
  807. package/dist/models/quota.d.ts.map +1 -0
  808. package/dist/models/quota.js +397 -0
  809. package/dist/models/quota.js.map +1 -0
  810. package/dist/models/stats.d.ts +96 -0
  811. package/dist/models/stats.d.ts.map +1 -0
  812. package/dist/models/stats.js +224 -0
  813. package/dist/models/stats.js.map +1 -0
  814. package/dist/models/subagent-config.d.ts +119 -0
  815. package/dist/models/subagent-config.d.ts.map +1 -0
  816. package/dist/models/subagent-config.js +267 -0
  817. package/dist/models/subagent-config.js.map +1 -0
  818. package/dist/models/thinking.d.ts +102 -0
  819. package/dist/models/thinking.d.ts.map +1 -0
  820. package/dist/models/thinking.js +213 -0
  821. package/dist/models/thinking.js.map +1 -0
  822. package/dist/models/types.d.ts +250 -0
  823. package/dist/models/types.d.ts.map +1 -0
  824. package/dist/models/types.js +33 -0
  825. package/dist/models/types.js.map +1 -0
  826. package/dist/network/audit-log.d.ts +93 -0
  827. package/dist/network/audit-log.d.ts.map +1 -0
  828. package/dist/network/audit-log.js +319 -0
  829. package/dist/network/audit-log.js.map +1 -0
  830. package/dist/network/discovery.d.ts +91 -0
  831. package/dist/network/discovery.d.ts.map +1 -0
  832. package/dist/network/discovery.js +398 -0
  833. package/dist/network/discovery.js.map +1 -0
  834. package/dist/network/global-proxy.d.ts +19 -0
  835. package/dist/network/global-proxy.d.ts.map +1 -0
  836. package/dist/network/global-proxy.js +81 -0
  837. package/dist/network/global-proxy.js.map +1 -0
  838. package/dist/network/identity.d.ts +58 -0
  839. package/dist/network/identity.d.ts.map +1 -0
  840. package/dist/network/identity.js +267 -0
  841. package/dist/network/identity.js.map +1 -0
  842. package/dist/network/index.d.ts +153 -0
  843. package/dist/network/index.d.ts.map +1 -0
  844. package/dist/network/index.js +916 -0
  845. package/dist/network/index.js.map +1 -0
  846. package/dist/network/permission.d.ts +60 -0
  847. package/dist/network/permission.d.ts.map +1 -0
  848. package/dist/network/permission.js +124 -0
  849. package/dist/network/permission.js.map +1 -0
  850. package/dist/network/project-probe.d.ts +12 -0
  851. package/dist/network/project-probe.d.ts.map +1 -0
  852. package/dist/network/project-probe.js +74 -0
  853. package/dist/network/project-probe.js.map +1 -0
  854. package/dist/network/protocol.d.ts +59 -0
  855. package/dist/network/protocol.d.ts.map +1 -0
  856. package/dist/network/protocol.js +158 -0
  857. package/dist/network/protocol.js.map +1 -0
  858. package/dist/network/proxy.d.ts +93 -0
  859. package/dist/network/proxy.d.ts.map +1 -0
  860. package/dist/network/proxy.js +228 -0
  861. package/dist/network/proxy.js.map +1 -0
  862. package/dist/network/retry.d.ts +44 -0
  863. package/dist/network/retry.d.ts.map +1 -0
  864. package/dist/network/retry.js +110 -0
  865. package/dist/network/retry.js.map +1 -0
  866. package/dist/network/router.d.ts +36 -0
  867. package/dist/network/router.d.ts.map +1 -0
  868. package/dist/network/router.js +73 -0
  869. package/dist/network/router.js.map +1 -0
  870. package/dist/network/timeout.d.ts +59 -0
  871. package/dist/network/timeout.d.ts.map +1 -0
  872. package/dist/network/timeout.js +120 -0
  873. package/dist/network/timeout.js.map +1 -0
  874. package/dist/network/transport.d.ts +97 -0
  875. package/dist/network/transport.d.ts.map +1 -0
  876. package/dist/network/transport.js +397 -0
  877. package/dist/network/transport.js.map +1 -0
  878. package/dist/network/types.d.ts +282 -0
  879. package/dist/network/types.d.ts.map +1 -0
  880. package/dist/network/types.js +31 -0
  881. package/dist/network/types.js.map +1 -0
  882. package/dist/notifications/index.d.ts +161 -0
  883. package/dist/notifications/index.d.ts.map +1 -0
  884. package/dist/notifications/index.js +341 -0
  885. package/dist/notifications/index.js.map +1 -0
  886. package/dist/organization/index.d.ts +125 -0
  887. package/dist/organization/index.d.ts.map +1 -0
  888. package/dist/organization/index.js +237 -0
  889. package/dist/organization/index.js.map +1 -0
  890. package/dist/permissions/elevated-commands.d.ts +38 -0
  891. package/dist/permissions/elevated-commands.d.ts.map +1 -0
  892. package/dist/permissions/elevated-commands.js +256 -0
  893. package/dist/permissions/elevated-commands.js.map +1 -0
  894. package/dist/permissions/index.d.ts +120 -0
  895. package/dist/permissions/index.d.ts.map +1 -0
  896. package/dist/permissions/index.js +689 -0
  897. package/dist/permissions/index.js.map +1 -0
  898. package/dist/permissions/rule-parser.d.ts +396 -0
  899. package/dist/permissions/rule-parser.d.ts.map +1 -0
  900. package/dist/permissions/rule-parser.js +990 -0
  901. package/dist/permissions/rule-parser.js.map +1 -0
  902. package/dist/permissions/rule-parser.test.d.ts +15 -0
  903. package/dist/permissions/rule-parser.test.d.ts.map +1 -0
  904. package/dist/permissions/rule-parser.test.js +489 -0
  905. package/dist/permissions/rule-parser.test.js.map +1 -0
  906. package/dist/permissions/shell-security.d.ts +128 -0
  907. package/dist/permissions/shell-security.d.ts.map +1 -0
  908. package/dist/permissions/shell-security.js +669 -0
  909. package/dist/permissions/shell-security.js.map +1 -0
  910. package/dist/permissions/shell-security.test.d.ts +7 -0
  911. package/dist/permissions/shell-security.test.d.ts.map +1 -0
  912. package/dist/permissions/shell-security.test.js +286 -0
  913. package/dist/permissions/shell-security.test.js.map +1 -0
  914. package/dist/permissions/tools.d.ts +255 -0
  915. package/dist/permissions/tools.d.ts.map +1 -0
  916. package/dist/permissions/tools.js +733 -0
  917. package/dist/permissions/tools.js.map +1 -0
  918. package/dist/permissions/tools.test.d.ts +11 -0
  919. package/dist/permissions/tools.test.d.ts.map +1 -0
  920. package/dist/permissions/tools.test.js +530 -0
  921. package/dist/permissions/tools.test.js.map +1 -0
  922. package/dist/permissions/ui-integration.d.ts +69 -0
  923. package/dist/permissions/ui-integration.d.ts.map +1 -0
  924. package/dist/permissions/ui-integration.js +129 -0
  925. package/dist/permissions/ui-integration.js.map +1 -0
  926. package/dist/permissions/ui.d.ts +188 -0
  927. package/dist/permissions/ui.d.ts.map +1 -0
  928. package/dist/permissions/ui.js +590 -0
  929. package/dist/permissions/ui.js.map +1 -0
  930. package/dist/plan/comparison.d.ts +67 -0
  931. package/dist/plan/comparison.d.ts.map +1 -0
  932. package/dist/plan/comparison.js +451 -0
  933. package/dist/plan/comparison.js.map +1 -0
  934. package/dist/plan/index.d.ts +91 -0
  935. package/dist/plan/index.d.ts.map +1 -0
  936. package/dist/plan/index.js +151 -0
  937. package/dist/plan/index.js.map +1 -0
  938. package/dist/plan/persistence.d.ts +131 -0
  939. package/dist/plan/persistence.d.ts.map +1 -0
  940. package/dist/plan/persistence.js +781 -0
  941. package/dist/plan/persistence.js.map +1 -0
  942. package/dist/plan/types.d.ts +353 -0
  943. package/dist/plan/types.d.ts.map +1 -0
  944. package/dist/plan/types.js +6 -0
  945. package/dist/plan/types.js.map +1 -0
  946. package/dist/plugins/cli.d.ts +14 -0
  947. package/dist/plugins/cli.d.ts.map +1 -0
  948. package/dist/plugins/cli.js +1050 -0
  949. package/dist/plugins/cli.js.map +1 -0
  950. package/dist/plugins/index.d.ts +621 -0
  951. package/dist/plugins/index.d.ts.map +1 -0
  952. package/dist/plugins/index.js +1978 -0
  953. package/dist/plugins/index.js.map +1 -0
  954. package/dist/plugins/marketplace.d.ts +120 -0
  955. package/dist/plugins/marketplace.d.ts.map +1 -0
  956. package/dist/plugins/marketplace.js +630 -0
  957. package/dist/plugins/marketplace.js.map +1 -0
  958. package/dist/prompt/attachments.d.ts +94 -0
  959. package/dist/prompt/attachments.d.ts.map +1 -0
  960. package/dist/prompt/attachments.js +486 -0
  961. package/dist/prompt/attachments.js.map +1 -0
  962. package/dist/prompt/builder.d.ts +45 -0
  963. package/dist/prompt/builder.d.ts.map +1 -0
  964. package/dist/prompt/builder.js +298 -0
  965. package/dist/prompt/builder.js.map +1 -0
  966. package/dist/prompt/cache.d.ts +71 -0
  967. package/dist/prompt/cache.d.ts.map +1 -0
  968. package/dist/prompt/cache.js +150 -0
  969. package/dist/prompt/cache.js.map +1 -0
  970. package/dist/prompt/index.d.ts +10 -0
  971. package/dist/prompt/index.d.ts.map +1 -0
  972. package/dist/prompt/index.js +9 -0
  973. package/dist/prompt/index.js.map +1 -0
  974. package/dist/prompt/templates.d.ts +216 -0
  975. package/dist/prompt/templates.d.ts.map +1 -0
  976. package/dist/prompt/templates.js +670 -0
  977. package/dist/prompt/templates.js.map +1 -0
  978. package/dist/prompt/types.d.ts +234 -0
  979. package/dist/prompt/types.d.ts.map +1 -0
  980. package/dist/prompt/types.js +19 -0
  981. package/dist/prompt/types.js.map +1 -0
  982. package/dist/providers/cli.d.ts +14 -0
  983. package/dist/providers/cli.d.ts.map +1 -0
  984. package/dist/providers/cli.js +466 -0
  985. package/dist/providers/cli.js.map +1 -0
  986. package/dist/providers/index.d.ts +128 -0
  987. package/dist/providers/index.d.ts.map +1 -0
  988. package/dist/providers/index.js +662 -0
  989. package/dist/providers/index.js.map +1 -0
  990. package/dist/providers/vertex.d.ts +174 -0
  991. package/dist/providers/vertex.d.ts.map +1 -0
  992. package/dist/providers/vertex.js +499 -0
  993. package/dist/providers/vertex.js.map +1 -0
  994. package/dist/proxy/ollama-adapter.d.ts +41 -0
  995. package/dist/proxy/ollama-adapter.d.ts.map +1 -0
  996. package/dist/proxy/ollama-adapter.js +669 -0
  997. package/dist/proxy/ollama-adapter.js.map +1 -0
  998. package/dist/proxy/server.d.ts +63 -0
  999. package/dist/proxy/server.d.ts.map +1 -0
  1000. package/dist/proxy/server.js +1160 -0
  1001. package/dist/proxy/server.js.map +1 -0
  1002. package/dist/proxy-cli.d.ts +19 -0
  1003. package/dist/proxy-cli.d.ts.map +1 -0
  1004. package/dist/proxy-cli.js +308 -0
  1005. package/dist/proxy-cli.js.map +1 -0
  1006. package/dist/ratelimit/index.d.ts +252 -0
  1007. package/dist/ratelimit/index.d.ts.map +1 -0
  1008. package/dist/ratelimit/index.js +580 -0
  1009. package/dist/ratelimit/index.js.map +1 -0
  1010. package/dist/renderer/index.d.ts +75 -0
  1011. package/dist/renderer/index.d.ts.map +1 -0
  1012. package/dist/renderer/index.js +383 -0
  1013. package/dist/renderer/index.js.map +1 -0
  1014. package/dist/renderer/tree-render.d.ts +172 -0
  1015. package/dist/renderer/tree-render.d.ts.map +1 -0
  1016. package/dist/renderer/tree-render.js +397 -0
  1017. package/dist/renderer/tree-render.js.map +1 -0
  1018. package/dist/rewind/fileHistory.d.ts +140 -0
  1019. package/dist/rewind/fileHistory.d.ts.map +1 -0
  1020. package/dist/rewind/fileHistory.js +326 -0
  1021. package/dist/rewind/fileHistory.js.map +1 -0
  1022. package/dist/rewind/index.d.ts +8 -0
  1023. package/dist/rewind/index.d.ts.map +1 -0
  1024. package/dist/rewind/index.js +8 -0
  1025. package/dist/rewind/index.js.map +1 -0
  1026. package/dist/rewind/rewindManager.d.ts +98 -0
  1027. package/dist/rewind/rewindManager.d.ts.map +1 -0
  1028. package/dist/rewind/rewindManager.js +199 -0
  1029. package/dist/rewind/rewindManager.js.map +1 -0
  1030. package/dist/rules/index.d.ts +69 -0
  1031. package/dist/rules/index.d.ts.map +1 -0
  1032. package/dist/rules/index.js +410 -0
  1033. package/dist/rules/index.js.map +1 -0
  1034. package/dist/sandbox/bubblewrap.d.ts +157 -0
  1035. package/dist/sandbox/bubblewrap.d.ts.map +1 -0
  1036. package/dist/sandbox/bubblewrap.js +637 -0
  1037. package/dist/sandbox/bubblewrap.js.map +1 -0
  1038. package/dist/sandbox/config.d.ts +497 -0
  1039. package/dist/sandbox/config.d.ts.map +1 -0
  1040. package/dist/sandbox/config.js +696 -0
  1041. package/dist/sandbox/config.js.map +1 -0
  1042. package/dist/sandbox/docker.d.ts +104 -0
  1043. package/dist/sandbox/docker.d.ts.map +1 -0
  1044. package/dist/sandbox/docker.js +347 -0
  1045. package/dist/sandbox/docker.js.map +1 -0
  1046. package/dist/sandbox/executor.d.ts +68 -0
  1047. package/dist/sandbox/executor.d.ts.map +1 -0
  1048. package/dist/sandbox/executor.js +341 -0
  1049. package/dist/sandbox/executor.js.map +1 -0
  1050. package/dist/sandbox/filesystem.d.ts +146 -0
  1051. package/dist/sandbox/filesystem.d.ts.map +1 -0
  1052. package/dist/sandbox/filesystem.js +501 -0
  1053. package/dist/sandbox/filesystem.js.map +1 -0
  1054. package/dist/sandbox/index.d.ts +21 -0
  1055. package/dist/sandbox/index.d.ts.map +1 -0
  1056. package/dist/sandbox/index.js +21 -0
  1057. package/dist/sandbox/index.js.map +1 -0
  1058. package/dist/sandbox/network.d.ts +174 -0
  1059. package/dist/sandbox/network.d.ts.map +1 -0
  1060. package/dist/sandbox/network.js +487 -0
  1061. package/dist/sandbox/network.js.map +1 -0
  1062. package/dist/sandbox/resource-limits.d.ts +83 -0
  1063. package/dist/sandbox/resource-limits.d.ts.map +1 -0
  1064. package/dist/sandbox/resource-limits.js +305 -0
  1065. package/dist/sandbox/resource-limits.js.map +1 -0
  1066. package/dist/sandbox/seatbelt.d.ts +70 -0
  1067. package/dist/sandbox/seatbelt.d.ts.map +1 -0
  1068. package/dist/sandbox/seatbelt.js +256 -0
  1069. package/dist/sandbox/seatbelt.js.map +1 -0
  1070. package/dist/search/ripgrep.d.ts +82 -0
  1071. package/dist/search/ripgrep.d.ts.map +1 -0
  1072. package/dist/search/ripgrep.js +399 -0
  1073. package/dist/search/ripgrep.js.map +1 -0
  1074. package/dist/security/skill-scanner.d.ts +18 -0
  1075. package/dist/security/skill-scanner.d.ts.map +1 -0
  1076. package/dist/security/skill-scanner.js +115 -0
  1077. package/dist/security/skill-scanner.js.map +1 -0
  1078. package/dist/session/cleanup.d.ts +62 -0
  1079. package/dist/session/cleanup.d.ts.map +1 -0
  1080. package/dist/session/cleanup.js +218 -0
  1081. package/dist/session/cleanup.js.map +1 -0
  1082. package/dist/session/index.d.ts +584 -0
  1083. package/dist/session/index.d.ts.map +1 -0
  1084. package/dist/session/index.js +1910 -0
  1085. package/dist/session/index.js.map +1 -0
  1086. package/dist/session/list.d.ts +150 -0
  1087. package/dist/session/list.d.ts.map +1 -0
  1088. package/dist/session/list.js +807 -0
  1089. package/dist/session/list.js.map +1 -0
  1090. package/dist/session/resume.d.ts +103 -0
  1091. package/dist/session/resume.d.ts.map +1 -0
  1092. package/dist/session/resume.js +173 -0
  1093. package/dist/session/resume.js.map +1 -0
  1094. package/dist/skills/builtin/skill-hub/SKILL.md +51 -0
  1095. package/dist/skills/builtin/tool-discovery/SKILL.md +194 -0
  1096. package/dist/skills/hub.d.ts +54 -0
  1097. package/dist/skills/hub.d.ts.map +1 -0
  1098. package/dist/skills/hub.js +251 -0
  1099. package/dist/skills/hub.js.map +1 -0
  1100. package/dist/streaming/index.d.ts +115 -0
  1101. package/dist/streaming/index.d.ts.map +1 -0
  1102. package/dist/streaming/index.js +249 -0
  1103. package/dist/streaming/index.js.map +1 -0
  1104. package/dist/streaming/message-stream.d.ts +237 -0
  1105. package/dist/streaming/message-stream.d.ts.map +1 -0
  1106. package/dist/streaming/message-stream.js +480 -0
  1107. package/dist/streaming/message-stream.js.map +1 -0
  1108. package/dist/streaming/sse.d.ts +94 -0
  1109. package/dist/streaming/sse.d.ts.map +1 -0
  1110. package/dist/streaming/sse.js +314 -0
  1111. package/dist/streaming/sse.js.map +1 -0
  1112. package/dist/teams/index.d.ts +7 -0
  1113. package/dist/teams/index.d.ts.map +1 -0
  1114. package/dist/teams/index.js +7 -0
  1115. package/dist/teams/index.js.map +1 -0
  1116. package/dist/teams/storage.d.ts +94 -0
  1117. package/dist/teams/storage.d.ts.map +1 -0
  1118. package/dist/teams/storage.js +350 -0
  1119. package/dist/teams/storage.js.map +1 -0
  1120. package/dist/teams/tmux.d.ts +122 -0
  1121. package/dist/teams/tmux.d.ts.map +1 -0
  1122. package/dist/teams/tmux.js +419 -0
  1123. package/dist/teams/tmux.js.map +1 -0
  1124. package/dist/teams/types.d.ts +139 -0
  1125. package/dist/teams/types.d.ts.map +1 -0
  1126. package/dist/teams/types.js +8 -0
  1127. package/dist/teams/types.js.map +1 -0
  1128. package/dist/telemetry/index.d.ts +215 -0
  1129. package/dist/telemetry/index.d.ts.map +1 -0
  1130. package/dist/telemetry/index.js +776 -0
  1131. package/dist/telemetry/index.js.map +1 -0
  1132. package/dist/teleport/index.d.ts +43 -0
  1133. package/dist/teleport/index.d.ts.map +1 -0
  1134. package/dist/teleport/index.js +71 -0
  1135. package/dist/teleport/index.js.map +1 -0
  1136. package/dist/teleport/session.d.ts +78 -0
  1137. package/dist/teleport/session.d.ts.map +1 -0
  1138. package/dist/teleport/session.js +273 -0
  1139. package/dist/teleport/session.js.map +1 -0
  1140. package/dist/teleport/types.d.ts +93 -0
  1141. package/dist/teleport/types.d.ts.map +1 -0
  1142. package/dist/teleport/types.js +6 -0
  1143. package/dist/teleport/types.js.map +1 -0
  1144. package/dist/teleport/validation.d.ts +30 -0
  1145. package/dist/teleport/validation.d.ts.map +1 -0
  1146. package/dist/teleport/validation.js +124 -0
  1147. package/dist/teleport/validation.js.map +1 -0
  1148. package/dist/tools/agent-teams.d.ts +26 -0
  1149. package/dist/tools/agent-teams.d.ts.map +1 -0
  1150. package/dist/tools/agent-teams.js +171 -0
  1151. package/dist/tools/agent-teams.js.map +1 -0
  1152. package/dist/tools/agent.d.ts +223 -0
  1153. package/dist/tools/agent.d.ts.map +1 -0
  1154. package/dist/tools/agent.js +1540 -0
  1155. package/dist/tools/agent.js.map +1 -0
  1156. package/dist/tools/ask.d.ts +87 -0
  1157. package/dist/tools/ask.d.ts.map +1 -0
  1158. package/dist/tools/ask.js +572 -0
  1159. package/dist/tools/ask.js.map +1 -0
  1160. package/dist/tools/base.d.ts +89 -0
  1161. package/dist/tools/base.d.ts.map +1 -0
  1162. package/dist/tools/base.js +199 -0
  1163. package/dist/tools/base.js.map +1 -0
  1164. package/dist/tools/bash-history.d.ts +83 -0
  1165. package/dist/tools/bash-history.d.ts.map +1 -0
  1166. package/dist/tools/bash-history.js +245 -0
  1167. package/dist/tools/bash-history.js.map +1 -0
  1168. package/dist/tools/bash.d.ts +214 -0
  1169. package/dist/tools/bash.d.ts.map +1 -0
  1170. package/dist/tools/bash.js +1823 -0
  1171. package/dist/tools/bash.js.map +1 -0
  1172. package/dist/tools/blueprint.d.ts +91 -0
  1173. package/dist/tools/blueprint.d.ts.map +1 -0
  1174. package/dist/tools/blueprint.js +618 -0
  1175. package/dist/tools/blueprint.js.map +1 -0
  1176. package/dist/tools/browser.d.ts +28 -0
  1177. package/dist/tools/browser.d.ts.map +1 -0
  1178. package/dist/tools/browser.js +776 -0
  1179. package/dist/tools/browser.js.map +1 -0
  1180. package/dist/tools/create-tool.d.ts +63 -0
  1181. package/dist/tools/create-tool.d.ts.map +1 -0
  1182. package/dist/tools/create-tool.js +230 -0
  1183. package/dist/tools/create-tool.js.map +1 -0
  1184. package/dist/tools/database.d.ts +12 -0
  1185. package/dist/tools/database.d.ts.map +1 -0
  1186. package/dist/tools/database.js +223 -0
  1187. package/dist/tools/database.js.map +1 -0
  1188. package/dist/tools/dispatch-worker.d.ts +46 -0
  1189. package/dist/tools/dispatch-worker.d.ts.map +1 -0
  1190. package/dist/tools/dispatch-worker.js +276 -0
  1191. package/dist/tools/dispatch-worker.js.map +1 -0
  1192. package/dist/tools/ear.d.ts +25 -0
  1193. package/dist/tools/ear.d.ts.map +1 -0
  1194. package/dist/tools/ear.js +43 -0
  1195. package/dist/tools/ear.js.map +1 -0
  1196. package/dist/tools/eye.d.ts +29 -0
  1197. package/dist/tools/eye.d.ts.map +1 -0
  1198. package/dist/tools/eye.js +104 -0
  1199. package/dist/tools/eye.js.map +1 -0
  1200. package/dist/tools/file.d.ts +164 -0
  1201. package/dist/tools/file.d.ts.map +1 -0
  1202. package/dist/tools/file.js +1638 -0
  1203. package/dist/tools/file.js.map +1 -0
  1204. package/dist/tools/generate-blueprint.d.ts +62 -0
  1205. package/dist/tools/generate-blueprint.d.ts.map +1 -0
  1206. package/dist/tools/generate-blueprint.js +141 -0
  1207. package/dist/tools/generate-blueprint.js.map +1 -0
  1208. package/dist/tools/generate-design.d.ts +27 -0
  1209. package/dist/tools/generate-design.d.ts.map +1 -0
  1210. package/dist/tools/generate-design.js +66 -0
  1211. package/dist/tools/generate-design.js.map +1 -0
  1212. package/dist/tools/goal.d.ts +56 -0
  1213. package/dist/tools/goal.d.ts.map +1 -0
  1214. package/dist/tools/goal.js +298 -0
  1215. package/dist/tools/goal.js.map +1 -0
  1216. package/dist/tools/index.d.ts +53 -0
  1217. package/dist/tools/index.d.ts.map +1 -0
  1218. package/dist/tools/index.js +183 -0
  1219. package/dist/tools/index.js.map +1 -0
  1220. package/dist/tools/mcp-manage.d.ts +32 -0
  1221. package/dist/tools/mcp-manage.d.ts.map +1 -0
  1222. package/dist/tools/mcp-manage.js +61 -0
  1223. package/dist/tools/mcp-manage.js.map +1 -0
  1224. package/dist/tools/mcp.d.ts +311 -0
  1225. package/dist/tools/mcp.d.ts.map +1 -0
  1226. package/dist/tools/mcp.js +1696 -0
  1227. package/dist/tools/mcp.js.map +1 -0
  1228. package/dist/tools/memory-search.d.ts +26 -0
  1229. package/dist/tools/memory-search.d.ts.map +1 -0
  1230. package/dist/tools/memory-search.js +89 -0
  1231. package/dist/tools/memory-search.js.map +1 -0
  1232. package/dist/tools/network-agent.d.ts +55 -0
  1233. package/dist/tools/network-agent.d.ts.map +1 -0
  1234. package/dist/tools/network-agent.js +349 -0
  1235. package/dist/tools/network-agent.js.map +1 -0
  1236. package/dist/tools/notebook-write.d.ts +23 -0
  1237. package/dist/tools/notebook-write.d.ts.map +1 -0
  1238. package/dist/tools/notebook-write.js +86 -0
  1239. package/dist/tools/notebook-write.js.map +1 -0
  1240. package/dist/tools/notebook.d.ts +46 -0
  1241. package/dist/tools/notebook.d.ts.map +1 -0
  1242. package/dist/tools/notebook.js +335 -0
  1243. package/dist/tools/notebook.js.map +1 -0
  1244. package/dist/tools/output-persistence.d.ts +73 -0
  1245. package/dist/tools/output-persistence.d.ts.map +1 -0
  1246. package/dist/tools/output-persistence.js +258 -0
  1247. package/dist/tools/output-persistence.js.map +1 -0
  1248. package/dist/tools/planmode.d.ts +73 -0
  1249. package/dist/tools/planmode.d.ts.map +1 -0
  1250. package/dist/tools/planmode.js +464 -0
  1251. package/dist/tools/planmode.js.map +1 -0
  1252. package/dist/tools/sandbox.d.ts +192 -0
  1253. package/dist/tools/sandbox.d.ts.map +1 -0
  1254. package/dist/tools/sandbox.js +932 -0
  1255. package/dist/tools/sandbox.js.map +1 -0
  1256. package/dist/tools/schedule.d.ts +65 -0
  1257. package/dist/tools/schedule.d.ts.map +1 -0
  1258. package/dist/tools/schedule.js +537 -0
  1259. package/dist/tools/schedule.js.map +1 -0
  1260. package/dist/tools/search.d.ts +48 -0
  1261. package/dist/tools/search.d.ts.map +1 -0
  1262. package/dist/tools/search.js +568 -0
  1263. package/dist/tools/search.js.map +1 -0
  1264. package/dist/tools/self-evolve.d.ts +53 -0
  1265. package/dist/tools/self-evolve.d.ts.map +1 -0
  1266. package/dist/tools/self-evolve.js +241 -0
  1267. package/dist/tools/self-evolve.js.map +1 -0
  1268. package/dist/tools/skill.d.ts +182 -0
  1269. package/dist/tools/skill.d.ts.map +1 -0
  1270. package/dist/tools/skill.js +1274 -0
  1271. package/dist/tools/skill.js.map +1 -0
  1272. package/dist/tools/start-lead-agent.d.ts +103 -0
  1273. package/dist/tools/start-lead-agent.d.ts.map +1 -0
  1274. package/dist/tools/start-lead-agent.js +243 -0
  1275. package/dist/tools/start-lead-agent.js.map +1 -0
  1276. package/dist/tools/structured-output.d.ts +80 -0
  1277. package/dist/tools/structured-output.d.ts.map +1 -0
  1278. package/dist/tools/structured-output.js +113 -0
  1279. package/dist/tools/structured-output.js.map +1 -0
  1280. package/dist/tools/submit-e2e-result.d.ts +57 -0
  1281. package/dist/tools/submit-e2e-result.d.ts.map +1 -0
  1282. package/dist/tools/submit-e2e-result.js +161 -0
  1283. package/dist/tools/submit-e2e-result.js.map +1 -0
  1284. package/dist/tools/submit-review.d.ts +42 -0
  1285. package/dist/tools/submit-review.d.ts.map +1 -0
  1286. package/dist/tools/submit-review.js +122 -0
  1287. package/dist/tools/submit-review.js.map +1 -0
  1288. package/dist/tools/task-status.d.ts +33 -0
  1289. package/dist/tools/task-status.d.ts.map +1 -0
  1290. package/dist/tools/task-status.js +86 -0
  1291. package/dist/tools/task-status.js.map +1 -0
  1292. package/dist/tools/task-storage.d.ts +165 -0
  1293. package/dist/tools/task-storage.d.ts.map +1 -0
  1294. package/dist/tools/task-storage.js +354 -0
  1295. package/dist/tools/task-storage.js.map +1 -0
  1296. package/dist/tools/task-v2.d.ts +38 -0
  1297. package/dist/tools/task-v2.d.ts.map +1 -0
  1298. package/dist/tools/task-v2.js +472 -0
  1299. package/dist/tools/task-v2.js.map +1 -0
  1300. package/dist/tools/team.d.ts +51 -0
  1301. package/dist/tools/team.d.ts.map +1 -0
  1302. package/dist/tools/team.js +441 -0
  1303. package/dist/tools/team.js.map +1 -0
  1304. package/dist/tools/todo.d.ts +30 -0
  1305. package/dist/tools/todo.d.ts.map +1 -0
  1306. package/dist/tools/todo.js +204 -0
  1307. package/dist/tools/todo.js.map +1 -0
  1308. package/dist/tools/trigger-e2e-test.d.ts +62 -0
  1309. package/dist/tools/trigger-e2e-test.d.ts.map +1 -0
  1310. package/dist/tools/trigger-e2e-test.js +228 -0
  1311. package/dist/tools/trigger-e2e-test.js.map +1 -0
  1312. package/dist/tools/update-task-plan.d.ts +43 -0
  1313. package/dist/tools/update-task-plan.d.ts.map +1 -0
  1314. package/dist/tools/update-task-plan.js +214 -0
  1315. package/dist/tools/update-task-plan.js.map +1 -0
  1316. package/dist/tools/web.d.ts +78 -0
  1317. package/dist/tools/web.d.ts.map +1 -0
  1318. package/dist/tools/web.js +535 -0
  1319. package/dist/tools/web.js.map +1 -0
  1320. package/dist/trust/index.d.ts +165 -0
  1321. package/dist/trust/index.d.ts.map +1 -0
  1322. package/dist/trust/index.js +408 -0
  1323. package/dist/trust/index.js.map +1 -0
  1324. package/dist/types/config.d.ts +1259 -0
  1325. package/dist/types/config.d.ts.map +1 -0
  1326. package/dist/types/config.js +245 -0
  1327. package/dist/types/config.js.map +1 -0
  1328. package/dist/types/errors.d.ts +389 -0
  1329. package/dist/types/errors.d.ts.map +1 -0
  1330. package/dist/types/errors.js +670 -0
  1331. package/dist/types/errors.js.map +1 -0
  1332. package/dist/types/index.d.ts +30 -0
  1333. package/dist/types/index.d.ts.map +1 -0
  1334. package/dist/types/index.js +26 -0
  1335. package/dist/types/index.js.map +1 -0
  1336. package/dist/types/messages.d.ts +761 -0
  1337. package/dist/types/messages.d.ts.map +1 -0
  1338. package/dist/types/messages.js +10 -0
  1339. package/dist/types/messages.js.map +1 -0
  1340. package/dist/types/results.d.ts +583 -0
  1341. package/dist/types/results.d.ts.map +1 -0
  1342. package/dist/types/results.js +111 -0
  1343. package/dist/types/results.js.map +1 -0
  1344. package/dist/types/tools.d.ts +734 -0
  1345. package/dist/types/tools.d.ts.map +1 -0
  1346. package/dist/types/tools.js +9 -0
  1347. package/dist/types/tools.js.map +1 -0
  1348. package/dist/ui/App.d.ts +17 -0
  1349. package/dist/ui/App.d.ts.map +1 -0
  1350. package/dist/ui/App.js +977 -0
  1351. package/dist/ui/App.js.map +1 -0
  1352. package/dist/ui/ChromeSettings.d.ts +18 -0
  1353. package/dist/ui/ChromeSettings.d.ts.map +1 -0
  1354. package/dist/ui/ChromeSettings.js +224 -0
  1355. package/dist/ui/ChromeSettings.js.map +1 -0
  1356. package/dist/ui/LoginSelector.d.ts +29 -0
  1357. package/dist/ui/LoginSelector.d.ts.map +1 -0
  1358. package/dist/ui/LoginSelector.js +168 -0
  1359. package/dist/ui/LoginSelector.js.map +1 -0
  1360. package/dist/ui/McpSettings.d.ts +29 -0
  1361. package/dist/ui/McpSettings.d.ts.map +1 -0
  1362. package/dist/ui/McpSettings.js +689 -0
  1363. package/dist/ui/McpSettings.js.map +1 -0
  1364. package/dist/ui/PluginsDialog.d.ts +21 -0
  1365. package/dist/ui/PluginsDialog.d.ts.map +1 -0
  1366. package/dist/ui/PluginsDialog.js +923 -0
  1367. package/dist/ui/PluginsDialog.js.map +1 -0
  1368. package/dist/ui/autocomplete/bash-history.d.ts +58 -0
  1369. package/dist/ui/autocomplete/bash-history.d.ts.map +1 -0
  1370. package/dist/ui/autocomplete/bash-history.js +196 -0
  1371. package/dist/ui/autocomplete/bash-history.js.map +1 -0
  1372. package/dist/ui/autocomplete/commands.d.ts +25 -0
  1373. package/dist/ui/autocomplete/commands.d.ts.map +1 -0
  1374. package/dist/ui/autocomplete/commands.js +535 -0
  1375. package/dist/ui/autocomplete/commands.js.map +1 -0
  1376. package/dist/ui/autocomplete/example.d.ts +10 -0
  1377. package/dist/ui/autocomplete/example.d.ts.map +1 -0
  1378. package/dist/ui/autocomplete/example.js +118 -0
  1379. package/dist/ui/autocomplete/example.js.map +1 -0
  1380. package/dist/ui/autocomplete/files.d.ts +27 -0
  1381. package/dist/ui/autocomplete/files.d.ts.map +1 -0
  1382. package/dist/ui/autocomplete/files.js +127 -0
  1383. package/dist/ui/autocomplete/files.js.map +1 -0
  1384. package/dist/ui/autocomplete/index.d.ts +25 -0
  1385. package/dist/ui/autocomplete/index.d.ts.map +1 -0
  1386. package/dist/ui/autocomplete/index.js +85 -0
  1387. package/dist/ui/autocomplete/index.js.map +1 -0
  1388. package/dist/ui/autocomplete/mentions.d.ts +29 -0
  1389. package/dist/ui/autocomplete/mentions.d.ts.map +1 -0
  1390. package/dist/ui/autocomplete/mentions.js +170 -0
  1391. package/dist/ui/autocomplete/mentions.js.map +1 -0
  1392. package/dist/ui/autocomplete/types.d.ts +58 -0
  1393. package/dist/ui/autocomplete/types.d.ts.map +1 -0
  1394. package/dist/ui/autocomplete/types.js +110 -0
  1395. package/dist/ui/autocomplete/types.js.map +1 -0
  1396. package/dist/ui/components/AxonMdImportDialog.d.ts +79 -0
  1397. package/dist/ui/components/AxonMdImportDialog.d.ts.map +1 -0
  1398. package/dist/ui/components/AxonMdImportDialog.js +420 -0
  1399. package/dist/ui/components/AxonMdImportDialog.js.map +1 -0
  1400. package/dist/ui/components/BackgroundTasksPanel.d.ts +16 -0
  1401. package/dist/ui/components/BackgroundTasksPanel.d.ts.map +1 -0
  1402. package/dist/ui/components/BackgroundTasksPanel.js +90 -0
  1403. package/dist/ui/components/BackgroundTasksPanel.js.map +1 -0
  1404. package/dist/ui/components/BreathingLight.d.ts +68 -0
  1405. package/dist/ui/components/BreathingLight.d.ts.map +1 -0
  1406. package/dist/ui/components/BreathingLight.js +110 -0
  1407. package/dist/ui/components/BreathingLight.js.map +1 -0
  1408. package/dist/ui/components/DiffView.d.ts +21 -0
  1409. package/dist/ui/components/DiffView.d.ts.map +1 -0
  1410. package/dist/ui/components/DiffView.js +387 -0
  1411. package/dist/ui/components/DiffView.js.map +1 -0
  1412. package/dist/ui/components/Header.d.ts +38 -0
  1413. package/dist/ui/components/Header.d.ts.map +1 -0
  1414. package/dist/ui/components/Header.js +163 -0
  1415. package/dist/ui/components/Header.js.map +1 -0
  1416. package/dist/ui/components/HistorySearch.d.ts +18 -0
  1417. package/dist/ui/components/HistorySearch.d.ts.map +1 -0
  1418. package/dist/ui/components/HistorySearch.js +59 -0
  1419. package/dist/ui/components/HistorySearch.js.map +1 -0
  1420. package/dist/ui/components/HiveConsole.d.ts +45 -0
  1421. package/dist/ui/components/HiveConsole.d.ts.map +1 -0
  1422. package/dist/ui/components/HiveConsole.js +166 -0
  1423. package/dist/ui/components/HiveConsole.js.map +1 -0
  1424. package/dist/ui/components/HiveConsole.test.d.ts +8 -0
  1425. package/dist/ui/components/HiveConsole.test.d.ts.map +1 -0
  1426. package/dist/ui/components/HiveConsole.test.js +330 -0
  1427. package/dist/ui/components/HiveConsole.test.js.map +1 -0
  1428. package/dist/ui/components/Input.d.ts +25 -0
  1429. package/dist/ui/components/Input.d.ts.map +1 -0
  1430. package/dist/ui/components/Input.js +1097 -0
  1431. package/dist/ui/components/Input.js.map +1 -0
  1432. package/dist/ui/components/Message.d.ts +18 -0
  1433. package/dist/ui/components/Message.d.ts.map +1 -0
  1434. package/dist/ui/components/Message.js +212 -0
  1435. package/dist/ui/components/Message.js.map +1 -0
  1436. package/dist/ui/components/MessageSelector.d.ts +66 -0
  1437. package/dist/ui/components/MessageSelector.d.ts.map +1 -0
  1438. package/dist/ui/components/MessageSelector.js +272 -0
  1439. package/dist/ui/components/MessageSelector.js.map +1 -0
  1440. package/dist/ui/components/ModelSelector.d.ts +27 -0
  1441. package/dist/ui/components/ModelSelector.d.ts.map +1 -0
  1442. package/dist/ui/components/ModelSelector.js +135 -0
  1443. package/dist/ui/components/ModelSelector.js.map +1 -0
  1444. package/dist/ui/components/PermissionPrompt.d.ts +44 -0
  1445. package/dist/ui/components/PermissionPrompt.d.ts.map +1 -0
  1446. package/dist/ui/components/PermissionPrompt.js +416 -0
  1447. package/dist/ui/components/PermissionPrompt.js.map +1 -0
  1448. package/dist/ui/components/ProgressBar.d.ts +61 -0
  1449. package/dist/ui/components/ProgressBar.d.ts.map +1 -0
  1450. package/dist/ui/components/ProgressBar.js +174 -0
  1451. package/dist/ui/components/ProgressBar.js.map +1 -0
  1452. package/dist/ui/components/ResumeSession.d.ts +27 -0
  1453. package/dist/ui/components/ResumeSession.d.ts.map +1 -0
  1454. package/dist/ui/components/ResumeSession.js +330 -0
  1455. package/dist/ui/components/ResumeSession.js.map +1 -0
  1456. package/dist/ui/components/SelectInput.d.ts +22 -0
  1457. package/dist/ui/components/SelectInput.d.ts.map +1 -0
  1458. package/dist/ui/components/SelectInput.js +84 -0
  1459. package/dist/ui/components/SelectInput.js.map +1 -0
  1460. package/dist/ui/components/ShortcutHelp.d.ts +12 -0
  1461. package/dist/ui/components/ShortcutHelp.d.ts.map +1 -0
  1462. package/dist/ui/components/ShortcutHelp.js +55 -0
  1463. package/dist/ui/components/ShortcutHelp.js.map +1 -0
  1464. package/dist/ui/components/SkillsDialog.d.ts +12 -0
  1465. package/dist/ui/components/SkillsDialog.d.ts.map +1 -0
  1466. package/dist/ui/components/SkillsDialog.js +239 -0
  1467. package/dist/ui/components/SkillsDialog.js.map +1 -0
  1468. package/dist/ui/components/Spinner.d.ts +81 -0
  1469. package/dist/ui/components/Spinner.d.ts.map +1 -0
  1470. package/dist/ui/components/Spinner.js +165 -0
  1471. package/dist/ui/components/Spinner.js.map +1 -0
  1472. package/dist/ui/components/StatsPanel.d.ts +20 -0
  1473. package/dist/ui/components/StatsPanel.d.ts.map +1 -0
  1474. package/dist/ui/components/StatsPanel.js +584 -0
  1475. package/dist/ui/components/StatsPanel.js.map +1 -0
  1476. package/dist/ui/components/StatusBar.d.ts +43 -0
  1477. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  1478. package/dist/ui/components/StatusBar.js +160 -0
  1479. package/dist/ui/components/StatusBar.js.map +1 -0
  1480. package/dist/ui/components/StatusBar.test.d.ts +10 -0
  1481. package/dist/ui/components/StatusBar.test.d.ts.map +1 -0
  1482. package/dist/ui/components/StatusBar.test.js +70 -0
  1483. package/dist/ui/components/StatusBar.test.js.map +1 -0
  1484. package/dist/ui/components/TodoList.d.ts +25 -0
  1485. package/dist/ui/components/TodoList.d.ts.map +1 -0
  1486. package/dist/ui/components/TodoList.js +146 -0
  1487. package/dist/ui/components/TodoList.js.map +1 -0
  1488. package/dist/ui/components/ToolCall.d.ts +19 -0
  1489. package/dist/ui/components/ToolCall.d.ts.map +1 -0
  1490. package/dist/ui/components/ToolCall.js +196 -0
  1491. package/dist/ui/components/ToolCall.js.map +1 -0
  1492. package/dist/ui/components/TrustDialog.d.ts +35 -0
  1493. package/dist/ui/components/TrustDialog.d.ts.map +1 -0
  1494. package/dist/ui/components/TrustDialog.js +163 -0
  1495. package/dist/ui/components/TrustDialog.js.map +1 -0
  1496. package/dist/ui/components/UpdateNotification.d.ts +11 -0
  1497. package/dist/ui/components/UpdateNotification.d.ts.map +1 -0
  1498. package/dist/ui/components/UpdateNotification.js +66 -0
  1499. package/dist/ui/components/UpdateNotification.js.map +1 -0
  1500. package/dist/ui/components/WelcomeScreen.d.ts +22 -0
  1501. package/dist/ui/components/WelcomeScreen.d.ts.map +1 -0
  1502. package/dist/ui/components/WelcomeScreen.js +156 -0
  1503. package/dist/ui/components/WelcomeScreen.js.map +1 -0
  1504. package/dist/ui/components/index.d.ts +35 -0
  1505. package/dist/ui/components/index.d.ts.map +1 -0
  1506. package/dist/ui/components/index.js +25 -0
  1507. package/dist/ui/components/index.js.map +1 -0
  1508. package/dist/ui/hooks/index.d.ts +12 -0
  1509. package/dist/ui/hooks/index.d.ts.map +1 -0
  1510. package/dist/ui/hooks/index.js +9 -0
  1511. package/dist/ui/hooks/index.js.map +1 -0
  1512. package/dist/ui/hooks/useAutoScroll.d.ts +22 -0
  1513. package/dist/ui/hooks/useAutoScroll.d.ts.map +1 -0
  1514. package/dist/ui/hooks/useAutoScroll.js +46 -0
  1515. package/dist/ui/hooks/useAutoScroll.js.map +1 -0
  1516. package/dist/ui/hooks/useAxonMdImport.d.ts +57 -0
  1517. package/dist/ui/hooks/useAxonMdImport.d.ts.map +1 -0
  1518. package/dist/ui/hooks/useAxonMdImport.js +248 -0
  1519. package/dist/ui/hooks/useAxonMdImport.js.map +1 -0
  1520. package/dist/ui/hooks/useGlobalKeybindings.d.ts +60 -0
  1521. package/dist/ui/hooks/useGlobalKeybindings.d.ts.map +1 -0
  1522. package/dist/ui/hooks/useGlobalKeybindings.js +460 -0
  1523. package/dist/ui/hooks/useGlobalKeybindings.js.map +1 -0
  1524. package/dist/ui/hooks/useRewind.d.ts +44 -0
  1525. package/dist/ui/hooks/useRewind.d.ts.map +1 -0
  1526. package/dist/ui/hooks/useRewind.js +67 -0
  1527. package/dist/ui/hooks/useRewind.js.map +1 -0
  1528. package/dist/ui/hooks/useTerminalSize.d.ts +32 -0
  1529. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -0
  1530. package/dist/ui/hooks/useTerminalSize.js +70 -0
  1531. package/dist/ui/hooks/useTerminalSize.js.map +1 -0
  1532. package/dist/ui/index.d.ts +29 -0
  1533. package/dist/ui/index.d.ts.map +1 -0
  1534. package/dist/ui/index.js +42 -0
  1535. package/dist/ui/index.js.map +1 -0
  1536. package/dist/ui/ink-v2/dom-renderer.d.ts +58 -0
  1537. package/dist/ui/ink-v2/dom-renderer.d.ts.map +1 -0
  1538. package/dist/ui/ink-v2/dom-renderer.js +295 -0
  1539. package/dist/ui/ink-v2/dom-renderer.js.map +1 -0
  1540. package/dist/ui/ink-v2/frame.d.ts +25 -0
  1541. package/dist/ui/ink-v2/frame.d.ts.map +1 -0
  1542. package/dist/ui/ink-v2/frame.js +120 -0
  1543. package/dist/ui/ink-v2/frame.js.map +1 -0
  1544. package/dist/ui/ink-v2/index.d.ts +92 -0
  1545. package/dist/ui/ink-v2/index.d.ts.map +1 -0
  1546. package/dist/ui/ink-v2/index.js +185 -0
  1547. package/dist/ui/ink-v2/index.js.map +1 -0
  1548. package/dist/ui/ink-v2/output.d.ts +43 -0
  1549. package/dist/ui/ink-v2/output.d.ts.map +1 -0
  1550. package/dist/ui/ink-v2/output.js +154 -0
  1551. package/dist/ui/ink-v2/output.js.map +1 -0
  1552. package/dist/ui/ink-v2/renderer.d.ts +49 -0
  1553. package/dist/ui/ink-v2/renderer.d.ts.map +1 -0
  1554. package/dist/ui/ink-v2/renderer.js +411 -0
  1555. package/dist/ui/ink-v2/renderer.js.map +1 -0
  1556. package/dist/ui/ink-v2/screen.d.ts +65 -0
  1557. package/dist/ui/ink-v2/screen.d.ts.map +1 -0
  1558. package/dist/ui/ink-v2/screen.js +260 -0
  1559. package/dist/ui/ink-v2/screen.js.map +1 -0
  1560. package/dist/ui/ink-v2/style-pool.d.ts +28 -0
  1561. package/dist/ui/ink-v2/style-pool.d.ts.map +1 -0
  1562. package/dist/ui/ink-v2/style-pool.js +50 -0
  1563. package/dist/ui/ink-v2/style-pool.js.map +1 -0
  1564. package/dist/ui/ink-v2/types.d.ts +138 -0
  1565. package/dist/ui/ink-v2/types.d.ts.map +1 -0
  1566. package/dist/ui/ink-v2/types.js +11 -0
  1567. package/dist/ui/ink-v2/types.js.map +1 -0
  1568. package/dist/ui/markdown-renderer.d.ts +35 -0
  1569. package/dist/ui/markdown-renderer.d.ts.map +1 -0
  1570. package/dist/ui/markdown-renderer.js +369 -0
  1571. package/dist/ui/markdown-renderer.js.map +1 -0
  1572. package/dist/ui/spinner-verbs.d.ts +15 -0
  1573. package/dist/ui/spinner-verbs.d.ts.map +1 -0
  1574. package/dist/ui/spinner-verbs.js +75 -0
  1575. package/dist/ui/spinner-verbs.js.map +1 -0
  1576. package/dist/ui/utils/history-manager.d.ts +41 -0
  1577. package/dist/ui/utils/history-manager.d.ts.map +1 -0
  1578. package/dist/ui/utils/history-manager.js +109 -0
  1579. package/dist/ui/utils/history-manager.js.map +1 -0
  1580. package/dist/ui/utils/index.d.ts +9 -0
  1581. package/dist/ui/utils/index.d.ts.map +1 -0
  1582. package/dist/ui/utils/index.js +10 -0
  1583. package/dist/ui/utils/index.js.map +1 -0
  1584. package/dist/ui/utils/kitty-keyboard.d.ts +239 -0
  1585. package/dist/ui/utils/kitty-keyboard.d.ts.map +1 -0
  1586. package/dist/ui/utils/kitty-keyboard.js +341 -0
  1587. package/dist/ui/utils/kitty-keyboard.js.map +1 -0
  1588. package/dist/ui/utils/string-width.d.ts +36 -0
  1589. package/dist/ui/utils/string-width.d.ts.map +1 -0
  1590. package/dist/ui/utils/string-width.js +339 -0
  1591. package/dist/ui/utils/string-width.js.map +1 -0
  1592. package/dist/ui/utils/syntaxHighlight.d.ts +94 -0
  1593. package/dist/ui/utils/syntaxHighlight.d.ts.map +1 -0
  1594. package/dist/ui/utils/syntaxHighlight.js +415 -0
  1595. package/dist/ui/utils/syntaxHighlight.js.map +1 -0
  1596. package/dist/ui/utils/terminal.d.ts +145 -0
  1597. package/dist/ui/utils/terminal.d.ts.map +1 -0
  1598. package/dist/ui/utils/terminal.js +229 -0
  1599. package/dist/ui/utils/terminal.js.map +1 -0
  1600. package/dist/updater/index.d.ts +115 -0
  1601. package/dist/updater/index.d.ts.map +1 -0
  1602. package/dist/updater/index.js +546 -0
  1603. package/dist/updater/index.js.map +1 -0
  1604. package/dist/utils/AppError.d.ts +24 -0
  1605. package/dist/utils/AppError.d.ts.map +1 -0
  1606. package/dist/utils/AppError.js +33 -0
  1607. package/dist/utils/AppError.js.map +1 -0
  1608. package/dist/utils/AppError.test.d.ts +2 -0
  1609. package/dist/utils/AppError.test.d.ts.map +1 -0
  1610. package/dist/utils/AppError.test.js +257 -0
  1611. package/dist/utils/AppError.test.js.map +1 -0
  1612. package/dist/utils/attribution.d.ts +111 -0
  1613. package/dist/utils/attribution.d.ts.map +1 -0
  1614. package/dist/utils/attribution.js +219 -0
  1615. package/dist/utils/attribution.js.map +1 -0
  1616. package/dist/utils/editor.d.ts +19 -0
  1617. package/dist/utils/editor.d.ts.map +1 -0
  1618. package/dist/utils/editor.js +115 -0
  1619. package/dist/utils/editor.js.map +1 -0
  1620. package/dist/utils/env-check.d.ts +78 -0
  1621. package/dist/utils/env-check.d.ts.map +1 -0
  1622. package/dist/utils/env-check.js +114 -0
  1623. package/dist/utils/env-check.js.map +1 -0
  1624. package/dist/utils/error-watcher.d.ts +78 -0
  1625. package/dist/utils/error-watcher.d.ts.map +1 -0
  1626. package/dist/utils/error-watcher.js +355 -0
  1627. package/dist/utils/error-watcher.js.map +1 -0
  1628. package/dist/utils/git-helper.d.ts +55 -0
  1629. package/dist/utils/git-helper.d.ts.map +1 -0
  1630. package/dist/utils/git-helper.js +238 -0
  1631. package/dist/utils/git-helper.js.map +1 -0
  1632. package/dist/utils/index.d.ts +188 -0
  1633. package/dist/utils/index.d.ts.map +1 -0
  1634. package/dist/utils/index.js +472 -0
  1635. package/dist/utils/index.js.map +1 -0
  1636. package/dist/utils/logger.d.ts +117 -0
  1637. package/dist/utils/logger.d.ts.map +1 -0
  1638. package/dist/utils/logger.js +458 -0
  1639. package/dist/utils/logger.js.map +1 -0
  1640. package/dist/utils/package-manager.d.ts +134 -0
  1641. package/dist/utils/package-manager.d.ts.map +1 -0
  1642. package/dist/utils/package-manager.js +325 -0
  1643. package/dist/utils/package-manager.js.map +1 -0
  1644. package/dist/utils/platform.d.ts +283 -0
  1645. package/dist/utils/platform.d.ts.map +1 -0
  1646. package/dist/utils/platform.js +748 -0
  1647. package/dist/utils/platform.js.map +1 -0
  1648. package/dist/utils/pr-status.d.ts +50 -0
  1649. package/dist/utils/pr-status.d.ts.map +1 -0
  1650. package/dist/utils/pr-status.js +182 -0
  1651. package/dist/utils/pr-status.js.map +1 -0
  1652. package/dist/utils/retry.d.ts +86 -0
  1653. package/dist/utils/retry.d.ts.map +1 -0
  1654. package/dist/utils/retry.js +202 -0
  1655. package/dist/utils/retry.js.map +1 -0
  1656. package/dist/utils/temp-dir.d.ts +31 -0
  1657. package/dist/utils/temp-dir.d.ts.map +1 -0
  1658. package/dist/utils/temp-dir.js +141 -0
  1659. package/dist/utils/temp-dir.js.map +1 -0
  1660. package/dist/utils/terminal-setup.d.ts +31 -0
  1661. package/dist/utils/terminal-setup.d.ts.map +1 -0
  1662. package/dist/utils/terminal-setup.js +224 -0
  1663. package/dist/utils/terminal-setup.js.map +1 -0
  1664. package/dist/utils/terminal-tab.d.ts +15 -0
  1665. package/dist/utils/terminal-tab.d.ts.map +1 -0
  1666. package/dist/utils/terminal-tab.js +173 -0
  1667. package/dist/utils/terminal-tab.js.map +1 -0
  1668. package/dist/utils/token-estimate.d.ts +26 -0
  1669. package/dist/utils/token-estimate.d.ts.map +1 -0
  1670. package/dist/utils/token-estimate.js +62 -0
  1671. package/dist/utils/token-estimate.js.map +1 -0
  1672. package/dist/utils/truncated-buffer.d.ts +70 -0
  1673. package/dist/utils/truncated-buffer.d.ts.map +1 -0
  1674. package/dist/utils/truncated-buffer.js +124 -0
  1675. package/dist/utils/truncated-buffer.js.map +1 -0
  1676. package/dist/version.d.ts +30 -0
  1677. package/dist/version.d.ts.map +1 -0
  1678. package/dist/version.js +32 -0
  1679. package/dist/version.js.map +1 -0
  1680. package/dist/web/index.d.ts +7 -0
  1681. package/dist/web/index.d.ts.map +1 -0
  1682. package/dist/web/index.js +7 -0
  1683. package/dist/web/index.js.map +1 -0
  1684. package/dist/web/server/api-manager.d.ts +53 -0
  1685. package/dist/web/server/api-manager.d.ts.map +1 -0
  1686. package/dist/web/server/api-manager.js +271 -0
  1687. package/dist/web/server/api-manager.js.map +1 -0
  1688. package/dist/web/server/channels/adapters/discord.d.ts +41 -0
  1689. package/dist/web/server/channels/adapters/discord.d.ts.map +1 -0
  1690. package/dist/web/server/channels/adapters/discord.js +326 -0
  1691. package/dist/web/server/channels/adapters/discord.js.map +1 -0
  1692. package/dist/web/server/channels/adapters/feishu.d.ts +38 -0
  1693. package/dist/web/server/channels/adapters/feishu.d.ts.map +1 -0
  1694. package/dist/web/server/channels/adapters/feishu.js +442 -0
  1695. package/dist/web/server/channels/adapters/feishu.js.map +1 -0
  1696. package/dist/web/server/channels/adapters/slack-bot.d.ts +30 -0
  1697. package/dist/web/server/channels/adapters/slack-bot.d.ts.map +1 -0
  1698. package/dist/web/server/channels/adapters/slack-bot.js +226 -0
  1699. package/dist/web/server/channels/adapters/slack-bot.js.map +1 -0
  1700. package/dist/web/server/channels/adapters/telegram.d.ts +32 -0
  1701. package/dist/web/server/channels/adapters/telegram.d.ts.map +1 -0
  1702. package/dist/web/server/channels/adapters/telegram.js +261 -0
  1703. package/dist/web/server/channels/adapters/telegram.js.map +1 -0
  1704. package/dist/web/server/channels/adapters/whatsapp.d.ts +48 -0
  1705. package/dist/web/server/channels/adapters/whatsapp.d.ts.map +1 -0
  1706. package/dist/web/server/channels/adapters/whatsapp.js +316 -0
  1707. package/dist/web/server/channels/adapters/whatsapp.js.map +1 -0
  1708. package/dist/web/server/channels/bridge.d.ts +103 -0
  1709. package/dist/web/server/channels/bridge.d.ts.map +1 -0
  1710. package/dist/web/server/channels/bridge.js +728 -0
  1711. package/dist/web/server/channels/bridge.js.map +1 -0
  1712. package/dist/web/server/channels/index.d.ts +71 -0
  1713. package/dist/web/server/channels/index.d.ts.map +1 -0
  1714. package/dist/web/server/channels/index.js +307 -0
  1715. package/dist/web/server/channels/index.js.map +1 -0
  1716. package/dist/web/server/channels/types.d.ts +249 -0
  1717. package/dist/web/server/channels/types.d.ts.map +1 -0
  1718. package/dist/web/server/channels/types.js +8 -0
  1719. package/dist/web/server/channels/types.js.map +1 -0
  1720. package/dist/web/server/checkpoint-manager.d.ts +152 -0
  1721. package/dist/web/server/checkpoint-manager.d.ts.map +1 -0
  1722. package/dist/web/server/checkpoint-manager.js +359 -0
  1723. package/dist/web/server/checkpoint-manager.js.map +1 -0
  1724. package/dist/web/server/connectors/index.d.ts +115 -0
  1725. package/dist/web/server/connectors/index.d.ts.map +1 -0
  1726. package/dist/web/server/connectors/index.js +759 -0
  1727. package/dist/web/server/connectors/index.js.map +1 -0
  1728. package/dist/web/server/connectors/providers.d.ts +6 -0
  1729. package/dist/web/server/connectors/providers.d.ts.map +1 -0
  1730. package/dist/web/server/connectors/providers.js +238 -0
  1731. package/dist/web/server/connectors/providers.js.map +1 -0
  1732. package/dist/web/server/connectors/types.d.ts +79 -0
  1733. package/dist/web/server/connectors/types.d.ts.map +1 -0
  1734. package/dist/web/server/connectors/types.js +5 -0
  1735. package/dist/web/server/connectors/types.js.map +1 -0
  1736. package/dist/web/server/conversation.d.ts +593 -0
  1737. package/dist/web/server/conversation.d.ts.map +1 -0
  1738. package/dist/web/server/conversation.js +5170 -0
  1739. package/dist/web/server/conversation.js.map +1 -0
  1740. package/dist/web/server/database/swarm-logs.d.ts +150 -0
  1741. package/dist/web/server/database/swarm-logs.d.ts.map +1 -0
  1742. package/dist/web/server/database/swarm-logs.js +456 -0
  1743. package/dist/web/server/database/swarm-logs.js.map +1 -0
  1744. package/dist/web/server/doctor.d.ts +59 -0
  1745. package/dist/web/server/doctor.d.ts.map +1 -0
  1746. package/dist/web/server/doctor.js +666 -0
  1747. package/dist/web/server/doctor.js.map +1 -0
  1748. package/dist/web/server/evolve-state.d.ts +30 -0
  1749. package/dist/web/server/evolve-state.d.ts.map +1 -0
  1750. package/dist/web/server/evolve-state.js +54 -0
  1751. package/dist/web/server/evolve-state.js.map +1 -0
  1752. package/dist/web/server/git-manager.d.ts +373 -0
  1753. package/dist/web/server/git-manager.d.ts.map +1 -0
  1754. package/dist/web/server/git-manager.js +1556 -0
  1755. package/dist/web/server/git-manager.js.map +1 -0
  1756. package/dist/web/server/handlers/types.d.ts +95 -0
  1757. package/dist/web/server/handlers/types.d.ts.map +1 -0
  1758. package/dist/web/server/handlers/types.js +22 -0
  1759. package/dist/web/server/handlers/types.js.map +1 -0
  1760. package/dist/web/server/index.d.ts +41 -0
  1761. package/dist/web/server/index.d.ts.map +1 -0
  1762. package/dist/web/server/index.js +935 -0
  1763. package/dist/web/server/index.js.map +1 -0
  1764. package/dist/web/server/oauth-manager.d.ts +89 -0
  1765. package/dist/web/server/oauth-manager.d.ts.map +1 -0
  1766. package/dist/web/server/oauth-manager.js +361 -0
  1767. package/dist/web/server/oauth-manager.js.map +1 -0
  1768. package/dist/web/server/permission-handler.d.ts +170 -0
  1769. package/dist/web/server/permission-handler.d.ts.map +1 -0
  1770. package/dist/web/server/permission-handler.js +591 -0
  1771. package/dist/web/server/permission-handler.js.map +1 -0
  1772. package/dist/web/server/project-suggestions.d.ts +39 -0
  1773. package/dist/web/server/project-suggestions.d.ts.map +1 -0
  1774. package/dist/web/server/project-suggestions.js +365 -0
  1775. package/dist/web/server/project-suggestions.js.map +1 -0
  1776. package/dist/web/server/prompt-snippets.d.ts +92 -0
  1777. package/dist/web/server/prompt-snippets.d.ts.map +1 -0
  1778. package/dist/web/server/prompt-snippets.js +206 -0
  1779. package/dist/web/server/prompt-snippets.js.map +1 -0
  1780. package/dist/web/server/routes/__tests__/artifacts-api.test.d.ts +2 -0
  1781. package/dist/web/server/routes/__tests__/artifacts-api.test.d.ts.map +1 -0
  1782. package/dist/web/server/routes/__tests__/artifacts-api.test.js +572 -0
  1783. package/dist/web/server/routes/__tests__/artifacts-api.test.js.map +1 -0
  1784. package/dist/web/server/routes/agent-api.d.ts +7 -0
  1785. package/dist/web/server/routes/agent-api.d.ts.map +1 -0
  1786. package/dist/web/server/routes/agent-api.js +225 -0
  1787. package/dist/web/server/routes/agent-api.js.map +1 -0
  1788. package/dist/web/server/routes/ai-editor.d.ts +13 -0
  1789. package/dist/web/server/routes/ai-editor.d.ts.map +1 -0
  1790. package/dist/web/server/routes/ai-editor.js +2079 -0
  1791. package/dist/web/server/routes/ai-editor.js.map +1 -0
  1792. package/dist/web/server/routes/ai-hover.d.ts +10 -0
  1793. package/dist/web/server/routes/ai-hover.d.ts.map +1 -0
  1794. package/dist/web/server/routes/ai-hover.js +359 -0
  1795. package/dist/web/server/routes/ai-hover.js.map +1 -0
  1796. package/dist/web/server/routes/api.d.ts +7 -0
  1797. package/dist/web/server/routes/api.d.ts.map +1 -0
  1798. package/dist/web/server/routes/api.js +1200 -0
  1799. package/dist/web/server/routes/api.js.map +1 -0
  1800. package/dist/web/server/routes/artifacts-api.d.ts +15 -0
  1801. package/dist/web/server/routes/artifacts-api.d.ts.map +1 -0
  1802. package/dist/web/server/routes/artifacts-api.js +231 -0
  1803. package/dist/web/server/routes/artifacts-api.js.map +1 -0
  1804. package/dist/web/server/routes/auth.d.ts +7 -0
  1805. package/dist/web/server/routes/auth.d.ts.map +1 -0
  1806. package/dist/web/server/routes/auth.js +292 -0
  1807. package/dist/web/server/routes/auth.js.map +1 -0
  1808. package/dist/web/server/routes/autocomplete-api.d.ts +10 -0
  1809. package/dist/web/server/routes/autocomplete-api.d.ts.map +1 -0
  1810. package/dist/web/server/routes/autocomplete-api.js +302 -0
  1811. package/dist/web/server/routes/autocomplete-api.js.map +1 -0
  1812. package/dist/web/server/routes/axon-cloud.d.ts +7 -0
  1813. package/dist/web/server/routes/axon-cloud.d.ts.map +1 -0
  1814. package/dist/web/server/routes/axon-cloud.js +160 -0
  1815. package/dist/web/server/routes/axon-cloud.js.map +1 -0
  1816. package/dist/web/server/routes/blueprint-api.d.ts +459 -0
  1817. package/dist/web/server/routes/blueprint-api.d.ts.map +1 -0
  1818. package/dist/web/server/routes/blueprint-api.js +6057 -0
  1819. package/dist/web/server/routes/blueprint-api.js.map +1 -0
  1820. package/dist/web/server/routes/blueprint-requirement-api.d.ts +11 -0
  1821. package/dist/web/server/routes/blueprint-requirement-api.d.ts.map +1 -0
  1822. package/dist/web/server/routes/blueprint-requirement-api.js +91 -0
  1823. package/dist/web/server/routes/blueprint-requirement-api.js.map +1 -0
  1824. package/dist/web/server/routes/code-parser.d.ts +14 -0
  1825. package/dist/web/server/routes/code-parser.d.ts.map +1 -0
  1826. package/dist/web/server/routes/code-parser.js +191 -0
  1827. package/dist/web/server/routes/code-parser.js.map +1 -0
  1828. package/dist/web/server/routes/config-api.d.ts +14 -0
  1829. package/dist/web/server/routes/config-api.d.ts.map +1 -0
  1830. package/dist/web/server/routes/config-api.js +670 -0
  1831. package/dist/web/server/routes/config-api.js.map +1 -0
  1832. package/dist/web/server/routes/connectors-api.d.ts +7 -0
  1833. package/dist/web/server/routes/connectors-api.d.ts.map +1 -0
  1834. package/dist/web/server/routes/connectors-api.js +267 -0
  1835. package/dist/web/server/routes/connectors-api.js.map +1 -0
  1836. package/dist/web/server/routes/data-flow-analyzer.d.ts +60 -0
  1837. package/dist/web/server/routes/data-flow-analyzer.d.ts.map +1 -0
  1838. package/dist/web/server/routes/data-flow-analyzer.js +220 -0
  1839. package/dist/web/server/routes/data-flow-analyzer.js.map +1 -0
  1840. package/dist/web/server/routes/download-proxy.d.ts +16 -0
  1841. package/dist/web/server/routes/download-proxy.d.ts.map +1 -0
  1842. package/dist/web/server/routes/download-proxy.js +114 -0
  1843. package/dist/web/server/routes/download-proxy.js.map +1 -0
  1844. package/dist/web/server/routes/file-api.d.ts +18 -0
  1845. package/dist/web/server/routes/file-api.d.ts.map +1 -0
  1846. package/dist/web/server/routes/file-api.js +1514 -0
  1847. package/dist/web/server/routes/file-api.js.map +1 -0
  1848. package/dist/web/server/routes/lsp-analyzer.d.ts +76 -0
  1849. package/dist/web/server/routes/lsp-analyzer.d.ts.map +1 -0
  1850. package/dist/web/server/routes/lsp-analyzer.js +457 -0
  1851. package/dist/web/server/routes/lsp-analyzer.js.map +1 -0
  1852. package/dist/web/server/routes/lsp-api.d.ts +8 -0
  1853. package/dist/web/server/routes/lsp-api.d.ts.map +1 -0
  1854. package/dist/web/server/routes/lsp-api.js +283 -0
  1855. package/dist/web/server/routes/lsp-api.js.map +1 -0
  1856. package/dist/web/server/routes/mcp-cli-api.d.ts +19 -0
  1857. package/dist/web/server/routes/mcp-cli-api.d.ts.map +1 -0
  1858. package/dist/web/server/routes/mcp-cli-api.js +223 -0
  1859. package/dist/web/server/routes/mcp-cli-api.js.map +1 -0
  1860. package/dist/web/server/routes/network-api.d.ts +8 -0
  1861. package/dist/web/server/routes/network-api.d.ts.map +1 -0
  1862. package/dist/web/server/routes/network-api.js +367 -0
  1863. package/dist/web/server/routes/network-api.js.map +1 -0
  1864. package/dist/web/server/routes/notebook-api.d.ts +12 -0
  1865. package/dist/web/server/routes/notebook-api.d.ts.map +1 -0
  1866. package/dist/web/server/routes/notebook-api.js +164 -0
  1867. package/dist/web/server/routes/notebook-api.js.map +1 -0
  1868. package/dist/web/server/routes/port-forward.d.ts +20 -0
  1869. package/dist/web/server/routes/port-forward.d.ts.map +1 -0
  1870. package/dist/web/server/routes/port-forward.js +155 -0
  1871. package/dist/web/server/routes/port-forward.js.map +1 -0
  1872. package/dist/web/server/routes/project-map-generator.d.ts +126 -0
  1873. package/dist/web/server/routes/project-map-generator.d.ts.map +1 -0
  1874. package/dist/web/server/routes/project-map-generator.js +800 -0
  1875. package/dist/web/server/routes/project-map-generator.js.map +1 -0
  1876. package/dist/web/server/routes/schedule-api.d.ts +7 -0
  1877. package/dist/web/server/routes/schedule-api.d.ts.map +1 -0
  1878. package/dist/web/server/routes/schedule-api.js +324 -0
  1879. package/dist/web/server/routes/schedule-api.js.map +1 -0
  1880. package/dist/web/server/routes/symbol-classifier.d.ts +71 -0
  1881. package/dist/web/server/routes/symbol-classifier.d.ts.map +1 -0
  1882. package/dist/web/server/routes/symbol-classifier.js +190 -0
  1883. package/dist/web/server/routes/symbol-classifier.js.map +1 -0
  1884. package/dist/web/server/services/axon-cloud-service.d.ts +95 -0
  1885. package/dist/web/server/services/axon-cloud-service.d.ts.map +1 -0
  1886. package/dist/web/server/services/axon-cloud-service.js +210 -0
  1887. package/dist/web/server/services/axon-cloud-service.js.map +1 -0
  1888. package/dist/web/server/services/config-service.d.ts +436 -0
  1889. package/dist/web/server/services/config-service.d.ts.map +1 -0
  1890. package/dist/web/server/services/config-service.js +872 -0
  1891. package/dist/web/server/services/config-service.js.map +1 -0
  1892. package/dist/web/server/services/gemini-image-service.d.ts +80 -0
  1893. package/dist/web/server/services/gemini-image-service.d.ts.map +1 -0
  1894. package/dist/web/server/services/gemini-image-service.js +373 -0
  1895. package/dist/web/server/services/gemini-image-service.js.map +1 -0
  1896. package/dist/web/server/services/mode-presets.d.ts +40 -0
  1897. package/dist/web/server/services/mode-presets.d.ts.map +1 -0
  1898. package/dist/web/server/services/mode-presets.js +167 -0
  1899. package/dist/web/server/services/mode-presets.js.map +1 -0
  1900. package/dist/web/server/services/proxy-service.d.ts +59 -0
  1901. package/dist/web/server/services/proxy-service.d.ts.map +1 -0
  1902. package/dist/web/server/services/proxy-service.js +132 -0
  1903. package/dist/web/server/services/proxy-service.js.map +1 -0
  1904. package/dist/web/server/session-manager.d.ts +152 -0
  1905. package/dist/web/server/session-manager.d.ts.map +1 -0
  1906. package/dist/web/server/session-manager.js +421 -0
  1907. package/dist/web/server/session-manager.js.map +1 -0
  1908. package/dist/web/server/slash-commands.d.ts +46 -0
  1909. package/dist/web/server/slash-commands.d.ts.map +1 -0
  1910. package/dist/web/server/slash-commands.js +774 -0
  1911. package/dist/web/server/slash-commands.js.map +1 -0
  1912. package/dist/web/server/task-manager.d.ts +190 -0
  1913. package/dist/web/server/task-manager.d.ts.map +1 -0
  1914. package/dist/web/server/task-manager.js +596 -0
  1915. package/dist/web/server/task-manager.js.map +1 -0
  1916. package/dist/web/server/terminal-manager.d.ts +50 -0
  1917. package/dist/web/server/terminal-manager.d.ts.map +1 -0
  1918. package/dist/web/server/terminal-manager.js +274 -0
  1919. package/dist/web/server/terminal-manager.js.map +1 -0
  1920. package/dist/web/server/trpc/appRouter.d.ts +429 -0
  1921. package/dist/web/server/trpc/appRouter.d.ts.map +1 -0
  1922. package/dist/web/server/trpc/appRouter.js +18 -0
  1923. package/dist/web/server/trpc/appRouter.js.map +1 -0
  1924. package/dist/web/server/trpc/index.d.ts +29 -0
  1925. package/dist/web/server/trpc/index.d.ts.map +1 -0
  1926. package/dist/web/server/trpc/index.js +25 -0
  1927. package/dist/web/server/trpc/index.js.map +1 -0
  1928. package/dist/web/server/trpc/routers/blueprint.d.ts +162 -0
  1929. package/dist/web/server/trpc/routers/blueprint.d.ts.map +1 -0
  1930. package/dist/web/server/trpc/routers/blueprint.js +225 -0
  1931. package/dist/web/server/trpc/routers/blueprint.js.map +1 -0
  1932. package/dist/web/server/trpc/routers/coordinator.d.ts +247 -0
  1933. package/dist/web/server/trpc/routers/coordinator.d.ts.map +1 -0
  1934. package/dist/web/server/trpc/routers/coordinator.js +363 -0
  1935. package/dist/web/server/trpc/routers/coordinator.js.map +1 -0
  1936. package/dist/web/server/trpc/routers/execution.d.ts +106 -0
  1937. package/dist/web/server/trpc/routers/execution.d.ts.map +1 -0
  1938. package/dist/web/server/trpc/routers/execution.js +176 -0
  1939. package/dist/web/server/trpc/routers/execution.js.map +1 -0
  1940. package/dist/web/server/user-interaction.d.ts +61 -0
  1941. package/dist/web/server/user-interaction.d.ts.map +1 -0
  1942. package/dist/web/server/user-interaction.js +133 -0
  1943. package/dist/web/server/user-interaction.js.map +1 -0
  1944. package/dist/web/server/web-auth.d.ts +125 -0
  1945. package/dist/web/server/web-auth.d.ts.map +1 -0
  1946. package/dist/web/server/web-auth.js +364 -0
  1947. package/dist/web/server/web-auth.js.map +1 -0
  1948. package/dist/web/server/web-scheduler.d.ts +96 -0
  1949. package/dist/web/server/web-scheduler.d.ts.map +1 -0
  1950. package/dist/web/server/web-scheduler.js +762 -0
  1951. package/dist/web/server/web-scheduler.js.map +1 -0
  1952. package/dist/web/server/websocket-git-handlers.d.ts +107 -0
  1953. package/dist/web/server/websocket-git-handlers.d.ts.map +1 -0
  1954. package/dist/web/server/websocket-git-handlers.js +855 -0
  1955. package/dist/web/server/websocket-git-handlers.js.map +1 -0
  1956. package/dist/web/server/websocket.d.ts +18 -0
  1957. package/dist/web/server/websocket.d.ts.map +1 -0
  1958. package/dist/web/server/websocket.js +6158 -0
  1959. package/dist/web/server/websocket.js.map +1 -0
  1960. package/dist/web/shared/types.d.ts +4100 -0
  1961. package/dist/web/shared/types.d.ts.map +1 -0
  1962. package/dist/web/shared/types.js +123 -0
  1963. package/dist/web/shared/types.js.map +1 -0
  1964. package/dist/web-cli.d.ts +11 -0
  1965. package/dist/web-cli.d.ts.map +1 -0
  1966. package/dist/web-cli.js +196 -0
  1967. package/dist/web-cli.js.map +1 -0
  1968. package/dist/wizard/onboarding.d.ts +13 -0
  1969. package/dist/wizard/onboarding.d.ts.map +1 -0
  1970. package/dist/wizard/onboarding.js +196 -0
  1971. package/dist/wizard/onboarding.js.map +1 -0
  1972. package/electron/README.md +41 -0
  1973. package/electron/main.cjs +341 -0
  1974. package/package.json +236 -0
  1975. package/scripts/postinstall.js +110 -0
@@ -0,0 +1,1638 @@
1
+ /**
2
+ * 文件操作工具
3
+ * Read, Write, Edit
4
+ *
5
+ * 对应官方实现 (cli.js):
6
+ * - m2A 函数: 智能字符串匹配,处理智能引号
7
+ * - lY2 函数: 字符串替换逻辑
8
+ * - GG1/VSA 函数: Edit 验证和执行
9
+ */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ import * as crypto from 'crypto';
13
+ import { BaseTool } from './base.js';
14
+ import { readImageFile, readPdfFile, renderSvgToPng, detectMediaType, isBlacklistedFile, isPdfSupported, isSvgRenderEnabled, parsePageRange, getPdfPageCount, extractPdfPages, formatBytes, PDF_MAX_PAGES_PER_REQUEST, PDF_LARGE_THRESHOLD, isOfficeFile, documentToHtml, editDocument, documentToText, clearDocumentCache, } from '../media/index.js';
15
+ // 注意:旧的 blueprintContext 已被移除,新架构使用 SmartPlanner
16
+ // 边界检查由 SmartPlanner 在任务规划阶段处理,工具层不再需要
17
+ import { persistLargeOutputSync } from './output-persistence.js';
18
+ import { runPreToolUseHooks, runPostToolUseHooks } from '../hooks/index.js';
19
+ import { getCurrentCwd } from '../core/cwd-context.js';
20
+ import { t } from '../i18n/index.js';
21
+ import { fromMsysPath } from '../utils/platform.js';
22
+ /**
23
+ * 解析文件路径
24
+ * 如果是相对路径,则基于当前工作目录(从 AsyncLocalStorage 获取)解析
25
+ * 这解决了多 Worker 并发时工作目录混乱的问题
26
+ *
27
+ * @param filePath 输入的文件路径(可能是相对路径或绝对路径)
28
+ * @returns 绝对路径
29
+ */
30
+ function resolveFilePath(filePath) {
31
+ // 处理 MSYS/Git Bash 路径格式:/f/axon → F:/axon
32
+ // 子 agent 从 Bash 输出中拿到的路径可能是 MSYS 格式,Node.js fs 不认识
33
+ filePath = fromMsysPath(filePath);
34
+ if (path.isAbsolute(filePath)) {
35
+ return filePath;
36
+ }
37
+ // 使用 getCurrentCwd() 获取当前工作目录上下文
38
+ // 这是通过 AsyncLocalStorage 设置的,支持多 Worker 并发
39
+ const cwd = getCurrentCwd();
40
+ return path.resolve(cwd, filePath);
41
+ }
42
+ /**
43
+ * v2.1.69: 检查写入路径是否通过 symlink 逃逸工作目录
44
+ *
45
+ * 攻击向量:如果工作目录中有一个 symlink 指向外部目录,
46
+ * 模型可以通过该 symlink 写入任意位置的文件。
47
+ *
48
+ * 修复:解析所有父目录的真实路径,确保最终目标在工作目录内。
49
+ */
50
+ function validateWritePath(filePath) {
51
+ const cwd = getCurrentCwd();
52
+ try {
53
+ // 找到最深的已存在的父目录,解析其真实路径
54
+ let checkPath = filePath;
55
+ while (!fs.existsSync(checkPath)) {
56
+ const parent = path.dirname(checkPath);
57
+ if (parent === checkPath)
58
+ break; // 到达根目录
59
+ checkPath = parent;
60
+ }
61
+ // 如果已存在部分是 symlink 或包含 symlink,解析真实路径
62
+ const realParent = fs.existsSync(checkPath) ? fs.realpathSync(checkPath) : checkPath;
63
+ const relativePart = path.relative(checkPath, filePath);
64
+ const realPath = relativePart ? path.join(realParent, relativePart) : realParent;
65
+ // 检查真实路径是否在工作目录内
66
+ const realCwd = fs.realpathSync(cwd);
67
+ const normalizedRealPath = path.normalize(realPath).toLowerCase();
68
+ const normalizedRealCwd = path.normalize(realCwd).toLowerCase();
69
+ if (!normalizedRealPath.startsWith(normalizedRealCwd + path.sep) &&
70
+ normalizedRealPath !== normalizedRealCwd) {
71
+ return {
72
+ safe: false,
73
+ realPath,
74
+ reason: `Path resolves to '${realPath}' which is outside the working directory '${realCwd}' (possible symlink escape)`,
75
+ };
76
+ }
77
+ return { safe: true, realPath };
78
+ }
79
+ catch {
80
+ // 如果无法解析,默认允许(不阻止正常操作)
81
+ return { safe: true, realPath: filePath };
82
+ }
83
+ }
84
+ /**
85
+ * 全局文件读取跟踪器
86
+ * 用于验证在编辑文件之前是否已读取该文件
87
+ * 并跟踪文件的 mtime 以检测外部修改
88
+ */
89
+ class FileReadTracker {
90
+ static instance;
91
+ readFiles = new Map();
92
+ static getInstance() {
93
+ if (!FileReadTracker.instance) {
94
+ FileReadTracker.instance = new FileReadTracker();
95
+ }
96
+ return FileReadTracker.instance;
97
+ }
98
+ /**
99
+ * 标记文件已被读取
100
+ * v3.7: 对齐官网实现 - 存储 content 而不是 contentHash
101
+ *
102
+ * @param filePath 文件路径
103
+ * @param content 文件内容(已标准化为 LF 换行符)
104
+ * @param mtime 文件修改时间(mtimeMs)
105
+ * @param offset 可选,部分读取时的偏移量
106
+ * @param limit 可选,部分读取时的限制
107
+ */
108
+ markAsRead(filePath, content, mtime, offset, limit) {
109
+ // 规范化路径
110
+ const normalizedPath = path.resolve(filePath);
111
+ const record = {
112
+ path: normalizedPath,
113
+ readTime: Date.now(),
114
+ mtime,
115
+ content,
116
+ offset,
117
+ limit,
118
+ };
119
+ this.readFiles.set(normalizedPath, record);
120
+ }
121
+ hasBeenRead(filePath) {
122
+ const normalizedPath = path.resolve(filePath);
123
+ return this.readFiles.has(normalizedPath);
124
+ }
125
+ getRecord(filePath) {
126
+ const normalizedPath = path.resolve(filePath);
127
+ return this.readFiles.get(normalizedPath);
128
+ }
129
+ clear() {
130
+ this.readFiles.clear();
131
+ }
132
+ }
133
+ // 导出跟踪器供外部使用
134
+ export const fileReadTracker = FileReadTracker.getInstance();
135
+ /**
136
+ * 计算文件内容的 SHA256 哈希值
137
+ * v2.1.7: 用于内容变更检测,修复 Windows 上的时间戳假错误
138
+ */
139
+ function computeContentHash(content) {
140
+ return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
141
+ }
142
+ /**
143
+ * 智能引号字符映射
144
+ * 对应官方 cli.js 中的 RI5, _I5, jI5, TI5 常量
145
+ */
146
+ const SMART_QUOTE_MAP = {
147
+ '\u2018': "'", // 左单引号 '
148
+ '\u2019': "'", // 右单引号 '
149
+ '\u201C': '"', // 左双引号 "
150
+ '\u201D': '"', // 右双引号 "
151
+ };
152
+ /**
153
+ * LLM 输出的畸形 XML token 映射表
154
+ * 对应官方 cli.js 中的 pS9 / dS9 函数
155
+ *
156
+ * 模型有时会输出缩写的 XML token(因内部 tokenizer 的关系),
157
+ * 导致 old_string 中包含 <fnr> 而文件中实际是 <function_results> 等。
158
+ * 这个映射表将缩写 token 还原为完整形式。
159
+ */
160
+ const TOKEN_TAG_MAP = {
161
+ '<fnr>': '<function_results>',
162
+ '<n>': '<name>',
163
+ '</n>': '</name>',
164
+ '<o>': '<output>',
165
+ '</o>': '</output>',
166
+ '<e>': '<error>',
167
+ '</e>': '</error>',
168
+ '<s>': '<system>',
169
+ '</s>': '</system>',
170
+ '<r>': '<result>',
171
+ '</r>': '</result>',
172
+ };
173
+ /**
174
+ * 将智能引号转换为普通引号
175
+ * 对应官方 cli.js 中的 cY2 函数
176
+ */
177
+ function normalizeQuotes(str) {
178
+ let result = str;
179
+ for (const [smart, normal] of Object.entries(SMART_QUOTE_MAP)) {
180
+ result = result.replaceAll(smart, normal);
181
+ }
182
+ return result;
183
+ }
184
+ /**
185
+ * 标准化 LLM 输出中的畸形 XML token
186
+ * 对应官方 cli.js 中的 dS9 函数
187
+ *
188
+ * @returns 标准化后的字符串和应用的替换列表
189
+ */
190
+ function normalizeTokenTags(str) {
191
+ let result = str;
192
+ const appliedReplacements = [];
193
+ for (const [abbrev, full] of Object.entries(TOKEN_TAG_MAP)) {
194
+ const before = result;
195
+ result = result.replaceAll(abbrev, full);
196
+ if (before !== result) {
197
+ appliedReplacements.push({ from: abbrev, to: full });
198
+ }
199
+ }
200
+ return { result, appliedReplacements };
201
+ }
202
+ /**
203
+ * 清理字符串中的尾部空白(保持行结构)
204
+ * 对应官方 cli.js 中的 VJ0 函数
205
+ */
206
+ function cleanTrailingWhitespace(str) {
207
+ const parts = str.split(/(\r\n|\n|\r)/);
208
+ let result = '';
209
+ for (let i = 0; i < parts.length; i++) {
210
+ const part = parts[i];
211
+ if (part !== undefined) {
212
+ if (i % 2 === 0) {
213
+ // 文本部分,清理尾部空白
214
+ result += part.replace(/\s+$/, '');
215
+ }
216
+ else {
217
+ // 换行符部分,保持原样
218
+ result += part;
219
+ }
220
+ }
221
+ }
222
+ return result;
223
+ }
224
+ /**
225
+ * 智能字符串匹配函数
226
+ * 对应官方 cli.js 中的 m2A 函数
227
+ *
228
+ * 功能:
229
+ * 1. 直接匹配
230
+ * 2. 智能引号转换后匹配
231
+ * 3. 返回实际匹配的字符串(保持原始格式)
232
+ */
233
+ function findMatchingString(fileContents, searchString) {
234
+ // 直接匹配
235
+ if (fileContents.includes(searchString)) {
236
+ return searchString;
237
+ }
238
+ // 尝试智能引号转换
239
+ const normalizedSearch = normalizeQuotes(searchString);
240
+ const normalizedContents = normalizeQuotes(fileContents);
241
+ const index = normalizedContents.indexOf(normalizedSearch);
242
+ if (index !== -1) {
243
+ // 返回原始文件中对应位置的字符串
244
+ return fileContents.substring(index, index + searchString.length);
245
+ }
246
+ return null;
247
+ }
248
+ /**
249
+ * 检测行号前缀模式
250
+ * Read 工具输出格式: " 123\tcode content"
251
+ * 即: 空格 + 行号 + 制表符 + 实际内容
252
+ */
253
+ const LINE_NUMBER_PREFIX_PATTERN = /^(\s*\d+)\t/;
254
+ /**
255
+ * 移除字符串中的行号前缀
256
+ * 用于处理从 Read 工具输出中复制的内容
257
+ */
258
+ function stripLineNumberPrefixes(str) {
259
+ return str.split('\n').map(line => {
260
+ const match = line.match(LINE_NUMBER_PREFIX_PATTERN);
261
+ if (match) {
262
+ // 移除行号前缀(包括制表符)
263
+ return line.substring(match[0].length);
264
+ }
265
+ return line;
266
+ }).join('\n');
267
+ }
268
+ /**
269
+ * 检测字符串是否包含行号前缀
270
+ */
271
+ function hasLineNumberPrefixes(str) {
272
+ const lines = str.split('\n');
273
+ // 检查是否有多行都包含行号前缀模式
274
+ let prefixCount = 0;
275
+ for (const line of lines) {
276
+ if (LINE_NUMBER_PREFIX_PATTERN.test(line)) {
277
+ prefixCount++;
278
+ }
279
+ }
280
+ // 如果超过一半的行有行号前缀,则认为需要处理
281
+ return prefixCount > 0 && prefixCount >= lines.length / 2;
282
+ }
283
+ /**
284
+ * 智能查找并匹配字符串
285
+ * 对应官方 cli.js 中的 sn7 + m2A 函数
286
+ *
287
+ * 渐进式匹配策略:
288
+ * 1. 直接匹配(含智能引号标准化)
289
+ * 2. 行号前缀处理
290
+ * 3. XML token 标准化(dS9)
291
+ * 4. 尾部换行处理
292
+ */
293
+ function smartFindString(fileContents, searchString) {
294
+ // 1. 直接匹配(findMatchingString 内部已含智能引号标准化)
295
+ let match = findMatchingString(fileContents, searchString);
296
+ if (match)
297
+ return match;
298
+ // 2. 尝试移除行号前缀后匹配
299
+ if (hasLineNumberPrefixes(searchString)) {
300
+ const strippedSearch = stripLineNumberPrefixes(searchString);
301
+ match = findMatchingString(fileContents, strippedSearch);
302
+ if (match)
303
+ return match;
304
+ }
305
+ // 3. XML token 标准化(对应官方 dS9/sn7)
306
+ // 模型有时输出缩写 token(如 <fnr> 代替 <function_results>)
307
+ const { result: normalizedSearch, appliedReplacements } = normalizeTokenTags(searchString);
308
+ if (appliedReplacements.length > 0) {
309
+ match = findMatchingString(fileContents, normalizedSearch);
310
+ if (match)
311
+ return match;
312
+ }
313
+ // 4. 处理尾部换行
314
+ // 如果搜索字符串不以换行结尾,但文件中该位置后面有换行
315
+ if (!searchString.endsWith('\n') && fileContents.includes(searchString + '\n')) {
316
+ return searchString;
317
+ }
318
+ return null;
319
+ }
320
+ /**
321
+ * 执行字符串替换
322
+ * 对应官方 cli.js 中的 lY2 函数
323
+ */
324
+ function replaceString(content, oldString, newString, replaceAll = false) {
325
+ if (replaceAll) {
326
+ return content.replaceAll(oldString, newString);
327
+ }
328
+ // 处理空 new_string 的特殊情况
329
+ if (newString === '') {
330
+ // 如果 old_string 不以换行结尾,但在文件中后面跟着换行
331
+ // 则应该也删除那个换行
332
+ if (!oldString.endsWith('\n') && content.includes(oldString + '\n')) {
333
+ return content.replace(oldString + '\n', newString);
334
+ }
335
+ }
336
+ return content.replace(oldString, newString);
337
+ }
338
+ export class ReadTool extends BaseTool {
339
+ name = 'Read';
340
+ description = `Reads a file from the local filesystem. You can access any file directly by using this tool.
341
+ Assume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.
342
+
343
+ Usage:
344
+ - The file_path parameter must be an absolute path, not a relative path
345
+ - By default, it reads up to 2000 lines starting from the beginning of the file
346
+ - You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters
347
+ - Any lines longer than 2000 characters will be truncated
348
+ - Results are returned using cat -n format, with line numbers starting at 1
349
+ - This tool allows Axon to read images (eg PNG, JPG, etc). When reading an image file the contents are presented visually as Axon is a multimodal LLM.
350
+ - This tool can read PDF files (.pdf). For large PDFs (more than 10 pages), you MUST provide the pages parameter to read specific page ranges (e.g., pages: "1-5"). Reading a large PDF without the pages parameter will fail. Maximum 20 pages per request.
351
+ - This tool can read Jupyter notebooks (.ipynb files) and returns all cells with their outputs, combining code, text, and visualizations.
352
+ - This tool can read Office documents (.docx, .xlsx, .pptx) and converts them to HTML for easy reading. Word documents preserve formatting, Excel files show all sheets as tables, PowerPoint files extract slide text.
353
+ - This tool can only read files, not directories. To read a directory, use an ls command via the Bash tool.
354
+ - You can call multiple tools in a single response. It is always better to speculatively read multiple potentially useful files in parallel.
355
+ - You will regularly be asked to read screenshots. If the user provides a path to a screenshot, ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths.
356
+ - If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.`;
357
+ getInputSchema() {
358
+ return {
359
+ type: 'object',
360
+ properties: {
361
+ file_path: {
362
+ type: 'string',
363
+ description: 'The absolute path to the file to read',
364
+ },
365
+ offset: {
366
+ type: 'number',
367
+ description: 'The line number to start reading from. Only provide if the file is too large to read at once',
368
+ },
369
+ limit: {
370
+ type: 'number',
371
+ description: 'The number of lines to read. Only provide if the file is too large to read at once.',
372
+ },
373
+ pages: {
374
+ type: 'string',
375
+ description: `Page range for PDF files (e.g., "1-5", "3", "10-20"). Only applicable to PDF files. Maximum ${PDF_MAX_PAGES_PER_REQUEST} pages per request.`,
376
+ },
377
+ },
378
+ required: ['file_path'],
379
+ };
380
+ }
381
+ async execute(input) {
382
+ const { file_path: inputPath, offset = 0, limit = 2000, pages } = input;
383
+ // 解析文件路径(支持相对路径,基于当前工作目录上下文)
384
+ const file_path = resolveFilePath(inputPath);
385
+ // v2.1.30: 验证 pages 参数
386
+ if (pages !== undefined) {
387
+ const parsedRange = parsePageRange(pages);
388
+ if (!parsedRange) {
389
+ return {
390
+ success: false,
391
+ error: t('file.invalidPages', { pages }),
392
+ };
393
+ }
394
+ const pageCount = parsedRange.lastPage === Infinity
395
+ ? PDF_MAX_PAGES_PER_REQUEST + 1
396
+ : parsedRange.lastPage - parsedRange.firstPage + 1;
397
+ if (pageCount > PDF_MAX_PAGES_PER_REQUEST) {
398
+ return {
399
+ success: false,
400
+ error: t('file.pageRangeExceeds', { pages, max: PDF_MAX_PAGES_PER_REQUEST }),
401
+ };
402
+ }
403
+ }
404
+ try {
405
+ if (!fs.existsSync(file_path)) {
406
+ return { success: false, error: t('file.notFound', { path: file_path }) };
407
+ }
408
+ const stat = fs.statSync(file_path);
409
+ if (stat.isDirectory()) {
410
+ return { success: false, error: t('file.isDirectory', { path: file_path }) };
411
+ }
412
+ const ext = path.extname(file_path).toLowerCase().slice(1);
413
+ // 检查是否在黑名单中
414
+ if (isBlacklistedFile(file_path)) {
415
+ return {
416
+ success: false,
417
+ error: t('file.binaryNotSupported', { ext })
418
+ };
419
+ }
420
+ // 处理 Office 文档 (docx/xlsx/pptx)
421
+ if (isOfficeFile(file_path)) {
422
+ return await this.readOfficeDocument(file_path);
423
+ }
424
+ // 检测媒体文件类型
425
+ const mediaType = detectMediaType(file_path);
426
+ // 处理图片
427
+ if (mediaType === 'image') {
428
+ return await this.readImageEnhanced(file_path);
429
+ }
430
+ // 处理 PDF
431
+ if (mediaType === 'pdf') {
432
+ return await this.readPdfEnhanced(file_path, pages);
433
+ }
434
+ // 处理 SVG(可选渲染)
435
+ if (mediaType === 'svg') {
436
+ return await this.readSvg(file_path);
437
+ }
438
+ // 处理 Jupyter Notebook
439
+ if (ext === 'ipynb') {
440
+ return this.readNotebook(file_path);
441
+ }
442
+ // 读取文本文件
443
+ const content = fs.readFileSync(file_path, 'utf-8');
444
+ const lines = content.split('\n');
445
+ const selectedLines = lines.slice(offset, offset + limit);
446
+ // 格式化带行号的输出
447
+ const maxLineNumWidth = String(offset + selectedLines.length).length;
448
+ let output = selectedLines.map((line, idx) => {
449
+ const lineNum = String(offset + idx + 1).padStart(maxLineNumWidth, ' ');
450
+ const truncatedLine = line.length > 2000 ? line.substring(0, 2000) + '...' : line;
451
+ return `${lineNum}\t${truncatedLine}`;
452
+ }).join('\n');
453
+ // 使用输出持久化处理大输出
454
+ const persistResult = persistLargeOutputSync(output, {
455
+ toolName: 'Read',
456
+ maxLength: 30000,
457
+ });
458
+ // v3.7: 对齐官网实现 - 存储完整文件内容
459
+ // 官网逻辑: z.set(X,{content:G, timestamp:dP(X), offset:void 0, limit:void 0})
460
+ // 标准化换行符以确保跨平台一致性(Windows CRLF -> LF)
461
+ const normalizedContent = content.replaceAll('\r\n', '\n');
462
+ // 标记文件已被读取(用于 Edit 工具验证)
463
+ // 如果是部分读取(offset != 0 或未读到末尾),记录 offset 和 limit
464
+ const isPartialRead = offset !== 0 || (offset + limit) < lines.length;
465
+ if (isPartialRead) {
466
+ fileReadTracker.markAsRead(file_path, normalizedContent, stat.mtimeMs, offset, limit);
467
+ }
468
+ else {
469
+ // 完整读取,不传 offset 和 limit(与官网一致)
470
+ fileReadTracker.markAsRead(file_path, normalizedContent, stat.mtimeMs);
471
+ }
472
+ return {
473
+ success: true,
474
+ content: persistResult.content,
475
+ output: persistResult.content,
476
+ lineCount: lines.length,
477
+ };
478
+ }
479
+ catch (err) {
480
+ return { success: false, error: t('file.readError', { error: err }) };
481
+ }
482
+ }
483
+ /**
484
+ * Office 文档读取(docx/xlsx/pptx → HTML)
485
+ */
486
+ async readOfficeDocument(filePath) {
487
+ try {
488
+ const stat = fs.statSync(filePath);
489
+ const ext = path.extname(filePath).toLowerCase().slice(1);
490
+ const sizeKB = (stat.size / 1024).toFixed(2);
491
+ const html = await documentToHtml(filePath);
492
+ const header = `[${ext.toUpperCase()} Document: ${filePath}] (${sizeKB} KB)\n\n`;
493
+ const output = header + html;
494
+ return { success: true, output };
495
+ }
496
+ catch (err) {
497
+ return {
498
+ success: false,
499
+ error: `Failed to read Office document: ${err}`,
500
+ };
501
+ }
502
+ }
503
+ /**
504
+ * 增强的图片读取(使用媒体处理模块)
505
+ */
506
+ async readImageEnhanced(filePath) {
507
+ try {
508
+ const result = await readImageFile(filePath);
509
+ const sizeKB = (result.file.originalSize / 1024).toFixed(2);
510
+ const tokenEstimate = Math.ceil(result.file.base64.length * 0.125);
511
+ let output = `[Image: ${filePath}]\n`;
512
+ output += `Format: ${result.file.type}\n`;
513
+ output += `Size: ${sizeKB} KB\n`;
514
+ if (result.file.dimensions) {
515
+ const { originalWidth, originalHeight, displayWidth, displayHeight } = result.file.dimensions;
516
+ if (originalWidth && originalHeight) {
517
+ output += `Original dimensions: ${originalWidth}x${originalHeight}\n`;
518
+ if (displayWidth && displayHeight && (displayWidth !== originalWidth || displayHeight !== originalHeight)) {
519
+ output += `Display dimensions: ${displayWidth}x${displayHeight} (resized)\n`;
520
+ }
521
+ }
522
+ }
523
+ output += `Estimated tokens: ${tokenEstimate}`;
524
+ return {
525
+ success: true,
526
+ output,
527
+ content: `data:${result.file.type};base64,${result.file.base64}`,
528
+ };
529
+ }
530
+ catch (error) {
531
+ return {
532
+ success: false,
533
+ error: t('file.imageReadError', { error }),
534
+ };
535
+ }
536
+ }
537
+ /**
538
+ * 增强的 PDF 读取(使用媒体处理模块)
539
+ * v2.1.30: 支持 pages 参数,大 PDF 强制使用页面范围
540
+ *
541
+ * 对应官方实现 (cli.js 第3626行附近):
542
+ * - 如果有 pages 参数,使用 pdftoppm 提取指定页面为 JPEG
543
+ * - 如果没有 pages 参数且 PDF > 10 页,报错要求提供 pages
544
+ * - 如果没有 pages 参数且 PDF <= 10 页,作为 document 发送
545
+ */
546
+ async readPdfEnhanced(filePath, pages) {
547
+ try {
548
+ // 检查 PDF 支持
549
+ if (!isPdfSupported()) {
550
+ return {
551
+ success: false,
552
+ error: t('file.pdfNotEnabled'),
553
+ };
554
+ }
555
+ // v2.1.30: 如果提供了 pages 参数,使用 pdftoppm 提取指定页面
556
+ if (pages) {
557
+ const parsedRange = parsePageRange(pages);
558
+ const extractResult = await extractPdfPages(filePath, parsedRange ?? undefined);
559
+ if (extractResult.success === false) {
560
+ return {
561
+ success: false,
562
+ error: extractResult.error.message,
563
+ };
564
+ }
565
+ const { data } = extractResult;
566
+ const output = `PDF pages extracted: ${data.file.count} page(s) from ${filePath} (${formatBytes(data.file.originalSize)})`;
567
+ // 读取提取的 JPEG 图片并构建 newMessages
568
+ const outputDir = data.file.outputDir;
569
+ const jpgFiles = fs.readdirSync(outputDir).filter(f => f.endsWith('.jpg')).sort();
570
+ const imageBlocks = [];
571
+ for (const jpgFile of jpgFiles) {
572
+ const jpgPath = path.join(outputDir, jpgFile);
573
+ const jpgData = fs.readFileSync(jpgPath).toString('base64');
574
+ imageBlocks.push({
575
+ type: 'image',
576
+ source: {
577
+ type: 'base64',
578
+ media_type: 'image/jpeg',
579
+ data: jpgData,
580
+ },
581
+ });
582
+ }
583
+ return {
584
+ success: true,
585
+ output,
586
+ newMessages: imageBlocks.length > 0 ? [
587
+ {
588
+ role: 'user',
589
+ content: imageBlocks,
590
+ },
591
+ ] : undefined,
592
+ };
593
+ }
594
+ // v2.1.30: 检查 PDF 页数,超过阈值必须使用 pages 参数
595
+ const pageCount = await getPdfPageCount(filePath);
596
+ if (pageCount !== null && pageCount > PDF_LARGE_THRESHOLD) {
597
+ return {
598
+ success: false,
599
+ error: t('file.pdfTooLarge', { count: pageCount, max: PDF_MAX_PAGES_PER_REQUEST }),
600
+ };
601
+ }
602
+ // PDF <= 10 页或无法检测页数:直接作为 document 发送
603
+ const result = await readPdfFile(filePath);
604
+ const output = `PDF file read: ${filePath} (${formatBytes(result.file.originalSize)})`;
605
+ return {
606
+ success: true,
607
+ output,
608
+ content: result.file.base64,
609
+ newMessages: [
610
+ {
611
+ role: 'user',
612
+ content: [
613
+ {
614
+ type: 'document',
615
+ source: {
616
+ type: 'base64',
617
+ media_type: 'application/pdf',
618
+ data: result.file.base64,
619
+ },
620
+ },
621
+ ],
622
+ },
623
+ ],
624
+ };
625
+ }
626
+ catch (error) {
627
+ // v2.1.31: PDF 过大错误不应锁死 session
628
+ // 返回友好的错误信息,包含实际限制
629
+ const errorMessage = error?.message || String(error);
630
+ return {
631
+ success: false,
632
+ error: t('file.pdfReadError', { error: errorMessage }),
633
+ };
634
+ }
635
+ }
636
+ /**
637
+ * SVG 文件读取(可选渲染为 PNG)
638
+ */
639
+ async readSvg(filePath) {
640
+ try {
641
+ // 检查是否启用 SVG 渲染
642
+ if (isSvgRenderEnabled()) {
643
+ // 渲染为 PNG
644
+ const result = await renderSvgToPng(filePath, {
645
+ fitTo: { mode: 'width', value: 800 }
646
+ });
647
+ let output = `[SVG rendered to PNG: ${filePath}]\n`;
648
+ output += `Format: ${result.file.type}\n`;
649
+ if (result.file.dimensions) {
650
+ output += `Dimensions: ${result.file.dimensions.displayWidth}x${result.file.dimensions.displayHeight}\n`;
651
+ }
652
+ return {
653
+ success: true,
654
+ output,
655
+ content: `data:${result.file.type};base64,${result.file.base64}`,
656
+ };
657
+ }
658
+ else {
659
+ // 作为文本读取
660
+ const content = fs.readFileSync(filePath, 'utf-8');
661
+ return {
662
+ success: true,
663
+ output: `[SVG File: ${filePath}]\n`,
664
+ content,
665
+ };
666
+ }
667
+ }
668
+ catch (error) {
669
+ return {
670
+ success: false,
671
+ error: t('file.svgReadError', { error }),
672
+ };
673
+ }
674
+ }
675
+ readImage(filePath) {
676
+ const base64 = fs.readFileSync(filePath).toString('base64');
677
+ const ext = path.extname(filePath).toLowerCase();
678
+ const mimeType = ext === '.png' ? 'image/png' :
679
+ ext === '.gif' ? 'image/gif' :
680
+ ext === '.webp' ? 'image/webp' : 'image/jpeg';
681
+ return {
682
+ success: true,
683
+ output: `[Image: ${filePath}]\nBase64 data (${base64.length} chars)`,
684
+ content: `data:${mimeType};base64,${base64}`,
685
+ };
686
+ }
687
+ readPdf(filePath) {
688
+ // 简化版 PDF 读取
689
+ return {
690
+ success: true,
691
+ output: `[PDF File: ${filePath}]\nPDF reading requires additional processing.`,
692
+ };
693
+ }
694
+ /**
695
+ * 读取 Jupyter Notebook 文件
696
+ * 完整支持单元格输出的 MIME bundles 处理
697
+ *
698
+ * 支持的输出类型:
699
+ * - execute_result: 代码执行结果
700
+ * - display_data: 显示数据(图表、HTML 等)
701
+ * - stream: stdout/stderr 流
702
+ * - error: 错误信息和 traceback
703
+ *
704
+ * 支持的 MIME 类型:
705
+ * - text/plain: 纯文本
706
+ * - text/html: HTML 内容
707
+ * - text/markdown: Markdown 内容
708
+ * - image/png, image/jpeg, image/gif, image/svg+xml: 图片
709
+ * - application/json: JSON 数据
710
+ */
711
+ readNotebook(filePath) {
712
+ try {
713
+ const content = fs.readFileSync(filePath, 'utf-8');
714
+ const notebook = JSON.parse(content);
715
+ const cells = notebook.cells || [];
716
+ let output = '';
717
+ const imageMessages = [];
718
+ cells.forEach((cell, idx) => {
719
+ const cellType = cell.cell_type || 'unknown';
720
+ const source = Array.isArray(cell.source) ? cell.source.join('') : (cell.source || '');
721
+ const executionCount = cell.execution_count;
722
+ // 单元格头部
723
+ const cellHeader = executionCount
724
+ ? `In [${executionCount}]`
725
+ : `Cell ${idx + 1}`;
726
+ output += `\n${'═'.repeat(60)}\n`;
727
+ output += `📝 ${cellHeader} (${cellType})\n`;
728
+ output += `${'─'.repeat(60)}\n`;
729
+ output += `${source}\n`;
730
+ // 处理单元格输出(仅 code 类型有输出)
731
+ if (cellType === 'code' && cell.outputs && Array.isArray(cell.outputs)) {
732
+ const cellOutputs = this.processCellOutputs(cell.outputs, idx);
733
+ if (cellOutputs.text) {
734
+ output += `\n${'─'.repeat(40)}\n`;
735
+ output += `📤 Output:\n`;
736
+ output += cellOutputs.text;
737
+ }
738
+ // 收集图片消息
739
+ if (cellOutputs.images.length > 0) {
740
+ for (const img of cellOutputs.images) {
741
+ imageMessages.push({
742
+ role: 'user',
743
+ content: [
744
+ {
745
+ type: 'text',
746
+ text: `[Jupyter Notebook image output - Cell ${idx + 1}]`,
747
+ },
748
+ {
749
+ type: 'image',
750
+ source: {
751
+ type: 'base64',
752
+ media_type: img.mimeType,
753
+ data: img.data,
754
+ },
755
+ },
756
+ ],
757
+ });
758
+ }
759
+ output += `\n🖼️ [${cellOutputs.images.length} image output(s) - see images below]\n`;
760
+ }
761
+ }
762
+ });
763
+ output += `\n${'═'.repeat(60)}\n`;
764
+ output += `📊 Notebook stats: ${cells.length} cells\n`;
765
+ // 构建结果
766
+ const result = {
767
+ success: true,
768
+ output,
769
+ content,
770
+ };
771
+ // 如果有图片,添加到 newMessages
772
+ if (imageMessages.length > 0) {
773
+ result.newMessages = imageMessages;
774
+ }
775
+ return result;
776
+ }
777
+ catch (err) {
778
+ return { success: false, error: t('file.notebookReadError', { error: err }) };
779
+ }
780
+ }
781
+ /**
782
+ * 处理单元格输出
783
+ * 解析 MIME bundles 并提取可显示的内容
784
+ */
785
+ processCellOutputs(outputs, cellIndex) {
786
+ let textOutput = '';
787
+ const images = [];
788
+ for (const output of outputs) {
789
+ const outputType = output.output_type;
790
+ switch (outputType) {
791
+ case 'execute_result':
792
+ case 'display_data': {
793
+ // MIME bundle 输出
794
+ const data = output.data || {};
795
+ const executionCount = output.execution_count;
796
+ // 优先处理图片
797
+ const imageTypes = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/svg+xml'];
798
+ let hasImage = false;
799
+ for (const mimeType of imageTypes) {
800
+ if (data[mimeType]) {
801
+ const imgData = Array.isArray(data[mimeType])
802
+ ? data[mimeType].join('')
803
+ : data[mimeType];
804
+ // SVG 特殊处理(转为 base64)
805
+ if (mimeType === 'image/svg+xml') {
806
+ const svgBase64 = Buffer.from(imgData).toString('base64');
807
+ images.push({ mimeType: 'image/svg+xml', data: svgBase64 });
808
+ }
809
+ else {
810
+ // PNG/JPEG/GIF 已经是 base64
811
+ images.push({ mimeType, data: imgData });
812
+ }
813
+ hasImage = true;
814
+ break;
815
+ }
816
+ }
817
+ // 如果没有图片,显示其他内容
818
+ if (!hasImage) {
819
+ // 优先显示 HTML
820
+ if (data['text/html']) {
821
+ const html = Array.isArray(data['text/html'])
822
+ ? data['text/html'].join('')
823
+ : data['text/html'];
824
+ textOutput += `[HTML output]\n${this.sanitizeHtmlForTerminal(html)}\n`;
825
+ }
826
+ // 其次显示 Markdown
827
+ else if (data['text/markdown']) {
828
+ const md = Array.isArray(data['text/markdown'])
829
+ ? data['text/markdown'].join('')
830
+ : data['text/markdown'];
831
+ textOutput += `${md}\n`;
832
+ }
833
+ // 显示 JSON
834
+ else if (data['application/json']) {
835
+ const json = data['application/json'];
836
+ textOutput += `[JSON]\n${JSON.stringify(json, null, 2)}\n`;
837
+ }
838
+ // 最后显示纯文本
839
+ else if (data['text/plain']) {
840
+ const text = Array.isArray(data['text/plain'])
841
+ ? data['text/plain'].join('')
842
+ : data['text/plain'];
843
+ if (executionCount) {
844
+ textOutput += `Out[${executionCount}]: ${text}\n`;
845
+ }
846
+ else {
847
+ textOutput += `${text}\n`;
848
+ }
849
+ }
850
+ }
851
+ break;
852
+ }
853
+ case 'stream': {
854
+ // stdout/stderr 流输出
855
+ const name = output.name || 'stdout';
856
+ const text = Array.isArray(output.text)
857
+ ? output.text.join('')
858
+ : (output.text || '');
859
+ if (name === 'stderr') {
860
+ textOutput += `⚠️ stderr:\n${text}`;
861
+ }
862
+ else {
863
+ textOutput += text;
864
+ }
865
+ break;
866
+ }
867
+ case 'error': {
868
+ // 错误输出
869
+ const ename = output.ename || 'Error';
870
+ const evalue = output.evalue || '';
871
+ const traceback = output.traceback || [];
872
+ textOutput += `❌ ${ename}: ${evalue}\n`;
873
+ if (traceback.length > 0) {
874
+ // 清理 ANSI 转义码
875
+ const cleanTraceback = traceback
876
+ .map((line) => this.stripAnsiCodes(line))
877
+ .join('\n');
878
+ textOutput += `${cleanTraceback}\n`;
879
+ }
880
+ break;
881
+ }
882
+ default:
883
+ // 未知输出类型
884
+ if (output.text) {
885
+ const text = Array.isArray(output.text)
886
+ ? output.text.join('')
887
+ : output.text;
888
+ textOutput += `${text}\n`;
889
+ }
890
+ }
891
+ }
892
+ return { text: textOutput, images };
893
+ }
894
+ /**
895
+ * 清理 HTML 以便在终端显示
896
+ * 保留基本结构,移除复杂标签
897
+ */
898
+ sanitizeHtmlForTerminal(html) {
899
+ // 移除 script 和 style 标签
900
+ let clean = html.replace(/<script[\s\S]*?<\/script>/gi, '');
901
+ clean = clean.replace(/<style[\s\S]*?<\/style>/gi, '');
902
+ // 将表格转为简单格式
903
+ clean = clean.replace(/<table[\s\S]*?>/gi, '\n┌────────────────────────────────────┐\n');
904
+ clean = clean.replace(/<\/table>/gi, '\n└────────────────────────────────────┘\n');
905
+ clean = clean.replace(/<tr[\s\S]*?>/gi, '│ ');
906
+ clean = clean.replace(/<\/tr>/gi, ' │\n');
907
+ clean = clean.replace(/<th[\s\S]*?>/gi, '');
908
+ clean = clean.replace(/<\/th>/gi, ' | ');
909
+ clean = clean.replace(/<td[\s\S]*?>/gi, '');
910
+ clean = clean.replace(/<\/td>/gi, ' | ');
911
+ // 处理常见标签
912
+ clean = clean.replace(/<br\s*\/?>/gi, '\n');
913
+ clean = clean.replace(/<p[\s\S]*?>/gi, '\n');
914
+ clean = clean.replace(/<\/p>/gi, '\n');
915
+ clean = clean.replace(/<div[\s\S]*?>/gi, '\n');
916
+ clean = clean.replace(/<\/div>/gi, '\n');
917
+ clean = clean.replace(/<h[1-6][\s\S]*?>/gi, '\n### ');
918
+ clean = clean.replace(/<\/h[1-6]>/gi, '\n');
919
+ clean = clean.replace(/<li[\s\S]*?>/gi, '\n• ');
920
+ clean = clean.replace(/<\/li>/gi, '');
921
+ clean = clean.replace(/<ul[\s\S]*?>/gi, '\n');
922
+ clean = clean.replace(/<\/ul>/gi, '\n');
923
+ clean = clean.replace(/<ol[\s\S]*?>/gi, '\n');
924
+ clean = clean.replace(/<\/ol>/gi, '\n');
925
+ clean = clean.replace(/<strong[\s\S]*?>/gi, '**');
926
+ clean = clean.replace(/<\/strong>/gi, '**');
927
+ clean = clean.replace(/<em[\s\S]*?>/gi, '_');
928
+ clean = clean.replace(/<\/em>/gi, '_');
929
+ clean = clean.replace(/<code[\s\S]*?>/gi, '`');
930
+ clean = clean.replace(/<\/code>/gi, '`');
931
+ clean = clean.replace(/<pre[\s\S]*?>/gi, '\n```\n');
932
+ clean = clean.replace(/<\/pre>/gi, '\n```\n');
933
+ // 移除所有剩余标签
934
+ clean = clean.replace(/<[^>]+>/g, '');
935
+ // 解码 HTML 实体
936
+ clean = clean.replace(/&nbsp;/g, ' ');
937
+ clean = clean.replace(/&lt;/g, '<');
938
+ clean = clean.replace(/&gt;/g, '>');
939
+ clean = clean.replace(/&amp;/g, '&');
940
+ clean = clean.replace(/&quot;/g, '"');
941
+ clean = clean.replace(/&#39;/g, "'");
942
+ // 清理多余空行
943
+ clean = clean.replace(/\n{3,}/g, '\n\n');
944
+ return clean.trim();
945
+ }
946
+ /**
947
+ * 移除 ANSI 转义码
948
+ * 用于清理 Jupyter traceback 中的颜色代码
949
+ */
950
+ stripAnsiCodes(str) {
951
+ // 移除 ANSI 转义序列
952
+ return str.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, '');
953
+ }
954
+ }
955
+ export class WriteTool extends BaseTool {
956
+ name = 'Write';
957
+ description = `Writes a file to the local filesystem.
958
+
959
+ Usage:
960
+ - This tool will overwrite the existing file if there is one at the provided path.
961
+ - If this is an existing file, you MUST use the Read tool first to read the file's contents. This tool will fail if you did not read the file first.
962
+ - ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
963
+ - NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
964
+ - Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`;
965
+ getInputSchema() {
966
+ return {
967
+ type: 'object',
968
+ properties: {
969
+ file_path: {
970
+ type: 'string',
971
+ description: 'The absolute path to the file to write',
972
+ },
973
+ content: {
974
+ type: 'string',
975
+ description: 'The content to write to the file',
976
+ },
977
+ },
978
+ required: ['file_path', 'content'],
979
+ };
980
+ }
981
+ async execute(input) {
982
+ const { file_path: inputPath, content } = input;
983
+ // 解析文件路径(支持相对路径,基于当前工作目录上下文)
984
+ const file_path = resolveFilePath(inputPath);
985
+ try {
986
+ const hookResult = await runPreToolUseHooks('Write', input);
987
+ if (!hookResult.allowed) {
988
+ return { success: false, error: hookResult.message || t('file.blockedByHook') };
989
+ }
990
+ // 注意:蓝图边界检查已移除
991
+ // 新架构中,边界检查由 SmartPlanner 在任务规划阶段处理
992
+ // v2.1.69: symlink 逃逸检查
993
+ const pathCheck = validateWritePath(file_path);
994
+ if (!pathCheck.safe) {
995
+ return { success: false, error: pathCheck.reason || 'Path escapes working directory via symlink' };
996
+ }
997
+ // 确保目录存在
998
+ const dir = path.dirname(file_path);
999
+ if (!fs.existsSync(dir)) {
1000
+ fs.mkdirSync(dir, { recursive: true });
1001
+ }
1002
+ fs.writeFileSync(file_path, content, 'utf-8');
1003
+ // v3.7: 写入成功后更新 FileReadTracker(对齐官网实现)
1004
+ // 这样后续的 Edit 操作可以正常工作
1005
+ try {
1006
+ const stat = fs.statSync(file_path);
1007
+ const normalizedContent = content.replaceAll('\r\n', '\n');
1008
+ fileReadTracker.markAsRead(file_path, normalizedContent, stat.mtimeMs);
1009
+ }
1010
+ catch {
1011
+ // 如果更新失败,不影响写入结果
1012
+ }
1013
+ const lines = content.split('\n').length;
1014
+ const result = {
1015
+ success: true,
1016
+ output: t('file.writeSuccess', { lines, path: file_path }),
1017
+ lineCount: lines,
1018
+ };
1019
+ await runPostToolUseHooks('Write', input, result.output || '');
1020
+ return result;
1021
+ }
1022
+ catch (err) {
1023
+ return { success: false, error: t('file.writeError', { error: err }) };
1024
+ }
1025
+ }
1026
+ }
1027
+ /**
1028
+ * 生成 Unified Diff 格式的差异预览
1029
+ */
1030
+ function generateUnifiedDiff(filePath, oldContent, newContent, contextLines = 3) {
1031
+ const oldLines = oldContent.split('\n');
1032
+ const newLines = newContent.split('\n');
1033
+ // 找到所有不同的行
1034
+ const changes = [];
1035
+ let i = 0;
1036
+ let j = 0;
1037
+ while (i < oldLines.length || j < newLines.length) {
1038
+ if (i >= oldLines.length) {
1039
+ changes.push({ type: 'add', line: newLines[j], newIndex: j });
1040
+ j++;
1041
+ }
1042
+ else if (j >= newLines.length) {
1043
+ changes.push({ type: 'delete', line: oldLines[i], oldIndex: i });
1044
+ i++;
1045
+ }
1046
+ else if (oldLines[i] === newLines[j]) {
1047
+ changes.push({ type: 'equal', line: oldLines[i], oldIndex: i, newIndex: j });
1048
+ i++;
1049
+ j++;
1050
+ }
1051
+ else {
1052
+ // 检测是修改还是插入/删除
1053
+ const isInNew = newLines.slice(j).includes(oldLines[i]);
1054
+ const isInOld = oldLines.slice(i).includes(newLines[j]);
1055
+ if (!isInNew) {
1056
+ changes.push({ type: 'delete', line: oldLines[i], oldIndex: i });
1057
+ i++;
1058
+ }
1059
+ else if (!isInOld) {
1060
+ changes.push({ type: 'add', line: newLines[j], newIndex: j });
1061
+ j++;
1062
+ }
1063
+ else {
1064
+ // 都存在,按照距离判断
1065
+ const distNew = newLines.slice(j).indexOf(oldLines[i]);
1066
+ const distOld = oldLines.slice(i).indexOf(newLines[j]);
1067
+ if (distNew <= distOld) {
1068
+ changes.push({ type: 'add', line: newLines[j], newIndex: j });
1069
+ j++;
1070
+ }
1071
+ else {
1072
+ changes.push({ type: 'delete', line: oldLines[i], oldIndex: i });
1073
+ i++;
1074
+ }
1075
+ }
1076
+ }
1077
+ }
1078
+ // 生成 unified diff 格式
1079
+ let diff = '';
1080
+ diff += `--- a/${path.basename(filePath)}\n`;
1081
+ diff += `+++ b/${path.basename(filePath)}\n`;
1082
+ // 查找变化块(hunks)
1083
+ const hunks = [];
1084
+ for (let idx = 0; idx < changes.length; idx++) {
1085
+ if (changes[idx].type !== 'equal') {
1086
+ const start = Math.max(0, idx - contextLines);
1087
+ const end = Math.min(changes.length - 1, idx + contextLines);
1088
+ if (hunks.length === 0 || start > hunks[hunks.length - 1].end + 1) {
1089
+ hunks.push({ start, end });
1090
+ }
1091
+ else {
1092
+ hunks[hunks.length - 1].end = end;
1093
+ }
1094
+ }
1095
+ }
1096
+ let additions = 0;
1097
+ let deletions = 0;
1098
+ // 生成每个 hunk
1099
+ for (const hunk of hunks) {
1100
+ const hunkChanges = changes.slice(hunk.start, hunk.end + 1);
1101
+ // 计算 hunk 头部的行号范围
1102
+ let oldStart = 0;
1103
+ let oldCount = 0;
1104
+ let newStart = 0;
1105
+ let newCount = 0;
1106
+ for (const change of hunkChanges) {
1107
+ if (change.type === 'delete' || change.type === 'equal') {
1108
+ if (oldCount === 0 && change.oldIndex !== undefined) {
1109
+ oldStart = change.oldIndex + 1;
1110
+ }
1111
+ oldCount++;
1112
+ }
1113
+ if (change.type === 'add' || change.type === 'equal') {
1114
+ if (newCount === 0 && change.newIndex !== undefined) {
1115
+ newStart = change.newIndex + 1;
1116
+ }
1117
+ newCount++;
1118
+ }
1119
+ }
1120
+ diff += `@@ -${oldStart},${oldCount} +${newStart},${newCount} @@\n`;
1121
+ // 生成 hunk 内容
1122
+ for (const change of hunkChanges) {
1123
+ if (change.type === 'equal') {
1124
+ diff += ` ${change.line}\n`;
1125
+ }
1126
+ else if (change.type === 'delete') {
1127
+ diff += `-${change.line}\n`;
1128
+ deletions++;
1129
+ }
1130
+ else if (change.type === 'add') {
1131
+ diff += `+${change.line}\n`;
1132
+ additions++;
1133
+ }
1134
+ }
1135
+ }
1136
+ return {
1137
+ diff,
1138
+ additions,
1139
+ deletions,
1140
+ contextLines,
1141
+ };
1142
+ }
1143
+ /**
1144
+ * 备份文件内容(用于回滚)
1145
+ */
1146
+ class FileBackup {
1147
+ backups = new Map();
1148
+ backup(filePath, content) {
1149
+ this.backups.set(filePath, content);
1150
+ }
1151
+ restore(filePath) {
1152
+ const content = this.backups.get(filePath);
1153
+ if (content === undefined) {
1154
+ return false;
1155
+ }
1156
+ try {
1157
+ fs.writeFileSync(filePath, content, 'utf-8');
1158
+ return true;
1159
+ }
1160
+ catch {
1161
+ return false;
1162
+ }
1163
+ }
1164
+ clear() {
1165
+ this.backups.clear();
1166
+ }
1167
+ has(filePath) {
1168
+ return this.backups.has(filePath);
1169
+ }
1170
+ }
1171
+ /**
1172
+ * Edit 验证错误码
1173
+ * 对应官方 cli.js 中的 errorCode
1174
+ */
1175
+ var EditErrorCode;
1176
+ (function (EditErrorCode) {
1177
+ EditErrorCode[EditErrorCode["NO_CHANGE"] = 1] = "NO_CHANGE";
1178
+ EditErrorCode[EditErrorCode["PATH_DENIED"] = 2] = "PATH_DENIED";
1179
+ EditErrorCode[EditErrorCode["FILE_EXISTS"] = 3] = "FILE_EXISTS";
1180
+ EditErrorCode[EditErrorCode["FILE_NOT_FOUND"] = 4] = "FILE_NOT_FOUND";
1181
+ EditErrorCode[EditErrorCode["IS_NOTEBOOK"] = 5] = "IS_NOTEBOOK";
1182
+ EditErrorCode[EditErrorCode["NOT_READ"] = 6] = "NOT_READ";
1183
+ EditErrorCode[EditErrorCode["EXTERNALLY_MODIFIED"] = 7] = "EXTERNALLY_MODIFIED";
1184
+ EditErrorCode[EditErrorCode["STRING_NOT_FOUND"] = 8] = "STRING_NOT_FOUND";
1185
+ EditErrorCode[EditErrorCode["MULTIPLE_MATCHES"] = 9] = "MULTIPLE_MATCHES";
1186
+ EditErrorCode[EditErrorCode["FILE_NOT_READ"] = 10] = "FILE_NOT_READ";
1187
+ EditErrorCode[EditErrorCode["INVALID_PATH"] = 11] = "INVALID_PATH";
1188
+ })(EditErrorCode || (EditErrorCode = {}));
1189
+ export class EditTool extends BaseTool {
1190
+ name = 'Edit';
1191
+ description = `Performs exact string replacements in files, including Office documents (.docx, .xlsx, .pptx).
1192
+
1193
+ Usage:
1194
+ - You must use your \`Read\` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.
1195
+ - When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.
1196
+ - ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
1197
+ - Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
1198
+ - The edit will FAIL if \`old_string\` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use \`replace_all\` to change every instance of \`old_string\`.
1199
+ - Use \`replace_all\` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
1200
+ - For Office documents (.docx, .xlsx, .pptx), performs text replacement while preserving formatting. The old_string/new_string work on the text content (same as what Read tool shows). Only text content can be edited; formatting/layout changes are not supported.`;
1201
+ fileBackup = new FileBackup();
1202
+ /** 是否强制要求先读取文件(可通过环境变量配置) */
1203
+ requireFileRead = process.env.AXON_EDIT_REQUIRE_READ !== 'false';
1204
+ getInputSchema() {
1205
+ return {
1206
+ type: 'object',
1207
+ properties: {
1208
+ file_path: {
1209
+ type: 'string',
1210
+ description: 'The absolute path to the file to modify',
1211
+ },
1212
+ old_string: {
1213
+ type: 'string',
1214
+ description: 'The text to replace',
1215
+ },
1216
+ new_string: {
1217
+ type: 'string',
1218
+ description: 'The text to replace it with (must be different from old_string)',
1219
+ },
1220
+ replace_all: {
1221
+ type: 'boolean',
1222
+ description: 'Replace all occurrences (default false)',
1223
+ default: false,
1224
+ },
1225
+ batch_edits: {
1226
+ type: 'array',
1227
+ description: 'Array of edit operations to perform atomically. If any edit fails, all changes are rolled back.',
1228
+ items: {
1229
+ type: 'object',
1230
+ properties: {
1231
+ old_string: { type: 'string' },
1232
+ new_string: { type: 'string' },
1233
+ replace_all: { type: 'boolean', default: false },
1234
+ },
1235
+ required: ['old_string', 'new_string'],
1236
+ },
1237
+ },
1238
+ show_diff: {
1239
+ type: 'boolean',
1240
+ description: 'Show unified diff preview of changes (default true)',
1241
+ default: true,
1242
+ },
1243
+ require_confirmation: {
1244
+ type: 'boolean',
1245
+ description: 'Require user confirmation before applying changes (default false)',
1246
+ default: false,
1247
+ },
1248
+ },
1249
+ required: ['file_path', 'old_string', 'new_string'],
1250
+ };
1251
+ }
1252
+ async execute(input) {
1253
+ const { file_path: inputPath, old_string, new_string, replace_all = false, batch_edits, show_diff = true, require_confirmation = false, } = input;
1254
+ // 解析文件路径(支持相对路径,基于当前工作目录上下文)
1255
+ const file_path = resolveFilePath(inputPath);
1256
+ try {
1257
+ // 注意:不再要求必须是绝对路径,因为 resolveFilePath 已经处理了相对路径
1258
+ // 注意:蓝图边界检查已移除
1259
+ // 新架构中,边界检查由 SmartPlanner 在任务规划阶段处理
1260
+ // v2.1.69: symlink 逃逸检查
1261
+ const pathCheck = validateWritePath(file_path);
1262
+ if (!pathCheck.safe) {
1263
+ return { success: false, error: pathCheck.reason || 'Path escapes working directory via symlink' };
1264
+ }
1265
+ const hookResult = await runPreToolUseHooks('Edit', input);
1266
+ if (!hookResult.allowed) {
1267
+ return { success: false, error: hookResult.message || t('file.blockedByHook') };
1268
+ }
1269
+ // 2. 验证文件是否已被读取(如果启用了此检查)
1270
+ if (this.requireFileRead && !fileReadTracker.hasBeenRead(file_path)) {
1271
+ return {
1272
+ success: false,
1273
+ error: t('file.mustReadBeforeEdit', { path: file_path }),
1274
+ errorCode: EditErrorCode.NOT_READ,
1275
+ };
1276
+ }
1277
+ // 3. 检查文件是否存在
1278
+ if (!fs.existsSync(file_path)) {
1279
+ // 特殊情况:如果 old_string 为空,视为创建新文件
1280
+ if (old_string === '' && new_string !== undefined) {
1281
+ const result = this.createNewFile(file_path, new_string);
1282
+ if (result.success) {
1283
+ await runPostToolUseHooks('Edit', input, result.output || '');
1284
+ }
1285
+ return result;
1286
+ }
1287
+ return { success: false, error: t('file.notFound', { path: file_path }) };
1288
+ }
1289
+ const stat = fs.statSync(file_path);
1290
+ if (stat.isDirectory()) {
1291
+ return { success: false, error: t('file.isDirectory', { path: file_path }) };
1292
+ }
1293
+ // Office 文档走专用编辑路径(JSZip XML 级编辑,保留格式)
1294
+ if (isOfficeFile(file_path)) {
1295
+ const result = await this.editOfficeDocument(file_path, old_string, new_string, replace_all, batch_edits, show_diff);
1296
+ if (result.success) {
1297
+ await runPostToolUseHooks('Edit', input, result.output || '');
1298
+ }
1299
+ return result;
1300
+ }
1301
+ // 5. 读取原始内容并标准化换行符
1302
+ // 官方实现: let $ = O.readFileSync(w, {encoding:uX(w)}).replaceAll(`\r\n`, `\n`)
1303
+ // Windows 文件使用 CRLF,但 Claude 传来的 old_string 使用 LF,必须统一
1304
+ const rawContent = fs.readFileSync(file_path, 'utf-8');
1305
+ const originalContent = rawContent.replaceAll('\r\n', '\n');
1306
+ // 4. 检查文件是否在读取后被外部修改
1307
+ // v3.7: 对齐官网实现 - 直接比较 content 字符串,不使用哈希
1308
+ // 官网逻辑: if(dP(w)>_.timestamp) if($.readFileSync(w).replaceAll(`\r\n`,`\n`)===_.content); else return error
1309
+ const readRecord = fileReadTracker.getRecord(file_path);
1310
+ if (readRecord && stat.mtimeMs > readRecord.mtime) {
1311
+ // 时间戳已变化,需要检查内容是否真正被修改
1312
+ // 特殊处理:如果是部分读取(有 offset 或 limit),跳过验证
1313
+ // 官网逻辑: if (C && C.offset === void 0 && C.limit === void 0 && M === C.content)
1314
+ if (readRecord.offset !== undefined || readRecord.limit !== undefined) {
1315
+ // 部分读取的文件不能进行完整内容比对,直接报错
1316
+ return {
1317
+ success: false,
1318
+ error: t('file.modifiedSinceRead'),
1319
+ errorCode: EditErrorCode.EXTERNALLY_MODIFIED,
1320
+ };
1321
+ }
1322
+ // 全文读取:直接比较 content 字符串(已标准化为 LF)
1323
+ // originalContent 已经标准化过了(见上方 1284 行)
1324
+ if (originalContent !== readRecord.content) {
1325
+ return {
1326
+ success: false,
1327
+ error: t('file.modifiedSinceRead'),
1328
+ errorCode: EditErrorCode.EXTERNALLY_MODIFIED,
1329
+ };
1330
+ }
1331
+ // 如果 content 相同,说明只是时间戳变化但内容未变
1332
+ // 这种情况在 Windows 上很常见(linter/prettier 触碰文件),不应该报错
1333
+ }
1334
+ // 6. 特殊情况:old_string 为空表示写入/覆盖整个文件
1335
+ if (old_string === '') {
1336
+ const result = this.writeEntireFile(file_path, new_string ?? '', originalContent, show_diff);
1337
+ if (result.success) {
1338
+ await runPostToolUseHooks('Edit', input, result.output || '');
1339
+ }
1340
+ return result;
1341
+ }
1342
+ // 7. 备份原始内容
1343
+ this.fileBackup.backup(file_path, originalContent);
1344
+ // 8. 确定编辑操作列表,并做 token 标准化预处理(对齐官方 sn7)
1345
+ const rawEdits = batch_edits || [{ old_string: old_string, new_string: new_string, replace_all }];
1346
+ const edits = rawEdits.map(edit => {
1347
+ // 如果 old_string 精确匹配文件内容,无需标准化
1348
+ if (originalContent.includes(edit.old_string))
1349
+ return edit;
1350
+ // 尝试 token 标准化
1351
+ const { result: normalized, appliedReplacements } = normalizeTokenTags(edit.old_string);
1352
+ if (appliedReplacements.length > 0 && originalContent.includes(normalized)) {
1353
+ // 对 new_string 也应用同样的替换(对齐官方 sn7)
1354
+ let newStr = edit.new_string;
1355
+ for (const { from, to } of appliedReplacements) {
1356
+ newStr = newStr.replaceAll(from, to);
1357
+ }
1358
+ return { ...edit, old_string: normalized, new_string: newStr };
1359
+ }
1360
+ return edit;
1361
+ });
1362
+ // 9. 验证并执行所有编辑操作
1363
+ let currentContent = originalContent;
1364
+ const appliedEdits = [];
1365
+ for (let i = 0; i < edits.length; i++) {
1366
+ const edit = edits[i];
1367
+ // 9.1 智能查找匹配字符串
1368
+ const matchedString = smartFindString(currentContent, edit.old_string);
1369
+ if (!matchedString) {
1370
+ // 字符串未找到
1371
+ return {
1372
+ success: false,
1373
+ error: t('file.stringNotFound', { str: edit.old_string }),
1374
+ errorCode: EditErrorCode.STRING_NOT_FOUND,
1375
+ };
1376
+ }
1377
+ // 9.2 计算匹配次数
1378
+ const matchCount = currentContent.split(matchedString).length - 1;
1379
+ // 9.3 如果不是 replace_all,检查唯一性
1380
+ if (matchCount > 1 && !edit.replace_all) {
1381
+ return {
1382
+ success: false,
1383
+ error: t('file.multipleMatches', { count: String(matchCount), str: edit.old_string }),
1384
+ errorCode: EditErrorCode.MULTIPLE_MATCHES,
1385
+ };
1386
+ }
1387
+ // 9.4 检查 old_string 和 new_string 是否相同
1388
+ if (matchedString === edit.new_string) {
1389
+ continue; // 跳过无变化的编辑
1390
+ }
1391
+ // 9.5 检查是否会与之前的 new_string 冲突
1392
+ for (const prevEdit of appliedEdits) {
1393
+ if (matchedString !== '' && prevEdit.includes(matchedString)) {
1394
+ return {
1395
+ success: false,
1396
+ error: t('file.editSubstringConflict', { match: matchedString }),
1397
+ };
1398
+ }
1399
+ }
1400
+ // 9.6 应用编辑
1401
+ currentContent = replaceString(currentContent, matchedString, edit.new_string, edit.replace_all);
1402
+ appliedEdits.push(edit.new_string);
1403
+ }
1404
+ // 10. 检查是否有实际变化
1405
+ if (currentContent === originalContent) {
1406
+ return {
1407
+ success: false,
1408
+ error: t('file.editNoChanges'),
1409
+ };
1410
+ }
1411
+ const modifiedContent = currentContent;
1412
+ // 11. 生成差异预览
1413
+ let diffPreview = null;
1414
+ if (show_diff) {
1415
+ diffPreview = generateUnifiedDiff(file_path, originalContent, modifiedContent);
1416
+ }
1417
+ // 12. 检查是否需要确认
1418
+ if (require_confirmation) {
1419
+ return {
1420
+ success: false,
1421
+ error: t('file.confirmationRequired'),
1422
+ output: diffPreview ? this.formatDiffOutput(diffPreview) : undefined,
1423
+ };
1424
+ }
1425
+ // 13. 执行实际的文件写入
1426
+ try {
1427
+ fs.writeFileSync(file_path, modifiedContent, 'utf-8');
1428
+ // v3.7: 写入成功后更新 FileReadTracker(对齐官网实现)
1429
+ // 官网逻辑: z.set(X,{content:G, timestamp:dP(X), offset:void 0, limit:void 0})
1430
+ // 重新读取文件获取最新的 mtime 和 content(linter 可能在写入后立即修改文件)
1431
+ try {
1432
+ const newStat = fs.statSync(file_path);
1433
+ const newContent = fs.readFileSync(file_path, 'utf-8');
1434
+ const normalizedNewContent = newContent.replaceAll('\r\n', '\n');
1435
+ fileReadTracker.markAsRead(file_path, normalizedNewContent, newStat.mtimeMs);
1436
+ }
1437
+ catch {
1438
+ // 如果更新失败,不影响编辑结果
1439
+ }
1440
+ // 构建输出消息
1441
+ let output = '';
1442
+ if (batch_edits) {
1443
+ output += t('file.editBatchSuccess', { count: edits.length, path: file_path }) + '\n';
1444
+ }
1445
+ else {
1446
+ output += t('file.editSuccess', { path: file_path }) + '\n';
1447
+ }
1448
+ if (diffPreview) {
1449
+ output += '\n' + this.formatDiffOutput(diffPreview);
1450
+ }
1451
+ // 清除备份
1452
+ this.fileBackup.clear();
1453
+ const result = {
1454
+ success: true,
1455
+ output,
1456
+ content: modifiedContent,
1457
+ };
1458
+ await runPostToolUseHooks('Edit', input, result.output || '');
1459
+ return result;
1460
+ }
1461
+ catch (writeErr) {
1462
+ // 写入失败,尝试回滚
1463
+ this.fileBackup.restore(file_path);
1464
+ return {
1465
+ success: false,
1466
+ error: t('file.editWriteError', { error: writeErr }),
1467
+ };
1468
+ }
1469
+ }
1470
+ catch (err) {
1471
+ // 发生错误,尝试回滚
1472
+ if (this.fileBackup.has(file_path)) {
1473
+ this.fileBackup.restore(file_path);
1474
+ }
1475
+ return {
1476
+ success: false,
1477
+ error: t('file.editError', { error: err }),
1478
+ };
1479
+ }
1480
+ }
1481
+ /**
1482
+ * 创建新文件
1483
+ * 当 old_string 为空且文件不存在时调用
1484
+ */
1485
+ createNewFile(filePath, content) {
1486
+ try {
1487
+ // 确保父目录存在
1488
+ const parentDir = path.dirname(filePath);
1489
+ if (!fs.existsSync(parentDir)) {
1490
+ fs.mkdirSync(parentDir, { recursive: true });
1491
+ }
1492
+ fs.writeFileSync(filePath, content, 'utf-8');
1493
+ // v3.7: 创建文件后更新 FileReadTracker(对齐官网实现)
1494
+ try {
1495
+ const stat = fs.statSync(filePath);
1496
+ const normalizedContent = content.replaceAll('\r\n', '\n');
1497
+ fileReadTracker.markAsRead(filePath, normalizedContent, stat.mtimeMs);
1498
+ }
1499
+ catch {
1500
+ // 如果更新失败,不影响创建结果
1501
+ }
1502
+ const lineCount = content.split('\n').length;
1503
+ return {
1504
+ success: true,
1505
+ output: t('file.createSuccess', { path: filePath, lines: lineCount }),
1506
+ content,
1507
+ };
1508
+ }
1509
+ catch (err) {
1510
+ return {
1511
+ success: false,
1512
+ error: t('file.createError', { error: err }),
1513
+ };
1514
+ }
1515
+ }
1516
+ /**
1517
+ * 编辑 Office 文档(docx/xlsx/pptx)
1518
+ * 使用 JSZip 在 XML 级别进行文本替换,保留原始格式
1519
+ */
1520
+ async editOfficeDocument(filePath, oldString, newString, replaceAll, batchEdits, showDiff = true) {
1521
+ try {
1522
+ // 获取编辑前的文本表示(用于生成 diff)
1523
+ const textBefore = await documentToText(filePath);
1524
+ // 备份原始文件(二进制备份)
1525
+ const backupBuffer = fs.readFileSync(filePath);
1526
+ // 确定编辑列表
1527
+ const edits = batchEdits || [{ old_string: oldString, new_string: newString, replace_all: replaceAll }];
1528
+ let totalReplacements = 0;
1529
+ for (const edit of edits) {
1530
+ const result = await editDocument(filePath, edit.old_string, edit.new_string, edit.replace_all ?? false);
1531
+ if (!result.success) {
1532
+ // 回滚到备份
1533
+ fs.writeFileSync(filePath, backupBuffer);
1534
+ return {
1535
+ success: false,
1536
+ error: result.error || `Failed to edit document: "${edit.old_string}" not found`,
1537
+ errorCode: EditErrorCode.STRING_NOT_FOUND,
1538
+ };
1539
+ }
1540
+ totalReplacements += result.replacements;
1541
+ }
1542
+ // 获取编辑后的文本表示
1543
+ const textAfter = await documentToText(filePath);
1544
+ // 更新 fileReadTracker(用文本表示,与 Read 工具保持一致)
1545
+ try {
1546
+ const stat = fs.statSync(filePath);
1547
+ fileReadTracker.markAsRead(filePath, textAfter, stat.mtimeMs);
1548
+ }
1549
+ catch {
1550
+ // 不影响编辑结果
1551
+ }
1552
+ // 清除搜索缓存
1553
+ clearDocumentCache(filePath);
1554
+ // 生成文本层 diff
1555
+ const ext = path.extname(filePath).toLowerCase().slice(1).toUpperCase();
1556
+ let output = '';
1557
+ if (batchEdits) {
1558
+ output += `${ext} document edited successfully: ${edits.length} edits, ${totalReplacements} replacements in ${filePath}\n`;
1559
+ }
1560
+ else {
1561
+ output += `${ext} document edited successfully: ${totalReplacements} replacement(s) in ${filePath}\n`;
1562
+ }
1563
+ if (showDiff) {
1564
+ const diffPreview = generateUnifiedDiff(filePath, textBefore, textAfter);
1565
+ if (diffPreview) {
1566
+ output += '\n' + this.formatDiffOutput(diffPreview);
1567
+ }
1568
+ }
1569
+ return {
1570
+ success: true,
1571
+ output,
1572
+ };
1573
+ }
1574
+ catch (err) {
1575
+ return {
1576
+ success: false,
1577
+ error: `Failed to edit Office document: ${err}`,
1578
+ };
1579
+ }
1580
+ }
1581
+ /**
1582
+ * 写入整个文件(覆盖现有内容)
1583
+ * 当 old_string 为空且文件存在时调用
1584
+ */
1585
+ writeEntireFile(filePath, newContent, originalContent, showDiff) {
1586
+ try {
1587
+ // 备份原始内容
1588
+ this.fileBackup.backup(filePath, originalContent);
1589
+ // 检查内容是否相同
1590
+ if (newContent === originalContent) {
1591
+ return {
1592
+ success: false,
1593
+ error: t('file.writeEntireNoChanges'),
1594
+ };
1595
+ }
1596
+ // 生成差异预览
1597
+ let diffPreview = null;
1598
+ if (showDiff) {
1599
+ diffPreview = generateUnifiedDiff(filePath, originalContent, newContent);
1600
+ }
1601
+ // 写入文件
1602
+ fs.writeFileSync(filePath, newContent, 'utf-8');
1603
+ // 构建输出消息
1604
+ let output = t('file.writeEntireSuccess', { path: filePath }) + '\n';
1605
+ if (diffPreview) {
1606
+ output += '\n' + this.formatDiffOutput(diffPreview);
1607
+ }
1608
+ // 清除备份
1609
+ this.fileBackup.clear();
1610
+ return {
1611
+ success: true,
1612
+ output,
1613
+ content: newContent,
1614
+ };
1615
+ }
1616
+ catch (err) {
1617
+ // 写入失败,尝试回滚
1618
+ this.fileBackup.restore(filePath);
1619
+ return {
1620
+ success: false,
1621
+ error: t('file.writeEntireError', { error: err }),
1622
+ };
1623
+ }
1624
+ }
1625
+ /**
1626
+ * 格式化差异输出
1627
+ */
1628
+ formatDiffOutput(diffPreview) {
1629
+ const { diff, additions, deletions } = diffPreview;
1630
+ let output = '';
1631
+ output += `Changes: +${additions} -${deletions}\n`;
1632
+ output += '─'.repeat(60) + '\n';
1633
+ output += diff;
1634
+ output += '─'.repeat(60);
1635
+ return output;
1636
+ }
1637
+ }
1638
+ //# sourceMappingURL=file.js.map