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,1930 @@
1
+ /**
2
+ * Claude API 客户端
3
+ * 处理与 Anthropic API 的通信
4
+ * 支持重试逻辑、token 计数、模型回退、Extended Thinking
5
+ */
6
+ import Anthropic from '@anthropic-ai/sdk';
7
+ import { createProxyAgent } from '../network/index.js';
8
+ import { modelConfig, modelFallback, modelStats, thinkingManager, } from '../models/index.js';
9
+ import { initAuth, getAuth, refreshTokenAsync } from '../auth/index.js';
10
+ import { v4 as uuidv4 } from 'uuid';
11
+ import { VERSION_BASE } from '../version.js';
12
+ import { randomBytes } from 'crypto';
13
+ import { isPenguinEnabled, shouldActivateFastMode, FAST_MODE_BETA, FAST_MODE_RESEARCH_PREVIEW, } from '../fast-mode/index.js';
14
+ // 模型价格 (per 1M tokens)
15
+ const MODEL_PRICING = {
16
+ 'claude-opus-4-6': { input: 15, output: 75 }, // Claude 4.6 (最新)
17
+ 'claude-opus-4-5-20251101': { input: 15, output: 75 },
18
+ 'claude-opus-4-20250514': { input: 15, output: 75 },
19
+ 'claude-sonnet-4-5-20250929': { input: 3, output: 15 },
20
+ 'claude-sonnet-4-20250514': { input: 3, output: 15 },
21
+ 'claude-haiku-4-5-20251001': { input: 0.8, output: 4 },
22
+ 'claude-haiku-3-5-20241022': { input: 0.8, output: 4 },
23
+ 'claude-3-5-sonnet-20241022': { input: 3, output: 15 },
24
+ 'claude-3-5-haiku-20241022': { input: 0.8, output: 4 },
25
+ };
26
+ // 可重试的错误类型
27
+ const RETRYABLE_ERRORS = [
28
+ 'overloaded_error',
29
+ 'rate_limit_error',
30
+ 'api_error',
31
+ 'timeout',
32
+ 'ECONNRESET',
33
+ 'ETIMEDOUT',
34
+ 'ENOTFOUND',
35
+ 'ECONNREFUSED',
36
+ 'Connection error',
37
+ 'connection error',
38
+ 'network error',
39
+ 'fetch failed',
40
+ 'Request timed out',
41
+ 'timed out',
42
+ ];
43
+ // ============================================================================
44
+ // 对标官方 CLI Ww6: 重试常量(与官方 V39/T39/N39 等一致)
45
+ // ============================================================================
46
+ const DEFAULT_MAX_RETRIES = 10; // 官方 V39 = 10
47
+ const DEFAULT_RETRY_BASE_DELAY = 500; // 官方 T39 = 500ms
48
+ const MAX_RETRY_DELAY = 32000; // 官方 min(..., 32000)
49
+ const JITTER_FACTOR = 0.25; // 官方 random() * 0.25 * baseDelay
50
+ const OVERLOADED_FALLBACK_THRESHOLD = 3; // 官方 N39 = 3, 连续 529 次数触发 fallback
51
+ const FAST_RETRY_AFTER_THRESHOLD = 20000; // 官方 y39 = 20000ms, 429 retry-after < 此值直接等
52
+ const MIN_OUTPUT_TOKENS = 3000; // 官方 wO8 = 3000, context overflow 时最小输出
53
+ /**
54
+ * 对标官方 $p 函数: 计算带 jitter 的指数退避延迟
55
+ */
56
+ function calculateRetryDelay(attempt, retryAfterHeader) {
57
+ // 优先使用服务端 retry-after header
58
+ if (retryAfterHeader) {
59
+ const seconds = parseInt(retryAfterHeader, 10);
60
+ if (!isNaN(seconds)) {
61
+ return seconds * 1000;
62
+ }
63
+ }
64
+ // 指数退避 + 25% jitter
65
+ const baseDelay = Math.min(DEFAULT_RETRY_BASE_DELAY * Math.pow(2, attempt - 1), MAX_RETRY_DELAY);
66
+ const jitter = Math.random() * JITTER_FACTOR * baseDelay;
67
+ return baseDelay + jitter;
68
+ }
69
+ /**
70
+ * 对标官方 fE7 函数: 从 400 错误中解析 context overflow 信息
71
+ * 错误格式: "input length and `max_tokens` exceed context limit: {input} + {maxTokens} > {contextLimit}"
72
+ */
73
+ function parseContextOverflowError(error) {
74
+ if (error.status !== 400 || !error.message)
75
+ return null;
76
+ if (!error.message.includes('input length and `max_tokens` exceed context limit'))
77
+ return null;
78
+ const match = error.message.match(/input length and `max_tokens` exceed context limit: (\d+) \+ (\d+) > (\d+)/);
79
+ if (!match || match.length !== 4)
80
+ return null;
81
+ const inputTokens = parseInt(match[1], 10);
82
+ const maxTokens = parseInt(match[2], 10);
83
+ const contextLimit = parseInt(match[3], 10);
84
+ if (isNaN(inputTokens) || isNaN(maxTokens) || isNaN(contextLimit))
85
+ return null;
86
+ return { inputTokens, maxTokens, contextLimit };
87
+ }
88
+ /**
89
+ * 对标官方 GE7 函数: 检测 529 overloaded 错误
90
+ */
91
+ function isOverloadedError(error) {
92
+ if (error.status === 529)
93
+ return true;
94
+ return error.message?.includes('"type":"overloaded_error"') ?? false;
95
+ }
96
+ /**
97
+ * 获取 retry-after header(兼容不同的 header 格式)
98
+ */
99
+ function getRetryAfterHeader(error) {
100
+ return error.headers?.get?.('retry-after') ?? error.headers?.['retry-after'] ?? null;
101
+ }
102
+ /**
103
+ * 获取 overage rejection header(fast mode 降级检查)
104
+ */
105
+ function getOverageDisabledReason(error) {
106
+ return error.headers?.get?.('anthropic-ratelimit-unified-overage-disabled-reason')
107
+ ?? error.headers?.['anthropic-ratelimit-unified-overage-disabled-reason']
108
+ ?? null;
109
+ }
110
+ /**
111
+ * 检查 HTTP 状态码是否可重试(对标官方 k39)
112
+ */
113
+ function isRetryableStatus(error) {
114
+ const status = error.status || error.statusCode;
115
+ // 429 rate limit, 500+ server errors, overloaded
116
+ if (status === 429 || status === 529)
117
+ return true;
118
+ if (status >= 500)
119
+ return true;
120
+ // 检查 x-should-retry header
121
+ const shouldRetry = error.headers?.get?.('x-should-retry') ?? error.headers?.['x-should-retry'];
122
+ if (shouldRetry === 'true')
123
+ return true;
124
+ if (shouldRetry === 'false')
125
+ return false;
126
+ // overloaded in message
127
+ if (error.message?.includes('"type":"overloaded_error"'))
128
+ return true;
129
+ // context overflow 可重试(会自动调整 max_tokens)
130
+ if (parseContextOverflowError(error))
131
+ return true;
132
+ return false;
133
+ }
134
+ /** FallbackTriggeredError: 对标官方 Pw6 */
135
+ class FallbackTriggeredError extends Error {
136
+ originalModel;
137
+ fallbackModel;
138
+ constructor(originalModel, fallbackModel) {
139
+ super(`Model fallback triggered: ${originalModel} -> ${fallbackModel}`);
140
+ this.name = 'FallbackTriggeredError';
141
+ this.originalModel = originalModel;
142
+ this.fallbackModel = fallbackModel;
143
+ }
144
+ }
145
+ // Axon 的 beta 头 (v2.1.29 对齐官方)
146
+ // 重要发现:claude-code-20250219 beta 需要与特定的 system prompt 配合使用
147
+ // system prompt 的第一个 block 必须以下列字符串之一开头:
148
+ // - "You are Axon, an AI-powered coding assistant."
149
+ // - "You are a Claude agent, built on Anthropic's Claude Agent SDK."
150
+ const AXON_BETA = 'claude-code-20250219'; // tFA
151
+ const OAUTH_BETA = 'oauth-2025-04-20'; // zE
152
+ const THINKING_BETA = 'interleaved-thinking-2025-05-14'; // eFA
153
+ const CONTEXT_1M_BETA = 'context-1m-2025-08-07'; // xZ1
154
+ const CONTEXT_MANAGEMENT_BETA = 'context-management-2025-06-27'; // md1
155
+ const STRUCTURED_OUTPUTS_BETA = 'structured-outputs-2025-12-15'; // ad
156
+ const WEB_SEARCH_BETA = 'web-search-2025-03-05'; // sV6
157
+ const TOOL_EXAMPLES_BETA = 'tool-examples-2025-10-29'; // Fd1
158
+ const ADVANCED_TOOL_USE_BETA = 'advanced-tool-use-2025-11-20'; // AgA
159
+ const TOOL_SEARCH_BETA = 'tool-search-tool-2025-10-19'; // qgA
160
+ const PROMPT_CACHING_SCOPE_BETA = 'prompt-caching-scope-2026-01-05'; // bZ1
161
+ const ADAPTIVE_THINKING_BETA = 'adaptive-thinking-2026-01-28'; // tl8
162
+ // v2.1.29: Bedrock 和 Vertex 不支持的 betas (对应官方 eV6 集合)
163
+ // 这些 betas 会导致网关用户出现 beta header 验证错误
164
+ const UNSUPPORTED_GATEWAY_BETAS = new Set([
165
+ 'interleaved-thinking-2025-05-14',
166
+ 'context-1m-2025-08-07',
167
+ 'tool-search-tool-2025-10-19',
168
+ 'tool-examples-2025-10-29',
169
+ ]);
170
+ /**
171
+ * 获取当前 Provider 类型 (对应官方 F4 函数)
172
+ * 从 settings.json 配置读取,不再依赖环境变量
173
+ */
174
+ function getProviderType() {
175
+ try {
176
+ const { configManager } = require('../config/index.js');
177
+ const config = configManager.getAll();
178
+ if (config.apiProvider === 'bedrock' || config.useBedrock)
179
+ return 'bedrock';
180
+ if (config.apiProvider === 'vertex' || config.useVertex)
181
+ return 'vertex';
182
+ }
183
+ catch { }
184
+ if (process.env.AXON_USE_FOUNDRY === 'true' || process.env.AXON_USE_FOUNDRY === '1') {
185
+ return 'foundry';
186
+ }
187
+ return 'firstParty';
188
+ }
189
+ /**
190
+ * v2.1.31: 检查是否为第三方 provider(Bedrock、Vertex、Foundry)
191
+ * 用于在模型选择器中隐藏 Anthropic API 定价信息
192
+ */
193
+ export function isThirdPartyProvider() {
194
+ const provider = getProviderType();
195
+ return provider !== 'firstParty';
196
+ }
197
+ /**
198
+ * 检查环境变量是否被设置为 true/1
199
+ */
200
+ function isEnvEnabled(value) {
201
+ return value === 'true' || value === '1';
202
+ }
203
+ /**
204
+ * v2.1.29: 检查是否应该启用实验性 betas (对应官方 lr1 函数)
205
+ *
206
+ * 只有以下情况才启用实验性 betas:
207
+ * 1. Provider 是 firstParty 或 foundry
208
+ * 2. 且未设置 AXON_DISABLE_EXPERIMENTAL_BETAS=1
209
+ *
210
+ * 这是 v2.1.29 修复 beta header 验证错误的关键:
211
+ * Bedrock 和 Vertex 网关用户不会获得实验性 betas
212
+ */
213
+ function isExperimentalBetasEnabled() {
214
+ const provider = getProviderType();
215
+ if (provider !== 'firstParty' && provider !== 'foundry') {
216
+ return false;
217
+ }
218
+ return !isEnvEnabled(process.env.AXON_DISABLE_EXPERIMENTAL_BETAS);
219
+ }
220
+ /**
221
+ * v2.1.29: 检查模型是否支持 structured outputs (对应官方 zu6 函数)
222
+ *
223
+ * 只有 firstParty 或 foundry provider 且使用支持的模型才返回 true
224
+ */
225
+ function supportsStructuredOutputs(model) {
226
+ const provider = getProviderType();
227
+ if (provider !== 'firstParty' && provider !== 'foundry') {
228
+ return false;
229
+ }
230
+ return model.includes('claude-sonnet-4-5') ||
231
+ model.includes('claude-opus-4-1') ||
232
+ model.includes('claude-opus-4-5') ||
233
+ model.includes('claude-haiku-4-5');
234
+ }
235
+ /**
236
+ * v2.1.41: 检查模型是否支持 interleaved thinking (对应官方 G15 函数)
237
+ * 注意:haiku 不支持 interleaved thinking(官方 2.1.41 确认)
238
+ */
239
+ function supportsInterleavedThinking(model) {
240
+ const providerType = getProviderType();
241
+ if (providerType === 'foundry')
242
+ return true;
243
+ if (providerType === 'firstParty')
244
+ return !model.includes('claude-3-');
245
+ return model.includes('claude-opus-4') ||
246
+ model.includes('claude-sonnet-4');
247
+ }
248
+ /**
249
+ * v2.1.41: 检查模型是否支持 adaptive thinking (对应官方 h76 函数)
250
+ * 仅 opus-4-6 支持,优先级高于 interleaved thinking
251
+ */
252
+ function supportsAdaptiveThinking(model) {
253
+ return model.toLowerCase().includes('opus-4-6');
254
+ }
255
+ /**
256
+ * v2.1.29: 检查模型是否支持 web search (对应官方 DOK 函数)
257
+ */
258
+ function supportsWebSearch(model) {
259
+ return model.includes('claude-sonnet-4') ||
260
+ model.includes('claude-opus-4') ||
261
+ model.includes('claude-haiku-4');
262
+ }
263
+ // 官方 magic string,Anthropic subscription 服务器会校验此字段
264
+ // 必须与官方保持一致,不能使用品牌重命名后的字符串
265
+ const AXON_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
266
+ const AXON_AGENT_SDK_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude, running within the Claude Agent SDK.";
267
+ const AXON_AGENT_IDENTITY = "You are a Claude agent, built on Anthropic's Claude Agent SDK.";
268
+ /**
269
+ * 检查 system prompt 是否包含有效的 Axon 身份标识
270
+ */
271
+ function hasValidIdentity(systemPrompt) {
272
+ if (!systemPrompt)
273
+ return false;
274
+ if (typeof systemPrompt === 'string') {
275
+ return systemPrompt.startsWith(AXON_IDENTITY) ||
276
+ systemPrompt.startsWith(AXON_AGENT_SDK_IDENTITY) ||
277
+ systemPrompt.startsWith(AXON_AGENT_IDENTITY);
278
+ }
279
+ if (Array.isArray(systemPrompt) && systemPrompt.length > 0) {
280
+ const firstBlock = systemPrompt[0];
281
+ if (firstBlock?.type === 'text' && firstBlock?.text) {
282
+ return firstBlock.text.startsWith(AXON_IDENTITY) ||
283
+ firstBlock.text.startsWith(AXON_AGENT_SDK_IDENTITY) ||
284
+ firstBlock.text.startsWith(AXON_AGENT_IDENTITY);
285
+ }
286
+ }
287
+ return false;
288
+ }
289
+ /**
290
+ * 对齐官方 HJq 函数:检查是否应为当前模型启用 prompt caching
291
+ *
292
+ * 官方支持 DISABLE_PROMPT_CACHING 系列 env var,按型号粒度控制:
293
+ * - DISABLE_PROMPT_CACHING - 禁用所有型号
294
+ * - DISABLE_PROMPT_CACHING_HAIKU - 仅禁用 Haiku
295
+ * - DISABLE_PROMPT_CACHING_SONNET - 仅禁用 Sonnet
296
+ * - DISABLE_PROMPT_CACHING_OPUS - 仅禁用 Opus
297
+ */
298
+ export function isPromptCachingEnabled(model) {
299
+ if (process.env.DISABLE_PROMPT_CACHING)
300
+ return false;
301
+ if (process.env.DISABLE_PROMPT_CACHING_HAIKU && model.includes('haiku'))
302
+ return false;
303
+ if (process.env.DISABLE_PROMPT_CACHING_SONNET && model.includes('sonnet'))
304
+ return false;
305
+ if (process.env.DISABLE_PROMPT_CACHING_OPUS && model.includes('opus'))
306
+ return false;
307
+ return true;
308
+ }
309
+ /**
310
+ * 构建 cache_control 对象(对齐官方 Pc1 函数)
311
+ *
312
+ * 官方逻辑:
313
+ * - type: "ephemeral" — 始终设置
314
+ * - ttl: "1h" — 官方需额外满足 OAuth+未超额+allowlist(我们无法检查,故不加)
315
+ * - scope: "global" — 仅当 cacheScope === "global" 时设置,扩大缓存范围到同组织级别
316
+ */
317
+ export function buildCacheControl(cacheScope) {
318
+ return {
319
+ type: 'ephemeral',
320
+ ...(cacheScope === 'global' ? { scope: 'global' } : {}),
321
+ };
322
+ }
323
+ /**
324
+ * v6.1: 对齐官方 h2z + wI8 函数
325
+ *
326
+ * @param skipGlobalCacheForSystemPrompt - 对齐官方 P 变量:
327
+ * - "none": 正常缓存(static blocks 用 "global" scope)
328
+ * - "system_prompt": 有 MCP/ToolSearch 时,所有 blocks 退回 "org" scope,
329
+ * 避免 MCP 工具变化频繁导致全局缓存失效
330
+ */
331
+ export function formatSystemPrompt(systemPrompt, isOAuth, promptBlocks, enableCaching, skipGlobalCacheForSystemPrompt = 'none') {
332
+ // 没有 system prompt 时
333
+ if (!systemPrompt) {
334
+ if (isOAuth) {
335
+ return [
336
+ { type: 'text', text: AXON_IDENTITY, ...(enableCaching !== false ? { cache_control: { type: 'ephemeral' } } : {}) }
337
+ ];
338
+ }
339
+ return undefined;
340
+ }
341
+ /**
342
+ * 对齐官方 wI8:根据 skipGlobalCacheForSystemPrompt 决定 blocks 的 cacheScope
343
+ * - skipGlobalCacheForSystemPrompt="system_prompt": 所有非 identity blocks → "org"(降级,不用 global)
344
+ * - skipGlobalCacheForSystemPrompt="none": 保留原始 cacheScope(global/org/null)
345
+ */
346
+ const resolveScope = (originalScope) => {
347
+ if (originalScope === null)
348
+ return null;
349
+ if (skipGlobalCacheForSystemPrompt === 'system_prompt')
350
+ return 'org';
351
+ return originalScope;
352
+ };
353
+ // v6.0: 使用 PromptBlock 分块缓存(对齐官方 CG1 分割逻辑)
354
+ if (promptBlocks && promptBlocks.length > 0) {
355
+ const apiBlocks = [];
356
+ // 对齐官方 wI8 函数中 skipGlobalCacheForSystemPrompt 路径:
357
+ // 当 skipGlobalCacheForSystemPrompt="system_prompt" 时,identity 用 null, 其他用 "org"
358
+ // 当 skipGlobalCacheForSystemPrompt="none" 时,identity 用 null, static 用 "global", dynamic 用 null
359
+ if (isOAuth && promptBlocks.length > 0) {
360
+ const firstBlock = promptBlocks[0];
361
+ let identityToExtract = null;
362
+ if (firstBlock.text.startsWith(AXON_IDENTITY)) {
363
+ identityToExtract = AXON_IDENTITY;
364
+ }
365
+ else if (firstBlock.text.startsWith(AXON_AGENT_SDK_IDENTITY)) {
366
+ identityToExtract = AXON_AGENT_SDK_IDENTITY;
367
+ }
368
+ else if (firstBlock.text.startsWith(AXON_AGENT_IDENTITY)) {
369
+ identityToExtract = AXON_AGENT_IDENTITY;
370
+ }
371
+ if (identityToExtract) {
372
+ // 官方 wI8: identity block → cacheScope: null(不缓存)
373
+ apiBlocks.push({ type: 'text', text: identityToExtract });
374
+ // 剩余文本继承 resolveScope 后的 cacheScope
375
+ const remainingText = firstBlock.text.slice(identityToExtract.length).trimStart();
376
+ if (remainingText) {
377
+ const scope = resolveScope(firstBlock.cacheScope);
378
+ apiBlocks.push({
379
+ type: 'text',
380
+ text: remainingText,
381
+ ...(enableCaching !== false && scope !== null ? { cache_control: buildCacheControl(scope) } : {}),
382
+ });
383
+ }
384
+ for (let i = 1; i < promptBlocks.length; i++) {
385
+ const block = promptBlocks[i];
386
+ if (!block.text)
387
+ continue;
388
+ const scope = resolveScope(block.cacheScope);
389
+ apiBlocks.push({
390
+ type: 'text',
391
+ text: block.text,
392
+ ...(enableCaching !== false && scope !== null ? { cache_control: buildCacheControl(scope) } : {}),
393
+ });
394
+ }
395
+ return apiBlocks.length > 0 ? apiBlocks : undefined;
396
+ }
397
+ }
398
+ for (const block of promptBlocks) {
399
+ if (!block.text)
400
+ continue;
401
+ const scope = resolveScope(block.cacheScope);
402
+ apiBlocks.push({
403
+ type: 'text',
404
+ text: block.text,
405
+ ...(enableCaching !== false && scope !== null ? { cache_control: buildCacheControl(scope) } : {}),
406
+ });
407
+ }
408
+ return apiBlocks.length > 0 ? apiBlocks : undefined;
409
+ }
410
+ // 兼容旧路径:单字符串模式
411
+ if (!isOAuth) {
412
+ return [
413
+ { type: 'text', text: systemPrompt, ...(enableCaching !== false ? { cache_control: { type: 'ephemeral' } } : {}) }
414
+ ];
415
+ }
416
+ // OAuth 模式需要身份标识作为第一个 block
417
+ let identityToUse = AXON_IDENTITY;
418
+ let remainingText = '';
419
+ if (systemPrompt.startsWith(AXON_IDENTITY)) {
420
+ identityToUse = AXON_IDENTITY;
421
+ remainingText = systemPrompt.slice(AXON_IDENTITY.length).trim();
422
+ }
423
+ else if (systemPrompt.startsWith(AXON_AGENT_SDK_IDENTITY)) {
424
+ identityToUse = AXON_AGENT_SDK_IDENTITY;
425
+ remainingText = systemPrompt.slice(AXON_AGENT_SDK_IDENTITY.length).trim();
426
+ }
427
+ else if (systemPrompt.startsWith(AXON_AGENT_IDENTITY)) {
428
+ identityToUse = AXON_AGENT_IDENTITY;
429
+ remainingText = systemPrompt.slice(AXON_AGENT_IDENTITY.length).trim();
430
+ }
431
+ else {
432
+ const cc = enableCaching !== false ? { cache_control: { type: 'ephemeral' } } : {};
433
+ return [
434
+ { type: 'text', text: AXON_IDENTITY },
435
+ { type: 'text', text: systemPrompt, ...cc }
436
+ ];
437
+ }
438
+ const cc = enableCaching !== false ? { cache_control: { type: 'ephemeral' } } : {};
439
+ const blocks = [
440
+ { type: 'text', text: identityToUse }
441
+ ];
442
+ if (remainingText.length > 0) {
443
+ blocks.push({ type: 'text', text: remainingText, ...cc });
444
+ }
445
+ return blocks;
446
+ }
447
+ /**
448
+ * v5.0: 格式化消息以启用 Prompt Caching
449
+ *
450
+ * 官方实现:为每条消息的最后一个 content block 添加 cache_control
451
+ * 这样历史消息可以被缓存,在多轮对话中节省 token
452
+ *
453
+ * 注意:thinking 和 redacted_thinking 类型的 block 不添加缓存控制
454
+ */
455
+ /**
456
+ * 清理字符串中的孤立 UTF-16 代理字符(lone surrogates)
457
+ *
458
+ * JSON 规范要求 surrogate pairs 必须成对出现(高代理 \uD800-\uDBFF 后跟低代理 \uDC00-\uDFFF)。
459
+ * 如果字符串中包含孤立的代理字符,JSON.stringify 会保留它们,但 API 端解析时会报错:
460
+ * "not valid JSON: no low surrogate in string"
461
+ *
462
+ * 常见来源:Bash 输出包含二进制数据、损坏的文件内容、截断的 UTF-16 字符串。
463
+ */
464
+ function sanitizeSurrogates(str) {
465
+ // 匹配孤立的高代理(后面没有低代理)或孤立的低代理(前面没有高代理)
466
+ // eslint-disable-next-line no-control-regex
467
+ return str.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, '\uFFFD');
468
+ }
469
+ /**
470
+ * 递归清理消息内容中的孤立代理字符
471
+ */
472
+ function sanitizeContent(content) {
473
+ if (typeof content === 'string') {
474
+ return sanitizeSurrogates(content);
475
+ }
476
+ if (Array.isArray(content)) {
477
+ return content.map(sanitizeContent);
478
+ }
479
+ if (content && typeof content === 'object') {
480
+ const result = {};
481
+ for (const key of Object.keys(content)) {
482
+ result[key] = sanitizeContent(content[key]);
483
+ }
484
+ return result;
485
+ }
486
+ return content;
487
+ }
488
+ /**
489
+ * 对齐官方 S2z / R2z / y2z 函数:
490
+ * - 官方 z > A.length-3 → 最后 2 条消息的最后一个 block 添加 cache_control
491
+ * - enableCaching=false 时完全跳过(对齐 HJq 的 enablePromptCaching 控制)
492
+ * - querySource 传递给 Pc1 用于 ttl 判断(我们简化为不加 ttl,但保持接口对齐)
493
+ */
494
+ export function formatMessages(messages, enableThinking, enableCaching, querySource) {
495
+ // 构建 cache_control 对象(对齐官方 Pc1)
496
+ const cacheControl = {
497
+ type: 'ephemeral',
498
+ };
499
+ const formatted = messages.map((m, msgIndex) => {
500
+ // 官方 z > A.length-3 → 最后 2 条消息(索引 >= length-2)
501
+ const isRecentMessage = msgIndex >= messages.length - 2;
502
+ // 如果 content 是字符串,转换为数组格式并添加缓存控制
503
+ if (typeof m.content === 'string') {
504
+ return {
505
+ role: m.role,
506
+ content: [{
507
+ type: 'text',
508
+ text: m.content,
509
+ ...(isRecentMessage && enableCaching !== false ? { cache_control: cacheControl } : {}),
510
+ }],
511
+ };
512
+ }
513
+ // 如果 content 是数组,为最后一个非 thinking block 添加缓存控制
514
+ if (Array.isArray(m.content) && m.content.length > 0) {
515
+ // v2.1.30: 当 thinking 未启用时,从历史消息中移除 thinking blocks
516
+ // 防止 /login 切换 API key 后发送 thinking blocks 导致 400 错误
517
+ let filteredContent = m.content;
518
+ if (!enableThinking) {
519
+ filteredContent = m.content.filter((block) => block.type !== 'thinking' && block.type !== 'redacted_thinking');
520
+ // 如果过滤后为空,添加占位文本
521
+ if (filteredContent.length === 0) {
522
+ filteredContent = [{ type: 'text', text: '(no content)' }];
523
+ }
524
+ }
525
+ const content = filteredContent.map((block, blockIndex) => {
526
+ const isLastBlock = blockIndex === filteredContent.length - 1;
527
+ // 跳过 thinking 类型的 block(官方 y2z 逻辑)
528
+ const isThinkingBlock = block.type === 'thinking' || block.type === 'redacted_thinking';
529
+ if (isRecentMessage && isLastBlock && !isThinkingBlock && enableCaching !== false) {
530
+ return { ...block, cache_control: cacheControl };
531
+ }
532
+ return block;
533
+ });
534
+ return { role: m.role, content };
535
+ }
536
+ return { role: m.role, content: m.content };
537
+ });
538
+ return sanitizeContent(formatted);
539
+ }
540
+ // ─── 缓存破裂追踪系统(对齐官方 xR7/bR7/kB)───────────────────────────────
541
+ // 官方常量:最多追踪10个 source、最小 token 差阈值 2000、5分钟/1小时时间窗口
542
+ const CACHE_BREAK_MAX_SOURCES = 10;
543
+ const CACHE_BREAK_MIN_TOKEN_DROP = 2000;
544
+ export const cacheBreakMap = new Map();
545
+ /** 对齐官方 IR7:简单 djb2-like 整数哈希 */
546
+ export function hashContent(content) {
547
+ const str = JSON.stringify(content);
548
+ let hash = 0;
549
+ for (let i = 0; i < str.length; i++) {
550
+ hash = (hash << 5) - hash + str.charCodeAt(i) | 0;
551
+ }
552
+ return hash;
553
+ }
554
+ /** 对齐官方 hR7:计算哈希前剥离 cache_control 字段,避免其变化误判内容变化 */
555
+ export function stripCacheControlFields(items) {
556
+ return items.map((item) => {
557
+ if (!('cache_control' in item))
558
+ return item;
559
+ const { cache_control: _, ...rest } = item;
560
+ return rest;
561
+ });
562
+ }
563
+ /** 计算 system blocks 的总字符数(对齐官方 cY9) */
564
+ export function getSystemCharCount(systemBlocks) {
565
+ let count = 0;
566
+ for (const block of systemBlocks)
567
+ count += (block.text || '').length;
568
+ return count;
569
+ }
570
+ /**
571
+ * 追踪每次 API 调用前的状态(对齐官方 xR7)
572
+ * 比较 system/tools 哈希,记录变化原因,为后续 cache break 报告提供上下文
573
+ */
574
+ export function trackCacheState(systemBlocks, tools, model, querySource, fastMode) {
575
+ try {
576
+ const strippedSystem = stripCacheControlFields(systemBlocks);
577
+ const strippedTools = stripCacheControlFields(tools);
578
+ const systemHash = hashContent(strippedSystem);
579
+ const toolsHash = hashContent(strippedTools);
580
+ const toolNames = tools.map((t) => ('name' in t ? t.name : 'unknown'));
581
+ const systemCharCount = getSystemCharCount(systemBlocks);
582
+ const existing = cacheBreakMap.get(querySource);
583
+ if (!existing) {
584
+ // 容量满时驱逐最旧的 source
585
+ while (cacheBreakMap.size >= CACHE_BREAK_MAX_SOURCES) {
586
+ const firstKey = cacheBreakMap.keys().next().value;
587
+ if (firstKey !== undefined)
588
+ cacheBreakMap.delete(firstKey);
589
+ }
590
+ cacheBreakMap.set(querySource, {
591
+ systemHash, toolsHash, toolNames, systemCharCount,
592
+ model, fastMode, callCount: 1,
593
+ pendingChanges: null, prevCacheReadTokens: null, microcompacted: false,
594
+ });
595
+ return;
596
+ }
597
+ existing.callCount++;
598
+ const systemChanged = systemHash !== existing.systemHash;
599
+ const toolsChanged = toolsHash !== existing.toolsHash;
600
+ const modelChanged = model !== existing.model;
601
+ const fastModeChanged = fastMode !== existing.fastMode;
602
+ if (systemChanged || toolsChanged || modelChanged || fastModeChanged) {
603
+ const prevToolSet = new Set(existing.toolNames);
604
+ const newToolSet = new Set(toolNames);
605
+ existing.pendingChanges = {
606
+ systemPromptChanged: systemChanged,
607
+ toolSchemasChanged: toolsChanged,
608
+ modelChanged,
609
+ fastModeChanged,
610
+ addedToolCount: toolNames.filter((n) => !prevToolSet.has(n)).length,
611
+ removedToolCount: existing.toolNames.filter((n) => !newToolSet.has(n)).length,
612
+ systemCharDelta: systemCharCount - existing.systemCharCount,
613
+ previousModel: existing.model,
614
+ newModel: model,
615
+ };
616
+ }
617
+ else {
618
+ existing.pendingChanges = null;
619
+ }
620
+ existing.systemHash = systemHash;
621
+ existing.toolsHash = toolsHash;
622
+ existing.toolNames = toolNames;
623
+ existing.systemCharCount = systemCharCount;
624
+ existing.model = model;
625
+ existing.fastMode = fastMode;
626
+ }
627
+ catch {
628
+ // 追踪失败不影响主流程
629
+ }
630
+ }
631
+ /**
632
+ * 报告缓存命中率下降(对齐官方 bR7)
633
+ * 当 cacheReadTokens < prevCacheReadTokens * 0.95 且差值 > 2000 时输出警告
634
+ */
635
+ export function reportCacheBreak(querySource, cacheReadTokens, cacheCreationTokens, debug) {
636
+ const state = cacheBreakMap.get(querySource);
637
+ if (!state)
638
+ return;
639
+ // haiku 缓存行为特殊,官方跳过 haiku 的 cache break 报告
640
+ if (state.model.includes('haiku'))
641
+ return;
642
+ const prevCacheRead = state.prevCacheReadTokens;
643
+ state.prevCacheReadTokens = cacheReadTokens;
644
+ if (prevCacheRead === null)
645
+ return;
646
+ const drop = prevCacheRead - cacheReadTokens;
647
+ // 命中率未显著下降 → 清空 pendingChanges,正常缓存
648
+ if (cacheReadTokens >= prevCacheRead * 0.95 || drop < CACHE_BREAK_MIN_TOKEN_DROP) {
649
+ state.pendingChanges = null;
650
+ state.microcompacted = false;
651
+ return;
652
+ }
653
+ // 收集 cache break 原因
654
+ const reasons = [];
655
+ if (state.microcompacted) {
656
+ reasons.push('microcompact');
657
+ state.microcompacted = false;
658
+ }
659
+ const changes = state.pendingChanges;
660
+ if (changes) {
661
+ if (changes.modelChanged) {
662
+ reasons.push(`model changed (${changes.previousModel} → ${changes.newModel})`);
663
+ }
664
+ if (changes.systemPromptChanged) {
665
+ const delta = changes.systemCharDelta;
666
+ const suffix = delta === 0 ? '' : delta > 0 ? ` (+${delta} chars)` : ` (${delta} chars)`;
667
+ reasons.push(`system prompt changed${suffix}`);
668
+ }
669
+ if (changes.toolSchemasChanged) {
670
+ const hasCounts = changes.addedToolCount > 0 || changes.removedToolCount > 0;
671
+ const suffix = hasCounts
672
+ ? ` (+${changes.addedToolCount}/-${changes.removedToolCount} tools)`
673
+ : ' (tool prompt/schema changed, same tool set)';
674
+ reasons.push(`tools changed${suffix}`);
675
+ }
676
+ if (changes.fastModeChanged)
677
+ reasons.push('fast mode toggled');
678
+ }
679
+ const cause = reasons.length > 0 ? reasons.join(', ') : 'unknown cause';
680
+ const msg = `[PROMPT CACHE BREAK] ${cause} [source=${querySource}, call #${state.callCount}, cache read: ${prevCacheRead} → ${cacheReadTokens}, creation: ${cacheCreationTokens}]`;
681
+ if (debug) {
682
+ console.warn(msg);
683
+ }
684
+ }
685
+ // ─────────────────────────────────────────────────────────────────────────────
686
+ // 会话相关的全局状态
687
+ let _sessionId = null;
688
+ let _userId = null;
689
+ /**
690
+ * 获取会话 ID (模拟官方 h0 函数)
691
+ */
692
+ function getSessionId() {
693
+ if (!_sessionId) {
694
+ _sessionId = uuidv4();
695
+ }
696
+ return _sessionId;
697
+ }
698
+ /**
699
+ * 获取用户 ID (模拟官方 Ug 函数)
700
+ */
701
+ function getUserId() {
702
+ if (!_userId) {
703
+ _userId = randomBytes(32).toString('hex');
704
+ }
705
+ return _userId;
706
+ }
707
+ /**
708
+ * 构建 metadata (模拟官方 Ja 函数)
709
+ */
710
+ function buildMetadata(accountUuid) {
711
+ return {
712
+ user_id: `user_${getUserId()}_account_${accountUuid || ''}_session_${getSessionId()}`
713
+ };
714
+ }
715
+ /**
716
+ * v2.1.29: 构建 betas 数组 (对应官方 wu6 函数)
717
+ *
718
+ * 重要发现:
719
+ * - claude-code-20250219 beta 需要与特定的 system prompt 配合使用
720
+ * - system prompt 必须以 AXON_IDENTITY 或 AXON_AGENT_IDENTITY 开头
721
+ * - 只有满足这个条件,OAuth token 才能使用 sonnet/opus 模型
722
+ *
723
+ * v2.1.29 修复:
724
+ * - 完全重写以对齐官方实现
725
+ * - 对于 Bedrock/Vertex 网关用户,不添加实验性 betas
726
+ * - 支持 AXON_DISABLE_EXPERIMENTAL_BETAS=1 完全禁用实验性 betas
727
+ * - 添加 structured-outputs beta 支持
728
+ */
729
+ function buildBetas(model, isOAuth, fastMode) {
730
+ const betas = [];
731
+ const providerType = getProviderType();
732
+ const experimentalEnabled = isExperimentalBetasEnabled();
733
+ const isHaiku = model.toLowerCase().includes('haiku');
734
+ // 1. 非 haiku 模型添加 claude-code beta(官方: if(!K)q.push(tFA))
735
+ if (!isHaiku) {
736
+ betas.push(AXON_BETA);
737
+ }
738
+ // 2. OAuth 订阅用户添加 oauth beta(官方: if(O7())q.push(zE))
739
+ if (isOAuth) {
740
+ betas.push(OAUTH_BETA);
741
+ }
742
+ // 3. 带 "[1m]" 标记的模型添加 context-1m beta(官方: if(A.includes("[1m]"))q.push(xZ1))
743
+ if (model.includes('[1m]')) {
744
+ betas.push(CONTEXT_1M_BETA);
745
+ }
746
+ // 4. Thinking beta(官方只使用 interleaved-thinking)
747
+ if (!isEnvEnabled(process.env.DISABLE_INTERLEAVED_THINKING) && supportsInterleavedThinking(model)) {
748
+ betas.push(THINKING_BETA);
749
+ }
750
+ // 5. structured outputs beta(官方需要 feature flag tengu_tool_pear)
751
+ // 由于我们没有 Anthropic 的 feature flag 系统,默认不启用
752
+ // 通过环境变量 AXON_ENABLE_STRUCTURED_OUTPUTS=1 手动启用
753
+ if (supportsStructuredOutputs(model) && isEnvEnabled(process.env.AXON_ENABLE_STRUCTURED_OUTPUTS)) {
754
+ betas.push(STRUCTURED_OUTPUTS_BETA);
755
+ }
756
+ // 6. Vertex 模型支持 web search 时添加 web-search beta
757
+ // (官方: if(Y==="vertex"&&DOK(A))q.push(sV6))
758
+ if (providerType === 'vertex' && supportsWebSearch(model)) {
759
+ betas.push(WEB_SEARCH_BETA);
760
+ }
761
+ // 7. Foundry 总是添加 web-search beta
762
+ // (官方: if(Y==="foundry")q.push(sV6))
763
+ if (providerType === 'foundry') {
764
+ betas.push(WEB_SEARCH_BETA);
765
+ }
766
+ // 8. 实验性 betas 启用时添加 prompt-caching-scope beta
767
+ // (官方: if(z)q.push(bZ1))
768
+ if (experimentalEnabled) {
769
+ betas.push(PROMPT_CACHING_SCOPE_BETA);
770
+ }
771
+ // 9. 支持环境变量 ANTHROPIC_BETAS 添加自定义 betas
772
+ // (官方: if(process.env.ANTHROPIC_BETAS&&!K)q.push(...))
773
+ if (process.env.ANTHROPIC_BETAS && !isHaiku) {
774
+ const customBetas = process.env.ANTHROPIC_BETAS.split(',').map(b => b.trim()).filter(Boolean);
775
+ betas.push(...customBetas);
776
+ }
777
+ // 10. v2.1.36: Fast mode beta(对齐官方: if(isFastMode) betas.push(opA))
778
+ if (fastMode && isPenguinEnabled() && shouldActivateFastMode(model, true)) {
779
+ betas.push(FAST_MODE_BETA);
780
+ }
781
+ // v2.1.29: 对于 Bedrock/Vertex 网关用户,过滤掉不支持的 betas
782
+ // 这是修复 beta header 验证错误的关键
783
+ if (providerType === 'bedrock' || providerType === 'vertex') {
784
+ return betas.filter(beta => !UNSUPPORTED_GATEWAY_BETAS.has(beta));
785
+ }
786
+ return betas;
787
+ }
788
+ /**
789
+ * 构建 API 工具列表
790
+ * 将客户端工具定义转换为 API 格式,并始终添加 WebSearch Server Tool
791
+ *
792
+ * v5.0: 为最后一个工具添加 cache_control,启用工具列表缓存
793
+ * 官方实现:最后一个工具添加 { type: "ephemeral" } 来缓存整个工具列表
794
+ *
795
+ * 官方 Anthropic API 的 Server Tool 进行网络搜索:
796
+ * - type: 'web_search_20250305'
797
+ * - name: 'web_search'
798
+ *
799
+ * Server Tool 由 Anthropic 服务器执行,比客户端实现更可靠
800
+ */
801
+ /**
802
+ * 将 MCP 服务器返回的 inputSchema 规范化为 JSON Schema draft 2020-12 兼容格式
803
+ * 常见问题:
804
+ * - `definitions` 关键字(draft-04/07)→ 需改为 `$defs`(draft-2020-12)
805
+ * - `$schema` 指向旧版本 → 移除
806
+ * - `$ref` 指向 `#/definitions/...` → 改为 `#/$defs/...`
807
+ */
808
+ function sanitizeInputSchema(schema) {
809
+ if (!schema || typeof schema !== 'object') {
810
+ return { type: 'object', properties: {} };
811
+ }
812
+ const result = { ...schema };
813
+ // 移除 $schema 字段(避免旧版本声明触发校验失败)
814
+ delete result.$schema;
815
+ // definitions → $defs
816
+ if (result.definitions && !result.$defs) {
817
+ result.$defs = result.definitions;
818
+ delete result.definitions;
819
+ }
820
+ // 递归处理所有嵌套 schema 对象
821
+ for (const key of Object.keys(result)) {
822
+ const val = result[key];
823
+ if (val && typeof val === 'object' && !Array.isArray(val)) {
824
+ result[key] = sanitizeInputSchema(val);
825
+ }
826
+ else if (Array.isArray(val)) {
827
+ result[key] = val.map((item) => item && typeof item === 'object' ? sanitizeInputSchema(item) : item);
828
+ }
829
+ }
830
+ // 修复 $ref 中指向 definitions 的路径
831
+ if (typeof result.$ref === 'string' && result.$ref.startsWith('#/definitions/')) {
832
+ result.$ref = result.$ref.replace('#/definitions/', '#/$defs/');
833
+ }
834
+ // 修复 DingTalk MCP 将 required 放入 properties 内部的问题
835
+ // 错误结构:properties: { field: {...}, required: ["field","operator"] }
836
+ // 正确结构:properties: { field: {...} }, required: ["field","operator"]
837
+ if (result.properties && typeof result.properties === 'object' && !Array.isArray(result.properties)) {
838
+ const reqInProps = result.properties.required;
839
+ if (Array.isArray(reqInProps) && reqInProps.every((v) => typeof v === 'string')) {
840
+ if (!result.required) {
841
+ result.required = reqInProps;
842
+ }
843
+ const fixedProps = { ...result.properties };
844
+ delete fixedProps.required;
845
+ result.properties = fixedProps;
846
+ }
847
+ }
848
+ // 修复非法的 type 值(如 Java 泛型类型 "Map<String, Any>"、"List<String>" 等)
849
+ // JSON Schema 合法 type 值:string/number/integer/boolean/array/object/null
850
+ const VALID_TYPES = new Set(['string', 'number', 'integer', 'boolean', 'array', 'object', 'null']);
851
+ if (typeof result.type === 'string' && !VALID_TYPES.has(result.type)) {
852
+ const raw = result.type;
853
+ if (raw.startsWith('Map') || raw.startsWith('map') || raw.toLowerCase().includes('object')) {
854
+ result.type = 'object';
855
+ }
856
+ else if (raw.startsWith('List') || raw.startsWith('list') || raw.startsWith('Array') || raw.includes('[]')) {
857
+ result.type = 'array';
858
+ }
859
+ else {
860
+ // 兜底:未知类型替换为 object
861
+ result.type = 'object';
862
+ }
863
+ }
864
+ return result;
865
+ }
866
+ export function buildApiTools(tools, toolSearchEnabled, enableCaching, isOAuth, isThirdParty) {
867
+ const apiTools = [];
868
+ // 添加客户端工具
869
+ if (tools && tools.length > 0) {
870
+ for (const tool of tools) {
871
+ const apiTool = {
872
+ name: tool.name,
873
+ description: tool.description,
874
+ input_schema: sanitizeInputSchema(tool.inputSchema),
875
+ };
876
+ // v2.1.34: deferred tool 标记 defer_loading
877
+ // 对齐官方 PP6 函数:if(q.deferLoading) z.defer_loading = true
878
+ // 当 toolSearchEnabled 时,isMcp 的工具(已被发现并传给 API 的)标记为 defer_loading
879
+ // v2.1.70: 第三方网关不支持 defer_loading / tool_reference blocks
880
+ if (toolSearchEnabled && tool.isMcp && !isThirdParty) {
881
+ apiTool.defer_loading = true;
882
+ }
883
+ apiTools.push(apiTool);
884
+ }
885
+ }
886
+ // DEBUG: 扫描所有工具 schema 的已知非法模式(定位 DingTalk schema 问题)
887
+ {
888
+ const VALID = new Set(['string', 'number', 'integer', 'boolean', 'array', 'object', 'null']);
889
+ function findSchemaIssues(obj, path) {
890
+ if (!obj || typeof obj !== 'object')
891
+ return [];
892
+ const issues = [];
893
+ // 检查非法 type
894
+ if (typeof obj.type === 'string' && !VALID.has(obj.type)) {
895
+ issues.push(`${path}.type="${obj.type}"`);
896
+ }
897
+ // 检查 required 被放进了 properties 内部
898
+ if (obj.properties && typeof obj.properties === 'object') {
899
+ const req = obj.properties.required;
900
+ if (Array.isArray(req) && req.every((v) => typeof v === 'string')) {
901
+ issues.push(`${path}.properties.required=[${req.join(',')}] (misplaced)`);
902
+ }
903
+ // 检查 properties 中的 value 不是合法 schema(既不是 object 也不是 boolean)
904
+ for (const k of Object.keys(obj.properties)) {
905
+ const v = obj.properties[k];
906
+ if (v !== null && typeof v !== 'object' && typeof v !== 'boolean') {
907
+ issues.push(`${path}.properties.${k} is ${typeof v} (not a schema)`);
908
+ }
909
+ }
910
+ }
911
+ for (const k of Object.keys(obj)) {
912
+ const v = obj[k];
913
+ if (v && typeof v === 'object' && !Array.isArray(v))
914
+ issues.push(...findSchemaIssues(v, `${path}.${k}`));
915
+ else if (Array.isArray(v))
916
+ v.forEach((item, i) => {
917
+ if (item && typeof item === 'object')
918
+ issues.push(...findSchemaIssues(item, `${path}.${k}[${i}]`));
919
+ });
920
+ }
921
+ return issues;
922
+ }
923
+ apiTools.forEach((t, i) => {
924
+ const issues = findSchemaIssues(t.input_schema, 'schema');
925
+ if (issues.length > 0) {
926
+ console.log(`[schemaDebug] tools[${i}] ${t.name}:`);
927
+ issues.forEach(iss => console.log(` - ${iss}`));
928
+ }
929
+ });
930
+ }
931
+ // 仅在官方 Anthropic API 下添加 WebSearch Server Tool
932
+ // 第三方兼容 API(如 MiniMax)不支持 web_search_20250305 类型
933
+ if (!isThirdParty) {
934
+ const webSearchServerTool = {
935
+ name: 'web_search',
936
+ type: 'web_search_20250305',
937
+ };
938
+ apiTools.push(webSearchServerTool);
939
+ }
940
+ // v6.1: 对齐官方 —— 不给 tools 加 cache_control
941
+ // 官方依赖 prompt-caching-scope beta header 让 API 自动处理前缀缓存
942
+ // 手动标记 tools 会浪费 cache_control 断点配额并产生不必要的 cache creation 写入费用
943
+ return apiTools.length > 0 ? apiTools : undefined;
944
+ }
945
+ export class ClaudeClient {
946
+ client;
947
+ model;
948
+ maxTokens;
949
+ maxRetries;
950
+ retryDelay;
951
+ fallbackModel;
952
+ debug;
953
+ /** v2.1.31: temperature 覆盖值 */
954
+ temperature;
955
+ /** v2.1.36: fast mode 状态 */
956
+ fastMode = false;
957
+ isOAuth = false; // 是否使用 OAuth 模式
958
+ isThirdParty = false; // 是否使用第三方兼容 API(非 Anthropic 官方)
959
+ /** 请求来源标识,用于缓存破裂追踪(对齐官方 querySource) */
960
+ querySource = 'main';
961
+ totalUsage = {
962
+ inputTokens: 0,
963
+ outputTokens: 0,
964
+ totalTokens: 0,
965
+ estimatedCost: 0,
966
+ cacheReadTokens: 0,
967
+ cacheCreationTokens: 0,
968
+ thinkingTokens: 0,
969
+ apiDurationMs: 0,
970
+ };
971
+ constructor(config = {}) {
972
+ // 准备 Anthropic 客户端配置
973
+ // 关键:对于 OAuth 模式,只使用 authToken,不使用 apiKey
974
+ // OAuth 模式下不需要 API Key
975
+ const authToken = config.authToken || process.env.ANTHROPIC_AUTH_TOKEN;
976
+ // 如果有 authToken,则不使用 apiKey(官方逻辑)
977
+ const apiKey = authToken ? null : (config.apiKey || process.env.ANTHROPIC_API_KEY || process.env.AXON_API_KEY);
978
+ if (!apiKey && !authToken) {
979
+ console.warn('[ClaudeClient] No API key or auth token configured. API calls will fail until authentication is set up.');
980
+ }
981
+ // 构建默认 headers(与官方 Anthropic API 完全一致)
982
+ // 官方 User-Agent 格式: claude-cli/${VERSION} (external, ${ENTRYPOINT}${agent-sdk})
983
+ const entrypoint = process.env.AXON_ENTRYPOINT || 'claude-vscode';
984
+ const agentSdkVersion = process.env.AXON_AGENT_SDK_VERSION;
985
+ const agentSdkSuffix = agentSdkVersion ? `, agent-sdk/${agentSdkVersion}` : '';
986
+ const defaultHeaders = {
987
+ 'x-app': 'cli',
988
+ 'User-Agent': `claude-cli/${VERSION_BASE} (external, ${entrypoint}${agentSdkSuffix})`,
989
+ 'anthropic-dangerous-direct-browser-access': 'true',
990
+ };
991
+ // 第三方兼容 API(如 MiniMax)要求 Authorization: Bearer 格式,而非 x-api-key
992
+ const isThirdPartyUrl = !!(config.baseUrl &&
993
+ !config.baseUrl.includes('api.anthropic.com') &&
994
+ !config.baseUrl.includes('anthropic.com'));
995
+ if (isThirdPartyUrl && apiKey) {
996
+ defaultHeaders['Authorization'] = `Bearer ${apiKey}`;
997
+ }
998
+ // 如果使用 OAuth,标记模式
999
+ if (authToken) {
1000
+ this.isOAuth = true;
1001
+ // 调试日志已移除,避免污染 UI 输出
1002
+ }
1003
+ // API key 模式无需日志
1004
+ // Anthropic SDK 自动拼 /v1/messages,baseURL 不能带 /v1 后缀,否则会变成 /v1/v1/messages
1005
+ let effectiveBase = config.baseUrl;
1006
+ if (effectiveBase) {
1007
+ effectiveBase = effectiveBase.replace(/\/v1\/?$/, '');
1008
+ }
1009
+ const anthropicConfig = {
1010
+ apiKey: apiKey, // OAuth 模式下为 null
1011
+ authToken: authToken || null, // OAuth token
1012
+ baseURL: effectiveBase,
1013
+ maxRetries: 0, // 我们自己处理重试
1014
+ defaultHeaders,
1015
+ dangerouslyAllowBrowser: true,
1016
+ };
1017
+ // 配置代理(如果需要)
1018
+ const baseUrl = config.baseUrl || 'https://api.anthropic.com';
1019
+ const proxyAgent = createProxyAgent(baseUrl, config.proxy, {
1020
+ ...config.proxyOptions,
1021
+ timeout: typeof config.timeout === 'number' ? config.timeout : config.timeout?.connect,
1022
+ });
1023
+ if (proxyAgent) {
1024
+ anthropicConfig.httpAgent = proxyAgent;
1025
+ if (config.debug) {
1026
+ console.log('[ClaudeClient] Using proxy agent for:', baseUrl);
1027
+ }
1028
+ }
1029
+ // 配置超时
1030
+ if (config.timeout) {
1031
+ const timeoutMs = typeof config.timeout === 'number'
1032
+ ? config.timeout
1033
+ : config.timeout.request || 120000;
1034
+ anthropicConfig.timeout = timeoutMs;
1035
+ }
1036
+ this.client = new Anthropic(anthropicConfig);
1037
+ this.debug = config.debug ?? false;
1038
+ // 检测是否使用第三方兼容 API(非 Anthropic 官方)
1039
+ const effectiveBaseUrl = config.baseUrl || 'https://api.anthropic.com';
1040
+ this.isThirdParty = !effectiveBaseUrl.includes('api.anthropic.com') && !effectiveBaseUrl.includes('anthropic.com');
1041
+ // 解析模型别名
1042
+ const resolvedModel = modelConfig.resolveAlias(config.model || 'sonnet');
1043
+ this.model = resolvedModel;
1044
+ // 根据模型能力设置 maxTokens
1045
+ const capabilities = modelConfig.getCapabilities(this.model);
1046
+ // SDK限制:maxTokens不能太大,否则会要求streaming
1047
+ // 计算公式:3600 * maxTokens / 128000 <= 600,即 maxTokens <= 21333
1048
+ // 使用21000作为安全默认值(留有余量)
1049
+ this.maxTokens = config.maxTokens || Math.min(21000, capabilities.maxOutputTokens);
1050
+ // 对标官方 V39: 默认 10 次重试,通过 settings.json maxRetries 配置
1051
+ this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
1052
+ this.retryDelay = config.retryDelay ?? DEFAULT_RETRY_BASE_DELAY;
1053
+ // 配置回退模型
1054
+ if (config.fallbackModel) {
1055
+ const resolvedFallback = modelConfig.resolveAlias(config.fallbackModel);
1056
+ if (resolvedFallback === this.model) {
1057
+ console.warn('Fallback model cannot be the same as primary model, ignoring');
1058
+ }
1059
+ else {
1060
+ this.fallbackModel = resolvedFallback;
1061
+ modelFallback.setPrimaryModel(this.model);
1062
+ modelFallback.setFallbackModel(this.fallbackModel);
1063
+ }
1064
+ }
1065
+ // 配置 Extended Thinking
1066
+ if (config.thinking) {
1067
+ thinkingManager.configure(config.thinking);
1068
+ }
1069
+ // v2.1.31: 存储 temperature 覆盖值
1070
+ if (config.temperature !== undefined) {
1071
+ this.temperature = config.temperature;
1072
+ }
1073
+ // v2.1.36: 存储 fast mode 状态
1074
+ if (config.fastMode !== undefined) {
1075
+ this.fastMode = config.fastMode;
1076
+ }
1077
+ // 存储 querySource(用于缓存破裂追踪)
1078
+ if (config.querySource) {
1079
+ this.querySource = config.querySource;
1080
+ }
1081
+ if (this.debug) {
1082
+ console.log(`[ClaudeClient] Initialized with model: ${this.model}`);
1083
+ console.log(`[ClaudeClient] Context window: ${capabilities.contextWindow.toLocaleString()} tokens`);
1084
+ console.log(`[ClaudeClient] Supports thinking: ${capabilities.supportsThinking}`);
1085
+ if (this.fallbackModel) {
1086
+ console.log(`[ClaudeClient] Fallback model: ${this.fallbackModel}`);
1087
+ }
1088
+ }
1089
+ }
1090
+ /**
1091
+ * 执行带重试的请求 — 对标官方 Ww6 函数
1092
+ *
1093
+ * 重试策略:
1094
+ * - 指数退避 + 25% Jitter (500ms base, 32s max)
1095
+ * - 429 + retry-after < 20s → 直接等待,不计入重试次数
1096
+ * - 529 overloaded 连续 3 次 → FallbackTriggeredError
1097
+ * - 400 context overflow → 自动调整 max_tokens,不计入重试次数
1098
+ * - 401 → OAuth token 刷新
1099
+ * - x-should-retry header 遵循服务端指示
1100
+ */
1101
+ async withRetry(operation, retryCount = 0, overloadedCount = 0) {
1102
+ try {
1103
+ // 重置 overloaded 计数(成功时)
1104
+ return await operation();
1105
+ }
1106
+ catch (error) {
1107
+ const errorStatus = error.status || error.statusCode || 0;
1108
+ const errorType = error.type || error.code || error.message || '';
1109
+ // 详细的错误日志
1110
+ if (this.debug) {
1111
+ console.error('[ClaudeClient] API Error Details:');
1112
+ console.error(` Type: ${errorType}`);
1113
+ console.error(` Status: ${errorStatus}`);
1114
+ console.error(` Message: ${error.message}`);
1115
+ if (error.error) {
1116
+ console.error(` Error body: ${JSON.stringify(error.error, null, 2)}`);
1117
+ }
1118
+ }
1119
+ // === 401: OAuth token 刷新 ===
1120
+ if (errorStatus === 401 && retryCount === 0) {
1121
+ const auth = getAuth();
1122
+ if (auth?.type === 'oauth' && auth.refreshToken) {
1123
+ console.log('[ClaudeClient] OAuth token expired, attempting refresh...');
1124
+ try {
1125
+ const refreshedAuth = await refreshTokenAsync(auth);
1126
+ if (refreshedAuth?.accessToken) {
1127
+ console.log('[ClaudeClient] OAuth token refreshed, retrying request...');
1128
+ resetDefaultClient();
1129
+ if (this.client) {
1130
+ const clientOptions = {
1131
+ apiKey: null,
1132
+ authToken: refreshedAuth.accessToken,
1133
+ baseURL: this.client.baseURL,
1134
+ maxRetries: 0,
1135
+ };
1136
+ const existingOptions = this.client._options;
1137
+ if (existingOptions?.httpAgent) {
1138
+ clientOptions.httpAgent = existingOptions.httpAgent;
1139
+ }
1140
+ if (existingOptions?.defaultHeaders) {
1141
+ clientOptions.defaultHeaders = existingOptions.defaultHeaders;
1142
+ }
1143
+ this.client = new Anthropic(clientOptions);
1144
+ this.isOAuth = true;
1145
+ }
1146
+ return this.withRetry(operation, retryCount + 1, overloadedCount);
1147
+ }
1148
+ }
1149
+ catch (refreshError) {
1150
+ console.error('[ClaudeClient] OAuth token refresh failed:', refreshError);
1151
+ }
1152
+ }
1153
+ console.error('[ClaudeClient] Authentication failed - check your API key or login again');
1154
+ throw error;
1155
+ }
1156
+ // === 400: Context overflow 自适应 ===
1157
+ const overflowInfo = parseContextOverflowError(error);
1158
+ if (overflowInfo) {
1159
+ const adjustedMaxTokens = Math.max(MIN_OUTPUT_TOKENS, overflowInfo.contextLimit - overflowInfo.inputTokens - 1000);
1160
+ // 防止无限递归:如果调整后的值和当前值相同,说明无法再缩小,直接抛出
1161
+ if (adjustedMaxTokens >= this.maxTokens) {
1162
+ console.error(`[ClaudeClient] Context overflow: input=${overflowInfo.inputTokens} exceeds context limit=${overflowInfo.contextLimit}, cannot reduce max_tokens further (current=${this.maxTokens})`);
1163
+ throw error;
1164
+ }
1165
+ console.error(`[ClaudeClient] Context overflow: input=${overflowInfo.inputTokens}, max_tokens=${overflowInfo.maxTokens}, limit=${overflowInfo.contextLimit}. Adjusting max_tokens to ${adjustedMaxTokens}`);
1166
+ this.maxTokens = adjustedMaxTokens;
1167
+ return this.withRetry(operation, retryCount, overloadedCount);
1168
+ }
1169
+ // === 529: Overloaded 计数,连续 3 次触发 fallback ===
1170
+ if (isOverloadedError(error)) {
1171
+ const newOverloadedCount = overloadedCount + 1;
1172
+ if (newOverloadedCount >= OVERLOADED_FALLBACK_THRESHOLD) {
1173
+ console.error(`[ClaudeClient] Overloaded ${newOverloadedCount} times, triggering model fallback`);
1174
+ throw new FallbackTriggeredError(this.model, this.fallbackModel || 'unknown');
1175
+ }
1176
+ if (retryCount < this.maxRetries) {
1177
+ const delay = calculateRetryDelay(retryCount + 1);
1178
+ console.error(`[ClaudeClient] Server overloaded (529), retrying in ${Math.round(delay)}ms... (attempt ${retryCount + 1}/${this.maxRetries}, overloaded ${newOverloadedCount}/${OVERLOADED_FALLBACK_THRESHOLD})`);
1179
+ await this.sleep(delay);
1180
+ return this.withRetry(operation, retryCount + 1, newOverloadedCount);
1181
+ }
1182
+ }
1183
+ // === 429: Rate limit,解析 retry-after ===
1184
+ if (errorStatus === 429) {
1185
+ const retryAfter = getRetryAfterHeader(error);
1186
+ const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 0;
1187
+ // 检查 fast mode overage 降级
1188
+ const overageReason = getOverageDisabledReason(error);
1189
+ if (overageReason) {
1190
+ console.error(`[ClaudeClient] Fast mode disabled: ${overageReason}`);
1191
+ }
1192
+ // retry-after < 20s: 直接等待,不计入重试次数
1193
+ if (retryAfterMs > 0 && retryAfterMs < FAST_RETRY_AFTER_THRESHOLD) {
1194
+ console.error(`[ClaudeClient] Rate limited (429), waiting ${retryAfterMs}ms (retry-after header, not counting as retry)`);
1195
+ await this.sleep(retryAfterMs);
1196
+ return this.withRetry(operation, retryCount, overloadedCount);
1197
+ }
1198
+ // retry-after >= 20s 或无 header: 正常计入重试
1199
+ if (retryCount < this.maxRetries) {
1200
+ const delay = retryAfterMs > 0 ? retryAfterMs : calculateRetryDelay(retryCount + 1);
1201
+ console.error(`[ClaudeClient] Rate limited (429), retrying in ${Math.round(delay)}ms... (attempt ${retryCount + 1}/${this.maxRetries})`);
1202
+ await this.sleep(delay);
1203
+ return this.withRetry(operation, retryCount + 1, overloadedCount);
1204
+ }
1205
+ }
1206
+ // === 通用可重试错误 ===
1207
+ const retryable = isRetryableStatus(error) || RETRYABLE_ERRORS.some((e) => errorType.includes(e) || error.message?.includes(e));
1208
+ if (retryable && retryCount < this.maxRetries) {
1209
+ const delay = calculateRetryDelay(retryCount + 1, getRetryAfterHeader(error));
1210
+ const causeInfo = this.extractErrorCause(error);
1211
+ const errorDesc = causeInfo ? `${errorType} (${causeInfo})` : errorType;
1212
+ console.error(`[ClaudeClient] API error (${errorDesc}), retrying in ${Math.round(delay)}ms... (attempt ${retryCount + 1}/${this.maxRetries})`);
1213
+ await this.sleep(delay);
1214
+ return this.withRetry(operation, retryCount + 1, overloadedCount);
1215
+ }
1216
+ // === 不可重试,输出诊断信息 ===
1217
+ if (errorStatus === 401) {
1218
+ console.error('[ClaudeClient] Authentication failed after token refresh - please login again');
1219
+ }
1220
+ else if (errorStatus === 403) {
1221
+ console.error('[ClaudeClient] Access denied - check API key permissions');
1222
+ }
1223
+ else if (errorStatus === 400) {
1224
+ console.error('[ClaudeClient] Bad request - check your request parameters');
1225
+ }
1226
+ else {
1227
+ const causeInfo = this.extractErrorCause(error);
1228
+ if (causeInfo) {
1229
+ console.error(`[ClaudeClient] API request failed: ${error.message} (cause: ${causeInfo})`);
1230
+ }
1231
+ else {
1232
+ console.error(`[ClaudeClient] API request failed: ${error.message}`);
1233
+ }
1234
+ }
1235
+ throw error;
1236
+ }
1237
+ }
1238
+ /**
1239
+ * v2.1.33: 从错误对象中提取具体的失败原因
1240
+ * 对应官方改进:现在显示 ECONNREFUSED、SSL 错误等具体原因
1241
+ */
1242
+ extractErrorCause(error) {
1243
+ // 检查 error.cause (Node.js 标准)
1244
+ if (error.cause) {
1245
+ if (error.cause.code) {
1246
+ return error.cause.code;
1247
+ }
1248
+ if (error.cause.message) {
1249
+ return error.cause.message;
1250
+ }
1251
+ if (typeof error.cause === 'string') {
1252
+ return error.cause;
1253
+ }
1254
+ }
1255
+ // 检查 error.code
1256
+ if (error.code) {
1257
+ return error.code;
1258
+ }
1259
+ // 从错误消息中提取常见的连接错误模式
1260
+ const message = error.message || '';
1261
+ const patterns = [
1262
+ /ECONNREFUSED/,
1263
+ /ECONNRESET/,
1264
+ /ETIMEDOUT/,
1265
+ /ENOTFOUND/,
1266
+ /SSL_ERROR/i,
1267
+ /CERT_/,
1268
+ /certificate/i,
1269
+ /self.signed/i,
1270
+ ];
1271
+ for (const pattern of patterns) {
1272
+ const match = message.match(pattern);
1273
+ if (match) {
1274
+ return match[0];
1275
+ }
1276
+ }
1277
+ return null;
1278
+ }
1279
+ sleep(ms) {
1280
+ return new Promise((resolve) => setTimeout(resolve, ms));
1281
+ }
1282
+ /**
1283
+ * 计算估算成本
1284
+ */
1285
+ calculateCost(inputTokens, outputTokens, cacheReadTokens, cacheCreationTokens, thinkingTokens) {
1286
+ return modelConfig.calculateCost(this.model, {
1287
+ inputTokens,
1288
+ outputTokens,
1289
+ cacheReadTokens,
1290
+ cacheCreationTokens,
1291
+ thinkingTokens,
1292
+ });
1293
+ }
1294
+ /**
1295
+ * 更新使用统计
1296
+ */
1297
+ updateUsage(usage) {
1298
+ this.totalUsage.inputTokens += usage.inputTokens;
1299
+ this.totalUsage.outputTokens += usage.outputTokens;
1300
+ this.totalUsage.totalTokens += usage.inputTokens + usage.outputTokens;
1301
+ this.totalUsage.cacheReadTokens = (this.totalUsage.cacheReadTokens || 0) + (usage.cacheReadTokens || 0);
1302
+ this.totalUsage.cacheCreationTokens = (this.totalUsage.cacheCreationTokens || 0) + (usage.cacheCreationTokens || 0);
1303
+ this.totalUsage.thinkingTokens = (this.totalUsage.thinkingTokens || 0) + (usage.thinkingTokens || 0);
1304
+ this.totalUsage.apiDurationMs = (this.totalUsage.apiDurationMs || 0) + (usage.apiDurationMs || 0);
1305
+ this.totalUsage.estimatedCost += this.calculateCost(usage.inputTokens, usage.outputTokens, usage.cacheReadTokens, usage.cacheCreationTokens, usage.thinkingTokens);
1306
+ // 同步到全局模型统计
1307
+ modelStats.record(this.model, usage);
1308
+ }
1309
+ async createMessage(messages, tools, systemPrompt, options) {
1310
+ const startTime = Date.now();
1311
+ // 准备 Extended Thinking 参数
1312
+ const thinkingParams = options?.enableThinking
1313
+ ? thinkingManager.getThinkingParams(this.model, { forceEnabled: true })
1314
+ : {};
1315
+ // 如果指定了思考预算,覆盖默认值
1316
+ if (options?.thinkingBudget && thinkingParams.thinking) {
1317
+ thinkingParams.thinking.budget_tokens = options.thinkingBudget;
1318
+ }
1319
+ // 使用回退机制执行请求
1320
+ const executeRequest = async (currentModel) => {
1321
+ return await this.withRetry(async () => {
1322
+ // v2.1.36: 计算 fast mode 激活状态
1323
+ const isFastActive = this.fastMode && shouldActivateFastMode(currentModel, this.fastMode);
1324
+ // 构建 betas 数组(模拟官方 qC 函数)
1325
+ const betas = buildBetas(currentModel, this.isOAuth, isFastActive);
1326
+ // 对齐官方 HJq:按型号检查是否启用 prompt caching
1327
+ const enableCaching = isPromptCachingEnabled(currentModel);
1328
+ // v6.1: 对齐官方 P 变量 —— 有 MCP tools 或 ToolSearch 时降级 system prompt cache scope
1329
+ const hasMcpTools = tools?.some(t => t.isMcp === true) ?? false;
1330
+ const hasToolSearch = options?.toolSearchEnabled ?? false;
1331
+ const skipGlobal = (enableCaching && (hasMcpTools || hasToolSearch)) ? 'system_prompt' : 'none';
1332
+ // 格式化 system prompt(优先使用 blocks 分块缓存)
1333
+ const formattedSystem = formatSystemPrompt(systemPrompt, this.isOAuth, options?.promptBlocks, enableCaching, skipGlobal);
1334
+ // 构建 API 工具列表(将 WebSearch 客户端工具替换为 Server Tool)
1335
+ const apiTools = buildApiTools(tools, options?.toolSearchEnabled, enableCaching, this.isOAuth, this.isThirdParty);
1336
+ const requestParams = {
1337
+ model: currentModel,
1338
+ max_tokens: this.maxTokens,
1339
+ system: formattedSystem,
1340
+ // v5.0: 使用 formatMessages 启用消息缓存(最后2条消息,对齐官方 S2z)
1341
+ messages: formatMessages(messages, options?.enableThinking, enableCaching, this.querySource),
1342
+ tools: apiTools,
1343
+ // 添加 tool_choice 参数(强制 AI 使用工具)
1344
+ ...(options?.toolChoice ? { tool_choice: options.toolChoice } : {}),
1345
+ // 添加 betas 参数(对齐原始参考实现)
1346
+ ...(betas.length > 0 ? { betas } : {}),
1347
+ // 添加 metadata(对齐原始参考实现的 Ja 函数)
1348
+ metadata: buildMetadata(),
1349
+ // v2.1.31: 传递 temperature(如果配置了覆盖值)
1350
+ ...(this.temperature !== undefined ? { temperature: this.temperature } : {}),
1351
+ // v2.1.36: Fast mode extra body 参数
1352
+ ...(isFastActive ? { [FAST_MODE_RESEARCH_PREVIEW]: 'active' } : {}),
1353
+ ...thinkingParams,
1354
+ };
1355
+ if (this.debug) {
1356
+ console.log('[ClaudeClient] Using beta.messages.create with betas:', betas);
1357
+ console.log('[ClaudeClient] System prompt format:', Array.isArray(formattedSystem) ? 'array' : 'string');
1358
+ }
1359
+ // 使用 beta.messages.create 而不是 messages.create(官方方式)
1360
+ return await this.client.beta.messages.create(requestParams);
1361
+ });
1362
+ };
1363
+ let response;
1364
+ let usedModel = this.model;
1365
+ if (this.fallbackModel) {
1366
+ const result = await modelFallback.executeWithFallback(executeRequest, {
1367
+ onRetry: (model, attempt, error) => {
1368
+ if (this.debug) {
1369
+ console.log(`[ClaudeClient] Retry ${attempt} for ${model}: ${error.message}`);
1370
+ }
1371
+ },
1372
+ onFallback: (from, to, error) => {
1373
+ console.warn(`[ClaudeClient] Falling back from ${from} to ${to}: ${error.message}`);
1374
+ },
1375
+ });
1376
+ response = result.result;
1377
+ usedModel = result.model;
1378
+ }
1379
+ else {
1380
+ response = await executeRequest(this.model);
1381
+ }
1382
+ const apiDurationMs = Date.now() - startTime;
1383
+ // 提取使用统计
1384
+ const usage = {
1385
+ inputTokens: response.usage.input_tokens,
1386
+ outputTokens: response.usage.output_tokens,
1387
+ cacheReadTokens: response.usage.cache_read_input_tokens,
1388
+ cacheCreationTokens: response.usage.cache_creation_input_tokens,
1389
+ thinkingTokens: 0,
1390
+ apiDurationMs,
1391
+ };
1392
+ // 处理 Extended Thinking 响应
1393
+ let thinkingResult;
1394
+ if (response.thinking || response.thinking_tokens) {
1395
+ // 优先使用 usage 中的 thinking_tokens,如果没有则使用 response 顶层的
1396
+ const thinkingTokensCount = response.usage?.thinking_tokens || response.thinking_tokens || 0;
1397
+ usage.thinkingTokens = thinkingTokensCount;
1398
+ if (response.thinking) {
1399
+ thinkingResult = thinkingManager.processThinkingResponse({
1400
+ thinking: response.thinking,
1401
+ thinking_tokens: thinkingTokensCount,
1402
+ }, startTime) || undefined;
1403
+ }
1404
+ }
1405
+ this.updateUsage(usage);
1406
+ return {
1407
+ content: response.content,
1408
+ stopReason: response.stop_reason || 'end_turn',
1409
+ usage: {
1410
+ inputTokens: usage.inputTokens,
1411
+ outputTokens: usage.outputTokens,
1412
+ cacheReadTokens: usage.cacheReadTokens,
1413
+ cacheCreationTokens: usage.cacheCreationTokens,
1414
+ thinkingTokens: usage.thinkingTokens,
1415
+ },
1416
+ thinking: thinkingResult,
1417
+ model: usedModel,
1418
+ };
1419
+ }
1420
+ async *createMessageStream(messages, tools, systemPrompt, options) {
1421
+ let stream;
1422
+ let retryCount = 0;
1423
+ const maxStreamRetries = this.maxRetries;
1424
+ const abortSignal = options?.signal;
1425
+ // 创建流的辅助函数(支持重试)
1426
+ const attemptCreateStream = async () => {
1427
+ if (this.debug) {
1428
+ console.log('[ClaudeClient] Starting message stream...');
1429
+ console.log(`[ClaudeClient] Model: ${this.model}, MaxTokens: ${this.maxTokens}`);
1430
+ console.log(`[ClaudeClient] Messages: ${messages.length}, Tools: ${tools?.length || 0}`);
1431
+ }
1432
+ // 准备 Extended Thinking 参数
1433
+ const thinkingParams = options?.enableThinking
1434
+ ? thinkingManager.getThinkingParams(this.model, { forceEnabled: true })
1435
+ : {};
1436
+ // 如果指定了思考预算,覆盖默认值
1437
+ if (options?.thinkingBudget && thinkingParams.thinking) {
1438
+ thinkingParams.thinking.budget_tokens = options.thinkingBudget;
1439
+ }
1440
+ // v2.1.36: 计算 fast mode 激活状态
1441
+ const isFastActive = this.fastMode && shouldActivateFastMode(this.model, this.fastMode);
1442
+ // 构建 betas 数组(模拟官方 qC 函数)
1443
+ const betas = buildBetas(this.model, this.isOAuth, isFastActive);
1444
+ // 对齐官方 HJq:按型号检查是否启用 prompt caching
1445
+ const enableCaching = isPromptCachingEnabled(this.model);
1446
+ // v6.1: 对齐官方 P 变量 —— 有 MCP tools 或 ToolSearch 时降级 system prompt cache scope
1447
+ const hasMcpTools = tools?.some(t => t.isMcp === true) ?? false;
1448
+ const hasToolSearch = options?.toolSearchEnabled ?? false;
1449
+ const skipGlobal = (enableCaching && (hasMcpTools || hasToolSearch)) ? 'system_prompt' : 'none';
1450
+ // 格式化 system prompt(优先使用 blocks 分块缓存)
1451
+ const formattedSystem = formatSystemPrompt(systemPrompt, this.isOAuth, options?.promptBlocks, enableCaching, skipGlobal);
1452
+ // 构建 API 工具列表(将 WebSearch 客户端工具替换为 Server Tool)
1453
+ const apiTools = buildApiTools(tools, options?.toolSearchEnabled, enableCaching, this.isOAuth, this.isThirdParty);
1454
+ if (this.debug) {
1455
+ console.log('[ClaudeClient] isOAuth:', this.isOAuth, '| apiKey:', this.client.apiKey ? 'set' : 'null', '| authToken:', this.client.authToken ? 'set' : 'null');
1456
+ console.log('[ClaudeClient] Using beta.messages.stream with betas:', betas);
1457
+ console.log('[ClaudeClient] System prompt format:', Array.isArray(formattedSystem) ? `array(${formattedSystem.length} blocks)` : 'string');
1458
+ if (Array.isArray(formattedSystem) && formattedSystem.length > 0) {
1459
+ console.log('[ClaudeClient] System prompt block[0] starts with:', formattedSystem[0].text.substring(0, 80));
1460
+ }
1461
+ if (apiTools?.some(t => t.type === 'web_search_20250305')) {
1462
+ console.log('[ClaudeClient] WebSearch Server Tool enabled');
1463
+ }
1464
+ if (isFastActive) {
1465
+ console.log('[ClaudeClient] Fast mode active');
1466
+ }
1467
+ if (!enableCaching) {
1468
+ console.log('[ClaudeClient] Prompt caching disabled for model:', this.model);
1469
+ }
1470
+ }
1471
+ // 对齐官方 xR7:在每次 API 调用前追踪 system/tools 状态,为后续 cache break 报告提供上下文
1472
+ if (enableCaching && Array.isArray(formattedSystem)) {
1473
+ trackCacheState(formattedSystem, apiTools || [], this.model, this.querySource, this.fastMode);
1474
+ }
1475
+ // 使用 beta.messages.stream 而不是 messages.stream(官方方式)
1476
+ stream = this.client.beta.messages.stream({
1477
+ model: this.model,
1478
+ max_tokens: this.maxTokens,
1479
+ system: formattedSystem,
1480
+ // v5.0: 使用 formatMessages 启用消息缓存(最后2条消息,对齐官方 S2z)
1481
+ messages: formatMessages(messages, options?.enableThinking, enableCaching, this.querySource),
1482
+ tools: apiTools,
1483
+ // 添加 toolChoice 支持(强制 AI 调用特定工具)
1484
+ ...(options?.toolChoice ? { tool_choice: options.toolChoice } : {}),
1485
+ // 添加 betas 参数(对齐原始参考实现)
1486
+ ...(betas.length > 0 ? { betas } : {}),
1487
+ // 添加 metadata(对齐原始参考实现的 Ja 函数)
1488
+ metadata: buildMetadata(),
1489
+ // v2.1.31: 传递 temperature 到 streaming 路径
1490
+ // 修复 temperatureOverride 在 streaming API 路径被静默忽略的问题
1491
+ ...(this.temperature !== undefined ? { temperature: this.temperature } : {}),
1492
+ // v2.1.36: Fast mode extra body 参数
1493
+ ...(isFastActive ? { [FAST_MODE_RESEARCH_PREVIEW]: 'active' } : {}),
1494
+ ...thinkingParams,
1495
+ });
1496
+ return stream;
1497
+ };
1498
+ // 带重试的流创建 — 对标 withRetry 策略
1499
+ let overloadedCount = 0;
1500
+ while (retryCount <= maxStreamRetries) {
1501
+ try {
1502
+ stream = await attemptCreateStream();
1503
+ break; // 成功创建,跳出重试循环
1504
+ }
1505
+ catch (error) {
1506
+ const errorType = error.type || error.code || error.message || '';
1507
+ const errorStatus = error.status || error.statusCode || 0;
1508
+ // 404: 端点不存在,不重试
1509
+ if (errorStatus === 404) {
1510
+ console.error('[ClaudeClient] Streaming endpoint returned 404 - endpoint not found');
1511
+ yield { type: 'error', error: `API endpoint returned 404: ${error.message}` };
1512
+ return;
1513
+ }
1514
+ // 401: OAuth token 刷新(仅首次)
1515
+ if (errorStatus === 401 && retryCount === 0) {
1516
+ const auth = getAuth();
1517
+ if (auth?.type === 'oauth' && auth.refreshToken) {
1518
+ try {
1519
+ const refreshedAuth = await refreshTokenAsync(auth);
1520
+ if (refreshedAuth?.accessToken) {
1521
+ console.log('[ClaudeClient] OAuth token refreshed for stream, retrying...');
1522
+ resetDefaultClient();
1523
+ if (this.client) {
1524
+ const clientOptions = {
1525
+ apiKey: null,
1526
+ authToken: refreshedAuth.accessToken,
1527
+ baseURL: this.client.baseURL,
1528
+ maxRetries: 0,
1529
+ };
1530
+ const existingOptions = this.client._options;
1531
+ if (existingOptions?.httpAgent)
1532
+ clientOptions.httpAgent = existingOptions.httpAgent;
1533
+ if (existingOptions?.defaultHeaders)
1534
+ clientOptions.defaultHeaders = existingOptions.defaultHeaders;
1535
+ this.client = new Anthropic(clientOptions);
1536
+ this.isOAuth = true;
1537
+ }
1538
+ retryCount++;
1539
+ continue;
1540
+ }
1541
+ }
1542
+ catch (refreshError) {
1543
+ console.error('[ClaudeClient] OAuth token refresh failed for stream:', refreshError);
1544
+ }
1545
+ }
1546
+ yield { type: 'error', error: `Authentication failed: ${error.message}` };
1547
+ return;
1548
+ }
1549
+ // 400: Context overflow 自适应
1550
+ const overflowInfo = parseContextOverflowError(error);
1551
+ if (overflowInfo) {
1552
+ const adjustedMaxTokens = Math.max(MIN_OUTPUT_TOKENS, overflowInfo.contextLimit - overflowInfo.inputTokens - 1000);
1553
+ if (adjustedMaxTokens >= this.maxTokens) {
1554
+ console.error(`[ClaudeClient] Stream context overflow: input=${overflowInfo.inputTokens} exceeds context limit=${overflowInfo.contextLimit}, cannot reduce max_tokens further (current=${this.maxTokens})`);
1555
+ yield { type: 'error', error: `Context overflow: input tokens (${overflowInfo.inputTokens}) exceed context limit (${overflowInfo.contextLimit})` };
1556
+ return;
1557
+ }
1558
+ console.error(`[ClaudeClient] Stream context overflow: input=${overflowInfo.inputTokens}, limit=${overflowInfo.contextLimit}. Adjusting max_tokens to ${adjustedMaxTokens}`);
1559
+ this.maxTokens = adjustedMaxTokens;
1560
+ // 不计入重试次数
1561
+ continue;
1562
+ }
1563
+ // 529: Overloaded 计数
1564
+ if (isOverloadedError(error)) {
1565
+ overloadedCount++;
1566
+ if (overloadedCount >= OVERLOADED_FALLBACK_THRESHOLD) {
1567
+ console.error(`[ClaudeClient] Stream overloaded ${overloadedCount} times, triggering fallback`);
1568
+ yield { type: 'error', error: `Server overloaded ${overloadedCount} times` };
1569
+ return;
1570
+ }
1571
+ if (retryCount < maxStreamRetries) {
1572
+ retryCount++;
1573
+ const delay = calculateRetryDelay(retryCount);
1574
+ console.error(`[ClaudeClient] Stream overloaded (529), retrying in ${Math.round(delay)}ms... (attempt ${retryCount}/${maxStreamRetries}, overloaded ${overloadedCount}/${OVERLOADED_FALLBACK_THRESHOLD})`);
1575
+ await this.sleep(delay);
1576
+ continue;
1577
+ }
1578
+ }
1579
+ // 429: Rate limit
1580
+ if (errorStatus === 429) {
1581
+ const retryAfter = getRetryAfterHeader(error);
1582
+ const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 0;
1583
+ const overageReason = getOverageDisabledReason(error);
1584
+ if (overageReason) {
1585
+ console.error(`[ClaudeClient] Stream fast mode disabled: ${overageReason}`);
1586
+ }
1587
+ // retry-after < 20s: 直接等待,不计入重试次数
1588
+ if (retryAfterMs > 0 && retryAfterMs < FAST_RETRY_AFTER_THRESHOLD) {
1589
+ console.error(`[ClaudeClient] Stream rate limited, waiting ${retryAfterMs}ms (not counting as retry)`);
1590
+ await this.sleep(retryAfterMs);
1591
+ continue;
1592
+ }
1593
+ if (retryCount < maxStreamRetries) {
1594
+ retryCount++;
1595
+ const delay = retryAfterMs > 0 ? retryAfterMs : calculateRetryDelay(retryCount);
1596
+ console.error(`[ClaudeClient] Stream rate limited (429), retrying in ${Math.round(delay)}ms... (attempt ${retryCount}/${maxStreamRetries})`);
1597
+ await this.sleep(delay);
1598
+ continue;
1599
+ }
1600
+ }
1601
+ // 通用可重试
1602
+ const retryable = isRetryableStatus(error) || RETRYABLE_ERRORS.some((e) => errorType.includes(e) || error.message?.includes(e));
1603
+ if (retryable && retryCount < maxStreamRetries) {
1604
+ retryCount++;
1605
+ const delay = calculateRetryDelay(retryCount, getRetryAfterHeader(error));
1606
+ console.error(`[ClaudeClient] Stream creation failed (${errorType}), retrying in ${Math.round(delay)}ms... (attempt ${retryCount}/${maxStreamRetries})`);
1607
+ await this.sleep(delay);
1608
+ continue;
1609
+ }
1610
+ console.error('[ClaudeClient] Failed to create stream:', error.message);
1611
+ yield { type: 'error', error: error.message };
1612
+ return;
1613
+ }
1614
+ }
1615
+ if (!stream) {
1616
+ yield { type: 'error', error: 'Failed to create stream after retries' };
1617
+ return;
1618
+ }
1619
+ let inputTokens = 0;
1620
+ let outputTokens = 0;
1621
+ let cacheReadTokens = 0;
1622
+ let cacheCreationTokens = 0;
1623
+ let thinkingTokens = 0;
1624
+ // 流式空闲超时保护:如果连续 STREAM_IDLE_TIMEOUT_MS 没有收到任何事件,主动超时
1625
+ // 防止 OpenRouter 等第三方代理静默断连导致 for-await 永远阻塞
1626
+ // 5 分钟:大上下文(90K+ tokens)首次 cache_creation 时 API 响应较慢,
1627
+ // 加上 Opus thinking 阶段可能持续数分钟,需要足够的等待时间
1628
+ const STREAM_IDLE_TIMEOUT_MS = 300_000;
1629
+ try {
1630
+ // 包装 async iterator 添加空闲超时
1631
+ const streamWithTimeout = async function* (source, timeoutMs, signal) {
1632
+ const iterator = source[Symbol.asyncIterator]();
1633
+ while (true) {
1634
+ if (signal?.aborted)
1635
+ break;
1636
+ let timer;
1637
+ try {
1638
+ const result = await Promise.race([
1639
+ iterator.next(),
1640
+ new Promise((_, reject) => {
1641
+ timer = setTimeout(() => reject(new Error(`Stream idle timeout: no events received for ${timeoutMs / 1000}s`)), timeoutMs);
1642
+ }),
1643
+ ]);
1644
+ if (result.done)
1645
+ break;
1646
+ yield result.value;
1647
+ }
1648
+ finally {
1649
+ if (timer !== undefined)
1650
+ clearTimeout(timer);
1651
+ }
1652
+ }
1653
+ };
1654
+ for await (const event of streamWithTimeout(stream, STREAM_IDLE_TIMEOUT_MS, abortSignal)) {
1655
+ // 检查是否被中断
1656
+ if (abortSignal?.aborted) {
1657
+ // 尝试取消流
1658
+ try {
1659
+ stream.abort?.();
1660
+ }
1661
+ catch {
1662
+ // 忽略取消时的错误
1663
+ }
1664
+ yield { type: 'error', error: 'Request aborted by user' };
1665
+ return;
1666
+ }
1667
+ if (event.type === 'content_block_delta') {
1668
+ const delta = event.delta;
1669
+ if (delta.type === 'text_delta') {
1670
+ yield { type: 'text', text: delta.text };
1671
+ }
1672
+ else if (delta.type === 'thinking_delta') {
1673
+ // Extended Thinking delta
1674
+ yield { type: 'thinking', thinking: delta.thinking };
1675
+ }
1676
+ else if (delta.type === 'input_json_delta') {
1677
+ yield { type: 'tool_use_delta', input: delta.partial_json };
1678
+ }
1679
+ }
1680
+ else if (event.type === 'content_block_start') {
1681
+ const block = event.content_block;
1682
+ if (block.type === 'tool_use') {
1683
+ yield { type: 'tool_use_start', id: block.id, name: block.name };
1684
+ }
1685
+ else if (block.type === 'server_tool_use') {
1686
+ // Server Tool (如 web_search) - 由 Anthropic 服务器执行
1687
+ // input 包含 server tool 的参数(如 web_search 的 { query: "..." })
1688
+ yield { type: 'server_tool_use_start', id: block.id, name: block.name, input: JSON.stringify(block.input || {}) };
1689
+ }
1690
+ else if (block.type === 'thinking') {
1691
+ // Extended Thinking block started
1692
+ if (this.debug) {
1693
+ console.log('[ClaudeClient] Extended Thinking block started');
1694
+ }
1695
+ }
1696
+ }
1697
+ else if (event.type === 'content_block_stop') {
1698
+ // 检查是否是 web_search_tool_result
1699
+ // 注意:web_search_tool_result 作为完整块返回,需要从 finalMessage 中获取
1700
+ }
1701
+ else if (event.type === 'message_delta') {
1702
+ const delta = event;
1703
+ if (delta.usage) {
1704
+ outputTokens = delta.usage.output_tokens || 0;
1705
+ }
1706
+ }
1707
+ else if (event.type === 'message_start') {
1708
+ const msg = event.message;
1709
+ if (msg?.usage) {
1710
+ inputTokens = msg.usage.input_tokens || 0;
1711
+ cacheReadTokens = msg.usage.cache_read_input_tokens || 0;
1712
+ cacheCreationTokens = msg.usage.cache_creation_input_tokens || 0;
1713
+ }
1714
+ }
1715
+ else if (event.type === 'message_stop') {
1716
+ // 从最终消息中获取 web_search_tool_result 和 thinking_tokens
1717
+ const finalMessage = await stream.finalMessage();
1718
+ // 提取 web_search_tool_result(Server Tool 的搜索结果在 finalMessage 中)
1719
+ if (finalMessage?.content) {
1720
+ for (const block of finalMessage.content) {
1721
+ if (block.type === 'web_search_tool_result') {
1722
+ yield { type: 'web_search_result', data: block };
1723
+ }
1724
+ }
1725
+ }
1726
+ if (finalMessage?.usage) {
1727
+ // 优先使用 usage 中的 thinking_tokens
1728
+ thinkingTokens = finalMessage.usage.thinking_tokens || 0;
1729
+ // 如果有 thinking 内容但没有 tokens 统计,记录警告
1730
+ if (this.debug && finalMessage.thinking && !thinkingTokens) {
1731
+ console.warn('[ClaudeClient] Thinking content present but no thinking_tokens in usage');
1732
+ }
1733
+ }
1734
+ this.updateUsage({
1735
+ inputTokens,
1736
+ outputTokens,
1737
+ cacheReadTokens,
1738
+ cacheCreationTokens,
1739
+ thinkingTokens,
1740
+ });
1741
+ // 对齐官方 bR7:检测缓存命中率下降并输出警告
1742
+ reportCacheBreak(this.querySource, cacheReadTokens, cacheCreationTokens, this.debug);
1743
+ yield {
1744
+ type: 'usage',
1745
+ usage: {
1746
+ inputTokens,
1747
+ outputTokens,
1748
+ cacheReadTokens,
1749
+ cacheCreationTokens,
1750
+ thinkingTokens,
1751
+ },
1752
+ };
1753
+ // v2.1.6: 获取响应头用于速率限制警告
1754
+ // 对齐官方 pG0 函数:在流结束后获取响应头
1755
+ try {
1756
+ const { response } = await stream.withResponse();
1757
+ if (response?.headers) {
1758
+ yield { type: 'response_headers', headers: response.headers };
1759
+ }
1760
+ }
1761
+ catch (headerError) {
1762
+ // 获取响应头失败不应影响正常流程
1763
+ if (this.debug) {
1764
+ console.warn('[ClaudeClient] Failed to get response headers:', headerError);
1765
+ }
1766
+ }
1767
+ yield { type: 'stop', stopReason: finalMessage?.stop_reason || 'end_turn' };
1768
+ }
1769
+ else if (event.type === 'error') {
1770
+ const errorEvent = event;
1771
+ console.error('[ClaudeClient] Stream error event:', errorEvent.error);
1772
+ yield { type: 'error', error: errorEvent.error?.message || 'Unknown stream error' };
1773
+ }
1774
+ }
1775
+ }
1776
+ catch (error) {
1777
+ // 增强错误日志,追踪 Connection error 的真正来源
1778
+ const errorCode = error.code || error.type || 'UNKNOWN';
1779
+ const errorStatus = error.status || error.statusCode || '';
1780
+ const errorCause = error.cause?.message || '';
1781
+ console.error(`[ClaudeClient] Stream processing error: ${error.message}`);
1782
+ console.error(`[ClaudeClient] Error details - code: ${errorCode}, status: ${errorStatus}, cause: ${errorCause}`);
1783
+ if (this.debug || error.message?.includes('Connection error')) {
1784
+ console.error('[ClaudeClient] Full error stack:', error.stack);
1785
+ if (error.cause) {
1786
+ console.error('[ClaudeClient] Error cause:', error.cause);
1787
+ }
1788
+ }
1789
+ yield { type: 'error', error: error.message };
1790
+ }
1791
+ }
1792
+ /**
1793
+ * 获取总使用统计
1794
+ */
1795
+ getUsageStats() {
1796
+ return { ...this.totalUsage };
1797
+ }
1798
+ /**
1799
+ * 获取格式化的成本字符串
1800
+ */
1801
+ getFormattedCost() {
1802
+ if (this.totalUsage.estimatedCost < 0.01) {
1803
+ return `$${(this.totalUsage.estimatedCost * 100).toFixed(2)}¢`;
1804
+ }
1805
+ return `$${this.totalUsage.estimatedCost.toFixed(4)}`;
1806
+ }
1807
+ /**
1808
+ * 重置使用统计
1809
+ */
1810
+ resetUsageStats() {
1811
+ this.totalUsage = {
1812
+ inputTokens: 0,
1813
+ outputTokens: 0,
1814
+ totalTokens: 0,
1815
+ estimatedCost: 0,
1816
+ };
1817
+ }
1818
+ setModel(model) {
1819
+ this.model = model;
1820
+ }
1821
+ getModel() {
1822
+ return this.model;
1823
+ }
1824
+ setMaxTokens(tokens) {
1825
+ this.maxTokens = tokens;
1826
+ }
1827
+ getMaxTokens() {
1828
+ return this.maxTokens;
1829
+ }
1830
+ /** 获取底层 Anthropic SDK 客户端(用于 cache keepalive 等低级操作) */
1831
+ getAnthropicClient() {
1832
+ return this.client;
1833
+ }
1834
+ /** 是否使用 OAuth 模式 */
1835
+ getIsOAuth() {
1836
+ return this.isOAuth;
1837
+ }
1838
+ }
1839
+ // 默认客户端实例 (延迟初始化以支持 OAuth)
1840
+ let _defaultClient = null;
1841
+ /**
1842
+ * 检查 OAuth scope 是否包含 user:inference
1843
+ * 官方 Anthropic OAuth 只有在有这个 scope 时才直接使用 OAuth token
1844
+ */
1845
+ function hasInferenceScope(scopes) {
1846
+ return Boolean(scopes?.includes('user:inference'));
1847
+ }
1848
+ /**
1849
+ * 获取默认客户端实例 (延迟初始化,自动使用 auth 模块的认证)
1850
+ */
1851
+ export function getDefaultClient() {
1852
+ if (!_defaultClient) {
1853
+ // 初始化认证并获取凭据
1854
+ initAuth();
1855
+ const auth = getAuth();
1856
+ const config = {};
1857
+ // 根据认证类型设置凭据
1858
+ if (auth) {
1859
+ if (auth.type === 'api_key' && auth.apiKey) {
1860
+ config.apiKey = auth.apiKey;
1861
+ }
1862
+ else if (auth.type === 'oauth') {
1863
+ // OAuth 模式:支持 accessToken 或 authToken(订阅模式)
1864
+ const oauthToken = auth.accessToken || auth.authToken;
1865
+ if (oauthToken) {
1866
+ // 关键修复:检查是否有 user:inference scope
1867
+ // 对齐原始参考实现,在有此 scope 时直接使用 OAuth access token
1868
+ // 注意:auth.scope 或 auth.scopes 都可能存在
1869
+ const scopes = auth.scope || auth.scopes;
1870
+ if (hasInferenceScope(scopes)) {
1871
+ // 直接使用 OAuth access token 作为 authToken
1872
+ config.authToken = oauthToken;
1873
+ }
1874
+ else {
1875
+ // 没有 inference scope,需要使用创建的 API Key
1876
+ if (auth.oauthApiKey) {
1877
+ config.apiKey = auth.oauthApiKey;
1878
+ }
1879
+ }
1880
+ }
1881
+ }
1882
+ }
1883
+ _defaultClient = new ClaudeClient(config);
1884
+ }
1885
+ return _defaultClient;
1886
+ }
1887
+ /**
1888
+ * 重置默认客户端(用于认证变更后刷新)
1889
+ */
1890
+ export function resetDefaultClient() {
1891
+ _defaultClient = null;
1892
+ }
1893
+ /**
1894
+ * 创建指定模型的客户端(复用 auth 模块的认证)
1895
+ * 用于需要使用不同模型(如 Haiku)的场景
1896
+ */
1897
+ export function createClientWithModel(model) {
1898
+ initAuth();
1899
+ const auth = getAuth();
1900
+ const config = {
1901
+ model,
1902
+ timeout: 300000, // 5分钟 API 请求超时
1903
+ };
1904
+ if (auth) {
1905
+ if (auth.type === 'api_key' && auth.apiKey) {
1906
+ config.apiKey = auth.apiKey;
1907
+ }
1908
+ else if (auth.type === 'oauth') {
1909
+ const oauthToken = auth.accessToken || auth.authToken;
1910
+ if (oauthToken) {
1911
+ const scopes = auth.scope || auth.scopes;
1912
+ if (hasInferenceScope(scopes)) {
1913
+ config.authToken = oauthToken;
1914
+ }
1915
+ else if (auth.oauthApiKey) {
1916
+ config.apiKey = auth.oauthApiKey;
1917
+ }
1918
+ }
1919
+ }
1920
+ }
1921
+ return new ClaudeClient(config);
1922
+ }
1923
+ // 保持向后兼容性,但不推荐直接使用
1924
+ // @deprecated 使用 getDefaultClient() 代替
1925
+ export const defaultClient = new Proxy({}, {
1926
+ get(_, prop) {
1927
+ return Reflect.get(getDefaultClient(), prop);
1928
+ }
1929
+ });
1930
+ //# sourceMappingURL=client.js.map