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,2426 @@
1
+ /**
2
+ * 智能规划器 - 蜂群架构 v2.0 的核心组件
3
+ *
4
+ * 职责:
5
+ * 1. 需求对话(快速2-3轮收集核心需求)
6
+ * 2. 蓝图生成(作为"需求锚点",所有Worker参照执行)
7
+ * 3. 任务分解(智能划分可并行任务,粒度控制在5分钟内)
8
+ *
9
+ * 设计理念:
10
+ * - 对话简洁高效,不拖泥带水
11
+ * - 蓝图是"需求锚点",一旦确认不轻易修改
12
+ * - 任务自动判断是否需要测试
13
+ * - 任务依赖分析,最大化并行度
14
+ */
15
+ import { EventEmitter } from 'events';
16
+ import { v4 as uuidv4 } from 'uuid';
17
+ import * as fs from 'fs';
18
+ import * as path from 'path';
19
+ import * as os from 'os';
20
+ import { getDefaultClient } from '../core/client.js';
21
+ import { ConversationLoop } from '../core/loop.js';
22
+ import { PlannerSession } from './planner-session.js';
23
+ const DEFAULT_CONFIG = {
24
+ maxDialogRounds: 3,
25
+ maxTaskMinutes: 5,
26
+ autoTestDecision: true,
27
+ model: 'sonnet',
28
+ // v2.0 新增:Agent 模式配置
29
+ exploreBeforeDecompose: true,
30
+ exploreMaxTurns: 5,
31
+ };
32
+ // 持久化目录
33
+ const getPlannersDir = () => {
34
+ const dir = path.join(os.homedir(), '.axon', 'planners');
35
+ if (!fs.existsSync(dir)) {
36
+ fs.mkdirSync(dir, { recursive: true });
37
+ }
38
+ return dir;
39
+ };
40
+ // ============================================================================
41
+ // 对话阶段提示词(精简版,快速收集核心需求)
42
+ // ============================================================================
43
+ const DIALOG_PROMPTS = {
44
+ greeting: `你好!我是智能规划助手。请用一两句话描述你想要构建的功能或项目。
45
+
46
+ 例如:
47
+ - "我想给这个项目添加用户认证功能"
48
+ - "创建一个待办事项管理的 API"
49
+ - "重构购物车模块,支持优惠券"`,
50
+ requirements: `好的,我需要再确认几个关键点:
51
+
52
+ 1. **核心功能**:最重要的2-3个功能是什么?
53
+ 2. **技术约束**:有什么必须使用或避免的技术吗?
54
+ 3. **时间预期**:大概想在多长时间内完成?
55
+
56
+ 请简要回答,我们会在后续细化。`,
57
+ clarification: `我还需要澄清一些细节:
58
+
59
+ {{clarificationQuestions}}
60
+
61
+ 请回答上述问题,然后我们就可以生成蓝图了。`,
62
+ tech_choice: `根据你的需求,我建议使用以下技术栈:
63
+
64
+ {{techSuggestion}}
65
+
66
+ 你可以:
67
+ 1. **确认** - 使用建议的技术栈
68
+ 2. **调整** - 告诉我你想修改的部分
69
+
70
+ 请选择或提供修改意见。`,
71
+ confirmation: `蓝图草案已生成:
72
+
73
+ {{blueprintSummary}}
74
+
75
+ 请确认:
76
+ - 输入"确认"开始执行
77
+ - 输入"修改 [内容]"调整蓝图
78
+ - 输入"重来"重新开始`,
79
+ done: `蓝图已确认并保存!
80
+
81
+ 蓝图 ID: {{blueprintId}}
82
+ 包含 {{taskCount}} 个任务,预计执行时间 {{estimatedMinutes}} 分钟
83
+
84
+ 你可以开始执行任务了。`,
85
+ };
86
+ // ============================================================================
87
+ // 智能规划器核心类
88
+ // ============================================================================
89
+ export class SmartPlanner extends EventEmitter {
90
+ config;
91
+ client = null;
92
+ sessions = new Map();
93
+ projectPath = null;
94
+ /** Multi-turn AI 会话(替代分散的 extractWithAI 调用) */
95
+ aiSession = null;
96
+ constructor(config) {
97
+ super();
98
+ this.config = { ...DEFAULT_CONFIG, ...config };
99
+ this.loadSessions();
100
+ }
101
+ /**
102
+ * 获取或创建 AI 会话
103
+ */
104
+ getAISession() {
105
+ if (!this.aiSession) {
106
+ this.aiSession = new PlannerSession(this.getClient(), {
107
+ debug: false,
108
+ maxHistoryLength: 20,
109
+ });
110
+ }
111
+ return this.aiSession;
112
+ }
113
+ /**
114
+ * 重置 AI 会话(新对话时调用)
115
+ */
116
+ resetAISession() {
117
+ if (this.aiSession) {
118
+ this.aiSession.clear();
119
+ }
120
+ this.aiSession = null;
121
+ }
122
+ // --------------------------------------------------------------------------
123
+ // 需求对话
124
+ // --------------------------------------------------------------------------
125
+ /**
126
+ * 开始需求对话
127
+ *
128
+ * @param projectPath 项目路径
129
+ * @returns 初始对话状态
130
+ */
131
+ async startDialog(projectPath) {
132
+ this.projectPath = projectPath;
133
+ // 检查是否有未完成的对话
134
+ const existing = this.findDialogByProject(projectPath);
135
+ if (existing && !existing.isComplete) {
136
+ return existing;
137
+ }
138
+ // v3.0: 重置 AI 会话(确保新对话有干净的上下文)
139
+ this.resetAISession();
140
+ // 创建新对话
141
+ const state = {
142
+ phase: 'greeting',
143
+ messages: [],
144
+ collectedRequirements: [],
145
+ collectedConstraints: [],
146
+ isComplete: false,
147
+ };
148
+ // 添加问候消息
149
+ const greetingMessage = {
150
+ role: 'assistant',
151
+ content: DIALOG_PROMPTS.greeting,
152
+ timestamp: new Date(),
153
+ };
154
+ state.messages.push(greetingMessage);
155
+ // 保存对话状态
156
+ const sessionId = uuidv4();
157
+ this.sessions.set(sessionId, state);
158
+ this.saveSession(sessionId, state);
159
+ this.emit('dialog:started', { sessionId, state, projectPath });
160
+ return state;
161
+ }
162
+ /**
163
+ * 处理用户输入
164
+ *
165
+ * @param input 用户输入
166
+ * @param state 当前对话状态
167
+ * @returns 更新后的对话状态
168
+ */
169
+ async processUserInput(input, state) {
170
+ // 记录用户消息
171
+ const userMessage = {
172
+ role: 'user',
173
+ content: input,
174
+ timestamp: new Date(),
175
+ };
176
+ state.messages.push(userMessage);
177
+ // 根据当前阶段处理
178
+ let response;
179
+ let nextPhase = state.phase;
180
+ switch (state.phase) {
181
+ case 'greeting':
182
+ const greetingResult = await this.processGreetingInput(state, input);
183
+ response = greetingResult.response;
184
+ nextPhase = greetingResult.nextPhase;
185
+ break;
186
+ case 'requirements':
187
+ const reqResult = await this.processRequirementsInput(state, input);
188
+ response = reqResult.response;
189
+ nextPhase = reqResult.nextPhase;
190
+ break;
191
+ case 'clarification':
192
+ const clarResult = await this.processClarificationInput(state, input);
193
+ response = clarResult.response;
194
+ nextPhase = clarResult.nextPhase;
195
+ break;
196
+ case 'tech_choice':
197
+ const techResult = await this.processTechChoiceInput(state, input);
198
+ response = techResult.response;
199
+ nextPhase = techResult.nextPhase;
200
+ break;
201
+ case 'confirmation':
202
+ const confirmResult = await this.processConfirmationInput(state, input);
203
+ response = confirmResult.response;
204
+ nextPhase = confirmResult.nextPhase;
205
+ if (confirmResult.isComplete) {
206
+ state.isComplete = true;
207
+ // 保存生成的蓝图,避免在 confirm API 中重复生成
208
+ if (confirmResult.generatedBlueprint) {
209
+ state.generatedBlueprint = confirmResult.generatedBlueprint;
210
+ }
211
+ }
212
+ break;
213
+ default:
214
+ response = '对话已完成。';
215
+ nextPhase = 'done';
216
+ state.isComplete = true;
217
+ }
218
+ // 更新阶段
219
+ state.phase = nextPhase;
220
+ // 记录助手回复
221
+ const assistantMessage = {
222
+ role: 'assistant',
223
+ content: response,
224
+ timestamp: new Date(),
225
+ };
226
+ state.messages.push(assistantMessage);
227
+ // 保存状态
228
+ this.saveSessionByState(state);
229
+ this.emit('dialog:message', { state, userMessage, assistantMessage });
230
+ return state;
231
+ }
232
+ /**
233
+ * 处理问候阶段输入 - v3.0 Multi-turn 版本
234
+ *
235
+ * 改进:
236
+ * 1. 使用 PlannerSession 维护对话上下文
237
+ * 2. 合并"提取关键词"和"生成问题"为一次 API 调用
238
+ * 3. 支持流式渲染
239
+ */
240
+ async processGreetingInput(state, input) {
241
+ const session = this.getAISession();
242
+ // Step 1: 一次性分析用户输入(合并原来的2次调用)
243
+ // 同时提取:关键词、功能、复杂度、追问问题
244
+ let extracted = {
245
+ projectGoal: input,
246
+ coreFeatures: [],
247
+ keywords: [],
248
+ complexity: 'moderate',
249
+ questions: ['确认以上理解正确吗?'],
250
+ };
251
+ // 流式处理 AI 响应
252
+ for await (const event of session.analyzeUserInput(input)) {
253
+ // 发送流式事件供 UI 渲染
254
+ if (event.type === 'text' || event.type === 'thinking') {
255
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
256
+ }
257
+ else if (event.type === 'tool_delta') {
258
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
259
+ }
260
+ else if (event.type === 'tool_result' && event.result) {
261
+ extracted = { ...extracted, ...event.result };
262
+ }
263
+ else if (event.type === 'error') {
264
+ console.error('[SmartPlanner] AI analysis failed:', event.error);
265
+ }
266
+ }
267
+ // 保存提取的需求
268
+ state.collectedRequirements.push(extracted.projectGoal);
269
+ if (extracted.coreFeatures.length > 0) {
270
+ state.collectedRequirements.push(...extracted.coreFeatures);
271
+ }
272
+ // Step 2: 根据需求关键词针对性探索代码库
273
+ let codebaseContext = '';
274
+ if (this.projectPath && extracted.keywords.length > 0) {
275
+ this.emit('dialog:exploring', { keywords: extracted.keywords });
276
+ const exploration = await this.exploreForRequirement(this.projectPath, extracted.keywords, extracted.projectGoal);
277
+ codebaseContext = exploration;
278
+ // 将代码库上下文添加到 AI 会话中(让后续对话有上下文)
279
+ if (codebaseContext) {
280
+ session.addContext(`代码库分析结果:\n${codebaseContext}`);
281
+ }
282
+ }
283
+ // 构建响应(使用 AI 返回的问题,不需要再调用 generateSmartQuestions)
284
+ const response = this.buildSmartResponse(extracted.projectGoal, extracted.coreFeatures, codebaseContext, extracted.questions);
285
+ // 根据复杂度决定下一阶段
286
+ const nextPhase = extracted.complexity === 'simple'
287
+ ? 'tech_choice'
288
+ : 'requirements';
289
+ return { response, nextPhase };
290
+ }
291
+ /**
292
+ * 根据需求关键词探索代码库
293
+ * 不是盲目全量扫描,而是针对性搜索
294
+ */
295
+ async exploreForRequirement(projectPath, keywords, goal) {
296
+ const findings = [];
297
+ // 记录探索目标,用于后续分析
298
+ this.emit('dialog:explore_goal', { goal, keywords });
299
+ try {
300
+ // 1. 检测项目基本信息
301
+ const techStack = this.detectExistingTechStack();
302
+ if (techStack.language) {
303
+ findings.push(`**项目类型**: ${techStack.language}${techStack.framework ? ` + ${techStack.framework}` : ''}`);
304
+ }
305
+ if (techStack.testFramework) {
306
+ findings.push(`**测试框架**: ${techStack.testFramework}`);
307
+ }
308
+ // 2. 搜索与需求相关的现有代码
309
+ const searchPattern = keywords.join('|');
310
+ const relatedFiles = await this.searchRelatedCode(projectPath, searchPattern);
311
+ if (relatedFiles.length > 0) {
312
+ findings.push(`\n**发现相关代码** (${relatedFiles.length} 个文件):`);
313
+ for (const file of relatedFiles.slice(0, 5)) {
314
+ findings.push(` · \`${file.path}\` - ${file.summary}`);
315
+ }
316
+ if (relatedFiles.length > 5) {
317
+ findings.push(` · ... 还有 ${relatedFiles.length - 5} 个文件`);
318
+ }
319
+ }
320
+ else {
321
+ findings.push(`\n**未发现相关代码**: 这将是一个新功能模块`);
322
+ }
323
+ // 3. 检查项目结构
324
+ const structure = await this.getProjectStructure(projectPath);
325
+ if (structure) {
326
+ findings.push(`\n**项目结构**: ${structure}`);
327
+ }
328
+ // 4. 检查依赖中是否有相关库
329
+ const relatedDeps = await this.checkRelatedDependencies(projectPath, keywords);
330
+ if (relatedDeps.length > 0) {
331
+ findings.push(`\n**相关依赖**: ${relatedDeps.join(', ')}`);
332
+ }
333
+ }
334
+ catch (error) {
335
+ // 探索失败不阻塞流程
336
+ console.warn('[SmartPlanner] Codebase exploration failed:', error);
337
+ }
338
+ return findings.length > 0 ? findings.join('\n') : '';
339
+ }
340
+ /**
341
+ * 搜索与需求相关的代码
342
+ */
343
+ async searchRelatedCode(projectPath, pattern) {
344
+ const results = [];
345
+ try {
346
+ // 使用 Agent 模式搜索
347
+ const loop = new ConversationLoop({
348
+ model: this.getClient().getModel(),
349
+ maxTurns: 2,
350
+ verbose: false,
351
+ permissionMode: 'bypassPermissions',
352
+ workingDir: projectPath,
353
+ systemPrompt: `你是代码搜索助手。使用 Grep 和 Glob 工具搜索代码,返回简洁结果。
354
+ 只返回 JSON 数组,格式:[{"path": "文件路径", "summary": "文件摘要"}]`,
355
+ isSubAgent: true,
356
+ });
357
+ const searchResult = await loop.processMessage(`搜索包含 "${pattern}" 的代码文件,返回最相关的5个文件及其摘要(10字以内)。
358
+ 只返回 JSON 数组,不要其他内容。`);
359
+ if (searchResult) {
360
+ try {
361
+ const jsonMatch = searchResult.match(/\[[\s\S]*\]/);
362
+ if (jsonMatch) {
363
+ const parsed = JSON.parse(jsonMatch[0]);
364
+ return parsed.slice(0, 5);
365
+ }
366
+ }
367
+ catch {
368
+ // 解析失败,返回空
369
+ }
370
+ }
371
+ }
372
+ catch (error) {
373
+ console.warn('[SmartPlanner] Code search failed:', error);
374
+ }
375
+ return results;
376
+ }
377
+ /**
378
+ * 获取项目结构概要
379
+ */
380
+ async getProjectStructure(projectPath) {
381
+ try {
382
+ const dirs = [];
383
+ const entries = fs.readdirSync(projectPath, { withFileTypes: true });
384
+ for (const entry of entries) {
385
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
386
+ dirs.push(entry.name);
387
+ }
388
+ }
389
+ if (dirs.length > 0) {
390
+ return dirs.slice(0, 8).join(', ') + (dirs.length > 8 ? '...' : '');
391
+ }
392
+ }
393
+ catch {
394
+ // 忽略错误
395
+ }
396
+ return '';
397
+ }
398
+ /**
399
+ * 检查相关依赖
400
+ */
401
+ async checkRelatedDependencies(projectPath, keywords) {
402
+ const related = [];
403
+ try {
404
+ const pkgPath = path.join(projectPath, 'package.json');
405
+ if (fs.existsSync(pkgPath)) {
406
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
407
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
408
+ for (const [dep] of Object.entries(allDeps)) {
409
+ for (const keyword of keywords) {
410
+ if (dep.toLowerCase().includes(keyword.toLowerCase())) {
411
+ related.push(dep);
412
+ break;
413
+ }
414
+ }
415
+ }
416
+ }
417
+ }
418
+ catch {
419
+ // 忽略错误
420
+ }
421
+ return related.slice(0, 5);
422
+ }
423
+ // v3.0: generateSmartQuestions 已被移除
424
+ // 问题生成现在由 PlannerSession.analyzeUserInput 一次性完成
425
+ /**
426
+ * 构建智能响应
427
+ */
428
+ buildSmartResponse(goal, features, codebaseContext, questions) {
429
+ const lines = [];
430
+ // 1. 确认理解
431
+ lines.push(`好的,我理解你想要:**${goal}**`);
432
+ lines.push('');
433
+ // 2. 展示检测到的功能
434
+ if (features.length > 0) {
435
+ lines.push('**可能涉及的功能点:**');
436
+ features.forEach((f, i) => lines.push(`${i + 1}. ${f}`));
437
+ lines.push('');
438
+ }
439
+ // 3. 展示代码库分析结果(这是关键差异点!)
440
+ if (codebaseContext) {
441
+ lines.push('---');
442
+ lines.push('📂 **代码库分析:**');
443
+ lines.push(codebaseContext);
444
+ lines.push('---');
445
+ lines.push('');
446
+ }
447
+ // 4. 智能追问
448
+ if (questions.length > 0) {
449
+ lines.push('**我需要确认几个问题:**');
450
+ questions.forEach((q, i) => lines.push(`${i + 1}. ${q}`));
451
+ }
452
+ return lines.join('\n');
453
+ }
454
+ /**
455
+ * 处理需求收集阶段输入 - v3.0 Multi-turn 版本
456
+ * 使用 PlannerSession 保持上下文,AI 已记住之前的对话
457
+ */
458
+ async processRequirementsInput(state, input) {
459
+ const session = this.getAISession();
460
+ // 使用 session 提取需求(AI 已有上下文,不需要重发 collectedRequirements)
461
+ let extracted = {
462
+ newFeatures: [],
463
+ constraints: [],
464
+ needsClarification: false,
465
+ clarificationQuestions: [],
466
+ };
467
+ for await (const event of session.extractRequirements(input)) {
468
+ if (event.type === 'text' || event.type === 'thinking') {
469
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
470
+ }
471
+ else if (event.type === 'tool_delta') {
472
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
473
+ }
474
+ else if (event.type === 'tool_result' && event.result) {
475
+ extracted = { ...extracted, ...event.result };
476
+ }
477
+ else if (event.type === 'error') {
478
+ console.error('[SmartPlanner] Requirement extraction failed:', event.error);
479
+ }
480
+ }
481
+ // 更新收集的信息
482
+ if (extracted.newFeatures.length > 0) {
483
+ state.collectedRequirements.push(...extracted.newFeatures);
484
+ }
485
+ if (extracted.constraints.length > 0) {
486
+ state.collectedConstraints.push(...extracted.constraints);
487
+ }
488
+ // 判断是否需要继续澄清
489
+ if (extracted.needsClarification && extracted.clarificationQuestions.length > 0) {
490
+ const clarificationPrompt = DIALOG_PROMPTS.clarification.replace('{{clarificationQuestions}}', extracted.clarificationQuestions.map((q, i) => `${i + 1}. ${q}`).join('\n'));
491
+ return { response: clarificationPrompt, nextPhase: 'clarification' };
492
+ }
493
+ // 直接进入技术选择
494
+ const techSuggestion = await this.generateTechSuggestion(state);
495
+ const response = DIALOG_PROMPTS.tech_choice.replace('{{techSuggestion}}', this.formatTechStack(techSuggestion));
496
+ state.techStack = techSuggestion;
497
+ return { response, nextPhase: 'tech_choice' };
498
+ }
499
+ /**
500
+ * 处理澄清阶段输入 - v3.0 Multi-turn 版本
501
+ * 复用 extractRequirements,AI 已有完整上下文
502
+ */
503
+ async processClarificationInput(state, input) {
504
+ const session = this.getAISession();
505
+ // 复用 extractRequirements(AI 记得之前的澄清问题)
506
+ let extracted = {
507
+ newFeatures: [],
508
+ constraints: [],
509
+ needsClarification: false,
510
+ clarificationQuestions: [],
511
+ };
512
+ for await (const event of session.extractRequirements(input)) {
513
+ if (event.type === 'text' || event.type === 'thinking') {
514
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
515
+ }
516
+ else if (event.type === 'tool_delta') {
517
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
518
+ }
519
+ else if (event.type === 'tool_result' && event.result) {
520
+ extracted = { ...extracted, ...event.result };
521
+ }
522
+ }
523
+ if (extracted.newFeatures.length > 0) {
524
+ state.collectedRequirements.push(...extracted.newFeatures);
525
+ }
526
+ if (extracted.constraints.length > 0) {
527
+ state.collectedConstraints.push(...extracted.constraints);
528
+ }
529
+ // 进入技术选择
530
+ const techSuggestion = await this.generateTechSuggestion(state);
531
+ const response = DIALOG_PROMPTS.tech_choice.replace('{{techSuggestion}}', this.formatTechStack(techSuggestion));
532
+ state.techStack = techSuggestion;
533
+ return { response, nextPhase: 'tech_choice' };
534
+ }
535
+ /**
536
+ * 处理技术选择阶段输入 - v3.0 Multi-turn 版本
537
+ */
538
+ async processTechChoiceInput(state, input) {
539
+ const normalizedInput = input.trim().toLowerCase();
540
+ if (normalizedInput === '确认' || normalizedInput === 'confirm' || normalizedInput === 'yes') {
541
+ // 生成蓝图摘要进入确认阶段(蓝图在用户最终确认后才生成)
542
+ const summary = this.generateBlueprintSummary(state);
543
+ const response = DIALOG_PROMPTS.confirmation.replace('{{blueprintSummary}}', summary);
544
+ return { response, nextPhase: 'confirmation' };
545
+ }
546
+ // 处理技术栈修改(使用 session,AI 已知当前技术栈上下文)
547
+ const session = this.getAISession();
548
+ let modResult = {
549
+ type: 'modify_tech',
550
+ target: '',
551
+ newValue: '',
552
+ message: '已更新',
553
+ };
554
+ for await (const event of session.parseModification(input)) {
555
+ if (event.type === 'text' || event.type === 'thinking') {
556
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
557
+ }
558
+ else if (event.type === 'tool_delta') {
559
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
560
+ }
561
+ else if (event.type === 'tool_result' && event.result) {
562
+ modResult = { ...modResult, ...event.result };
563
+ }
564
+ }
565
+ // 如果是技术修改,尝试解析 newValue 为技术栈字段
566
+ if (modResult.type === 'modify_tech' && modResult.newValue) {
567
+ try {
568
+ const techMod = JSON.parse(modResult.newValue);
569
+ state.techStack = { ...state.techStack, ...techMod };
570
+ }
571
+ catch {
572
+ // 如果不是 JSON,尝试作为单字段修改
573
+ if (modResult.target && state.techStack) {
574
+ state.techStack[modResult.target] = modResult.newValue;
575
+ }
576
+ }
577
+ }
578
+ // 再次显示技术选择
579
+ const response = `${modResult.message}\n\n${this.formatTechStack(state.techStack)}\n\n确认使用此技术栈吗?输入"确认"继续。`;
580
+ return { response, nextPhase: 'tech_choice' };
581
+ }
582
+ /**
583
+ * 处理确认阶段输入
584
+ *
585
+ * v3.1: 不在这里生成蓝图,只标记状态为完成。
586
+ * 蓝图生成将在 /confirm/stream API 中通过 StreamingBlueprintGenerator 进行,
587
+ * 以支持流式渲染。
588
+ */
589
+ async processConfirmationInput(state, input) {
590
+ const normalizedInput = input.trim().toLowerCase();
591
+ if (normalizedInput === '确认' || normalizedInput === 'confirm' || normalizedInput === 'yes') {
592
+ // 用户最终确认,标记对话完成
593
+ // 注意:不在这里生成蓝图,而是让 /confirm/stream API 进行流式生成
594
+ state.isComplete = true;
595
+ // 返回提示信息,告诉前端可以开始流式生成蓝图
596
+ const response = '✅ 需求已确认!正在为您生成项目蓝图,请稍候...';
597
+ return { response, nextPhase: 'done', isComplete: true };
598
+ }
599
+ if (normalizedInput === '重来' || normalizedInput === 'restart') {
600
+ // 重新开始
601
+ state.collectedRequirements = [];
602
+ state.collectedConstraints = [];
603
+ state.techStack = undefined;
604
+ const response = DIALOG_PROMPTS.greeting;
605
+ return { response, nextPhase: 'greeting' };
606
+ }
607
+ if (normalizedInput.startsWith('修改')) {
608
+ // 处理修改请求
609
+ const modification = input.slice(2).trim();
610
+ const result = await this.processModification(state, modification);
611
+ const summary = this.generateBlueprintSummary(state);
612
+ const response = `${result.message}\n\n${DIALOG_PROMPTS.confirmation.replace('{{blueprintSummary}}', summary)}`;
613
+ return { response, nextPhase: 'confirmation' };
614
+ }
615
+ // 默认当作修改请求
616
+ const result = await this.processModification(state, input);
617
+ const summary = this.generateBlueprintSummary(state);
618
+ const response = `${result.message}\n\n${DIALOG_PROMPTS.confirmation.replace('{{blueprintSummary}}', summary)}`;
619
+ return { response, nextPhase: 'confirmation' };
620
+ }
621
+ /**
622
+ * 处理修改请求 - v3.0 Multi-turn 版本
623
+ * AI 已有完整上下文(需求、约束、技术栈),不需要重复发送
624
+ */
625
+ async processModification(state, modification) {
626
+ const session = this.getAISession();
627
+ let result = {
628
+ type: 'other',
629
+ target: '',
630
+ newValue: '',
631
+ message: '已记录修改意见',
632
+ };
633
+ for await (const event of session.parseModification(modification)) {
634
+ if (event.type === 'text' || event.type === 'thinking') {
635
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
636
+ }
637
+ else if (event.type === 'tool_delta') {
638
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
639
+ }
640
+ else if (event.type === 'tool_result' && event.result) {
641
+ result = { ...result, ...event.result };
642
+ }
643
+ }
644
+ // 应用修改
645
+ switch (result.type) {
646
+ case 'add_feature':
647
+ if (result.newValue) {
648
+ state.collectedRequirements.push(result.newValue);
649
+ }
650
+ break;
651
+ case 'remove_feature':
652
+ if (result.target) {
653
+ state.collectedRequirements = state.collectedRequirements.filter((r) => !r.includes(result.target));
654
+ }
655
+ break;
656
+ case 'add_constraint':
657
+ if (result.newValue) {
658
+ state.collectedConstraints.push(result.newValue);
659
+ }
660
+ break;
661
+ case 'modify_tech':
662
+ if (result.newValue && state.techStack) {
663
+ try {
664
+ const techMod = JSON.parse(result.newValue);
665
+ state.techStack = { ...state.techStack, ...techMod };
666
+ }
667
+ catch {
668
+ // 忽略解析错误
669
+ }
670
+ }
671
+ break;
672
+ }
673
+ return { message: result.message || '已应用修改。' };
674
+ }
675
+ // --------------------------------------------------------------------------
676
+ // 蓝图生成
677
+ // --------------------------------------------------------------------------
678
+ /**
679
+ * 从对话状态生成蓝图(完整格式,包含业务流程、模块、NFR)
680
+ * v3.0: 使用 PlannerSession 的 multi-turn 上下文,AI 已有完整的需求理解
681
+ *
682
+ * @param state 完成的对话状态
683
+ * @returns 生成的蓝图
684
+ */
685
+ async generateBlueprint(state) {
686
+ if (!state.isComplete) {
687
+ throw new Error('Conversation not complete, cannot generate blueprint');
688
+ }
689
+ if (!this.projectPath) {
690
+ throw new Error('Project path not set');
691
+ }
692
+ // 发送进度事件:开始分析需求
693
+ this.emit('blueprint:progress', { step: 1, total: 5, message: '正在分析需求...' });
694
+ // v3.0: 使用 PlannerSession(AI 已有完整对话上下文)
695
+ this.emit('blueprint:progress', { step: 2, total: 5, message: '正在设计项目结构...' });
696
+ const session = this.getAISession();
697
+ // 定义蓝图 schema(用于 AI tool use)
698
+ const blueprintSchema = {
699
+ name: { type: 'string', description: '项目名称' },
700
+ description: { type: 'string', description: '项目描述' },
701
+ version: { type: 'string', description: '版本号' },
702
+ businessProcesses: {
703
+ type: 'array',
704
+ items: {
705
+ type: 'object',
706
+ properties: {
707
+ id: { type: 'string' },
708
+ name: { type: 'string' },
709
+ description: { type: 'string' },
710
+ type: { type: 'string', enum: ['as-is', 'to-be'] },
711
+ steps: { type: 'array', items: { type: 'object' } },
712
+ actors: { type: 'array', items: { type: 'string' } },
713
+ inputs: { type: 'array', items: { type: 'string' } },
714
+ outputs: { type: 'array', items: { type: 'string' } },
715
+ },
716
+ },
717
+ description: '业务流程列表',
718
+ },
719
+ modules: {
720
+ type: 'array',
721
+ items: {
722
+ type: 'object',
723
+ properties: {
724
+ id: { type: 'string' },
725
+ name: { type: 'string' },
726
+ description: { type: 'string' },
727
+ type: { type: 'string', enum: ['frontend', 'backend', 'database', 'service', 'shared', 'other'] },
728
+ responsibilities: { type: 'array', items: { type: 'string' } },
729
+ techStack: { type: 'array', items: { type: 'string' } },
730
+ interfaces: { type: 'array', items: { type: 'object' } },
731
+ dependencies: { type: 'array', items: { type: 'string' } },
732
+ rootPath: { type: 'string' },
733
+ source: { type: 'string', enum: ['requirement', 'existing', 'ai_generated'] },
734
+ files: { type: 'array', items: { type: 'string' } },
735
+ },
736
+ },
737
+ description: '模块列表',
738
+ },
739
+ nfrs: {
740
+ type: 'array',
741
+ items: {
742
+ type: 'object',
743
+ properties: {
744
+ id: { type: 'string' },
745
+ category: { type: 'string', enum: ['performance', 'security', 'reliability', 'scalability', 'maintainability', 'usability', 'other'] },
746
+ name: { type: 'string' },
747
+ description: { type: 'string' },
748
+ priority: { type: 'string', enum: ['high', 'medium', 'low'] },
749
+ metrics: { type: 'array', items: { type: 'string' } },
750
+ },
751
+ },
752
+ description: '非功能需求列表',
753
+ },
754
+ };
755
+ // 使用 session.interact 进行流式蓝图生成
756
+ // AI 已有完整对话上下文(需求、约束、技术栈),指令可以很简洁
757
+ const instruction = `基于我们整个对话中收集的需求信息,请生成完整的项目蓝图。
758
+
759
+ 包括:
760
+ 1. 项目名称和描述
761
+ 2. 业务流程(每个流程包含步骤、参与者、输入输出)
762
+ 3. 模块划分(前端、后端、数据库等,每个模块有职责和接口)
763
+ 4. 非功能需求(性能、安全、可靠性等)
764
+
765
+ 注意:
766
+ - 业务流程要清晰描述系统要做什么
767
+ - 模块划分要合理,有明确的职责边界
768
+ - 文件路径使用相对于项目根目录的路径`;
769
+ // 默认值
770
+ let blueprintData = {
771
+ name: '新项目',
772
+ description: state.collectedRequirements[0] || '项目描述',
773
+ version: '1.0.0',
774
+ businessProcesses: [],
775
+ modules: [],
776
+ nfrs: [],
777
+ };
778
+ // 流式调用
779
+ for await (const event of session.interact(instruction, blueprintSchema)) {
780
+ if (event.type === 'text' || event.type === 'thinking') {
781
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
782
+ }
783
+ else if (event.type === 'tool_delta') {
784
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
785
+ }
786
+ else if (event.type === 'tool_result' && event.result) {
787
+ blueprintData = { ...blueprintData, ...event.result };
788
+ }
789
+ else if (event.type === 'error') {
790
+ console.error('[SmartPlanner] Blueprint generation failed:', event.error);
791
+ }
792
+ }
793
+ // 发送进度事件:AI 响应完成,开始构建蓝图
794
+ this.emit('blueprint:progress', { step: 3, total: 5, message: '正在构建蓝图结构...' });
795
+ // 调试日志:检查 AI 返回的数据
796
+ console.log('[SmartPlanner] Blueprint data returned by AI:');
797
+ console.log(' - businessProcesses:', blueprintData.businessProcesses?.length || 0);
798
+ console.log(' - modules:', blueprintData.modules?.length || 0);
799
+ console.log(' - nfrs:', blueprintData.nfrs?.length || 0);
800
+ if (!blueprintData.businessProcesses?.length && !blueprintData.modules?.length && !blueprintData.nfrs?.length) {
801
+ console.warn('[SmartPlanner] ⚠️ AI returned empty data! May be AI call failed or structure not generated correctly.');
802
+ console.log('[SmartPlanner] blueprintData:', JSON.stringify(blueprintData, null, 2).slice(0, 500));
803
+ }
804
+ // 构建完整的蓝图对象(添加空数组防护,防止 AI 返回不完整数据)
805
+ const blueprint = {
806
+ id: uuidv4(),
807
+ name: blueprintData.name || '新项目',
808
+ description: blueprintData.description || '',
809
+ version: blueprintData.version || '1.0.0',
810
+ projectPath: this.projectPath,
811
+ status: 'confirmed',
812
+ // 业务流程(防护空数组)
813
+ businessProcesses: (blueprintData.businessProcesses || []).map((bp) => ({
814
+ id: bp.id || uuidv4(),
815
+ name: bp.name || '',
816
+ description: bp.description || '',
817
+ type: bp.type || 'to-be',
818
+ steps: (bp.steps || []).map((step) => ({
819
+ id: step.id || uuidv4(),
820
+ order: step.order || 0,
821
+ name: step.name || '',
822
+ description: step.description || '',
823
+ actor: step.actor || '',
824
+ inputs: step.inputs || [],
825
+ outputs: step.outputs || [],
826
+ })),
827
+ actors: bp.actors || [],
828
+ inputs: bp.inputs || [],
829
+ outputs: bp.outputs || [],
830
+ })),
831
+ // 模块(完整格式,防护空数组)
832
+ modules: (blueprintData.modules || []).map((m) => ({
833
+ id: m.id || uuidv4(),
834
+ name: m.name,
835
+ description: m.description,
836
+ type: m.type,
837
+ responsibilities: m.responsibilities || [],
838
+ techStack: m.techStack || [],
839
+ interfaces: (m.interfaces || []).map((iface) => ({
840
+ name: iface.name,
841
+ type: iface.type,
842
+ description: iface.description,
843
+ signature: iface.signature,
844
+ })),
845
+ dependencies: m.dependencies || [],
846
+ rootPath: m.rootPath || '',
847
+ source: m.source || 'ai_generated',
848
+ files: m.files || [],
849
+ })),
850
+ // 非功能需求(防护空数组)
851
+ nfrs: (blueprintData.nfrs || []).map((nfr) => ({
852
+ id: nfr.id || uuidv4(),
853
+ category: nfr.category || 'other',
854
+ name: nfr.name || '',
855
+ description: nfr.description || '',
856
+ priority: nfr.priority || 'medium',
857
+ metrics: nfr.metrics || [],
858
+ })),
859
+ // 兼容字段(从对话收集的原始信息)
860
+ requirements: state.collectedRequirements,
861
+ techStack: this.ensureCompleteTechStack(state.techStack),
862
+ constraints: state.collectedConstraints,
863
+ // v2.2: UI 设计图(作为端到端验收标准)
864
+ designImages: state.designImages || [],
865
+ // 时间戳
866
+ createdAt: new Date(),
867
+ updatedAt: new Date(),
868
+ confirmedAt: new Date(),
869
+ };
870
+ // 发送进度事件:保存蓝图
871
+ this.emit('blueprint:progress', { step: 4, total: 5, message: '正在保存蓝图...' });
872
+ // 保存蓝图
873
+ this.saveBlueprint(blueprint);
874
+ // 发送进度事件:完成
875
+ this.emit('blueprint:progress', { step: 5, total: 5, message: '蓝图生成完成!' });
876
+ this.emit('blueprint:created', blueprint);
877
+ return blueprint;
878
+ }
879
+ // --------------------------------------------------------------------------
880
+ // 任务分解
881
+ // --------------------------------------------------------------------------
882
+ /**
883
+ * 创建执行计划
884
+ *
885
+ * @param blueprint 已确认的蓝图
886
+ * @returns 执行计划(包含智能任务列表和并行分组)
887
+ */
888
+ async createExecutionPlan(blueprint) {
889
+ // v2.0 新增:先用 Agent 探索代码库
890
+ const exploration = await this.exploreCodebase(blueprint.projectPath, blueprint.requirements || []);
891
+ const explorationContext = this.formatExplorationContext(exploration);
892
+ // v4.0 新增:生成 API 契约(事前约束)
893
+ // 在任务分解之前定义 API 契约,确保前后端一致
894
+ this.emit('planner:generating_api_contract', { blueprintId: blueprint.id });
895
+ const apiContract = await this.generateAPIContract(blueprint, explorationContext);
896
+ if (apiContract) {
897
+ // 将契约写入蓝图(持久化)
898
+ blueprint.apiContract = apiContract;
899
+ blueprint.updatedAt = new Date();
900
+ this.emit('planner:api_contract_generated', {
901
+ blueprintId: blueprint.id,
902
+ endpoints: apiContract.endpoints?.length || 0,
903
+ apiPrefix: apiContract.apiPrefix,
904
+ });
905
+ console.log(`[SmartPlanner] API contract written to blueprint: ${apiContract.endpoints.length} endpoints, prefix: ${apiContract.apiPrefix}`);
906
+ }
907
+ this.emit('planner:decomposing', { blueprintId: blueprint.id });
908
+ // 格式化模块信息(支持完整格式和简化格式)
909
+ const formatModules = () => {
910
+ if (!blueprint.modules || blueprint.modules.length === 0) {
911
+ return '无模块定义';
912
+ }
913
+ return blueprint.modules.map((m) => {
914
+ const lines = [];
915
+ lines.push(`- **${m.name}** (${m.type}): ${m.description}`);
916
+ if (m.responsibilities && m.responsibilities.length > 0) {
917
+ lines.push(` 职责: ${m.responsibilities.join(', ')}`);
918
+ }
919
+ if (m.interfaces && m.interfaces.length > 0) {
920
+ lines.push(` 接口: ${m.interfaces.map((i) => i.name).join(', ')}`);
921
+ }
922
+ if (m.rootPath) {
923
+ lines.push(` 路径: ${m.rootPath}`);
924
+ }
925
+ return lines.join('\n');
926
+ }).join('\n');
927
+ };
928
+ // 格式化业务流程信息
929
+ const formatProcesses = () => {
930
+ if (!blueprint.businessProcesses || blueprint.businessProcesses.length === 0) {
931
+ return '';
932
+ }
933
+ return `\n业务流程:\n${blueprint.businessProcesses.map((bp) => {
934
+ const lines = [];
935
+ lines.push(`- **${bp.name}**: ${bp.description}`);
936
+ if (bp.steps && bp.steps.length > 0) {
937
+ lines.push(` 步骤: ${bp.steps.map((s) => s.name).join(' → ')}`);
938
+ }
939
+ return lines.join('\n');
940
+ }).join('\n')}`;
941
+ };
942
+ // 格式化NFR信息
943
+ const formatNFRs = () => {
944
+ if (!blueprint.nfrs || blueprint.nfrs.length === 0) {
945
+ return '';
946
+ }
947
+ return `\n非功能需求:\n${blueprint.nfrs.map((nfr) => `- [${nfr.priority}] ${nfr.name}: ${nfr.description}`).join('\n')}`;
948
+ };
949
+ // 使用专门的任务分解方法(不依赖 extractWithAI)
950
+ // v4.0: 传入 API 契约,让任务分解时考虑 API 路径规范
951
+ const taskData = await this.decomposeTasksWithAI(blueprint, explorationContext, formatModules(), formatProcesses(), formatNFRs(), apiContract);
952
+ // 验证 AI 返回的数据结构
953
+ if (!taskData || !Array.isArray(taskData.tasks)) {
954
+ console.error('[SmartPlanner] AI returned invalid data, missing tasks array');
955
+ console.error('[SmartPlanner] taskData:', JSON.stringify(taskData, null, 2));
956
+ throw new Error('Task decomposition failed: AI did not return a valid task list. Please check if the blueprint description is detailed enough, or try again later.');
957
+ }
958
+ // 构建智能任务列表(过滤掉无效任务)
959
+ const tasks = taskData.tasks
960
+ .filter((t) => {
961
+ if (!t.name || typeof t.name !== 'string') {
962
+ console.warn('[SmartPlanner] Filtered out invalid task (missing name):', JSON.stringify(t));
963
+ return false;
964
+ }
965
+ return true;
966
+ })
967
+ .map((t) => ({
968
+ id: t.id || uuidv4(),
969
+ name: t.name,
970
+ description: t.description || t.name,
971
+ type: t.type || 'code',
972
+ complexity: t.complexity || 'simple',
973
+ // v3.5: 任务领域,由 AI 直接标记,Worker 无需猜测
974
+ category: t.category || 'other',
975
+ blueprintId: blueprint.id,
976
+ moduleId: t.moduleId,
977
+ files: Array.isArray(t.files) ? t.files : [],
978
+ dependencies: t.dependencies || [],
979
+ needsTest: this.config.autoTestDecision ? t.needsTest : true,
980
+ // v3.3: 测试策略,默认使用 unit
981
+ testStrategy: t.testStrategy || (t.needsTest === false ? 'skip' : 'unit'),
982
+ estimatedMinutes: Math.min(t.estimatedMinutes || 5, this.config.maxTaskMinutes),
983
+ status: 'pending',
984
+ }));
985
+ // 计算预估(任务已按顺序排列,直接累加)
986
+ const estimatedMinutes = this.calculateEstimatedTime(tasks);
987
+ const estimatedCost = this.calculateEstimatedCost(tasks);
988
+ // 使用 Agent 返回的 parallelGroups
989
+ const parallelGroups = taskData.parallelGroups || [tasks.map(t => t.id)];
990
+ // 构建执行计划
991
+ const plan = {
992
+ id: uuidv4(),
993
+ blueprintId: blueprint.id,
994
+ tasks,
995
+ parallelGroups,
996
+ estimatedMinutes,
997
+ estimatedCost,
998
+ autoDecisions: taskData.decisions.map((d) => ({
999
+ type: d.type,
1000
+ description: d.description,
1001
+ reasoning: d.reasoning,
1002
+ })),
1003
+ status: 'ready',
1004
+ createdAt: new Date(),
1005
+ };
1006
+ // 保存执行计划
1007
+ this.saveExecutionPlan(plan);
1008
+ this.emit('plan:created', plan);
1009
+ return plan;
1010
+ }
1011
+ /**
1012
+ * 计算预估执行时间
1013
+ * 简化版:假设有一定并行度(约 50%),实际时间 ≈ 总时间 / 2
1014
+ */
1015
+ calculateEstimatedTime(tasks) {
1016
+ const totalMinutes = tasks.reduce((sum, t) => sum + (t.estimatedMinutes || 5), 0);
1017
+ // 假设平均并行度 50%
1018
+ return Math.ceil(totalMinutes * 0.5);
1019
+ }
1020
+ /**
1021
+ * 计算预估成本(基于任务复杂度)
1022
+ */
1023
+ calculateEstimatedCost(tasks) {
1024
+ // 基础成本系数(每分钟的 API 调用成本估算)
1025
+ const costPerMinute = {
1026
+ trivial: 0.001,
1027
+ simple: 0.002,
1028
+ moderate: 0.005,
1029
+ complex: 0.01,
1030
+ };
1031
+ return tasks.reduce((total, task) => {
1032
+ const rate = costPerMinute[task.complexity] || 0.002;
1033
+ return total + task.estimatedMinutes * rate;
1034
+ }, 0);
1035
+ }
1036
+ // --------------------------------------------------------------------------
1037
+ // 辅助方法
1038
+ // --------------------------------------------------------------------------
1039
+ /**
1040
+ * 获取 Claude 客户端
1041
+ */
1042
+ getClient() {
1043
+ if (!this.client) {
1044
+ this.client = getDefaultClient();
1045
+ }
1046
+ return this.client;
1047
+ }
1048
+ /**
1049
+ * 使用 Tool Use 提取结构化信息(比让AI输出JSON文本更可靠)
1050
+ *
1051
+ * @param prompt 提示词,描述需要提取什么
1052
+ * @param schema JSON Schema,定义返回数据的结构
1053
+ * @param defaultValue 默认值(当提取失败时返回)
1054
+ */
1055
+ async extractWithAI(prompt, defaultValue, schema, customSystemPrompt) {
1056
+ try {
1057
+ const client = this.getClient();
1058
+ // 从 defaultValue 推断 schema(如果没有提供)
1059
+ const inferredSchema = schema || this.inferSchemaFromValue(defaultValue);
1060
+ // 定义提取工具
1061
+ const extractTool = {
1062
+ name: 'submit_extracted_data',
1063
+ description: '提交提取的结构化数据',
1064
+ inputSchema: {
1065
+ type: 'object',
1066
+ properties: inferredSchema,
1067
+ required: Object.keys(inferredSchema),
1068
+ },
1069
+ };
1070
+ // 默认 system prompt
1071
+ const defaultSystemPrompt = '你是一个数据提取助手。分析用户的输入,使用 submit_extracted_data 工具返回结构化数据。不要输出任何文本,直接调用工具提交数据。';
1072
+ const systemPrompt = customSystemPrompt || defaultSystemPrompt;
1073
+ console.log('[SmartPlanner] extractWithAI starting streaming call...');
1074
+ console.log('[SmartPlanner] Inferred schema keys:', Object.keys(inferredSchema));
1075
+ console.log('[SmartPlanner] Prompt length:', prompt.length, 'characters');
1076
+ console.log('[SmartPlanner] Prompt being sent (first 1000 chars):\n', prompt.slice(0, 1000));
1077
+ // 使用流式 API 以便打印完整输出
1078
+ let fullText = '';
1079
+ let toolInputJson = '';
1080
+ let currentToolName = '';
1081
+ let hasToolUse = false;
1082
+ for await (const event of client.createMessageStream([{ role: 'user', content: prompt }], [extractTool], systemPrompt, {
1083
+ enableThinking: false,
1084
+ // 强制 AI 必须调用 submit_extracted_data 工具
1085
+ toolChoice: { type: 'tool', name: 'submit_extracted_data' },
1086
+ })) {
1087
+ // 打印每个流式事件
1088
+ if (event.type === 'text' && event.text) {
1089
+ fullText += event.text;
1090
+ console.log('[SmartPlanner][Stream] Text:', event.text);
1091
+ }
1092
+ else if (event.type === 'thinking' && event.thinking) {
1093
+ console.log('[SmartPlanner][Stream] Thinking:', event.thinking);
1094
+ }
1095
+ else if (event.type === 'tool_use_start') {
1096
+ hasToolUse = true;
1097
+ currentToolName = event.name || '';
1098
+ console.log('[SmartPlanner][Stream] Tool call started:', currentToolName);
1099
+ }
1100
+ else if (event.type === 'tool_use_delta' && event.input) {
1101
+ toolInputJson += event.input;
1102
+ // 每收到增量就打印(但不打印换行,避免日志过多)
1103
+ process.stdout.write(event.input);
1104
+ }
1105
+ else if (event.type === 'stop') {
1106
+ console.log('\n[SmartPlanner][Stream] Stream ended, reason:', event.stopReason);
1107
+ }
1108
+ else if (event.type === 'error') {
1109
+ console.error('[SmartPlanner][Stream] Error:', event.error);
1110
+ }
1111
+ else if (event.type === 'usage') {
1112
+ console.log('[SmartPlanner][Stream] Token usage:', JSON.stringify(event.usage));
1113
+ }
1114
+ }
1115
+ console.log('[SmartPlanner] Streaming call completed');
1116
+ console.log('[SmartPlanner] Received text length:', fullText.length);
1117
+ console.log('[SmartPlanner] Received tool input length:', toolInputJson.length);
1118
+ // 如果有工具调用,解析工具输入
1119
+ if (hasToolUse && toolInputJson) {
1120
+ console.log('[SmartPlanner] extractWithAI succeeded, AI called tool:', currentToolName);
1121
+ console.log('[SmartPlanner] Tool input JSON (complete):\n', toolInputJson);
1122
+ try {
1123
+ const inputData = JSON.parse(toolInputJson);
1124
+ console.log('[SmartPlanner] Tool returned data keys:', Object.keys(inputData || {}));
1125
+ return inputData;
1126
+ }
1127
+ catch (parseError) {
1128
+ console.error('[SmartPlanner] Tool input JSON parsing failed:', parseError);
1129
+ console.error('[SmartPlanner] Raw JSON:', toolInputJson);
1130
+ }
1131
+ }
1132
+ // 如果AI没有调用工具,尝试从文本中解析(降级方案)
1133
+ if (fullText) {
1134
+ console.log('[SmartPlanner] AI returned text, attempting to parse JSON...');
1135
+ console.log('[SmartPlanner] Text content (complete):\n', fullText);
1136
+ const parsed = this.tryParseJSON(fullText);
1137
+ if (parsed !== null) {
1138
+ console.log('[SmartPlanner] JSON parsing succeeded');
1139
+ return parsed;
1140
+ }
1141
+ console.warn('[SmartPlanner] JSON parsing failed');
1142
+ }
1143
+ console.warn('[SmartPlanner] AI did not call tool and text parsing failed, using default values');
1144
+ return defaultValue;
1145
+ }
1146
+ catch (error) {
1147
+ console.error('[SmartPlanner] AI extraction failed:', error);
1148
+ return defaultValue;
1149
+ }
1150
+ }
1151
+ /**
1152
+ * 从默认值推断 JSON Schema
1153
+ */
1154
+ inferSchemaFromValue(value) {
1155
+ if (value === null || value === undefined) {
1156
+ return {};
1157
+ }
1158
+ const schema = {};
1159
+ for (const [key, val] of Object.entries(value)) {
1160
+ if (Array.isArray(val)) {
1161
+ schema[key] = {
1162
+ type: 'array',
1163
+ items: val.length > 0 ? this.inferTypeSchema(val[0]) : { type: 'string' },
1164
+ };
1165
+ }
1166
+ else {
1167
+ schema[key] = this.inferTypeSchema(val);
1168
+ }
1169
+ }
1170
+ return schema;
1171
+ }
1172
+ /**
1173
+ * 推断单个值的类型 schema
1174
+ *
1175
+ * 关键改进:
1176
+ * - 对于对象类型,添加 required 字段,确保 AI 必须填充所有属性
1177
+ * - 对于数组类型,设置 description 提示 AI 生成内容
1178
+ */
1179
+ inferTypeSchema(val) {
1180
+ if (val === null || val === undefined) {
1181
+ return { type: 'string' };
1182
+ }
1183
+ if (typeof val === 'string') {
1184
+ return { type: 'string' };
1185
+ }
1186
+ if (typeof val === 'number') {
1187
+ return { type: 'number' };
1188
+ }
1189
+ if (typeof val === 'boolean') {
1190
+ return { type: 'boolean' };
1191
+ }
1192
+ if (Array.isArray(val)) {
1193
+ return {
1194
+ type: 'array',
1195
+ items: val.length > 0 ? this.inferTypeSchema(val[0]) : { type: 'string' },
1196
+ // 提示 AI 这个数组应该有元素
1197
+ description: '请根据需求生成完整的数组内容',
1198
+ };
1199
+ }
1200
+ if (typeof val === 'object') {
1201
+ const properties = this.inferSchemaFromValue(val);
1202
+ return {
1203
+ type: 'object',
1204
+ properties,
1205
+ // 关键修复:添加 required 字段,确保 AI 必须填充所有属性
1206
+ required: Object.keys(properties),
1207
+ };
1208
+ }
1209
+ return { type: 'string' };
1210
+ }
1211
+ /**
1212
+ * 尝试从文本解析 JSON(降级方案)
1213
+ */
1214
+ tryParseJSON(text) {
1215
+ // 清理 markdown 代码块
1216
+ const cleaned = text
1217
+ .replace(/```json\s*/gi, '')
1218
+ .replace(/```\s*/g, '')
1219
+ .trim();
1220
+ try {
1221
+ return JSON.parse(cleaned);
1222
+ }
1223
+ catch {
1224
+ // 尝试提取 {...} 部分
1225
+ const match = cleaned.match(/\{[\s\S]*\}/);
1226
+ if (match) {
1227
+ try {
1228
+ return JSON.parse(match[0]);
1229
+ }
1230
+ catch {
1231
+ return null;
1232
+ }
1233
+ }
1234
+ return null;
1235
+ }
1236
+ }
1237
+ // --------------------------------------------------------------------------
1238
+ // v4.0 新增:API 契约生成(事前约束)
1239
+ // --------------------------------------------------------------------------
1240
+ /**
1241
+ * 生成 API 契约
1242
+ * 在任务分解之前,根据需求生成 API 契约,确保前后端一致
1243
+ *
1244
+ * @param blueprint 蓝图
1245
+ * @param explorationContext 代码库探索上下文
1246
+ * @returns API 契约
1247
+ */
1248
+ async generateAPIContract(blueprint, explorationContext) {
1249
+ // 让 AI 自己判断是否需要 API 契约,而不是用脆弱的正则匹配
1250
+ console.log('[SmartPlanner] Analyzing whether project needs API contract...');
1251
+ try {
1252
+ const loop = new ConversationLoop({
1253
+ model: this.getClient().getModel(),
1254
+ maxTurns: 5,
1255
+ verbose: false,
1256
+ permissionMode: 'bypassPermissions',
1257
+ workingDir: blueprint.projectPath,
1258
+ systemPrompt: `你是 API 契约设计专家。你需要先判断项目是否需要 API 契约,然后根据需求设计契约。
1259
+
1260
+ ## 判断标准
1261
+ 以下项目类型**需要** API 契约:
1262
+ - 前后端分离项目(前端通过 HTTP/REST 调用后端)
1263
+ - 提供 API 给第三方调用的服务
1264
+ - 微服务架构中的服务间通信
1265
+
1266
+ 以下项目类型**不需要** API 契约:
1267
+ - 纯前端项目(静态网站、SPA 无后端)
1268
+ - 纯后端项目(CLI 工具、脚本、库)
1269
+ - 单体全栈项目(模板渲染,无 API 层)
1270
+ - 移动端 App(除非有自建后端)
1271
+
1272
+ ## 输出格式
1273
+ 如果**不需要**契约:
1274
+ \`\`\`json
1275
+ { "needsContract": false, "reason": "简述原因" }
1276
+ \`\`\`
1277
+
1278
+ 如果**需要**契约,设计完整的 API:
1279
+ \`\`\`json
1280
+ {
1281
+ "needsContract": true,
1282
+ "apiPrefix": "/api/v1",
1283
+ "endpoints": [
1284
+ {
1285
+ "method": "POST",
1286
+ "path": "/api/v1/auth/login",
1287
+ "description": "用户登录",
1288
+ "requestBody": "{ username, password }",
1289
+ "responseType": "{ token, user }"
1290
+ }
1291
+ ]
1292
+ }
1293
+ \`\`\`
1294
+
1295
+ 设计原则(仅当需要契约时):
1296
+ 1. 使用统一的 API 前缀
1297
+ 2. 遵循 RESTful 规范
1298
+ 3. 路径命名使用小写和连字符`,
1299
+ isSubAgent: true,
1300
+ });
1301
+ const prompt = `分析以下项目,判断是否需要 API 契约,如需要则设计完整契约:
1302
+
1303
+ ## 项目需求
1304
+ ${blueprint.requirements?.join('\n') || blueprint.description}
1305
+
1306
+ ## 技术栈
1307
+ ${JSON.stringify(blueprint.techStack, null, 2)}
1308
+
1309
+ ${explorationContext ? `## 现有代码结构\n${explorationContext}` : ''}
1310
+
1311
+ 请先判断是否需要 API 契约,然后按要求输出 JSON。`;
1312
+ const result = await loop.processMessage(prompt);
1313
+ if (result) {
1314
+ const jsonMatch = result.match(/```json\s*([\s\S]*?)```/);
1315
+ if (jsonMatch) {
1316
+ const parsed = JSON.parse(jsonMatch[1]);
1317
+ // AI 判断不需要契约
1318
+ if (parsed.needsContract === false) {
1319
+ console.log('[SmartPlanner] AI determined project does not need API contract:', parsed.reason);
1320
+ return null;
1321
+ }
1322
+ console.log('[SmartPlanner] API contract generated successfully:', parsed.endpoints?.length, 'endpoints');
1323
+ return {
1324
+ apiPrefix: parsed.apiPrefix || '/api/v1',
1325
+ endpoints: parsed.endpoints || [],
1326
+ generatedAt: new Date(),
1327
+ };
1328
+ }
1329
+ }
1330
+ console.warn('[SmartPlanner] Cannot parse API contract response');
1331
+ return null;
1332
+ }
1333
+ catch (error) {
1334
+ console.error('[SmartPlanner] API contract generation failed:', error.message);
1335
+ return null;
1336
+ }
1337
+ }
1338
+ // --------------------------------------------------------------------------
1339
+ // v2.0 新增:Agent 模式探索代码库
1340
+ // --------------------------------------------------------------------------
1341
+ /**
1342
+ * 使用 Agent 模式探索代码库
1343
+ * 在任务分解前先了解代码库结构,以便更准确地分解任务
1344
+ *
1345
+ * @param projectPath 项目路径
1346
+ * @param requirements 需求列表
1347
+ * @returns 探索结果
1348
+ */
1349
+ async exploreCodebase(projectPath, requirements) {
1350
+ if (!this.config.exploreBeforeDecompose) {
1351
+ return null;
1352
+ }
1353
+ this.emit('planner:exploring', { projectPath });
1354
+ const systemPrompt = `你是一个代码库探索助手。你的任务是探索代码库结构,为后续的任务分解提供上下文。
1355
+
1356
+ 你可以使用以下工具:
1357
+ - Glob: 搜索文件
1358
+ - Grep: 搜索代码内容
1359
+ - Read: 读取文件内容
1360
+
1361
+ 请探索代码库并收集以下信息:
1362
+ 1. 目录结构概要
1363
+ 2. 主要模块/组件
1364
+ 3. 技术栈(语言、框架、测试框架等)
1365
+ 4. 代码风格/约定
1366
+ 5. 关键配置文件
1367
+
1368
+ 探索完成后,请用以下 JSON 格式总结你的发现:
1369
+ \`\`\`json
1370
+ {
1371
+ "directoryStructure": "目录结构概要",
1372
+ "discoveredModules": [
1373
+ {"name": "模块名", "path": "路径", "description": "描述", "files": ["文件列表"]}
1374
+ ],
1375
+ "detectedTechStack": {
1376
+ "language": "typescript/javascript/python/go/rust/java/unknown",
1377
+ "framework": "框架名称",
1378
+ "testFramework": "测试框架",
1379
+ "packageManager": "包管理器"
1380
+ },
1381
+ "codeConventions": {
1382
+ "namingStyle": "camelCase/snake_case/PascalCase",
1383
+ "hasTypescript": true/false,
1384
+ "hasTests": true/false,
1385
+ "testPattern": "测试文件模式"
1386
+ },
1387
+ "keyFiles": {
1388
+ "entryPoint": "入口文件",
1389
+ "config": ["配置文件列表"],
1390
+ "tests": ["测试目录"]
1391
+ },
1392
+ "observations": ["观察1", "观察2"]
1393
+ }
1394
+ \`\`\`
1395
+
1396
+ 【重要】你的最终响应必须包含上述 JSON 代码块,这是探索结果的输出格式要求,不能省略。`;
1397
+ const userPrompt = `请探索以下项目的代码库结构:
1398
+
1399
+ 项目路径: ${projectPath}
1400
+
1401
+ 需求上下文(用于了解需要关注哪些部分):
1402
+ ${requirements.map((r, i) => `${i + 1}. ${r}`).join('\n')}
1403
+
1404
+ 请使用工具探索代码库,然后总结你的发现。`;
1405
+ try {
1406
+ const loop = new ConversationLoop({
1407
+ model: this.getClient().getModel(),
1408
+ maxTurns: this.config.exploreMaxTurns,
1409
+ verbose: false,
1410
+ permissionMode: 'bypassPermissions',
1411
+ workingDir: projectPath,
1412
+ systemPrompt,
1413
+ isSubAgent: true,
1414
+ });
1415
+ const result = await loop.processMessage(userPrompt);
1416
+ // 从结果中提取 JSON
1417
+ let explorationData = null;
1418
+ if (result) {
1419
+ const extractJson = (text) => {
1420
+ // 尝试匹配 ```json ... ``` 格式
1421
+ const jsonMatch = text.match(/```json\s*([\s\S]*?)```/);
1422
+ if (jsonMatch) {
1423
+ try {
1424
+ return JSON.parse(jsonMatch[1]);
1425
+ }
1426
+ catch (e) {
1427
+ console.error('[SmartPlanner] JSON parsing failed (code block):', e);
1428
+ }
1429
+ }
1430
+ // 尝试直接匹配 JSON 对象
1431
+ const directMatch = text.match(/\{[\s\S]*\}/);
1432
+ if (directMatch) {
1433
+ try {
1434
+ return JSON.parse(directMatch[0]);
1435
+ }
1436
+ catch (e) {
1437
+ console.error('[SmartPlanner] JSON parsing failed (direct match):', e);
1438
+ }
1439
+ }
1440
+ return null;
1441
+ };
1442
+ explorationData = extractJson(result);
1443
+ if (!explorationData) {
1444
+ // 输出详细日志帮助诊断
1445
+ const preview = result.length > 200 ? result.slice(0, 200) + '...' : result;
1446
+ console.warn('[SmartPlanner] Codebase exploration: Cannot extract JSON from response');
1447
+ console.warn(`[SmartPlanner] Response length: ${result.length}`);
1448
+ console.warn(`[SmartPlanner] Response preview: ${preview.replace(/\n/g, '\\n')}`);
1449
+ }
1450
+ }
1451
+ else {
1452
+ console.warn('[SmartPlanner] Codebase exploration: AI response is empty');
1453
+ }
1454
+ this.emit('planner:explored', { projectPath, exploration: explorationData });
1455
+ return explorationData;
1456
+ }
1457
+ catch (error) {
1458
+ console.error('[SmartPlanner] Codebase exploration failed:', error);
1459
+ this.emit('planner:explored', { projectPath, error: error.message });
1460
+ return null;
1461
+ }
1462
+ }
1463
+ /**
1464
+ * 专用的任务分解方法 - 使用 Agent 分解任务
1465
+ * 不依赖 extractWithAI,有独立的实现逻辑
1466
+ * v4.0: 添加 apiContract 参数,确保任务遵循 API 契约
1467
+ */
1468
+ async decomposeTasksWithAI(blueprint, explorationContext, modulesText, processesText, nfrsText, apiContract) {
1469
+ // v4.0: 如果有 API 契约,添加到 system prompt 中
1470
+ const apiContractSection = apiContract ? `
1471
+
1472
+ ## ⚠️ API 契约(必须遵循)
1473
+ 以下是已定义的 API 契约,所有前后端任务必须严格遵循:
1474
+ - API 前缀: ${apiContract.apiPrefix}
1475
+ - 端点列表:
1476
+ ${apiContract.endpoints.map(ep => ` - ${ep.method} ${ep.path} (${ep.description})`).join('\n')}
1477
+
1478
+ **重要**:
1479
+ - 后端任务必须按契约路径实现路由
1480
+ - 前端任务必须按契约路径调用 API
1481
+ - 不要自行修改 API 路径` : '';
1482
+ const systemPrompt = `你是一个专业的任务分解专家。你的职责是将软件项目蓝图分解为具体可执行的开发任务。
1483
+
1484
+ 分解原则:
1485
+ 1. 每个任务应该能在5分钟内完成
1486
+ 2. 任务要有明确的输入和输出
1487
+ 3. 任务可以独立验证
1488
+ 4. 配置类/文档类任务不需要测试
1489
+ 5. 核心业务逻辑必须有测试
1490
+ 6. **前后端任务必须遵循 API 契约**(如果提供)
1491
+
1492
+ ⚠️ 任务分组与并行执行:
1493
+ - 把可以**同时执行**的任务放进同一组(parallelGroups)
1494
+ - 组与组之间是**串行**的:第一组全部完成后,才执行第二组
1495
+ - 例如:[[数据库模型], [后端API-A, 后端API-B], [前端组件A, 前端组件B]]
1496
+ - dependencies 字段填写前置任务的 ID(用于失败时跳过依赖链)
1497
+
1498
+ 任务类型:code(功能代码), config(配置), test(测试), refactor(重构), docs(文档), integrate(集成)
1499
+ 任务领域:frontend(前端), backend(后端), database(数据库), shared(共享代码), other(其他)
1500
+ 测试策略:unit(单元测试), integration(集成测试), e2e(端到端), mock(Mock), vcr(录制回放), skip(跳过)
1501
+ 复杂度:trivial, simple, moderate, complex
1502
+ ${apiContractSection}
1503
+
1504
+ 完成分析后,你必须输出一个 JSON 代码块,不要包含其他说明文字,格式如下:
1505
+ \`\`\`json
1506
+ {
1507
+ "tasks": [
1508
+ {
1509
+ "id": "task-1",
1510
+ "name": "任务名称",
1511
+ "description": "详细描述(如果是 API 相关任务,请明确写出完整的 API 路径)",
1512
+ "type": "code",
1513
+ "category": "backend",
1514
+ "moduleId": "模块ID",
1515
+ "files": ["src/example.ts"],
1516
+ "dependencies": [],
1517
+ "needsTest": true,
1518
+ "testStrategy": "unit",
1519
+ "estimatedMinutes": 5,
1520
+ "complexity": "simple"
1521
+ }
1522
+ ],
1523
+ "parallelGroups": [
1524
+ ["task-1", "task-2"],
1525
+ ["task-3"],
1526
+ ["task-4", "task-5"]
1527
+ ],
1528
+ "decisions": [
1529
+ {
1530
+ "type": "task_split",
1531
+ "description": "决策描述",
1532
+ "reasoning": "决策理由"
1533
+ }
1534
+ ]
1535
+ }
1536
+ \`\`\`
1537
+
1538
+ ⚠️ parallelGroups 必填!每个任务ID必须出现在某一组中。
1539
+
1540
+ 【重要】你的响应必须包含上述格式的 JSON 代码块。`;
1541
+ const userPrompt = `请分解以下项目蓝图为具体的执行任务:
1542
+
1543
+ ## 蓝图信息
1544
+ - 名称:${blueprint.name}
1545
+ - 描述:${blueprint.description}
1546
+ ${blueprint.version ? `- 版本:${blueprint.version}` : ''}
1547
+
1548
+ ## 需求列表
1549
+ ${(blueprint.requirements || []).map((r, i) => `${i + 1}. ${r}`).join('\n') || '无'}
1550
+
1551
+ ## 模块划分
1552
+ ${modulesText}
1553
+ ${processesText}
1554
+ ${nfrsText}
1555
+
1556
+ ## 技术栈
1557
+ ${JSON.stringify(blueprint.techStack, null, 2)}
1558
+
1559
+ ## 约束条件
1560
+ ${(blueprint.constraints || []).length > 0 ? blueprint.constraints.join('\n') : '无'}
1561
+ ${explorationContext ? `\n## 代码库探索结果\n${explorationContext}` : ''}
1562
+
1563
+ 请分析以上信息,将需求分解为具体的开发任务,并以 JSON 格式输出。`;
1564
+ console.log('[SmartPlanner] Starting task decomposition Agent...');
1565
+ console.log('[SmartPlanner] Prompt length:', userPrompt.length, 'characters');
1566
+ try {
1567
+ // 使用 ConversationLoop 作为 Agent 进行任务分解
1568
+ const loop = new ConversationLoop({
1569
+ model: this.getClient().getModel(),
1570
+ maxTurns: 9, // 任务分解不需要太多轮次
1571
+ verbose: false,
1572
+ permissionMode: 'bypassPermissions',
1573
+ workingDir: blueprint.projectPath,
1574
+ systemPrompt,
1575
+ isSubAgent: true,
1576
+ });
1577
+ const result = await loop.processMessage(userPrompt);
1578
+ console.log('[SmartPlanner] Agent response length:', result?.length || 0);
1579
+ console.log('[SmartPlanner] Agent response preview:', result?.slice(0, 500));
1580
+ if (!result) {
1581
+ throw new Error('Agent returned empty response');
1582
+ }
1583
+ // 从响应中提取 JSON
1584
+ const jsonMatch = result.match(/```json\s*([\s\S]*?)```/);
1585
+ if (jsonMatch) {
1586
+ const parsed = JSON.parse(jsonMatch[1]);
1587
+ console.log('[SmartPlanner] Successfully parsed JSON, tasks count:', parsed.tasks?.length || 0);
1588
+ return parsed;
1589
+ }
1590
+ // 尝试直接匹配 JSON 对象
1591
+ const directMatch = result.match(/\{[\s\S]*"tasks"[\s\S]*\}/);
1592
+ if (directMatch) {
1593
+ const parsed = JSON.parse(directMatch[0]);
1594
+ console.log('[SmartPlanner] Direct JSON match, tasks count:', parsed.tasks?.length || 0);
1595
+ return parsed;
1596
+ }
1597
+ console.error('[SmartPlanner] Cannot extract JSON from response');
1598
+ console.error('[SmartPlanner] Full response:', result);
1599
+ throw new Error('Unable to extract task data from Agent response');
1600
+ }
1601
+ catch (error) {
1602
+ console.error('[SmartPlanner] Task decomposition Agent failed:', error.message);
1603
+ throw new Error(`Task decomposition failed: ${error.message}`);
1604
+ }
1605
+ }
1606
+ /**
1607
+ * 格式化探索结果为上下文字符串
1608
+ */
1609
+ formatExplorationContext(exploration) {
1610
+ if (!exploration) {
1611
+ return '';
1612
+ }
1613
+ const lines = [];
1614
+ lines.push('## 代码库探索结果\n');
1615
+ if (exploration.directoryStructure) {
1616
+ lines.push('### 目录结构');
1617
+ lines.push(exploration.directoryStructure);
1618
+ lines.push('');
1619
+ }
1620
+ if (exploration.discoveredModules && exploration.discoveredModules.length > 0) {
1621
+ lines.push('### 发现的模块');
1622
+ for (const mod of exploration.discoveredModules) {
1623
+ lines.push(`- **${mod.name}** (${mod.path}): ${mod.description}`);
1624
+ if (mod.files && mod.files.length > 0) {
1625
+ lines.push(` 文件: ${mod.files.slice(0, 5).join(', ')}${mod.files.length > 5 ? '...' : ''}`);
1626
+ }
1627
+ }
1628
+ lines.push('');
1629
+ }
1630
+ if (exploration.detectedTechStack) {
1631
+ lines.push('### 检测到的技术栈');
1632
+ const tech = exploration.detectedTechStack;
1633
+ if (tech.language)
1634
+ lines.push(`- 语言: ${tech.language}`);
1635
+ if (tech.framework)
1636
+ lines.push(`- 框架: ${tech.framework}`);
1637
+ if (tech.testFramework)
1638
+ lines.push(`- 测试框架: ${tech.testFramework}`);
1639
+ if (tech.packageManager)
1640
+ lines.push(`- 包管理器: ${tech.packageManager}`);
1641
+ lines.push('');
1642
+ }
1643
+ if (exploration.codeConventions) {
1644
+ lines.push('### 代码约定');
1645
+ const conv = exploration.codeConventions;
1646
+ if (conv.namingStyle)
1647
+ lines.push(`- 命名风格: ${conv.namingStyle}`);
1648
+ if (conv.hasTypescript !== undefined)
1649
+ lines.push(`- 使用 TypeScript: ${conv.hasTypescript ? '是' : '否'}`);
1650
+ if (conv.hasTests !== undefined)
1651
+ lines.push(`- 有测试: ${conv.hasTests ? '是' : '否'}`);
1652
+ if (conv.testPattern)
1653
+ lines.push(`- 测试文件模式: ${conv.testPattern}`);
1654
+ lines.push('');
1655
+ }
1656
+ if (exploration.keyFiles) {
1657
+ lines.push('### 关键文件');
1658
+ const kf = exploration.keyFiles;
1659
+ if (kf.entryPoint)
1660
+ lines.push(`- 入口: ${kf.entryPoint}`);
1661
+ if (kf.config && kf.config.length > 0)
1662
+ lines.push(`- 配置: ${kf.config.join(', ')}`);
1663
+ if (kf.tests && kf.tests.length > 0)
1664
+ lines.push(`- 测试: ${kf.tests.join(', ')}`);
1665
+ lines.push('');
1666
+ }
1667
+ if (exploration.observations && exploration.observations.length > 0) {
1668
+ lines.push('### 观察');
1669
+ for (const obs of exploration.observations) {
1670
+ lines.push(`- ${obs}`);
1671
+ }
1672
+ }
1673
+ return lines.join('\n');
1674
+ }
1675
+ /**
1676
+ * 生成技术栈建议 - v3.0 Multi-turn 版本
1677
+ */
1678
+ async generateTechSuggestion(state) {
1679
+ // 检测项目现有技术栈
1680
+ const existingTech = this.detectExistingTechStack();
1681
+ if (existingTech.language) {
1682
+ // 使用现有技术栈,确保完整
1683
+ return this.ensureCompleteTechStack(existingTech);
1684
+ }
1685
+ // 使用 AI 推荐技术栈(AI 已有需求上下文,不需要重发)
1686
+ const session = this.getAISession();
1687
+ let aiSuggestion = {
1688
+ language: 'typescript',
1689
+ packageManager: 'npm',
1690
+ testFramework: 'vitest',
1691
+ };
1692
+ for await (const event of session.suggestTechStack(existingTech)) {
1693
+ if (event.type === 'text' || event.type === 'thinking') {
1694
+ this.emit('dialog:ai_streaming', { type: event.type, content: event.text || event.thinking });
1695
+ }
1696
+ else if (event.type === 'tool_delta') {
1697
+ this.emit('dialog:ai_streaming', { type: 'tool_input', content: event.toolInput });
1698
+ }
1699
+ else if (event.type === 'tool_result' && event.result) {
1700
+ // 映射返回结果到 TechStack 格式
1701
+ const result = event.result;
1702
+ aiSuggestion = {
1703
+ language: result.language,
1704
+ framework: result.framework,
1705
+ packageManager: result.packageManager,
1706
+ testFramework: result.testFramework,
1707
+ buildTool: result.buildTool,
1708
+ additionalTools: result.additionalTools,
1709
+ };
1710
+ }
1711
+ }
1712
+ // 确保返回完整的技术栈
1713
+ return this.ensureCompleteTechStack(aiSuggestion);
1714
+ }
1715
+ /**
1716
+ * 检测现有技术栈
1717
+ */
1718
+ detectExistingTechStack() {
1719
+ if (!this.projectPath)
1720
+ return {};
1721
+ const result = {};
1722
+ // 检测 package.json
1723
+ const packageJsonPath = path.join(this.projectPath, 'package.json');
1724
+ if (fs.existsSync(packageJsonPath)) {
1725
+ try {
1726
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
1727
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
1728
+ // 检测语言
1729
+ if (fs.existsSync(path.join(this.projectPath, 'tsconfig.json'))) {
1730
+ result.language = 'typescript';
1731
+ }
1732
+ else {
1733
+ result.language = 'javascript';
1734
+ }
1735
+ // 检测包管理器
1736
+ if (fs.existsSync(path.join(this.projectPath, 'pnpm-lock.yaml'))) {
1737
+ result.packageManager = 'pnpm';
1738
+ }
1739
+ else if (fs.existsSync(path.join(this.projectPath, 'yarn.lock'))) {
1740
+ result.packageManager = 'yarn';
1741
+ }
1742
+ else if (fs.existsSync(path.join(this.projectPath, 'bun.lockb'))) {
1743
+ result.packageManager = 'bun';
1744
+ }
1745
+ else {
1746
+ result.packageManager = 'npm';
1747
+ }
1748
+ // 检测测试框架
1749
+ if (deps.vitest) {
1750
+ result.testFramework = 'vitest';
1751
+ }
1752
+ else if (deps.jest) {
1753
+ result.testFramework = 'jest';
1754
+ }
1755
+ else if (deps.mocha) {
1756
+ result.testFramework = 'mocha';
1757
+ }
1758
+ // 检测框架
1759
+ if (deps.react)
1760
+ result.framework = 'React';
1761
+ else if (deps.vue)
1762
+ result.framework = 'Vue';
1763
+ else if (deps.express)
1764
+ result.framework = 'Express';
1765
+ else if (deps.fastify)
1766
+ result.framework = 'Fastify';
1767
+ else if (deps['@nestjs/core'])
1768
+ result.framework = 'NestJS';
1769
+ }
1770
+ catch {
1771
+ // 忽略解析错误
1772
+ }
1773
+ }
1774
+ // 检测 Python
1775
+ if (fs.existsSync(path.join(this.projectPath, 'requirements.txt')) ||
1776
+ fs.existsSync(path.join(this.projectPath, 'pyproject.toml'))) {
1777
+ result.language = 'python';
1778
+ result.packageManager = 'pip';
1779
+ result.testFramework = 'pytest';
1780
+ }
1781
+ // 检测 Go
1782
+ if (fs.existsSync(path.join(this.projectPath, 'go.mod'))) {
1783
+ result.language = 'go';
1784
+ result.packageManager = 'go_mod';
1785
+ result.testFramework = 'go_test';
1786
+ }
1787
+ return result;
1788
+ }
1789
+ /**
1790
+ * 格式化技术栈显示
1791
+ */
1792
+ formatTechStack(tech) {
1793
+ const lines = [];
1794
+ if (tech.language)
1795
+ lines.push(`- **语言**: ${tech.language}`);
1796
+ if (tech.framework)
1797
+ lines.push(`- **框架**: ${tech.framework}`);
1798
+ if (tech.packageManager)
1799
+ lines.push(`- **包管理器**: ${tech.packageManager}`);
1800
+ if (tech.testFramework)
1801
+ lines.push(`- **测试框架**: ${tech.testFramework}`);
1802
+ if (tech.buildTool)
1803
+ lines.push(`- **构建工具**: ${tech.buildTool}`);
1804
+ if (tech.additionalTools && tech.additionalTools.length > 0) {
1805
+ lines.push(`- **其他工具**: ${tech.additionalTools.join(', ')}`);
1806
+ }
1807
+ return lines.join('\n');
1808
+ }
1809
+ /**
1810
+ * 确保技术栈完整
1811
+ */
1812
+ ensureCompleteTechStack(partial) {
1813
+ return {
1814
+ language: partial?.language || 'typescript',
1815
+ framework: partial?.framework,
1816
+ packageManager: partial?.packageManager || 'npm',
1817
+ testFramework: partial?.testFramework || 'vitest',
1818
+ buildTool: partial?.buildTool,
1819
+ additionalTools: partial?.additionalTools,
1820
+ };
1821
+ }
1822
+ /**
1823
+ * 生成蓝图摘要
1824
+ */
1825
+ generateBlueprintSummary(state) {
1826
+ const lines = [];
1827
+ lines.push('## 需求清单');
1828
+ state.collectedRequirements.forEach((r, i) => {
1829
+ lines.push(`${i + 1}. ${r}`);
1830
+ });
1831
+ lines.push('');
1832
+ if (state.collectedConstraints.length > 0) {
1833
+ lines.push('## 约束条件');
1834
+ state.collectedConstraints.forEach((c) => {
1835
+ lines.push(`- ${c}`);
1836
+ });
1837
+ lines.push('');
1838
+ }
1839
+ if (state.techStack) {
1840
+ lines.push('## 技术栈');
1841
+ lines.push(this.formatTechStack(state.techStack));
1842
+ }
1843
+ return lines.join('\n');
1844
+ }
1845
+ // --------------------------------------------------------------------------
1846
+ // 持久化
1847
+ // --------------------------------------------------------------------------
1848
+ /**
1849
+ * 保存会话状态
1850
+ */
1851
+ saveSession(sessionId, state) {
1852
+ try {
1853
+ const filePath = path.join(getPlannersDir(), `session-${sessionId}.json`);
1854
+ const data = {
1855
+ sessionId,
1856
+ projectPath: this.projectPath,
1857
+ state: {
1858
+ ...state,
1859
+ messages: state.messages.map((m) => ({
1860
+ ...m,
1861
+ timestamp: m.timestamp.toISOString(),
1862
+ })),
1863
+ },
1864
+ savedAt: new Date().toISOString(),
1865
+ };
1866
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
1867
+ }
1868
+ catch (error) {
1869
+ console.error('[SmartPlanner] Failed to save session:', error);
1870
+ }
1871
+ }
1872
+ /**
1873
+ * 通过状态保存会话
1874
+ */
1875
+ saveSessionByState(state) {
1876
+ for (const [sessionId, s] of this.sessions) {
1877
+ if (s === state) {
1878
+ this.saveSession(sessionId, state);
1879
+ return;
1880
+ }
1881
+ }
1882
+ }
1883
+ /**
1884
+ * 加载所有会话
1885
+ */
1886
+ loadSessions() {
1887
+ try {
1888
+ const dir = getPlannersDir();
1889
+ const files = fs.readdirSync(dir);
1890
+ for (const file of files) {
1891
+ if (file.startsWith('session-') && file.endsWith('.json')) {
1892
+ const filePath = path.join(dir, file);
1893
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
1894
+ const state = {
1895
+ ...data.state,
1896
+ messages: data.state.messages.map((m) => ({
1897
+ ...m,
1898
+ timestamp: new Date(m.timestamp),
1899
+ })),
1900
+ };
1901
+ this.sessions.set(data.sessionId, state);
1902
+ }
1903
+ }
1904
+ }
1905
+ catch (error) {
1906
+ // 忽略加载错误
1907
+ }
1908
+ }
1909
+ /**
1910
+ * 根据项目路径查找对话
1911
+ */
1912
+ findDialogByProject(projectPath) {
1913
+ // 这里简化实现,实际可以在保存时记录项目路径映射
1914
+ return null;
1915
+ }
1916
+ /**
1917
+ * 保存蓝图
1918
+ */
1919
+ saveBlueprint(blueprint) {
1920
+ try {
1921
+ const dir = path.join(blueprint.projectPath, '.blueprint');
1922
+ if (!fs.existsSync(dir)) {
1923
+ fs.mkdirSync(dir, { recursive: true });
1924
+ }
1925
+ const filePath = path.join(dir, `${blueprint.id}.json`);
1926
+ // 辅助函数:将日期转为 ISO 字符串
1927
+ const toISO = (d) => {
1928
+ if (!d)
1929
+ return undefined;
1930
+ return d instanceof Date ? d.toISOString() : d;
1931
+ };
1932
+ // 处理 designImages:只保存 filePath,不保存 imageData(base64 太大)
1933
+ let designImages = blueprint.designImages;
1934
+ if (designImages && Array.isArray(designImages)) {
1935
+ designImages = designImages.map(img => {
1936
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1937
+ const { imageData, ...rest } = img;
1938
+ return rest;
1939
+ });
1940
+ }
1941
+ const data = {
1942
+ ...blueprint,
1943
+ designImages,
1944
+ createdAt: toISO(blueprint.createdAt),
1945
+ updatedAt: toISO(blueprint.updatedAt),
1946
+ confirmedAt: toISO(blueprint.confirmedAt),
1947
+ };
1948
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
1949
+ }
1950
+ catch (error) {
1951
+ console.error('[SmartPlanner] Failed to save blueprint:', error);
1952
+ }
1953
+ }
1954
+ /**
1955
+ * 保存执行计划
1956
+ */
1957
+ saveExecutionPlan(plan) {
1958
+ try {
1959
+ // 从蓝图获取项目路径
1960
+ const blueprintDir = path.join(getPlannersDir(), 'plans');
1961
+ if (!fs.existsSync(blueprintDir)) {
1962
+ fs.mkdirSync(blueprintDir, { recursive: true });
1963
+ }
1964
+ const filePath = path.join(blueprintDir, `${plan.id}.json`);
1965
+ const data = {
1966
+ ...plan,
1967
+ createdAt: plan.createdAt.toISOString(),
1968
+ startedAt: plan.startedAt?.toISOString(),
1969
+ completedAt: plan.completedAt?.toISOString(),
1970
+ };
1971
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
1972
+ }
1973
+ catch (error) {
1974
+ console.error('[SmartPlanner] Failed to save execution plan:', error);
1975
+ }
1976
+ }
1977
+ /**
1978
+ * 加载执行计划(按 plan ID)
1979
+ */
1980
+ loadExecutionPlan(planId) {
1981
+ try {
1982
+ const blueprintDir = path.join(getPlannersDir(), 'plans');
1983
+ const filePath = path.join(blueprintDir, `${planId}.json`);
1984
+ if (!fs.existsSync(filePath)) {
1985
+ return null;
1986
+ }
1987
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
1988
+ // 恢复 Date 对象
1989
+ return {
1990
+ ...data,
1991
+ createdAt: new Date(data.createdAt),
1992
+ startedAt: data.startedAt ? new Date(data.startedAt) : undefined,
1993
+ completedAt: data.completedAt ? new Date(data.completedAt) : undefined,
1994
+ };
1995
+ }
1996
+ catch (error) {
1997
+ console.error('[SmartPlanner] Failed to load execution plan:', error);
1998
+ return null;
1999
+ }
2000
+ }
2001
+ /**
2002
+ * 加载执行计划(按 blueprint ID)
2003
+ */
2004
+ loadExecutionPlanByBlueprint(blueprintId) {
2005
+ try {
2006
+ const plans = this.getAllExecutionPlans();
2007
+ return plans.find(p => p.blueprintId === blueprintId) || null;
2008
+ }
2009
+ catch (error) {
2010
+ console.error('[SmartPlanner] Failed to load execution plan by blueprint:', error);
2011
+ return null;
2012
+ }
2013
+ }
2014
+ /**
2015
+ * 获取所有执行计划
2016
+ */
2017
+ getAllExecutionPlans() {
2018
+ try {
2019
+ const blueprintDir = path.join(getPlannersDir(), 'plans');
2020
+ if (!fs.existsSync(blueprintDir)) {
2021
+ return [];
2022
+ }
2023
+ const files = fs.readdirSync(blueprintDir).filter(f => f.endsWith('.json'));
2024
+ return files.map(file => {
2025
+ const filePath = path.join(blueprintDir, file);
2026
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
2027
+ return {
2028
+ ...data,
2029
+ createdAt: new Date(data.createdAt),
2030
+ startedAt: data.startedAt ? new Date(data.startedAt) : undefined,
2031
+ completedAt: data.completedAt ? new Date(data.completedAt) : undefined,
2032
+ };
2033
+ });
2034
+ }
2035
+ catch (error) {
2036
+ console.error('[SmartPlanner] Failed to get all execution plans:', error);
2037
+ return [];
2038
+ }
2039
+ }
2040
+ /**
2041
+ * 检查执行计划是否存在
2042
+ */
2043
+ hasExecutionPlan(planId) {
2044
+ const blueprintDir = path.join(getPlannersDir(), 'plans');
2045
+ const filePath = path.join(blueprintDir, `${planId}.json`);
2046
+ return fs.existsSync(filePath);
2047
+ }
2048
+ /**
2049
+ * 删除执行计划
2050
+ */
2051
+ deleteExecutionPlan(planId) {
2052
+ try {
2053
+ const blueprintDir = path.join(getPlannersDir(), 'plans');
2054
+ const filePath = path.join(blueprintDir, `${planId}.json`);
2055
+ if (fs.existsSync(filePath)) {
2056
+ fs.unlinkSync(filePath);
2057
+ console.log(`[SmartPlanner] Execution plan deleted: ${planId}`);
2058
+ }
2059
+ }
2060
+ catch (error) {
2061
+ console.error('[SmartPlanner] Failed to delete execution plan:', error);
2062
+ }
2063
+ }
2064
+ // --------------------------------------------------------------------------
2065
+ // 公共查询方法
2066
+ // --------------------------------------------------------------------------
2067
+ /**
2068
+ * 获取对话状态
2069
+ */
2070
+ getDialogState(sessionId) {
2071
+ return this.sessions.get(sessionId) || null;
2072
+ }
2073
+ /**
2074
+ * 获取所有活跃对话
2075
+ */
2076
+ getAllActiveDialogs() {
2077
+ const result = [];
2078
+ for (const [sessionId, state] of this.sessions) {
2079
+ if (!state.isComplete) {
2080
+ result.push({ sessionId, state });
2081
+ }
2082
+ }
2083
+ return result;
2084
+ }
2085
+ /**
2086
+ * 结束对话
2087
+ */
2088
+ endDialog(sessionId) {
2089
+ const state = this.sessions.get(sessionId);
2090
+ if (state) {
2091
+ state.isComplete = true;
2092
+ this.saveSession(sessionId, state);
2093
+ }
2094
+ this.emit('dialog:ended', sessionId);
2095
+ }
2096
+ /**
2097
+ * 删除对话
2098
+ */
2099
+ deleteDialog(sessionId) {
2100
+ this.sessions.delete(sessionId);
2101
+ try {
2102
+ const filePath = path.join(getPlannersDir(), `session-${sessionId}.json`);
2103
+ if (fs.existsSync(filePath)) {
2104
+ fs.unlinkSync(filePath);
2105
+ }
2106
+ }
2107
+ catch {
2108
+ // 忽略删除错误
2109
+ }
2110
+ this.emit('dialog:deleted', sessionId);
2111
+ }
2112
+ }
2113
+ // ============================================================================
2114
+ // 导出单例和工厂函数
2115
+ // ============================================================================
2116
+ /**
2117
+ * 默认智能规划器实例
2118
+ */
2119
+ export const smartPlanner = new SmartPlanner();
2120
+ /**
2121
+ * 创建自定义配置的智能规划器
2122
+ */
2123
+ export function createSmartPlanner(config) {
2124
+ return new SmartPlanner(config);
2125
+ }
2126
+ /**
2127
+ * 流式蓝图生成器
2128
+ *
2129
+ * 用于在 UI 中以 chat 模式流式渲染 AI 的思考和生成过程
2130
+ */
2131
+ export class StreamingBlueprintGenerator extends EventEmitter {
2132
+ planner;
2133
+ client;
2134
+ constructor(planner) {
2135
+ super();
2136
+ this.planner = planner;
2137
+ this.client = getDefaultClient();
2138
+ }
2139
+ /**
2140
+ * 流式生成蓝图
2141
+ *
2142
+ * @param state 完成的对话状态
2143
+ * @param projectPath 项目路径
2144
+ * @yields StreamingEvent 流式事件
2145
+ */
2146
+ async *generateBlueprintStreaming(state, projectPath) {
2147
+ console.log('[StreamingBlueprintGenerator] Starting streaming blueprint generation...');
2148
+ if (!state.isComplete) {
2149
+ console.log('[StreamingBlueprintGenerator] Error: dialog not completed');
2150
+ yield { type: 'error', error: 'Conversation not complete, cannot generate blueprint' };
2151
+ return;
2152
+ }
2153
+ // Step 1: 发送开始信号
2154
+ console.log('[StreamingBlueprintGenerator] Step 1: Sending start signal');
2155
+ yield { type: 'progress', step: 1, total: 5, message: '正在分析需求...' };
2156
+ yield { type: 'text', text: '🔍 **开始分析需求...**\n\n' };
2157
+ // 构建蓝图生成的提示词
2158
+ console.log('[StreamingBlueprintGenerator] Building prompt...');
2159
+ const prompt = this.buildBlueprintPrompt(state);
2160
+ console.log('[StreamingBlueprintGenerator] Prompt length:', prompt.length);
2161
+ // Step 2: 流式调用 AI
2162
+ console.log('[StreamingBlueprintGenerator] Step 2: Starting AI API call...');
2163
+ yield { type: 'progress', step: 2, total: 5, message: 'AI 正在设计项目结构...' };
2164
+ let fullResponse = '';
2165
+ let blueprintData = null;
2166
+ try {
2167
+ // 使用流式 API
2168
+ console.log('[StreamingBlueprintGenerator] Calling createMessageStream...');
2169
+ for await (const event of this.client.createMessageStream([{ role: 'user', content: prompt }], [], '你是一个专业的软件架构师。请根据用户的需求设计完整的项目蓝图。先用中文描述你的设计思路,然后输出 JSON 格式的蓝图数据。', { enableThinking: false })) {
2170
+ if (event.type === 'text' && event.text) {
2171
+ fullResponse += event.text;
2172
+ // 流式发送文本片段
2173
+ console.log('[StreamingBlueprintGenerator] Received AI text fragment, length:', event.text.length);
2174
+ yield { type: 'text', text: event.text };
2175
+ }
2176
+ else if (event.type === 'thinking' && event.thinking) {
2177
+ console.log('[StreamingBlueprintGenerator] Received AI thinking content');
2178
+ yield { type: 'thinking', thinking: event.thinking };
2179
+ }
2180
+ else if (event.type === 'error') {
2181
+ console.error('[StreamingBlueprintGenerator] AI returned error:', event.error);
2182
+ yield { type: 'error', error: event.error };
2183
+ return;
2184
+ }
2185
+ else if (event.type === 'stop') {
2186
+ console.log('[StreamingBlueprintGenerator] AI stream ended, reason:', event.stopReason);
2187
+ }
2188
+ }
2189
+ console.log('[StreamingBlueprintGenerator] AI response completed, total length:', fullResponse.length);
2190
+ // Step 3: 解析 JSON
2191
+ yield { type: 'progress', step: 3, total: 5, message: '正在构建蓝图结构...' };
2192
+ yield { type: 'text', text: '\n\n📋 **正在解析蓝图数据...**\n' };
2193
+ blueprintData = this.extractBlueprintFromResponse(fullResponse);
2194
+ if (!blueprintData) {
2195
+ yield { type: 'error', error: 'Unable to parse blueprint data from AI response' };
2196
+ return;
2197
+ }
2198
+ // Step 4: 构建蓝图对象
2199
+ yield { type: 'progress', step: 4, total: 5, message: '正在保存蓝图...' };
2200
+ yield { type: 'text', text: '💾 **正在保存蓝图...**\n' };
2201
+ const blueprint = this.buildBlueprint(blueprintData, state, projectPath);
2202
+ // 保存蓝图
2203
+ this.saveBlueprint(blueprint);
2204
+ // Step 5: 完成
2205
+ yield { type: 'progress', step: 5, total: 5, message: '蓝图生成完成!' };
2206
+ yield { type: 'text', text: `\n✅ **蓝图生成完成!**\n\n蓝图 ID: \`${blueprint.id}\`\n` };
2207
+ yield { type: 'complete', blueprint };
2208
+ }
2209
+ catch (error) {
2210
+ yield { type: 'error', error: error.message || 'Blueprint generation failed' };
2211
+ }
2212
+ }
2213
+ /**
2214
+ * 构建蓝图生成的提示词
2215
+ */
2216
+ buildBlueprintPrompt(state) {
2217
+ return `基于以下需求生成完整的项目蓝图:
2218
+
2219
+ 需求列表:
2220
+ ${state.collectedRequirements.map((r, i) => `${i + 1}. ${r}`).join('\n')}
2221
+
2222
+ 约束条件:
2223
+ ${state.collectedConstraints.length > 0 ? state.collectedConstraints.join('\n') : '无'}
2224
+
2225
+ 技术栈:
2226
+ ${JSON.stringify(state.techStack, null, 2)}
2227
+
2228
+ 请先用中文简要描述你的设计思路(2-3段),然后输出 JSON 格式的蓝图数据。
2229
+
2230
+ JSON 格式要求:
2231
+ \`\`\`json
2232
+ {
2233
+ "name": "项目名称",
2234
+ "description": "项目描述(2-3句话)",
2235
+ "version": "1.0.0",
2236
+ "businessProcesses": [
2237
+ {
2238
+ "id": "bp-1",
2239
+ "name": "业务流程名称",
2240
+ "description": "流程描述",
2241
+ "type": "to-be",
2242
+ "steps": [
2243
+ {
2244
+ "id": "step-1",
2245
+ "order": 1,
2246
+ "name": "步骤名称",
2247
+ "description": "步骤描述",
2248
+ "actor": "执行角色",
2249
+ "inputs": ["输入"],
2250
+ "outputs": ["输出"]
2251
+ }
2252
+ ],
2253
+ "actors": ["参与者列表"],
2254
+ "inputs": ["流程输入"],
2255
+ "outputs": ["流程输出"]
2256
+ }
2257
+ ],
2258
+ "modules": [
2259
+ {
2260
+ "id": "mod-1",
2261
+ "name": "模块名称",
2262
+ "description": "模块描述",
2263
+ "type": "frontend/backend/database/service/shared/other",
2264
+ "responsibilities": ["职责1", "职责2"],
2265
+ "techStack": ["React", "TypeScript"],
2266
+ "interfaces": [
2267
+ {
2268
+ "name": "接口名称",
2269
+ "type": "api/event/function/class",
2270
+ "description": "接口描述",
2271
+ "signature": "方法签名(可选)"
2272
+ }
2273
+ ],
2274
+ "dependencies": ["依赖的模块ID"],
2275
+ "rootPath": "src/modules/xxx",
2276
+ "source": "ai_generated",
2277
+ "files": ["涉及的文件路径"]
2278
+ }
2279
+ ],
2280
+ "nfrs": [
2281
+ {
2282
+ "id": "nfr-1",
2283
+ "category": "performance/security/reliability/scalability/maintainability/usability/other",
2284
+ "name": "需求名称",
2285
+ "description": "需求描述",
2286
+ "priority": "high/medium/low",
2287
+ "metrics": ["可量化指标"]
2288
+ }
2289
+ ]
2290
+ }
2291
+ \`\`\`
2292
+
2293
+ 注意:
2294
+ - 业务流程要清晰描述系统要做什么,每个步骤要有明确的输入输出
2295
+ - 模块划分要合理,每个模块有明确的职责边界和接口定义
2296
+ - 非功能需求要考虑性能、安全、可靠性等方面`;
2297
+ }
2298
+ /**
2299
+ * 从 AI 响应中提取蓝图数据
2300
+ */
2301
+ extractBlueprintFromResponse(response) {
2302
+ // 尝试匹配 ```json ... ``` 格式
2303
+ const jsonMatch = response.match(/```json\s*([\s\S]*?)```/);
2304
+ if (jsonMatch) {
2305
+ try {
2306
+ return JSON.parse(jsonMatch[1]);
2307
+ }
2308
+ catch (e) {
2309
+ console.error('[StreamingBlueprintGenerator] JSON parse failed (code block):', e);
2310
+ }
2311
+ }
2312
+ // 尝试直接匹配 JSON 对象
2313
+ const directMatch = response.match(/\{[\s\S]*\}/);
2314
+ if (directMatch) {
2315
+ try {
2316
+ return JSON.parse(directMatch[0]);
2317
+ }
2318
+ catch (e) {
2319
+ console.error('[StreamingBlueprintGenerator] JSON parse failed (direct match):', e);
2320
+ }
2321
+ }
2322
+ return null;
2323
+ }
2324
+ /**
2325
+ * 构建蓝图对象
2326
+ */
2327
+ buildBlueprint(data, state, projectPath) {
2328
+ return {
2329
+ id: uuidv4(),
2330
+ name: data.name || '新项目',
2331
+ description: data.description || '',
2332
+ version: data.version || '1.0.0',
2333
+ projectPath,
2334
+ status: 'confirmed',
2335
+ businessProcesses: (data.businessProcesses || []).map((bp) => ({
2336
+ id: bp.id || uuidv4(),
2337
+ name: bp.name || '',
2338
+ description: bp.description || '',
2339
+ type: bp.type || 'to-be',
2340
+ steps: (bp.steps || []).map((step) => ({
2341
+ id: step.id || uuidv4(),
2342
+ order: step.order || 0,
2343
+ name: step.name || '',
2344
+ description: step.description || '',
2345
+ actor: step.actor || '',
2346
+ inputs: step.inputs || [],
2347
+ outputs: step.outputs || [],
2348
+ })),
2349
+ actors: bp.actors || [],
2350
+ inputs: bp.inputs || [],
2351
+ outputs: bp.outputs || [],
2352
+ })),
2353
+ modules: (data.modules || []).map((m) => ({
2354
+ id: m.id || uuidv4(),
2355
+ name: m.name,
2356
+ description: m.description,
2357
+ type: m.type,
2358
+ responsibilities: m.responsibilities || [],
2359
+ techStack: m.techStack || [],
2360
+ interfaces: (m.interfaces || []).map((iface) => ({
2361
+ name: iface.name,
2362
+ type: iface.type,
2363
+ description: iface.description,
2364
+ signature: iface.signature,
2365
+ })),
2366
+ dependencies: m.dependencies || [],
2367
+ rootPath: m.rootPath || '',
2368
+ source: m.source || 'ai_generated',
2369
+ files: m.files || [],
2370
+ })),
2371
+ nfrs: (data.nfrs || []).map((nfr) => ({
2372
+ id: nfr.id || uuidv4(),
2373
+ category: nfr.category || 'other',
2374
+ name: nfr.name || '',
2375
+ description: nfr.description || '',
2376
+ priority: nfr.priority || 'medium',
2377
+ metrics: nfr.metrics || [],
2378
+ })),
2379
+ requirements: state.collectedRequirements,
2380
+ techStack: state.techStack,
2381
+ constraints: state.collectedConstraints,
2382
+ designImages: state.designImages || [],
2383
+ createdAt: new Date(),
2384
+ updatedAt: new Date(),
2385
+ confirmedAt: new Date(),
2386
+ };
2387
+ }
2388
+ /**
2389
+ * 保存蓝图
2390
+ */
2391
+ saveBlueprint(blueprint) {
2392
+ try {
2393
+ const dir = path.join(blueprint.projectPath, '.blueprint');
2394
+ if (!fs.existsSync(dir)) {
2395
+ fs.mkdirSync(dir, { recursive: true });
2396
+ }
2397
+ const filePath = path.join(dir, `${blueprint.id}.json`);
2398
+ const toISO = (d) => {
2399
+ if (!d)
2400
+ return undefined;
2401
+ return d instanceof Date ? d.toISOString() : d;
2402
+ };
2403
+ // 处理 designImages:只保存 filePath,不保存 imageData(base64 太大)
2404
+ let designImages = blueprint.designImages;
2405
+ if (designImages && Array.isArray(designImages)) {
2406
+ designImages = designImages.map(img => {
2407
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2408
+ const { imageData, ...rest } = img;
2409
+ return rest;
2410
+ });
2411
+ }
2412
+ const data = {
2413
+ ...blueprint,
2414
+ designImages,
2415
+ createdAt: toISO(blueprint.createdAt),
2416
+ updatedAt: toISO(blueprint.updatedAt),
2417
+ confirmedAt: toISO(blueprint.confirmedAt),
2418
+ };
2419
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
2420
+ }
2421
+ catch (error) {
2422
+ console.error('[StreamingBlueprintGenerator] Failed to save blueprint:', error);
2423
+ }
2424
+ }
2425
+ }
2426
+ //# sourceMappingURL=smart-planner.js.map