@xagent-ai/cli 1.2.2 → 1.3.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 (568) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -38
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -20
  3. package/.github/workflows/ci.yml +72 -0
  4. package/.github/workflows/release.yml +109 -0
  5. package/.gitmodules +3 -3
  6. package/README.md +326 -280
  7. package/README_CN.md +325 -279
  8. package/dist/ai-client/factory.d.ts +52 -0
  9. package/dist/ai-client/factory.d.ts.map +1 -0
  10. package/dist/ai-client/factory.js +132 -0
  11. package/dist/ai-client/factory.js.map +1 -0
  12. package/dist/ai-client/index.d.ts +20 -0
  13. package/dist/ai-client/index.d.ts.map +1 -0
  14. package/dist/ai-client/index.js +49 -0
  15. package/dist/ai-client/index.js.map +1 -0
  16. package/dist/ai-client/providers/anthropic.d.ts +57 -0
  17. package/dist/ai-client/providers/anthropic.d.ts.map +1 -0
  18. package/dist/ai-client/providers/anthropic.js +400 -0
  19. package/dist/ai-client/providers/anthropic.js.map +1 -0
  20. package/dist/ai-client/providers/openai.d.ts +57 -0
  21. package/dist/ai-client/providers/openai.d.ts.map +1 -0
  22. package/dist/ai-client/providers/openai.js +286 -0
  23. package/dist/ai-client/providers/openai.js.map +1 -0
  24. package/dist/ai-client/providers/remote.d.ts +111 -0
  25. package/dist/ai-client/providers/remote.d.ts.map +1 -0
  26. package/dist/ai-client/providers/remote.js +351 -0
  27. package/dist/ai-client/providers/remote.js.map +1 -0
  28. package/dist/ai-client/registry.d.ts +51 -0
  29. package/dist/ai-client/registry.d.ts.map +1 -0
  30. package/dist/ai-client/registry.js +81 -0
  31. package/dist/ai-client/registry.js.map +1 -0
  32. package/dist/ai-client/types.d.ts +260 -0
  33. package/dist/ai-client/types.d.ts.map +1 -0
  34. package/dist/ai-client/types.js +73 -0
  35. package/dist/ai-client/types.js.map +1 -0
  36. package/dist/ai-client-factory.d.ts +62 -0
  37. package/dist/ai-client-factory.d.ts.map +1 -0
  38. package/dist/ai-client-factory.js +157 -0
  39. package/dist/ai-client-factory.js.map +1 -0
  40. package/dist/auth.d.ts +23 -1
  41. package/dist/auth.d.ts.map +1 -1
  42. package/dist/auth.js +160 -168
  43. package/dist/auth.js.map +1 -1
  44. package/dist/cancellation.d.ts +5 -4
  45. package/dist/cancellation.d.ts.map +1 -1
  46. package/dist/cancellation.js +55 -32
  47. package/dist/cancellation.js.map +1 -1
  48. package/dist/checkpoint.d.ts +1 -1
  49. package/dist/checkpoint.d.ts.map +1 -1
  50. package/dist/checkpoint.js +2 -2
  51. package/dist/checkpoint.js.map +1 -1
  52. package/dist/cli.js +626 -13
  53. package/dist/cli.js.map +1 -1
  54. package/dist/config.d.ts +10 -4
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +62 -25
  57. package/dist/config.js.map +1 -1
  58. package/dist/context-compressor.d.ts +81 -16
  59. package/dist/context-compressor.d.ts.map +1 -1
  60. package/dist/context-compressor.js +712 -153
  61. package/dist/context-compressor.js.map +1 -1
  62. package/dist/gui-subagent/action-parser/actionParser.d.ts.map +1 -1
  63. package/dist/gui-subagent/action-parser/actionParser.js +4 -2
  64. package/dist/gui-subagent/action-parser/actionParser.js.map +1 -1
  65. package/dist/gui-subagent/agent/gui-agent.d.ts +29 -2
  66. package/dist/gui-subagent/agent/gui-agent.d.ts.map +1 -1
  67. package/dist/gui-subagent/agent/gui-agent.js +87 -45
  68. package/dist/gui-subagent/agent/gui-agent.js.map +1 -1
  69. package/dist/gui-subagent/index.d.ts +16 -1
  70. package/dist/gui-subagent/index.d.ts.map +1 -1
  71. package/dist/gui-subagent/index.js +4 -0
  72. package/dist/gui-subagent/index.js.map +1 -1
  73. package/dist/gui-subagent/operator/base-operator.d.ts.map +1 -1
  74. package/dist/gui-subagent/operator/base-operator.js +0 -1
  75. package/dist/gui-subagent/operator/base-operator.js.map +1 -1
  76. package/dist/gui-subagent/operator/computer-operator.d.ts.map +1 -1
  77. package/dist/gui-subagent/operator/computer-operator.js +29 -8
  78. package/dist/gui-subagent/operator/computer-operator.js.map +1 -1
  79. package/dist/gui-subagent/types/actions.d.ts +1 -1
  80. package/dist/gui-subagent/types/actions.d.ts.map +1 -1
  81. package/dist/gui-subagent/types/actions.js +0 -1
  82. package/dist/gui-subagent/types/actions.js.map +1 -1
  83. package/dist/gui-subagent/types/operator.d.ts +1 -1
  84. package/dist/gui-subagent/types/operator.d.ts.map +1 -1
  85. package/dist/index.d.ts +1 -2
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +1 -2
  88. package/dist/index.js.map +1 -1
  89. package/dist/input-processor.d.ts.map +1 -1
  90. package/dist/input-processor.js +6 -3
  91. package/dist/input-processor.js.map +1 -1
  92. package/dist/mcp.d.ts +5 -0
  93. package/dist/mcp.d.ts.map +1 -1
  94. package/dist/mcp.js +81 -35
  95. package/dist/mcp.js.map +1 -1
  96. package/dist/ripgrep.d.ts +29 -0
  97. package/dist/ripgrep.d.ts.map +1 -0
  98. package/dist/ripgrep.js +292 -0
  99. package/dist/ripgrep.js.map +1 -0
  100. package/dist/session.d.ts +23 -7
  101. package/dist/session.d.ts.map +1 -1
  102. package/dist/session.js +624 -243
  103. package/dist/session.js.map +1 -1
  104. package/dist/shell.d.ts +33 -0
  105. package/dist/shell.d.ts.map +1 -0
  106. package/dist/shell.js +125 -0
  107. package/dist/shell.js.map +1 -0
  108. package/dist/skill-installer.d.ts +38 -0
  109. package/dist/skill-installer.d.ts.map +1 -0
  110. package/dist/skill-installer.js +447 -0
  111. package/dist/skill-installer.js.map +1 -0
  112. package/dist/skill-invoker.d.ts +7 -1
  113. package/dist/skill-invoker.d.ts.map +1 -1
  114. package/dist/skill-invoker.js +34 -13
  115. package/dist/skill-invoker.js.map +1 -1
  116. package/dist/skill-loader.d.ts +8 -3
  117. package/dist/skill-loader.d.ts.map +1 -1
  118. package/dist/skill-loader.js +46 -44
  119. package/dist/skill-loader.js.map +1 -1
  120. package/dist/skill-manager.d.ts +85 -0
  121. package/dist/skill-manager.d.ts.map +1 -0
  122. package/dist/skill-manager.js +340 -0
  123. package/dist/skill-manager.js.map +1 -0
  124. package/dist/slash-commands.d.ts +38 -1
  125. package/dist/slash-commands.d.ts.map +1 -1
  126. package/dist/slash-commands.js +912 -296
  127. package/dist/slash-commands.js.map +1 -1
  128. package/dist/smart-approval.d.ts.map +1 -1
  129. package/dist/smart-approval.js +67 -55
  130. package/dist/smart-approval.js.map +1 -1
  131. package/dist/system-prompt-generator.d.ts +6 -0
  132. package/dist/system-prompt-generator.d.ts.map +1 -1
  133. package/dist/system-prompt-generator.js +84 -34
  134. package/dist/system-prompt-generator.js.map +1 -1
  135. package/dist/terminal.d.ts +28 -0
  136. package/dist/terminal.d.ts.map +1 -0
  137. package/dist/terminal.js +82 -0
  138. package/dist/terminal.js.map +1 -0
  139. package/dist/tools.d.ts +23 -7
  140. package/dist/tools.d.ts.map +1 -1
  141. package/dist/tools.js +797 -437
  142. package/dist/tools.js.map +1 -1
  143. package/dist/truncate.d.ts +55 -0
  144. package/dist/truncate.d.ts.map +1 -0
  145. package/dist/truncate.js +130 -0
  146. package/dist/truncate.js.map +1 -0
  147. package/dist/types.d.ts +27 -9
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/update.d.ts.map +1 -1
  150. package/dist/update.js +17 -28
  151. package/dist/update.js.map +1 -1
  152. package/dist/workflow.d.ts +5 -1
  153. package/dist/workflow.d.ts.map +1 -1
  154. package/dist/workflow.js +60 -47
  155. package/dist/workflow.js.map +1 -1
  156. package/docs/architecture/mcp-integration-guide.md +304 -194
  157. package/docs/architecture/overview.md +169 -169
  158. package/docs/architecture/tool-system-design.md +134 -134
  159. package/docs/cli/commands.md +349 -238
  160. package/docs/smart-mode.md +281 -281
  161. package/docs/third-party-models.md +439 -439
  162. package/find-skills/SKILL.md +133 -0
  163. package/package.json +89 -90
  164. package/scripts/install-ripgrep.js +241 -0
  165. package/src/ai-client/factory.ts +151 -0
  166. package/src/ai-client/index.ts +61 -0
  167. package/src/ai-client/providers/anthropic.ts +466 -0
  168. package/src/ai-client/providers/openai.ts +342 -0
  169. package/src/ai-client/providers/remote.ts +436 -0
  170. package/src/ai-client/registry.ts +97 -0
  171. package/src/ai-client/types.ts +345 -0
  172. package/src/ai-client-factory.ts +204 -0
  173. package/src/auth.ts +663 -614
  174. package/src/cancellation.ts +205 -176
  175. package/src/checkpoint.ts +219 -219
  176. package/src/cli.ts +1406 -743
  177. package/src/config.ts +341 -297
  178. package/src/context-compressor.ts +982 -290
  179. package/src/conversation.ts +288 -288
  180. package/src/gui-subagent/action-parser/actionParser.ts +318 -315
  181. package/src/gui-subagent/action-parser/constants.ts +14 -14
  182. package/src/gui-subagent/action-parser/index.ts +8 -8
  183. package/src/gui-subagent/action-parser/types.ts +31 -31
  184. package/src/gui-subagent/agent/gui-agent.ts +1151 -1089
  185. package/src/gui-subagent/agent/index.ts +5 -5
  186. package/src/gui-subagent/index.ts +177 -163
  187. package/src/gui-subagent/operator/base-operator.ts +244 -245
  188. package/src/gui-subagent/operator/computer-operator.ts +540 -520
  189. package/src/gui-subagent/operator/index.ts +6 -6
  190. package/src/gui-subagent/types/actions.ts +260 -262
  191. package/src/gui-subagent/types/index.ts +6 -6
  192. package/src/gui-subagent/types/operator.ts +106 -106
  193. package/src/gui-subagent/utils.ts +51 -51
  194. package/src/index.ts +17 -18
  195. package/src/input-processor.ts +6 -3
  196. package/src/logger.ts +438 -438
  197. package/src/mcp.ts +730 -682
  198. package/src/memory.ts +344 -344
  199. package/src/ripgrep.ts +368 -0
  200. package/src/session-manager.ts +308 -308
  201. package/src/session.ts +948 -386
  202. package/src/shell.ts +133 -0
  203. package/src/skill-installer.ts +518 -0
  204. package/src/skill-invoker.ts +960 -935
  205. package/src/skill-loader.ts +501 -496
  206. package/src/skill-manager.ts +384 -0
  207. package/src/slash-commands.ts +2181 -1389
  208. package/src/smart-approval.ts +117 -73
  209. package/src/system-prompt-generator.ts +89 -34
  210. package/src/terminal.ts +96 -0
  211. package/src/theme.ts +738 -738
  212. package/src/tools.ts +1336 -773
  213. package/src/truncate.ts +173 -0
  214. package/src/types.ts +219 -198
  215. package/src/update.ts +22 -32
  216. package/src/workflow.ts +523 -508
  217. package/tsconfig.json +22 -22
  218. package/vitest.config.ts +19 -19
  219. package/dist/ai-client.d.ts +0 -86
  220. package/dist/ai-client.d.ts.map +0 -1
  221. package/dist/ai-client.js +0 -1372
  222. package/dist/ai-client.js.map +0 -1
  223. package/dist/gui-subagent/operator/browser-operator.d.ts +0 -36
  224. package/dist/gui-subagent/operator/browser-operator.d.ts.map +0 -1
  225. package/dist/gui-subagent/operator/browser-operator.js +0 -306
  226. package/dist/gui-subagent/operator/browser-operator.js.map +0 -1
  227. package/dist/gui-subagent/operator/desktop-operator.d.ts +0 -55
  228. package/dist/gui-subagent/operator/desktop-operator.d.ts.map +0 -1
  229. package/dist/gui-subagent/operator/desktop-operator.js +0 -527
  230. package/dist/gui-subagent/operator/desktop-operator.js.map +0 -1
  231. package/dist/hook.d.ts +0 -73
  232. package/dist/hook.d.ts.map +0 -1
  233. package/dist/hook.js +0 -156
  234. package/dist/hook.js.map +0 -1
  235. package/dist/input-history.d.ts +0 -24
  236. package/dist/input-history.d.ts.map +0 -1
  237. package/dist/input-history.js +0 -94
  238. package/dist/input-history.js.map +0 -1
  239. package/dist/keyboard-manager.d.ts +0 -151
  240. package/dist/keyboard-manager.d.ts.map +0 -1
  241. package/dist/keyboard-manager.js +0 -396
  242. package/dist/keyboard-manager.js.map +0 -1
  243. package/dist/print-system-prompt.d.ts +0 -2
  244. package/dist/print-system-prompt.d.ts.map +0 -1
  245. package/dist/print-system-prompt.js +0 -40
  246. package/dist/print-system-prompt.js.map +0 -1
  247. package/dist/remote-ai-client.d.ts +0 -104
  248. package/dist/remote-ai-client.d.ts.map +0 -1
  249. package/dist/remote-ai-client.js +0 -552
  250. package/dist/remote-ai-client.js.map +0 -1
  251. package/dist/sdk-output-adapter.d.ts +0 -232
  252. package/dist/sdk-output-adapter.d.ts.map +0 -1
  253. package/dist/sdk-output-adapter.js +0 -636
  254. package/dist/sdk-output-adapter.js.map +0 -1
  255. package/dist/sdk-session-v2.d.ts +0 -13
  256. package/dist/sdk-session-v2.d.ts.map +0 -1
  257. package/dist/sdk-session-v2.js +0 -46
  258. package/dist/sdk-session-v2.js.map +0 -1
  259. package/dist/sdk-session.d.ts +0 -13
  260. package/dist/sdk-session.d.ts.map +0 -1
  261. package/dist/sdk-session.js +0 -48
  262. package/dist/sdk-session.js.map +0 -1
  263. package/dist/test-boundary-conditions.d.ts.map +0 -1
  264. package/dist/test-boundary-conditions.js.map +0 -1
  265. package/dist/test-cancellation-fix.d.ts.map +0 -1
  266. package/dist/test-cancellation-fix.js.map +0 -1
  267. package/dist/test-input-history.d.ts.map +0 -1
  268. package/dist/test-input-history.js.map +0 -1
  269. package/dist/test-interaction-flow.d.ts.map +0 -1
  270. package/dist/test-interaction-flow.js.map +0 -1
  271. package/dist/test-quick.d.ts.map +0 -1
  272. package/dist/test-quick.js.map +0 -1
  273. package/dist/test-user-interaction.d.ts.map +0 -1
  274. package/dist/test-user-interaction.js.map +0 -1
  275. package/dist/tools/edit-diff.d.ts +0 -32
  276. package/dist/tools/edit-diff.d.ts.map +0 -1
  277. package/dist/tools/edit-diff.js +0 -185
  278. package/dist/tools/edit-diff.js.map +0 -1
  279. package/dist/tools/edit.d.ts +0 -11
  280. package/dist/tools/edit.d.ts.map +0 -1
  281. package/dist/tools/edit.js +0 -129
  282. package/dist/tools/edit.js.map +0 -1
  283. package/dist/unified-session.d.ts +0 -42
  284. package/dist/unified-session.d.ts.map +0 -1
  285. package/dist/unified-session.js +0 -271
  286. package/dist/unified-session.js.map +0 -1
  287. package/skills/.claude-plugin/marketplace.json +0 -45
  288. package/skills/README.md +0 -94
  289. package/skills/THIRD_PARTY_NOTICES.md +0 -405
  290. package/skills/skills/algorithmic-art/LICENSE.txt +0 -202
  291. package/skills/skills/algorithmic-art/SKILL.md +0 -405
  292. package/skills/skills/algorithmic-art/templates/generator_template.js +0 -223
  293. package/skills/skills/algorithmic-art/templates/viewer.html +0 -599
  294. package/skills/skills/brand-guidelines/LICENSE.txt +0 -202
  295. package/skills/skills/brand-guidelines/SKILL.md +0 -73
  296. package/skills/skills/canvas-design/LICENSE.txt +0 -202
  297. package/skills/skills/canvas-design/SKILL.md +0 -130
  298. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
  299. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  300. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  301. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
  302. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  303. package/skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
  304. package/skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  305. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  306. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
  307. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  308. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  309. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  310. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
  311. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  312. package/skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
  313. package/skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  314. package/skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
  315. package/skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  316. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  317. package/skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
  318. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  319. package/skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
  320. package/skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  321. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  322. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
  323. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  324. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  325. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  326. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  327. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  328. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  329. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  330. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  331. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
  332. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  333. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  334. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  335. package/skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
  336. package/skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  337. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  338. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
  339. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  340. package/skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  341. package/skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  342. package/skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
  343. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
  344. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  345. package/skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  346. package/skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  347. package/skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  348. package/skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
  349. package/skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  350. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  351. package/skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
  352. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  353. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
  354. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  355. package/skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  356. package/skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
  357. package/skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  358. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  359. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
  360. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
  361. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  362. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  363. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
  364. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  365. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
  366. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  367. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  368. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
  369. package/skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  370. package/skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
  371. package/skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  372. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  373. package/skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  374. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  375. package/skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
  376. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  377. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
  378. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  379. package/skills/skills/doc-coauthoring/SKILL.md +0 -375
  380. package/skills/skills/docx/LICENSE.txt +0 -30
  381. package/skills/skills/docx/SKILL.md +0 -197
  382. package/skills/skills/docx/docx-js.md +0 -350
  383. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  384. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  385. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  386. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  387. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  388. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  389. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  390. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  391. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  392. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  393. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  394. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  395. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  396. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  397. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  398. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  399. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  400. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  401. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  402. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  403. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  404. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  405. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  406. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  407. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  408. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  409. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  410. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  411. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  412. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  413. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  414. package/skills/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
  415. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  416. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  417. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  418. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  419. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  420. package/skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  421. package/skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  422. package/skills/skills/docx/ooxml/scripts/pack.py +0 -159
  423. package/skills/skills/docx/ooxml/scripts/unpack.py +0 -29
  424. package/skills/skills/docx/ooxml/scripts/validate.py +0 -69
  425. package/skills/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
  426. package/skills/skills/docx/ooxml/scripts/validation/base.py +0 -951
  427. package/skills/skills/docx/ooxml/scripts/validation/docx.py +0 -274
  428. package/skills/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
  429. package/skills/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
  430. package/skills/skills/docx/ooxml.md +0 -610
  431. package/skills/skills/docx/scripts/__init__.py +0 -1
  432. package/skills/skills/docx/scripts/document.py +0 -1276
  433. package/skills/skills/docx/scripts/templates/comments.xml +0 -3
  434. package/skills/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  435. package/skills/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  436. package/skills/skills/docx/scripts/templates/commentsIds.xml +0 -3
  437. package/skills/skills/docx/scripts/templates/people.xml +0 -3
  438. package/skills/skills/docx/scripts/utilities.py +0 -374
  439. package/skills/skills/frontend-design/LICENSE.txt +0 -177
  440. package/skills/skills/frontend-design/SKILL.md +0 -42
  441. package/skills/skills/internal-comms/LICENSE.txt +0 -202
  442. package/skills/skills/internal-comms/SKILL.md +0 -32
  443. package/skills/skills/internal-comms/examples/3p-updates.md +0 -47
  444. package/skills/skills/internal-comms/examples/company-newsletter.md +0 -65
  445. package/skills/skills/internal-comms/examples/faq-answers.md +0 -30
  446. package/skills/skills/internal-comms/examples/general-comms.md +0 -16
  447. package/skills/skills/mcp-builder/LICENSE.txt +0 -202
  448. package/skills/skills/mcp-builder/SKILL.md +0 -236
  449. package/skills/skills/mcp-builder/reference/evaluation.md +0 -602
  450. package/skills/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  451. package/skills/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  452. package/skills/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  453. package/skills/skills/mcp-builder/scripts/connections.py +0 -151
  454. package/skills/skills/mcp-builder/scripts/evaluation.py +0 -373
  455. package/skills/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  456. package/skills/skills/mcp-builder/scripts/requirements.txt +0 -2
  457. package/skills/skills/pdf/LICENSE.txt +0 -30
  458. package/skills/skills/pdf/SKILL.md +0 -294
  459. package/skills/skills/pdf/forms.md +0 -205
  460. package/skills/skills/pdf/reference.md +0 -612
  461. package/skills/skills/pdf/scripts/check_bounding_boxes.py +0 -70
  462. package/skills/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
  463. package/skills/skills/pdf/scripts/check_fillable_fields.py +0 -12
  464. package/skills/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
  465. package/skills/skills/pdf/scripts/create_validation_image.py +0 -41
  466. package/skills/skills/pdf/scripts/extract_form_field_info.py +0 -152
  467. package/skills/skills/pdf/scripts/fill_fillable_fields.py +0 -114
  468. package/skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
  469. package/skills/skills/pptx/LICENSE.txt +0 -30
  470. package/skills/skills/pptx/SKILL.md +0 -484
  471. package/skills/skills/pptx/html2pptx.md +0 -625
  472. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  473. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  474. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  475. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  476. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  477. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  478. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  479. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  480. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  481. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  482. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  483. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  484. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  485. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  486. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  487. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  488. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  489. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  490. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  491. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  492. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  493. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  494. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  495. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  496. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  497. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  498. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  499. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  500. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  501. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  502. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  503. package/skills/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
  504. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  505. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  506. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  507. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  508. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  509. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  510. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  511. package/skills/skills/pptx/ooxml/scripts/pack.py +0 -159
  512. package/skills/skills/pptx/ooxml/scripts/unpack.py +0 -29
  513. package/skills/skills/pptx/ooxml/scripts/validate.py +0 -69
  514. package/skills/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
  515. package/skills/skills/pptx/ooxml/scripts/validation/base.py +0 -951
  516. package/skills/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
  517. package/skills/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
  518. package/skills/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
  519. package/skills/skills/pptx/ooxml.md +0 -427
  520. package/skills/skills/pptx/scripts/html2pptx.js +0 -979
  521. package/skills/skills/pptx/scripts/inventory.py +0 -1020
  522. package/skills/skills/pptx/scripts/rearrange.py +0 -231
  523. package/skills/skills/pptx/scripts/replace.py +0 -385
  524. package/skills/skills/pptx/scripts/thumbnail.py +0 -450
  525. package/skills/skills/skill-creator/LICENSE.txt +0 -202
  526. package/skills/skills/skill-creator/SKILL.md +0 -356
  527. package/skills/skills/skill-creator/references/output-patterns.md +0 -82
  528. package/skills/skills/skill-creator/references/workflows.md +0 -28
  529. package/skills/skills/skill-creator/scripts/init_skill.py +0 -303
  530. package/skills/skills/skill-creator/scripts/package_skill.py +0 -110
  531. package/skills/skills/skill-creator/scripts/quick_validate.py +0 -95
  532. package/skills/skills/slack-gif-creator/LICENSE.txt +0 -202
  533. package/skills/skills/slack-gif-creator/SKILL.md +0 -254
  534. package/skills/skills/slack-gif-creator/core/easing.py +0 -234
  535. package/skills/skills/slack-gif-creator/core/frame_composer.py +0 -176
  536. package/skills/skills/slack-gif-creator/core/gif_builder.py +0 -269
  537. package/skills/skills/slack-gif-creator/core/validators.py +0 -136
  538. package/skills/skills/slack-gif-creator/requirements.txt +0 -4
  539. package/skills/skills/theme-factory/LICENSE.txt +0 -202
  540. package/skills/skills/theme-factory/SKILL.md +0 -59
  541. package/skills/skills/theme-factory/theme-showcase.pdf +0 -0
  542. package/skills/skills/theme-factory/themes/arctic-frost.md +0 -19
  543. package/skills/skills/theme-factory/themes/botanical-garden.md +0 -19
  544. package/skills/skills/theme-factory/themes/desert-rose.md +0 -19
  545. package/skills/skills/theme-factory/themes/forest-canopy.md +0 -19
  546. package/skills/skills/theme-factory/themes/golden-hour.md +0 -19
  547. package/skills/skills/theme-factory/themes/midnight-galaxy.md +0 -19
  548. package/skills/skills/theme-factory/themes/modern-minimalist.md +0 -19
  549. package/skills/skills/theme-factory/themes/ocean-depths.md +0 -19
  550. package/skills/skills/theme-factory/themes/sunset-boulevard.md +0 -19
  551. package/skills/skills/theme-factory/themes/tech-innovation.md +0 -19
  552. package/skills/skills/web-artifacts-builder/LICENSE.txt +0 -202
  553. package/skills/skills/web-artifacts-builder/SKILL.md +0 -74
  554. package/skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
  555. package/skills/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -322
  556. package/skills/skills/webapp-testing/LICENSE.txt +0 -202
  557. package/skills/skills/webapp-testing/SKILL.md +0 -96
  558. package/skills/skills/webapp-testing/examples/console_logging.py +0 -35
  559. package/skills/skills/webapp-testing/examples/element_discovery.py +0 -40
  560. package/skills/skills/webapp-testing/examples/static_html_automation.py +0 -33
  561. package/skills/skills/webapp-testing/scripts/with_server.py +0 -106
  562. package/skills/skills/xlsx/LICENSE.txt +0 -30
  563. package/skills/skills/xlsx/SKILL.md +0 -289
  564. package/skills/skills/xlsx/recalc.py +0 -178
  565. package/skills/spec/agent-skills-spec.md +0 -3
  566. package/skills/template/SKILL.md +0 -6
  567. package/src/ai-client.ts +0 -1560
  568. package/src/remote-ai-client.ts +0 -664
@@ -0,0 +1,132 @@
1
+ import { isOpenAIConfig, isAnthropicConfig, isRemoteConfig } from './types.js';
2
+ import { createOpenAIProvider } from './providers/openai.js';
3
+ import { createAnthropicProvider } from './providers/anthropic.js';
4
+ import { createRemoteProvider } from './providers/remote.js';
5
+ import { getAllModels, listProviderTypes } from './registry.js';
6
+ // ============================================================================
7
+ // Provider Factory
8
+ // ============================================================================
9
+ /**
10
+ * AI Provider Factory
11
+ * Creates provider instances based on configuration
12
+ */
13
+ export class ProviderFactory {
14
+ /**
15
+ * Create a provider instance from configuration
16
+ */
17
+ static create(config) {
18
+ if (isOpenAIConfig(config)) {
19
+ return createOpenAIProvider(config);
20
+ }
21
+ if (isAnthropicConfig(config)) {
22
+ return createAnthropicProvider(config);
23
+ }
24
+ if (isRemoteConfig(config)) {
25
+ return createRemoteProvider(config);
26
+ }
27
+ throw new Error(`Unknown provider type: ${config.type}`);
28
+ }
29
+ /**
30
+ * Create a remote provider instance (with task management)
31
+ */
32
+ static createRemote(config) {
33
+ if (!isRemoteConfig(config)) {
34
+ throw new Error('createRemote requires a remote configuration');
35
+ }
36
+ return createRemoteProvider(config);
37
+ }
38
+ /**
39
+ * Get all available models
40
+ */
41
+ static getModels() {
42
+ return getAllModels();
43
+ }
44
+ /**
45
+ * Get available provider types
46
+ */
47
+ static getProviderTypes() {
48
+ return listProviderTypes();
49
+ }
50
+ /**
51
+ * Check if provider type is supported
52
+ */
53
+ static isSupported(type) {
54
+ const types = listProviderTypes();
55
+ return types.includes(type);
56
+ }
57
+ /**
58
+ * Get default configuration for a provider type
59
+ */
60
+ static getDefaultConfig(type, apiKey, baseUrl) {
61
+ switch (type) {
62
+ case 'openai':
63
+ return {
64
+ type: 'openai',
65
+ apiKey,
66
+ baseUrl: baseUrl || 'https://api.openai.com/v1',
67
+ };
68
+ case 'anthropic':
69
+ return {
70
+ type: 'anthropic',
71
+ apiKey,
72
+ baseUrl: baseUrl || 'https://api.anthropic.com',
73
+ };
74
+ case 'remote':
75
+ return {
76
+ type: 'remote',
77
+ authToken: apiKey,
78
+ baseUrl: baseUrl || 'https://app.xagent.cn',
79
+ };
80
+ default:
81
+ throw new Error(`Unknown provider type: ${type}`);
82
+ }
83
+ }
84
+ }
85
+ // ============================================================================
86
+ // Factory Helpers
87
+ // ============================================================================
88
+ /**
89
+ * Create OpenAI provider with configuration
90
+ */
91
+ export function createOpenAI(apiKey, baseUrl, model) {
92
+ return ProviderFactory.create({
93
+ type: 'openai',
94
+ apiKey,
95
+ baseUrl,
96
+ model,
97
+ });
98
+ }
99
+ /**
100
+ * Create Anthropic provider with configuration
101
+ */
102
+ export function createAnthropic(apiKey, baseUrl, model) {
103
+ return ProviderFactory.create({
104
+ type: 'anthropic',
105
+ apiKey,
106
+ baseUrl,
107
+ model,
108
+ });
109
+ }
110
+ /**
111
+ * Create Remote provider with configuration
112
+ */
113
+ export function createRemote(authToken, baseUrl) {
114
+ return ProviderFactory.create({
115
+ type: 'remote',
116
+ authToken,
117
+ baseUrl,
118
+ });
119
+ }
120
+ /**
121
+ * Get all available models
122
+ */
123
+ export function getModels() {
124
+ return ProviderFactory.getModels();
125
+ }
126
+ /**
127
+ * Get available provider types
128
+ */
129
+ export function getProviderTypes() {
130
+ return ProviderFactory.getProviderTypes();
131
+ }
132
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/ai-client/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhE,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAgB;QAC5B,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0BAA2B,MAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAgB;QAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS;QACd,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QACrB,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,MAAe,EAAE,OAAgB;QACrE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM;oBACN,OAAO,EAAE,OAAO,IAAI,2BAA2B;iBAChD,CAAC;YAEJ,KAAK,WAAW;gBACd,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,MAAM;oBACN,OAAO,EAAE,OAAO,IAAI,2BAA2B;iBAChD,CAAC;YAEJ,KAAK,QAAQ;gBACX,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,MAAM;oBACjB,OAAO,EAAE,OAAO,IAAI,uBAAuB;iBAC5C,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,OAAgB,EAAE,KAAc;IAC5E,OAAO,eAAe,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,OAAO;QACP,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,OAAgB,EAAE,KAAc;IAC/E,OAAO,eAAe,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,WAAW;QACjB,MAAM;QACN,OAAO;QACP,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB,EAAE,OAAgB;IAC/D,OAAO,eAAe,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,QAAQ;QACd,SAAS;QACT,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,20 @@
1
+ export * from './types.js';
2
+ export * from './registry.js';
3
+ export * from './factory.js';
4
+ export { OpenAIProvider, createOpenAIProvider } from './providers/openai.js';
5
+ export { AnthropicProvider, createAnthropicProvider } from './providers/anthropic.js';
6
+ export { RemoteProvider, createRemoteProvider } from './providers/remote.js';
7
+ import type { AIProvider, AIConfig } from './types.js';
8
+ /**
9
+ * Create an AI provider from configuration
10
+ */
11
+ export declare function createProvider(config: AIConfig): AIProvider;
12
+ /**
13
+ * Get all available models
14
+ */
15
+ export declare function getAllModels(): import("./types.js").Model[];
16
+ /**
17
+ * Get available provider types
18
+ */
19
+ export declare function getProviderTypes(): string[];
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-client/index.ts"],"names":[],"mappings":"AAqBA,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAM7E,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,iCAE3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,aAE/B"}
@@ -0,0 +1,49 @@
1
+ // ============================================================================
2
+ // AI Module - Unified Entry Point
3
+ // ============================================================================
4
+ //
5
+ // This module provides a unified interface for different AI providers.
6
+ // Supports OpenAI, Anthropic (including MiniMax), and Remote (xAgent Web Service).
7
+ //
8
+ // Usage:
9
+ // import { createProvider, type AIProvider } from './ai-client/index.js';
10
+ //
11
+ // const provider = createProvider({
12
+ // type: 'anthropic',
13
+ // apiKey: process.env.ANTHROPIC_API_KEY,
14
+ // baseUrl: 'https://api.minimax.chat/anthropic', // MiniMax example
15
+ // });
16
+ //
17
+ // const response = await provider.complete(messages, { model: 'MiniMax-M2' });
18
+ //
19
+ // ============================================================================
20
+ // Types
21
+ export * from './types.js';
22
+ // Registry
23
+ export * from './registry.js';
24
+ // Factory
25
+ export * from './factory.js';
26
+ // Providers
27
+ export { OpenAIProvider, createOpenAIProvider } from './providers/openai.js';
28
+ export { AnthropicProvider, createAnthropicProvider } from './providers/anthropic.js';
29
+ export { RemoteProvider, createRemoteProvider } from './providers/remote.js';
30
+ import { ProviderFactory } from './factory.js';
31
+ /**
32
+ * Create an AI provider from configuration
33
+ */
34
+ export function createProvider(config) {
35
+ return ProviderFactory.create(config);
36
+ }
37
+ /**
38
+ * Get all available models
39
+ */
40
+ export function getAllModels() {
41
+ return ProviderFactory.getModels();
42
+ }
43
+ /**
44
+ * Get available provider types
45
+ */
46
+ export function getProviderTypes() {
47
+ return ProviderFactory.getProviderTypes();
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai-client/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAC/E,EAAE;AACF,uEAAuE;AACvE,mFAAmF;AACnF,EAAE;AACF,SAAS;AACT,4EAA4E;AAC5E,EAAE;AACF,sCAAsC;AACtC,yBAAyB;AACzB,6CAA6C;AAC7C,yEAAyE;AACzE,QAAQ;AACR,EAAE;AACF,iFAAiF;AACjF,EAAE;AACF,+EAA+E;AAE/E,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,WAAW;AACX,cAAc,eAAe,CAAC;AAE9B,UAAU;AACV,cAAc,cAAc,CAAC;AAE7B,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAO7E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB;IAC7C,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { AIProvider, AnthropicConfig, Message, CompletionOptions, CompletionResponse, StreamEvent, Model } from '../types';
2
+ /**
3
+ * Anthropic Compatible Provider
4
+ * Supports Anthropic official API and MiniMax (which uses Anthropic format)
5
+ */
6
+ export declare class AnthropicProvider implements AIProvider {
7
+ readonly type = "anthropic";
8
+ private client;
9
+ private config;
10
+ private abortController;
11
+ constructor(config: AnthropicConfig);
12
+ /**
13
+ * Get available models
14
+ */
15
+ getModels(): Promise<Model[]>;
16
+ /**
17
+ * Non-streaming completion
18
+ */
19
+ complete(messages: Message[], options?: CompletionOptions): Promise<CompletionResponse>;
20
+ /**
21
+ * Streaming completion
22
+ */
23
+ stream(messages: Message[], options?: CompletionOptions): AsyncIterable<StreamEvent>;
24
+ /**
25
+ * Abort ongoing request
26
+ */
27
+ abort(): void;
28
+ /**
29
+ * Close provider
30
+ */
31
+ close(): Promise<void>;
32
+ /**
33
+ * Convert messages to Anthropic format
34
+ */
35
+ private convertToAnthropicFormat;
36
+ /**
37
+ * Convert Anthropic response to unified format
38
+ */
39
+ private convertResponse;
40
+ /**
41
+ * Convert Anthropic stop reason to unified format
42
+ */
43
+ private convertStopReason;
44
+ /**
45
+ * Debug request output
46
+ */
47
+ private debugRequest;
48
+ /**
49
+ * Handle errors
50
+ */
51
+ private handleError;
52
+ }
53
+ /**
54
+ * Create Anthropic provider instance
55
+ */
56
+ export declare function createAnthropicProvider(config: AnthropicConfig): AIProvider;
57
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/ai-client/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,OAAO,EAEP,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,KAAK,EACN,MAAM,UAAU,CAAC;AASlB;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,CAAC,IAAI,eAAe;IAE5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAgC;gBAE3C,MAAM,EAAE,eAAe;IAyBnC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAInC;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,kBAAkB,CAAC;IAqD9B;;OAEG;IACI,MAAM,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,aAAa,CAAC,WAAW,CAAC;IAqG7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2EhC;;OAEG;IACH,OAAO,CAAC,eAAe;IA8DvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,WAAW;CASpB;AAuBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,CAE3E"}
@@ -0,0 +1,400 @@
1
+ import axios from 'axios';
2
+ import https from 'https';
3
+ import { getLogger } from '../../logger.js';
4
+ const logger = getLogger();
5
+ // ============================================================================
6
+ // Anthropic Provider
7
+ // ============================================================================
8
+ /**
9
+ * Anthropic Compatible Provider
10
+ * Supports Anthropic official API and MiniMax (which uses Anthropic format)
11
+ */
12
+ export class AnthropicProvider {
13
+ type = 'anthropic';
14
+ client;
15
+ config;
16
+ abortController = null;
17
+ constructor(config) {
18
+ this.config = config;
19
+ const headers = {
20
+ 'Content-Type': 'application/json',
21
+ 'anthropic-version': '2023-06-01',
22
+ };
23
+ if (config.apiKey) {
24
+ headers['x-api-key'] = config.apiKey;
25
+ }
26
+ // Add extra headers if provided (for MiniMax and other compatible APIs)
27
+ if (config.extraHeaders) {
28
+ Object.assign(headers, config.extraHeaders);
29
+ }
30
+ this.client = axios.create({
31
+ baseURL: config.baseUrl || 'https://api.anthropic.com',
32
+ headers,
33
+ timeout: 300000,
34
+ httpsAgent: new https.Agent({ rejectUnauthorized: false }),
35
+ });
36
+ }
37
+ /**
38
+ * Get available models
39
+ */
40
+ async getModels() {
41
+ return ANTHROPIC_MODELS;
42
+ }
43
+ /**
44
+ * Non-streaming completion
45
+ */
46
+ async complete(messages, options) {
47
+ const model = options?.model || this.config.model || 'claude-sonnet-4-20250514';
48
+ const showDebug = this.config.showDebugInfo ?? false;
49
+ const { system, messages: anthropicMessages } = this.convertToAnthropicFormat(messages);
50
+ const requestBody = {
51
+ model,
52
+ messages: anthropicMessages,
53
+ temperature: options?.temperature ?? 1.0,
54
+ stream: false,
55
+ max_tokens: options?.maxTokens,
56
+ };
57
+ if (system) {
58
+ requestBody.system = system;
59
+ }
60
+ if (options?.tools && options.tools.length > 0) {
61
+ requestBody.tools = options.tools.map(tool => ({
62
+ name: tool.function.name,
63
+ description: tool.function.description,
64
+ input_schema: tool.function.parameters || { type: 'object', properties: {} },
65
+ }));
66
+ const toolChoice = options.toolChoice;
67
+ if (toolChoice === 'none') {
68
+ requestBody.tool_choice = { type: 'auto' };
69
+ }
70
+ else if (toolChoice && typeof toolChoice === 'object' && 'function' in toolChoice) {
71
+ requestBody.tool_choice = { type: 'tool', tool: { name: toolChoice.function.name } };
72
+ }
73
+ else {
74
+ requestBody.tool_choice = { type: 'auto' };
75
+ }
76
+ }
77
+ if (options?.thinkingTokens && options.thinkingTokens > 0) {
78
+ requestBody.thinking = { type: 'enabled', budget_tokens: options.thinkingTokens };
79
+ }
80
+ if (showDebug) {
81
+ this.debugRequest('Anthropic', model, anthropicMessages, system);
82
+ }
83
+ try {
84
+ const response = await this.client.post('/v1/messages', requestBody, {
85
+ signal: options?.signal,
86
+ });
87
+ return this.convertResponse(response.data, model);
88
+ }
89
+ catch (error) {
90
+ throw this.handleError(error);
91
+ }
92
+ }
93
+ /**
94
+ * Streaming completion
95
+ */
96
+ async *stream(messages, options) {
97
+ const model = options?.model || this.config.model || 'claude-sonnet-4-20250514';
98
+ const showDebug = this.config.showDebugInfo ?? false;
99
+ const { system, messages: anthropicMessages } = this.convertToAnthropicFormat(messages);
100
+ const requestBody = {
101
+ model,
102
+ messages: anthropicMessages,
103
+ temperature: options?.temperature ?? 1.0,
104
+ stream: true,
105
+ max_tokens: options?.maxTokens,
106
+ };
107
+ if (system) {
108
+ requestBody.system = system;
109
+ }
110
+ if (options?.tools && options.tools.length > 0) {
111
+ requestBody.tools = options.tools.map(tool => ({
112
+ name: tool.function.name,
113
+ description: tool.function.description,
114
+ input_schema: tool.function.parameters || { type: 'object', properties: {} },
115
+ }));
116
+ requestBody.tool_choice = { type: 'auto' };
117
+ }
118
+ if (options?.thinkingTokens && options.thinkingTokens > 0) {
119
+ requestBody.thinking = { type: 'enabled', budget_tokens: options.thinkingTokens };
120
+ }
121
+ if (showDebug) {
122
+ logger.debug(`[Anthropic] Starting stream with model: ${model}`);
123
+ }
124
+ this.abortController = new AbortController();
125
+ try {
126
+ const response = await this.client.post('/v1/messages', requestBody, {
127
+ responseType: 'stream',
128
+ signal: options?.signal || this.abortController.signal,
129
+ });
130
+ let buffer = '';
131
+ for await (const chunk of response.data) {
132
+ buffer += chunk.toString();
133
+ const lines = buffer.split('\n');
134
+ buffer = lines.pop() || '';
135
+ for (const line of lines) {
136
+ const trimmedLine = line.trim();
137
+ if (!trimmedLine)
138
+ continue;
139
+ if (trimmedLine.startsWith('data: ')) {
140
+ const data = trimmedLine.slice(6);
141
+ try {
142
+ const event = JSON.parse(data);
143
+ if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {
144
+ yield { type: 'text_delta', delta: event.delta.text };
145
+ }
146
+ if (event.type === 'content_block_delta' && event.delta?.type === 'thinking_delta') {
147
+ yield { type: 'reasoning_delta', delta: event.delta.thinking };
148
+ }
149
+ if (event.type === 'content_block_delta' && event.delta?.type === 'tool_use_delta') {
150
+ const toolDelta = event.delta;
151
+ yield {
152
+ type: 'toolcall_delta',
153
+ delta: JSON.stringify({
154
+ id: toolDelta.id,
155
+ name: toolDelta.name,
156
+ input: toolDelta.input,
157
+ }),
158
+ };
159
+ }
160
+ if (event.type === 'message_stop') {
161
+ yield { type: 'done', reason: 'stop' };
162
+ }
163
+ if (event.type === 'message_delta' && event.delta?.stop_reason) {
164
+ yield { type: 'done', reason: this.convertStopReason(event.delta.stop_reason) };
165
+ }
166
+ }
167
+ catch {
168
+ // Ignore parse errors
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }
174
+ catch (error) {
175
+ if (axios.isCancel(error)) {
176
+ yield { type: 'done', reason: 'stop' };
177
+ }
178
+ else {
179
+ yield { type: 'error', error: error };
180
+ }
181
+ }
182
+ }
183
+ /**
184
+ * Abort ongoing request
185
+ */
186
+ abort() {
187
+ this.abortController?.abort();
188
+ this.abortController = null;
189
+ }
190
+ /**
191
+ * Close provider
192
+ */
193
+ async close() {
194
+ this.abort();
195
+ }
196
+ // --------------------------------------------------------------------------
197
+ /**
198
+ * Convert messages to Anthropic format
199
+ */
200
+ convertToAnthropicFormat(messages) {
201
+ const systemMessages = messages.filter(m => m.role === 'system');
202
+ const otherMessages = messages.filter(m => m.role !== 'system');
203
+ const systemContent = systemMessages[0]?.content;
204
+ const system = typeof systemContent === 'string' ? systemContent : '';
205
+ const anthropicMessages = [];
206
+ for (const msg of otherMessages) {
207
+ const blocks = [];
208
+ // Handle tool result messages
209
+ if (msg.role === 'tool' && msg.tool_call_id) {
210
+ blocks.push({
211
+ type: 'tool_result',
212
+ tool_use_id: msg.tool_call_id,
213
+ content: typeof msg.content === 'string'
214
+ ? msg.content
215
+ : JSON.stringify(msg.content),
216
+ });
217
+ }
218
+ else if (typeof msg.content === 'string') {
219
+ blocks.push({ type: 'text', text: msg.content });
220
+ }
221
+ else if (Array.isArray(msg.content)) {
222
+ for (const block of msg.content) {
223
+ if (block.type === 'text' && 'text' in block) {
224
+ blocks.push({ type: 'text', text: block.text });
225
+ }
226
+ else if (block.type === 'tool_use') {
227
+ blocks.push({
228
+ type: 'tool_use',
229
+ id: block.id,
230
+ name: block.function?.name || block.name,
231
+ input: block.function?.arguments || block.input,
232
+ });
233
+ }
234
+ else if (block.type === 'tool_result') {
235
+ blocks.push({
236
+ type: 'tool_result',
237
+ tool_use_id: block.tool_call_id || block.tool_use_id,
238
+ content: typeof block.content === 'string'
239
+ ? block.content
240
+ : JSON.stringify(block.content),
241
+ });
242
+ }
243
+ else if (block.type === 'thinking') {
244
+ blocks.push({ type: 'thinking', thinking: block.thinking });
245
+ }
246
+ }
247
+ }
248
+ // Handle tool_calls from OpenAI format
249
+ if (msg.tool_calls) {
250
+ for (const tc of msg.tool_calls) {
251
+ blocks.push({
252
+ type: 'tool_use',
253
+ id: tc.id,
254
+ name: tc.function?.name || '',
255
+ input: typeof tc.function?.arguments === 'string'
256
+ ? JSON.parse(tc.function?.arguments)
257
+ : tc.function?.arguments || {},
258
+ });
259
+ }
260
+ }
261
+ if (blocks.length > 0) {
262
+ anthropicMessages.push({
263
+ role: msg.role === 'tool' ? 'user' : msg.role,
264
+ content: blocks,
265
+ });
266
+ }
267
+ }
268
+ return { system, messages: anthropicMessages };
269
+ }
270
+ /**
271
+ * Convert Anthropic response to unified format
272
+ */
273
+ convertResponse(data, model) {
274
+ const content = data.content || [];
275
+ let textContent = '';
276
+ let reasoningContent = '';
277
+ const toolCalls = [];
278
+ // Handle tool calls from content blocks
279
+ for (const block of content) {
280
+ if (block.type === 'text') {
281
+ textContent += block.text || '';
282
+ }
283
+ else if (block.type === 'thinking') {
284
+ reasoningContent += block.thinking || '';
285
+ }
286
+ else if (block.type === 'tool_use') {
287
+ toolCalls.push({
288
+ id: block.id,
289
+ type: 'function',
290
+ function: {
291
+ name: block.name,
292
+ arguments: JSON.stringify(block.input || {}),
293
+ },
294
+ });
295
+ }
296
+ }
297
+ // Handle tool calls from top-level field (some APIs return here too)
298
+ const topLevelToolCalls = data.tool_calls;
299
+ if (topLevelToolCalls && Array.isArray(topLevelToolCalls)) {
300
+ for (const tc of topLevelToolCalls) {
301
+ toolCalls.push({
302
+ id: tc.id,
303
+ type: tc.type || 'function',
304
+ function: {
305
+ name: tc.function?.name || '',
306
+ arguments: tc.function?.arguments || '',
307
+ },
308
+ });
309
+ }
310
+ }
311
+ return {
312
+ id: data.id || `anthropic-${Date.now()}`,
313
+ object: 'chat.completion',
314
+ created: Math.floor(Date.now() / 1000),
315
+ model: data.model || model,
316
+ choices: [{
317
+ index: 0,
318
+ message: {
319
+ role: 'assistant',
320
+ content: textContent,
321
+ reasoning_content: reasoningContent || undefined,
322
+ tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
323
+ },
324
+ finish_reason: this.convertStopReason(data.stop_reason),
325
+ }],
326
+ usage: data.usage ? {
327
+ prompt_tokens: data.usage.input_tokens || 0,
328
+ completion_tokens: data.usage.output_tokens || 0,
329
+ total_tokens: (data.usage.input_tokens || 0) + (data.usage.output_tokens || 0),
330
+ } : undefined,
331
+ };
332
+ }
333
+ /**
334
+ * Convert Anthropic stop reason to unified format
335
+ */
336
+ convertStopReason(reason) {
337
+ switch (reason) {
338
+ case 'end_turn':
339
+ case 'stop':
340
+ return 'stop';
341
+ case 'max_tokens':
342
+ return 'length';
343
+ case 'tool_use':
344
+ return 'tool_calls';
345
+ default:
346
+ return 'stop';
347
+ }
348
+ }
349
+ /**
350
+ * Debug request output
351
+ */
352
+ debugRequest(provider, model, messages, system) {
353
+ console.log(`\n╔══════════════════════════════════════════════════════════╗`);
354
+ console.log(`║ AI REQUEST DEBUG (${provider}) ║`);
355
+ console.log(`╚══════════════════════════════════════════════════════════╝`);
356
+ console.log(`📦 Model: ${model}`);
357
+ console.log(`💬 Messages: ${messages.length}`);
358
+ if (system)
359
+ console.log(`📝 System: ${system.slice(0, 100)}...`);
360
+ console.log('─'.repeat(60));
361
+ console.log('\n📤 Sending request...\n');
362
+ }
363
+ /**
364
+ * Handle errors
365
+ */
366
+ handleError(error) {
367
+ if (error.response) {
368
+ return new Error(`Anthropic API Error: ${error.response.status} - ${JSON.stringify(error.response.data)}`);
369
+ }
370
+ if (error.request) {
371
+ return new Error('Anthropic API Error: Network error - No response received');
372
+ }
373
+ return new Error(`Anthropic API Error: ${error.message}`);
374
+ }
375
+ }
376
+ // ============================================================================
377
+ // Anthropic Models
378
+ // ============================================================================
379
+ const ANTHROPIC_MODELS = [
380
+ { id: 'claude-sonnet-4-20250514', name: 'Claude Sonnet 4', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsThinking: true, supportsStreaming: true },
381
+ { id: 'claude-haiku-3-20250506', name: 'Claude Haiku 3', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsStreaming: true },
382
+ { id: 'claude-opus-4-20250501', name: 'Claude Opus 4', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsThinking: true, supportsStreaming: true },
383
+ { id: 'claude-sonnet-4', name: 'Claude Sonnet 4', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsThinking: true, supportsStreaming: true },
384
+ { id: 'claude-haiku-3', name: 'Claude Haiku 3', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsStreaming: true },
385
+ // MiniMax models (uses Anthropic format)
386
+ { id: 'MiniMax-M2', name: 'MiniMax-M2', provider: 'anthropic', contextWindow: 200000, supportsTools: true, supportsStreaming: true },
387
+ { id: 'MiniMax-M2-8k', name: 'MiniMax-M2-8K', provider: 'anthropic', contextWindow: 8000, supportsTools: true, supportsStreaming: true },
388
+ { id: 'MiniMax-M2-32k', name: 'MiniMax-M2-32K', provider: 'anthropic', contextWindow: 32000, supportsTools: true, supportsStreaming: true },
389
+ { id: 'MiniMax-M2-128k', name: 'MiniMax-M2-128K', provider: 'anthropic', contextWindow: 128000, supportsTools: true, supportsStreaming: true },
390
+ ];
391
+ // ============================================================================
392
+ // Factory Function
393
+ // ============================================================================
394
+ /**
395
+ * Create Anthropic provider instance
396
+ */
397
+ export function createAnthropicProvider(config) {
398
+ return new AnthropicProvider(config);
399
+ }
400
+ //# sourceMappingURL=anthropic.js.map