@xagent-ai/cli 1.2.2 → 1.3.1

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 (602) 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/release.yml +76 -0
  4. package/.github/workflows/ci.yml +75 -0
  5. package/.github/workflows/release.yml +103 -0
  6. package/.gitmodules +3 -3
  7. package/README.md +326 -280
  8. package/README_CN.md +325 -279
  9. package/dist/agents.d.ts.map +1 -1
  10. package/dist/agents.js +7 -3
  11. package/dist/agents.js.map +1 -1
  12. package/dist/ai-client/factory.d.ts +40 -0
  13. package/dist/ai-client/factory.d.ts.map +1 -0
  14. package/dist/ai-client/factory.js +100 -0
  15. package/dist/ai-client/factory.js.map +1 -0
  16. package/dist/ai-client/index.d.ts +20 -0
  17. package/dist/ai-client/index.d.ts.map +1 -0
  18. package/dist/ai-client/index.js +49 -0
  19. package/dist/ai-client/index.js.map +1 -0
  20. package/dist/ai-client/providers/anthropic.d.ts +57 -0
  21. package/dist/ai-client/providers/anthropic.d.ts.map +1 -0
  22. package/dist/ai-client/providers/anthropic.js +406 -0
  23. package/dist/ai-client/providers/anthropic.js.map +1 -0
  24. package/dist/ai-client/providers/openai.d.ts +57 -0
  25. package/dist/ai-client/providers/openai.d.ts.map +1 -0
  26. package/dist/ai-client/providers/openai.js +290 -0
  27. package/dist/ai-client/providers/openai.js.map +1 -0
  28. package/dist/ai-client/providers/remote.d.ts +110 -0
  29. package/dist/ai-client/providers/remote.d.ts.map +1 -0
  30. package/dist/ai-client/providers/remote.js +352 -0
  31. package/dist/ai-client/providers/remote.js.map +1 -0
  32. package/dist/ai-client/registry.d.ts +51 -0
  33. package/dist/ai-client/registry.d.ts.map +1 -0
  34. package/dist/ai-client/registry.js +81 -0
  35. package/dist/ai-client/registry.js.map +1 -0
  36. package/dist/ai-client/types.d.ts +274 -0
  37. package/dist/ai-client/types.d.ts.map +1 -0
  38. package/dist/ai-client/types.js +90 -0
  39. package/dist/ai-client/types.js.map +1 -0
  40. package/dist/ai-client-factory.d.ts +62 -0
  41. package/dist/ai-client-factory.d.ts.map +1 -0
  42. package/dist/ai-client-factory.js +157 -0
  43. package/dist/ai-client-factory.js.map +1 -0
  44. package/dist/auth.d.ts +23 -1
  45. package/dist/auth.d.ts.map +1 -1
  46. package/dist/auth.js +164 -174
  47. package/dist/auth.js.map +1 -1
  48. package/dist/cancellation.d.ts +5 -4
  49. package/dist/cancellation.d.ts.map +1 -1
  50. package/dist/cancellation.js +53 -32
  51. package/dist/cancellation.js.map +1 -1
  52. package/dist/checkpoint.d.ts +2 -1
  53. package/dist/checkpoint.d.ts.map +1 -1
  54. package/dist/checkpoint.js +39 -6
  55. package/dist/checkpoint.js.map +1 -1
  56. package/dist/cli.js +742 -29
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config.d.ts +10 -4
  59. package/dist/config.d.ts.map +1 -1
  60. package/dist/config.js +62 -25
  61. package/dist/config.js.map +1 -1
  62. package/dist/context-compressor.d.ts +82 -18
  63. package/dist/context-compressor.d.ts.map +1 -1
  64. package/dist/context-compressor.js +718 -154
  65. package/dist/context-compressor.js.map +1 -1
  66. package/dist/conversation.d.ts +1 -1
  67. package/dist/conversation.d.ts.map +1 -1
  68. package/dist/conversation.js +8 -7
  69. package/dist/conversation.js.map +1 -1
  70. package/dist/gui-subagent/action-parser/actionParser.d.ts.map +1 -1
  71. package/dist/gui-subagent/action-parser/actionParser.js +6 -4
  72. package/dist/gui-subagent/action-parser/actionParser.js.map +1 -1
  73. package/dist/gui-subagent/agent/gui-agent.d.ts +39 -2
  74. package/dist/gui-subagent/agent/gui-agent.d.ts.map +1 -1
  75. package/dist/gui-subagent/agent/gui-agent.js +189 -74
  76. package/dist/gui-subagent/agent/gui-agent.js.map +1 -1
  77. package/dist/gui-subagent/index.d.ts +23 -1
  78. package/dist/gui-subagent/index.d.ts.map +1 -1
  79. package/dist/gui-subagent/index.js +6 -0
  80. package/dist/gui-subagent/index.js.map +1 -1
  81. package/dist/gui-subagent/operator/base-operator.d.ts.map +1 -1
  82. package/dist/gui-subagent/operator/base-operator.js +0 -1
  83. package/dist/gui-subagent/operator/base-operator.js.map +1 -1
  84. package/dist/gui-subagent/operator/computer-operator.d.ts.map +1 -1
  85. package/dist/gui-subagent/operator/computer-operator.js +31 -8
  86. package/dist/gui-subagent/operator/computer-operator.js.map +1 -1
  87. package/dist/gui-subagent/types/actions.d.ts +1 -1
  88. package/dist/gui-subagent/types/actions.d.ts.map +1 -1
  89. package/dist/gui-subagent/types/actions.js +0 -1
  90. package/dist/gui-subagent/types/actions.js.map +1 -1
  91. package/dist/gui-subagent/types/operator.d.ts +1 -1
  92. package/dist/gui-subagent/types/operator.d.ts.map +1 -1
  93. package/dist/index.d.ts +1 -2
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +1 -2
  96. package/dist/index.js.map +1 -1
  97. package/dist/input-processor.d.ts.map +1 -1
  98. package/dist/input-processor.js +8 -5
  99. package/dist/input-processor.js.map +1 -1
  100. package/dist/logger.d.ts.map +1 -1
  101. package/dist/logger.js +1 -1
  102. package/dist/logger.js.map +1 -1
  103. package/dist/mcp.d.ts +7 -1
  104. package/dist/mcp.d.ts.map +1 -1
  105. package/dist/mcp.js +157 -49
  106. package/dist/mcp.js.map +1 -1
  107. package/dist/memory.d.ts.map +1 -1
  108. package/dist/memory.js +3 -3
  109. package/dist/memory.js.map +1 -1
  110. package/dist/output-util.d.ts +27 -0
  111. package/dist/output-util.d.ts.map +1 -0
  112. package/dist/output-util.js +74 -0
  113. package/dist/output-util.js.map +1 -0
  114. package/dist/retry.js +1 -1
  115. package/dist/retry.js.map +1 -1
  116. package/dist/ripgrep.d.ts +29 -0
  117. package/dist/ripgrep.d.ts.map +1 -0
  118. package/dist/ripgrep.js +294 -0
  119. package/dist/ripgrep.js.map +1 -0
  120. package/dist/sdk-output-adapter.d.ts +34 -1
  121. package/dist/sdk-output-adapter.d.ts.map +1 -1
  122. package/dist/sdk-output-adapter.js +67 -2
  123. package/dist/sdk-output-adapter.js.map +1 -1
  124. package/dist/sdk-session.d.ts.map +1 -1
  125. package/dist/sdk-session.js +2 -0
  126. package/dist/sdk-session.js.map +1 -1
  127. package/dist/session-manager.js +3 -3
  128. package/dist/session-manager.js.map +1 -1
  129. package/dist/session.d.ts +116 -6
  130. package/dist/session.d.ts.map +1 -1
  131. package/dist/session.js +1416 -448
  132. package/dist/session.js.map +1 -1
  133. package/dist/shell.d.ts +33 -0
  134. package/dist/shell.d.ts.map +1 -0
  135. package/dist/shell.js +126 -0
  136. package/dist/shell.js.map +1 -0
  137. package/dist/skill-installer.d.ts +38 -0
  138. package/dist/skill-installer.d.ts.map +1 -0
  139. package/dist/skill-installer.js +447 -0
  140. package/dist/skill-installer.js.map +1 -0
  141. package/dist/skill-invoker.d.ts +8 -2
  142. package/dist/skill-invoker.d.ts.map +1 -1
  143. package/dist/skill-invoker.js +36 -15
  144. package/dist/skill-invoker.js.map +1 -1
  145. package/dist/skill-loader.d.ts +8 -3
  146. package/dist/skill-loader.d.ts.map +1 -1
  147. package/dist/skill-loader.js +51 -48
  148. package/dist/skill-loader.js.map +1 -1
  149. package/dist/skill-manager.d.ts +85 -0
  150. package/dist/skill-manager.d.ts.map +1 -0
  151. package/dist/skill-manager.js +341 -0
  152. package/dist/skill-manager.js.map +1 -0
  153. package/dist/slash-commands.d.ts +39 -2
  154. package/dist/slash-commands.d.ts.map +1 -1
  155. package/dist/slash-commands.js +934 -305
  156. package/dist/slash-commands.js.map +1 -1
  157. package/dist/smart-approval.d.ts +20 -1
  158. package/dist/smart-approval.d.ts.map +1 -1
  159. package/dist/smart-approval.js +125 -56
  160. package/dist/smart-approval.js.map +1 -1
  161. package/dist/system-prompt-generator.d.ts +6 -0
  162. package/dist/system-prompt-generator.d.ts.map +1 -1
  163. package/dist/system-prompt-generator.js +86 -36
  164. package/dist/system-prompt-generator.js.map +1 -1
  165. package/dist/terminal.d.ts +28 -0
  166. package/dist/terminal.d.ts.map +1 -0
  167. package/dist/terminal.js +82 -0
  168. package/dist/terminal.js.map +1 -0
  169. package/dist/theme.d.ts.map +1 -1
  170. package/dist/theme.js +8 -7
  171. package/dist/theme.js.map +1 -1
  172. package/dist/tools.d.ts +38 -7
  173. package/dist/tools.d.ts.map +1 -1
  174. package/dist/tools.js +1249 -617
  175. package/dist/tools.js.map +1 -1
  176. package/dist/truncate.d.ts +55 -0
  177. package/dist/truncate.d.ts.map +1 -0
  178. package/dist/truncate.js +130 -0
  179. package/dist/truncate.js.map +1 -0
  180. package/dist/types.d.ts +84 -9
  181. package/dist/types.d.ts.map +1 -1
  182. package/dist/types.js +49 -0
  183. package/dist/types.js.map +1 -1
  184. package/dist/update.d.ts.map +1 -1
  185. package/dist/update.js +28 -36
  186. package/dist/update.js.map +1 -1
  187. package/dist/workflow.d.ts +5 -1
  188. package/dist/workflow.d.ts.map +1 -1
  189. package/dist/workflow.js +61 -49
  190. package/dist/workflow.js.map +1 -1
  191. package/docs/architecture/mcp-integration-guide.md +304 -194
  192. package/docs/architecture/overview.md +169 -169
  193. package/docs/architecture/tool-system-design.md +134 -134
  194. package/docs/cli/commands.md +349 -238
  195. package/docs/smart-mode.md +281 -281
  196. package/docs/third-party-models.md +440 -439
  197. package/find-skills/SKILL.md +133 -0
  198. package/package.json +91 -90
  199. package/scripts/install-ripgrep.js +241 -0
  200. package/src/agents.ts +7 -3
  201. package/src/ai-client/factory.ts +116 -0
  202. package/src/ai-client/index.ts +61 -0
  203. package/src/ai-client/providers/anthropic.ts +475 -0
  204. package/src/ai-client/providers/openai.ts +348 -0
  205. package/src/ai-client/providers/remote.ts +439 -0
  206. package/src/ai-client/registry.ts +97 -0
  207. package/src/ai-client/types.ts +364 -0
  208. package/src/ai-client-factory.ts +204 -0
  209. package/src/auth.ts +661 -614
  210. package/src/cancellation.ts +202 -176
  211. package/src/checkpoint.ts +255 -219
  212. package/src/cli.ts +1523 -743
  213. package/src/config.ts +341 -297
  214. package/src/context-compressor.ts +987 -290
  215. package/src/conversation.ts +290 -288
  216. package/src/gui-subagent/action-parser/actionParser.ts +318 -315
  217. package/src/gui-subagent/action-parser/constants.ts +14 -14
  218. package/src/gui-subagent/action-parser/index.ts +8 -8
  219. package/src/gui-subagent/action-parser/types.ts +31 -31
  220. package/src/gui-subagent/agent/gui-agent.ts +1234 -1089
  221. package/src/gui-subagent/agent/index.ts +5 -5
  222. package/src/gui-subagent/index.ts +185 -163
  223. package/src/gui-subagent/operator/base-operator.ts +244 -245
  224. package/src/gui-subagent/operator/computer-operator.ts +541 -520
  225. package/src/gui-subagent/operator/index.ts +6 -6
  226. package/src/gui-subagent/types/actions.ts +260 -262
  227. package/src/gui-subagent/types/index.ts +6 -6
  228. package/src/gui-subagent/types/operator.ts +106 -106
  229. package/src/gui-subagent/utils.ts +51 -51
  230. package/src/index.ts +17 -18
  231. package/src/input-processor.ts +8 -5
  232. package/src/logger.ts +436 -438
  233. package/src/mcp.ts +793 -682
  234. package/src/memory.ts +343 -344
  235. package/src/output-util.ts +80 -0
  236. package/src/retry.ts +1 -1
  237. package/src/ripgrep.ts +370 -0
  238. package/src/sdk-output-adapter.ts +842 -0
  239. package/src/sdk-session.ts +62 -0
  240. package/src/session-manager.ts +308 -308
  241. package/src/session.ts +1775 -573
  242. package/src/shell.ts +134 -0
  243. package/src/skill-installer.ts +518 -0
  244. package/src/skill-invoker.ts +959 -935
  245. package/src/skill-loader.ts +501 -496
  246. package/src/skill-manager.ts +385 -0
  247. package/src/slash-commands.ts +2189 -1389
  248. package/src/smart-approval.ts +193 -74
  249. package/src/system-prompt-generator.ts +91 -36
  250. package/src/terminal.ts +96 -0
  251. package/src/theme.ts +739 -738
  252. package/src/tools.ts +1790 -931
  253. package/src/truncate.ts +173 -0
  254. package/src/types.ts +337 -198
  255. package/src/update.ts +33 -40
  256. package/src/workflow.ts +521 -508
  257. package/test/cli-launch.test.ts +279 -0
  258. package/tsconfig.json +22 -22
  259. package/vitest.config.ts +21 -19
  260. package/dist/ai-client.d.ts +0 -86
  261. package/dist/ai-client.d.ts.map +0 -1
  262. package/dist/ai-client.js +0 -1372
  263. package/dist/ai-client.js.map +0 -1
  264. package/dist/gui-subagent/operator/browser-operator.d.ts +0 -36
  265. package/dist/gui-subagent/operator/browser-operator.d.ts.map +0 -1
  266. package/dist/gui-subagent/operator/browser-operator.js +0 -306
  267. package/dist/gui-subagent/operator/browser-operator.js.map +0 -1
  268. package/dist/gui-subagent/operator/desktop-operator.d.ts +0 -55
  269. package/dist/gui-subagent/operator/desktop-operator.d.ts.map +0 -1
  270. package/dist/gui-subagent/operator/desktop-operator.js +0 -527
  271. package/dist/gui-subagent/operator/desktop-operator.js.map +0 -1
  272. package/dist/hook.d.ts +0 -73
  273. package/dist/hook.d.ts.map +0 -1
  274. package/dist/hook.js +0 -156
  275. package/dist/hook.js.map +0 -1
  276. package/dist/input-history.d.ts +0 -24
  277. package/dist/input-history.d.ts.map +0 -1
  278. package/dist/input-history.js +0 -94
  279. package/dist/input-history.js.map +0 -1
  280. package/dist/keyboard-manager.d.ts +0 -151
  281. package/dist/keyboard-manager.d.ts.map +0 -1
  282. package/dist/keyboard-manager.js +0 -396
  283. package/dist/keyboard-manager.js.map +0 -1
  284. package/dist/print-system-prompt.d.ts +0 -2
  285. package/dist/print-system-prompt.d.ts.map +0 -1
  286. package/dist/print-system-prompt.js +0 -40
  287. package/dist/print-system-prompt.js.map +0 -1
  288. package/dist/remote-ai-client.d.ts +0 -104
  289. package/dist/remote-ai-client.d.ts.map +0 -1
  290. package/dist/remote-ai-client.js +0 -552
  291. package/dist/remote-ai-client.js.map +0 -1
  292. package/dist/sdk-session-v2.d.ts +0 -13
  293. package/dist/sdk-session-v2.d.ts.map +0 -1
  294. package/dist/sdk-session-v2.js +0 -46
  295. package/dist/sdk-session-v2.js.map +0 -1
  296. package/dist/test-boundary-conditions.d.ts.map +0 -1
  297. package/dist/test-boundary-conditions.js.map +0 -1
  298. package/dist/test-cancellation-fix.d.ts.map +0 -1
  299. package/dist/test-cancellation-fix.js.map +0 -1
  300. package/dist/test-input-history.d.ts.map +0 -1
  301. package/dist/test-input-history.js.map +0 -1
  302. package/dist/test-interaction-flow.d.ts.map +0 -1
  303. package/dist/test-interaction-flow.js.map +0 -1
  304. package/dist/test-quick.d.ts.map +0 -1
  305. package/dist/test-quick.js.map +0 -1
  306. package/dist/test-user-interaction.d.ts.map +0 -1
  307. package/dist/test-user-interaction.js.map +0 -1
  308. package/dist/tools/edit-diff.d.ts +0 -32
  309. package/dist/tools/edit-diff.d.ts.map +0 -1
  310. package/dist/tools/edit-diff.js +0 -185
  311. package/dist/tools/edit-diff.js.map +0 -1
  312. package/dist/tools/edit.d.ts +0 -11
  313. package/dist/tools/edit.d.ts.map +0 -1
  314. package/dist/tools/edit.js +0 -129
  315. package/dist/tools/edit.js.map +0 -1
  316. package/dist/unified-session.d.ts +0 -42
  317. package/dist/unified-session.d.ts.map +0 -1
  318. package/dist/unified-session.js +0 -271
  319. package/dist/unified-session.js.map +0 -1
  320. package/skills/.claude-plugin/marketplace.json +0 -45
  321. package/skills/README.md +0 -94
  322. package/skills/THIRD_PARTY_NOTICES.md +0 -405
  323. package/skills/skills/algorithmic-art/LICENSE.txt +0 -202
  324. package/skills/skills/algorithmic-art/SKILL.md +0 -405
  325. package/skills/skills/algorithmic-art/templates/generator_template.js +0 -223
  326. package/skills/skills/algorithmic-art/templates/viewer.html +0 -599
  327. package/skills/skills/brand-guidelines/LICENSE.txt +0 -202
  328. package/skills/skills/brand-guidelines/SKILL.md +0 -73
  329. package/skills/skills/canvas-design/LICENSE.txt +0 -202
  330. package/skills/skills/canvas-design/SKILL.md +0 -130
  331. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
  332. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  333. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  334. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
  335. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  336. package/skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
  337. package/skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  338. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  339. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
  340. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  341. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  342. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  343. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
  344. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  345. package/skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
  346. package/skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  347. package/skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
  348. package/skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  349. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  350. package/skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
  351. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  352. package/skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
  353. package/skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  354. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  355. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
  356. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  357. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  358. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  359. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  360. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  361. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  362. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  363. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  364. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
  365. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  366. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  367. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  368. package/skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
  369. package/skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  370. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  371. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
  372. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  373. package/skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  374. package/skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  375. package/skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
  376. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
  377. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  378. package/skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  379. package/skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  380. package/skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  381. package/skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
  382. package/skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  383. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  384. package/skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
  385. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  386. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
  387. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  388. package/skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  389. package/skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
  390. package/skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  391. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  392. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
  393. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
  394. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  395. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  396. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
  397. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  398. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
  399. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  400. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  401. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
  402. package/skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  403. package/skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
  404. package/skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  405. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  406. package/skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  407. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  408. package/skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
  409. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  410. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
  411. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  412. package/skills/skills/doc-coauthoring/SKILL.md +0 -375
  413. package/skills/skills/docx/LICENSE.txt +0 -30
  414. package/skills/skills/docx/SKILL.md +0 -197
  415. package/skills/skills/docx/docx-js.md +0 -350
  416. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  417. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  418. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  419. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  420. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  421. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  422. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  423. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  424. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  425. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  426. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  427. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  428. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  429. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  430. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  431. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  432. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  433. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  434. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  435. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  436. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  437. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  438. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  439. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  440. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  441. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  442. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  443. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  444. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  445. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  446. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  447. package/skills/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
  448. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  449. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  450. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  451. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  452. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  453. package/skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  454. package/skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  455. package/skills/skills/docx/ooxml/scripts/pack.py +0 -159
  456. package/skills/skills/docx/ooxml/scripts/unpack.py +0 -29
  457. package/skills/skills/docx/ooxml/scripts/validate.py +0 -69
  458. package/skills/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
  459. package/skills/skills/docx/ooxml/scripts/validation/base.py +0 -951
  460. package/skills/skills/docx/ooxml/scripts/validation/docx.py +0 -274
  461. package/skills/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
  462. package/skills/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
  463. package/skills/skills/docx/ooxml.md +0 -610
  464. package/skills/skills/docx/scripts/__init__.py +0 -1
  465. package/skills/skills/docx/scripts/document.py +0 -1276
  466. package/skills/skills/docx/scripts/templates/comments.xml +0 -3
  467. package/skills/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  468. package/skills/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  469. package/skills/skills/docx/scripts/templates/commentsIds.xml +0 -3
  470. package/skills/skills/docx/scripts/templates/people.xml +0 -3
  471. package/skills/skills/docx/scripts/utilities.py +0 -374
  472. package/skills/skills/frontend-design/LICENSE.txt +0 -177
  473. package/skills/skills/frontend-design/SKILL.md +0 -42
  474. package/skills/skills/internal-comms/LICENSE.txt +0 -202
  475. package/skills/skills/internal-comms/SKILL.md +0 -32
  476. package/skills/skills/internal-comms/examples/3p-updates.md +0 -47
  477. package/skills/skills/internal-comms/examples/company-newsletter.md +0 -65
  478. package/skills/skills/internal-comms/examples/faq-answers.md +0 -30
  479. package/skills/skills/internal-comms/examples/general-comms.md +0 -16
  480. package/skills/skills/mcp-builder/LICENSE.txt +0 -202
  481. package/skills/skills/mcp-builder/SKILL.md +0 -236
  482. package/skills/skills/mcp-builder/reference/evaluation.md +0 -602
  483. package/skills/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  484. package/skills/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  485. package/skills/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  486. package/skills/skills/mcp-builder/scripts/connections.py +0 -151
  487. package/skills/skills/mcp-builder/scripts/evaluation.py +0 -373
  488. package/skills/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  489. package/skills/skills/mcp-builder/scripts/requirements.txt +0 -2
  490. package/skills/skills/pdf/LICENSE.txt +0 -30
  491. package/skills/skills/pdf/SKILL.md +0 -294
  492. package/skills/skills/pdf/forms.md +0 -205
  493. package/skills/skills/pdf/reference.md +0 -612
  494. package/skills/skills/pdf/scripts/check_bounding_boxes.py +0 -70
  495. package/skills/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
  496. package/skills/skills/pdf/scripts/check_fillable_fields.py +0 -12
  497. package/skills/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
  498. package/skills/skills/pdf/scripts/create_validation_image.py +0 -41
  499. package/skills/skills/pdf/scripts/extract_form_field_info.py +0 -152
  500. package/skills/skills/pdf/scripts/fill_fillable_fields.py +0 -114
  501. package/skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
  502. package/skills/skills/pptx/LICENSE.txt +0 -30
  503. package/skills/skills/pptx/SKILL.md +0 -484
  504. package/skills/skills/pptx/html2pptx.md +0 -625
  505. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  506. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  507. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  508. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  509. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  510. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  511. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  512. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  513. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  514. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  515. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  516. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  517. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  518. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  519. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  520. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  521. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  522. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  523. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  524. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  525. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  526. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  527. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  528. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  529. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  530. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  531. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  532. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  533. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  534. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  535. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  536. package/skills/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
  537. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  538. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  539. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  540. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  541. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  542. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  543. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  544. package/skills/skills/pptx/ooxml/scripts/pack.py +0 -159
  545. package/skills/skills/pptx/ooxml/scripts/unpack.py +0 -29
  546. package/skills/skills/pptx/ooxml/scripts/validate.py +0 -69
  547. package/skills/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
  548. package/skills/skills/pptx/ooxml/scripts/validation/base.py +0 -951
  549. package/skills/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
  550. package/skills/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
  551. package/skills/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
  552. package/skills/skills/pptx/ooxml.md +0 -427
  553. package/skills/skills/pptx/scripts/html2pptx.js +0 -979
  554. package/skills/skills/pptx/scripts/inventory.py +0 -1020
  555. package/skills/skills/pptx/scripts/rearrange.py +0 -231
  556. package/skills/skills/pptx/scripts/replace.py +0 -385
  557. package/skills/skills/pptx/scripts/thumbnail.py +0 -450
  558. package/skills/skills/skill-creator/LICENSE.txt +0 -202
  559. package/skills/skills/skill-creator/SKILL.md +0 -356
  560. package/skills/skills/skill-creator/references/output-patterns.md +0 -82
  561. package/skills/skills/skill-creator/references/workflows.md +0 -28
  562. package/skills/skills/skill-creator/scripts/init_skill.py +0 -303
  563. package/skills/skills/skill-creator/scripts/package_skill.py +0 -110
  564. package/skills/skills/skill-creator/scripts/quick_validate.py +0 -95
  565. package/skills/skills/slack-gif-creator/LICENSE.txt +0 -202
  566. package/skills/skills/slack-gif-creator/SKILL.md +0 -254
  567. package/skills/skills/slack-gif-creator/core/easing.py +0 -234
  568. package/skills/skills/slack-gif-creator/core/frame_composer.py +0 -176
  569. package/skills/skills/slack-gif-creator/core/gif_builder.py +0 -269
  570. package/skills/skills/slack-gif-creator/core/validators.py +0 -136
  571. package/skills/skills/slack-gif-creator/requirements.txt +0 -4
  572. package/skills/skills/theme-factory/LICENSE.txt +0 -202
  573. package/skills/skills/theme-factory/SKILL.md +0 -59
  574. package/skills/skills/theme-factory/theme-showcase.pdf +0 -0
  575. package/skills/skills/theme-factory/themes/arctic-frost.md +0 -19
  576. package/skills/skills/theme-factory/themes/botanical-garden.md +0 -19
  577. package/skills/skills/theme-factory/themes/desert-rose.md +0 -19
  578. package/skills/skills/theme-factory/themes/forest-canopy.md +0 -19
  579. package/skills/skills/theme-factory/themes/golden-hour.md +0 -19
  580. package/skills/skills/theme-factory/themes/midnight-galaxy.md +0 -19
  581. package/skills/skills/theme-factory/themes/modern-minimalist.md +0 -19
  582. package/skills/skills/theme-factory/themes/ocean-depths.md +0 -19
  583. package/skills/skills/theme-factory/themes/sunset-boulevard.md +0 -19
  584. package/skills/skills/theme-factory/themes/tech-innovation.md +0 -19
  585. package/skills/skills/web-artifacts-builder/LICENSE.txt +0 -202
  586. package/skills/skills/web-artifacts-builder/SKILL.md +0 -74
  587. package/skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
  588. package/skills/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -322
  589. package/skills/skills/webapp-testing/LICENSE.txt +0 -202
  590. package/skills/skills/webapp-testing/SKILL.md +0 -96
  591. package/skills/skills/webapp-testing/examples/console_logging.py +0 -35
  592. package/skills/skills/webapp-testing/examples/element_discovery.py +0 -40
  593. package/skills/skills/webapp-testing/examples/static_html_automation.py +0 -33
  594. package/skills/skills/webapp-testing/scripts/with_server.py +0 -106
  595. package/skills/skills/xlsx/LICENSE.txt +0 -30
  596. package/skills/skills/xlsx/SKILL.md +0 -289
  597. package/skills/skills/xlsx/recalc.py +0 -178
  598. package/skills/spec/agent-skills-spec.md +0 -3
  599. package/skills/template/SKILL.md +0 -6
  600. package/src/ai-client.ts +0 -1560
  601. package/src/remote-ai-client.ts +0 -664
  602. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -0,0 +1,842 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * SDK Output Adapter
5
+ *
6
+ * This module provides output formatting for SDK mode.
7
+ * It converts CLI-style output into JSON format for programmatic consumption.
8
+ */
9
+
10
+ import { SessionInput, SessionOutput } from './types.js';
11
+
12
+ // GUI Agent types (re-exported for SDK usage)
13
+ export type GUIAgentStatus = 'init' | 'running' | 'paused' | 'end' | 'error' | 'user_stopped' | 'call_llm';
14
+
15
+ export interface GUIAgentOutput {
16
+ type: 'status' | 'conversation' | 'action' | 'screenshot' | 'error' | 'complete';
17
+ timestamp: number;
18
+ data: Record<string, unknown>;
19
+ }
20
+
21
+ export interface GUIAgentConversation {
22
+ from: 'human' | 'assistant';
23
+ value: string;
24
+ screenshotBase64?: string;
25
+ screenshotContext?: {
26
+ size: { width: number; height: number };
27
+ mime?: string;
28
+ scaleFactor: number;
29
+ };
30
+ actionType?: string;
31
+ actionInputs?: Record<string, unknown>;
32
+ timing?: {
33
+ start: number;
34
+ end: number;
35
+ cost: number;
36
+ };
37
+ predictionParsed?: Array<{
38
+ action_type: string;
39
+ [key: string]: unknown;
40
+ }>;
41
+ }
42
+
43
+ export interface GUIAgentHandler {
44
+ (output: GUIAgentOutput): void;
45
+ }
46
+
47
+ export interface SdkOutputMessage {
48
+ type: 'output' | 'input' | 'system' | 'tool' | 'error' | 'thinking' | 'result';
49
+ subtype?: string;
50
+ timestamp: number;
51
+ data: Record<string, unknown>;
52
+ }
53
+
54
+ export interface SdkStreamEvent {
55
+ event_type: string;
56
+ timestamp: number;
57
+ data: Record<string, unknown>;
58
+ }
59
+
60
+ export type OutputHandler = (message: SdkOutputMessage) => void;
61
+
62
+ export class SdkOutputAdapter {
63
+ private outputHandler: OutputHandler;
64
+ private indentLevel: number;
65
+
66
+ constructor(outputHandler?: OutputHandler) {
67
+ this.outputHandler = outputHandler || ((msg) => {
68
+ process.stdout.write(JSON.stringify(msg) + '\n');
69
+ });
70
+ this.indentLevel = 0;
71
+ }
72
+
73
+ /**
74
+ * Set indent level for output formatting.
75
+ */
76
+ setIndentLevel(level: number): void {
77
+ this.indentLevel = level;
78
+ }
79
+
80
+ /**
81
+ * Get current indent string.
82
+ */
83
+ getIndent(): string {
84
+ return ' '.repeat(this.indentLevel);
85
+ }
86
+
87
+ /**
88
+ * Format and output a welcome message.
89
+ */
90
+ outputWelcome(language: 'zh' | 'en', executionMode: string): void {
91
+ const messages = {
92
+ zh: {
93
+ title: '🤖 XAGENT CLI',
94
+ version: 'v1.0.0',
95
+ subtitle: 'AI-powered command-line assistant',
96
+ modeLabel: '当前模式',
97
+ modeDescription: '智能审批与安全检查',
98
+ help: '输入 /help 查看可用命令'
99
+ },
100
+ en: {
101
+ title: '🤖 XAGENT CLI',
102
+ version: 'v1.0.0',
103
+ subtitle: 'AI-powered command-line assistant',
104
+ modeLabel: 'Current Mode',
105
+ modeDescription: 'Smart approval with intelligent security checks',
106
+ help: 'Type /help to see available commands'
107
+ }
108
+ };
109
+
110
+ const msg = messages[language];
111
+ const config = this.getModeConfig(executionMode);
112
+
113
+ this.output({
114
+ type: 'system',
115
+ subtype: 'welcome',
116
+ timestamp: Date.now(),
117
+ data: {
118
+ title: msg.title,
119
+ version: msg.version,
120
+ subtitle: msg.subtitle,
121
+ mode: {
122
+ name: executionMode,
123
+ icon: config.icon,
124
+ description: msg.modeDescription
125
+ },
126
+ help: msg.help
127
+ }
128
+ });
129
+ }
130
+
131
+ /**
132
+ * Format and output ready signal.
133
+ * This is sent when the CLI is fully initialized and ready to accept requests.
134
+ */
135
+ outputReady(): void {
136
+ this.output({
137
+ type: 'system',
138
+ subtype: 'ready',
139
+ timestamp: Date.now(),
140
+ data: {
141
+ status: 'initialized',
142
+ message: 'CLI is ready to accept requests'
143
+ }
144
+ });
145
+ }
146
+
147
+ /**
148
+ * Format and output request done signal.
149
+ * This is sent when a user request has been fully processed.
150
+ */
151
+ outputRequestDone(requestId: string, status: 'success' | 'cancelled' | 'error' = 'success'): void {
152
+ this.output({
153
+ type: 'result',
154
+ subtype: 'request_done',
155
+ timestamp: Date.now(),
156
+ data: {
157
+ requestId,
158
+ status,
159
+ message: status === 'success' ? 'Request completed successfully' : `Request ${status}`
160
+ }
161
+ });
162
+ }
163
+
164
+ /**
165
+ * Format and output AI response.
166
+ */
167
+ outputAssistant(content: string, reasoningContent?: string): void {
168
+ this.output({
169
+ type: 'output',
170
+ subtype: 'assistant',
171
+ timestamp: Date.now(),
172
+ data: {
173
+ content,
174
+ reasoningContent
175
+ }
176
+ });
177
+ }
178
+
179
+ /**
180
+ * Format and output tool execution.
181
+ */
182
+ outputToolStart(toolName: string, params: Record<string, unknown>): void {
183
+ this.output({
184
+ type: 'tool',
185
+ subtype: 'start',
186
+ timestamp: Date.now(),
187
+ data: {
188
+ tool: toolName,
189
+ params,
190
+ status: 'running'
191
+ }
192
+ });
193
+ }
194
+
195
+ /**
196
+ * Format and output tool result.
197
+ */
198
+ outputToolResult(toolName: string, result: unknown, duration?: number): void {
199
+ this.output({
200
+ type: 'tool',
201
+ subtype: 'result',
202
+ timestamp: Date.now(),
203
+ data: {
204
+ tool: toolName,
205
+ result,
206
+ duration,
207
+ status: 'completed'
208
+ }
209
+ });
210
+ }
211
+
212
+ /**
213
+ * Format and output tool error.
214
+ */
215
+ outputToolError(toolName: string, error: string): void {
216
+ this.output({
217
+ type: 'tool',
218
+ subtype: 'error',
219
+ timestamp: Date.now(),
220
+ data: {
221
+ tool: toolName,
222
+ error,
223
+ status: 'error'
224
+ }
225
+ });
226
+ }
227
+
228
+ /**
229
+ * Format and output thinking content.
230
+ */
231
+ outputThinking(reasoningContent: string, displayMode: string = 'compact'): void {
232
+ const maxLength = displayMode === 'full' ? undefined : 500;
233
+ const truncated = maxLength && reasoningContent.length > maxLength;
234
+ const displayContent = truncated ? reasoningContent.substring(0, maxLength) + '... (truncated)' : reasoningContent;
235
+
236
+ this.output({
237
+ type: 'thinking',
238
+ subtype: displayMode,
239
+ timestamp: Date.now(),
240
+ data: {
241
+ content: displayContent,
242
+ originalLength: reasoningContent.length,
243
+ truncated,
244
+ displayMode
245
+ }
246
+ });
247
+ }
248
+
249
+ /**
250
+ * Format and output system message.
251
+ */
252
+ outputSystem(subtype: string, data: Record<string, unknown>): void {
253
+ this.output({
254
+ type: 'system',
255
+ subtype,
256
+ timestamp: Date.now(),
257
+ data
258
+ });
259
+ }
260
+
261
+ /**
262
+ * Format and output MCP loading status.
263
+ */
264
+ outputMCPLoading(count: number): void {
265
+ this.output({
266
+ type: 'system',
267
+ subtype: 'mcp_loading',
268
+ timestamp: Date.now(),
269
+ data: { count }
270
+ });
271
+ }
272
+
273
+ /**
274
+ * Format and output MCP server registering status.
275
+ */
276
+ outputMCPRegistering(name: string, transport: string): void {
277
+ this.output({
278
+ type: 'system',
279
+ subtype: 'mcp_registering',
280
+ timestamp: Date.now(),
281
+ data: { name, transport }
282
+ });
283
+ }
284
+
285
+ /**
286
+ * Format and output MCP connecting status.
287
+ */
288
+ outputMCPConnecting(count: number): void {
289
+ this.output({
290
+ type: 'system',
291
+ subtype: 'mcp_connecting',
292
+ timestamp: Date.now(),
293
+ data: { count }
294
+ });
295
+ }
296
+
297
+ /**
298
+ * Format and output MCP connected result.
299
+ */
300
+ outputMCPConnected(total: number, connected: number, toolsAvailable: number): void {
301
+ this.output({
302
+ type: 'system',
303
+ subtype: 'mcp_connected',
304
+ timestamp: Date.now(),
305
+ data: { total, connected, toolsAvailable }
306
+ });
307
+ }
308
+
309
+ /**
310
+ * Format and output MCP connection failed warning.
311
+ */
312
+ outputMCPConnectionFailed(message: string): void {
313
+ this.output({
314
+ type: 'system',
315
+ subtype: 'mcp_connection_failed',
316
+ timestamp: Date.now(),
317
+ data: { message }
318
+ });
319
+ }
320
+
321
+ /**
322
+ * Format and output error message.
323
+ */
324
+ outputError(message: string, context?: Record<string, unknown>): void {
325
+ this.output({
326
+ type: 'error',
327
+ subtype: 'general',
328
+ timestamp: Date.now(),
329
+ data: {
330
+ message,
331
+ ...context
332
+ }
333
+ });
334
+ }
335
+
336
+ /**
337
+ * Format and output warning message.
338
+ */
339
+ outputWarning(message: string): void {
340
+ this.output({
341
+ type: 'system',
342
+ subtype: 'warning',
343
+ timestamp: Date.now(),
344
+ data: { message }
345
+ });
346
+ }
347
+
348
+ /**
349
+ * Format and output success message.
350
+ */
351
+ outputSuccess(message: string): void {
352
+ this.output({
353
+ type: 'system',
354
+ subtype: 'success',
355
+ timestamp: Date.now(),
356
+ data: { message }
357
+ });
358
+ }
359
+
360
+ /**
361
+ * Format and output info message.
362
+ */
363
+ outputInfo(message: string): void {
364
+ this.output({
365
+ type: 'system',
366
+ subtype: 'info',
367
+ timestamp: Date.now(),
368
+ data: { message }
369
+ });
370
+ }
371
+
372
+ /**
373
+ * Format and output context compression notification.
374
+ */
375
+ outputContextCompression(reason: string, originalSize: number, compressedSize: number, reductionPercent: number): void {
376
+ this.output({
377
+ type: 'system',
378
+ subtype: 'context_compression',
379
+ timestamp: Date.now(),
380
+ data: {
381
+ reason,
382
+ originalSize,
383
+ compressedSize,
384
+ reductionPercent
385
+ }
386
+ });
387
+ }
388
+
389
+ /**
390
+ * Format and output context compression triggered.
391
+ */
392
+ outputContextCompressionTriggered(reason: string): void {
393
+ this.output({
394
+ type: 'system',
395
+ subtype: 'context_compression_triggered',
396
+ timestamp: Date.now(),
397
+ data: { reason }
398
+ });
399
+ }
400
+
401
+ /**
402
+ * Format and output context compression result.
403
+ */
404
+ outputContextCompressionResult(
405
+ originalSize: number,
406
+ compressedSize: number,
407
+ reductionPercent: number,
408
+ originalMessageCount: number,
409
+ compressedMessageCount: number
410
+ ): void {
411
+ this.output({
412
+ type: 'system',
413
+ subtype: 'context_compression_result',
414
+ timestamp: Date.now(),
415
+ data: {
416
+ originalSize,
417
+ compressedSize,
418
+ reductionPercent,
419
+ originalMessageCount,
420
+ compressedMessageCount
421
+ }
422
+ });
423
+ }
424
+
425
+ /**
426
+ * Format and output context compression summary.
427
+ */
428
+ outputContextCompressionSummary(
429
+ summary: string,
430
+ preview: string,
431
+ isTruncated: boolean,
432
+ totalLength: number
433
+ ): void {
434
+ this.output({
435
+ type: 'system',
436
+ subtype: 'context_compression_summary',
437
+ timestamp: Date.now(),
438
+ data: {
439
+ summary,
440
+ preview,
441
+ isTruncated,
442
+ totalLength
443
+ }
444
+ });
445
+ }
446
+
447
+ /**
448
+ * Format and output session result.
449
+ */
450
+ outputResult(duration: number, numTurns: number, status: 'completed' | 'cancelled' | 'error'): void {
451
+ this.output({
452
+ type: 'result',
453
+ timestamp: Date.now(),
454
+ data: {
455
+ duration_ms: duration,
456
+ num_turns: numTurns,
457
+ status
458
+ }
459
+ });
460
+ }
461
+
462
+ /**
463
+ * Format and output progress/spinner.
464
+ */
465
+ outputProgress(text: string, status: 'start' | 'succeed' | 'fail' | 'update'): void {
466
+ this.output({
467
+ type: 'system',
468
+ subtype: 'progress',
469
+ timestamp: Date.now(),
470
+ data: {
471
+ text,
472
+ status
473
+ }
474
+ });
475
+ }
476
+
477
+ /**
478
+ * Format and output agent switch.
479
+ */
480
+ outputAgentSwitch(agentName: string, agentDescription?: string): void {
481
+ this.output({
482
+ type: 'system',
483
+ subtype: 'agent_switch',
484
+ timestamp: Date.now(),
485
+ data: {
486
+ agent: agentName,
487
+ description: agentDescription
488
+ }
489
+ });
490
+ }
491
+
492
+ /**
493
+ * Format and output command execution.
494
+ */
495
+ outputCommand(command: string, status: 'running' | 'completed' | 'error'): void {
496
+ this.output({
497
+ type: 'tool',
498
+ subtype: 'command',
499
+ timestamp: Date.now(),
500
+ data: {
501
+ command,
502
+ status
503
+ }
504
+ });
505
+ }
506
+
507
+ // ==================== SDK Approval Request ====================
508
+
509
+ /**
510
+ * Format and output approval request (for SDK mode).
511
+ * This is sent when a potentially risky operation needs user confirmation.
512
+ */
513
+ outputApprovalRequest(params: {
514
+ requestId: string;
515
+ toolName: string;
516
+ params: Record<string, unknown>;
517
+ riskLevel: string;
518
+ description: string;
519
+ aiAnalysis?: string;
520
+ }): void {
521
+ this.output({
522
+ type: 'system',
523
+ subtype: 'approval_request',
524
+ timestamp: Date.now(),
525
+ data: {
526
+ requestId: params.requestId,
527
+ toolName: params.toolName,
528
+ params: params.params,
529
+ riskLevel: params.riskLevel,
530
+ description: params.description,
531
+ aiAnalysis: params.aiAnalysis,
532
+ approved: false // Default to not approved, client must respond
533
+ }
534
+ });
535
+ }
536
+
537
+ /**
538
+ * Format and output approval response received (for SDK mode logging).
539
+ */
540
+ outputApprovalResponse(requestId: string, approved: boolean): void {
541
+ this.output({
542
+ type: 'system',
543
+ subtype: 'approval_response',
544
+ timestamp: Date.now(),
545
+ data: {
546
+ requestId,
547
+ approved
548
+ }
549
+ });
550
+ }
551
+
552
+ // ==================== SDK Question Request ====================
553
+
554
+ /**
555
+ * Format and output question request (for SDK mode).
556
+ * This is sent when the agent needs to ask the user questions.
557
+ */
558
+ outputQuestionRequest(params: {
559
+ requestId: string;
560
+ questions: Array<{
561
+ question: string;
562
+ header?: string;
563
+ options?: string[];
564
+ multiSelect?: boolean;
565
+ }>;
566
+ }): void {
567
+ this.output({
568
+ type: 'system',
569
+ subtype: 'question_request',
570
+ timestamp: Date.now(),
571
+ data: {
572
+ requestId: params.requestId,
573
+ questions: params.questions
574
+ }
575
+ });
576
+ }
577
+
578
+ /**
579
+ * Format and output question response received (for SDK mode logging).
580
+ */
581
+ outputQuestionResponse(requestId: string, answers: string[]): void {
582
+ this.output({
583
+ type: 'system',
584
+ subtype: 'question_response',
585
+ timestamp: Date.now(),
586
+ data: {
587
+ requestId,
588
+ answers
589
+ }
590
+ });
591
+ }
592
+
593
+ // ==================== GUI Agent Output Methods ====================
594
+
595
+ /**
596
+ * Format and output GUI agent start.
597
+ */
598
+ outputGUIAgentStart(description: string, mode: 'local' | 'remote'): void {
599
+ this.output({
600
+ type: 'system',
601
+ subtype: 'gui_agent_start',
602
+ timestamp: Date.now(),
603
+ data: {
604
+ description,
605
+ mode
606
+ }
607
+ });
608
+ }
609
+
610
+ /**
611
+ * Format and output GUI agent status update.
612
+ */
613
+ outputGUIAgentStatus(status: GUIAgentStatus, iteration?: number, error?: string): void {
614
+ this.output({
615
+ type: 'system',
616
+ subtype: `gui_status_${status}`,
617
+ timestamp: Date.now(),
618
+ data: {
619
+ status,
620
+ iteration,
621
+ error
622
+ }
623
+ });
624
+ }
625
+
626
+ /**
627
+ * Format and output GUI agent action/step.
628
+ */
629
+ outputGUIAgentAction(iteration: number, actionType: string, cost?: number): void {
630
+ this.output({
631
+ type: 'output',
632
+ subtype: 'gui_action',
633
+ timestamp: Date.now(),
634
+ data: {
635
+ iteration,
636
+ actionType,
637
+ cost
638
+ }
639
+ });
640
+ }
641
+
642
+ /**
643
+ * Format and output GUI agent conversation (screenshot).
644
+ */
645
+ outputGUIConversation(data: {
646
+ iteration: number;
647
+ from: 'human' | 'assistant';
648
+ actionType?: string;
649
+ indentLevel?: number;
650
+ timing?: { start: number; end: number; cost: number };
651
+ }): void {
652
+ this.output({
653
+ type: 'output',
654
+ subtype: 'gui_conversation',
655
+ timestamp: Date.now(),
656
+ data
657
+ });
658
+ }
659
+
660
+ /**
661
+ * Format and output GUI agent completion.
662
+ */
663
+ outputGUIAgentComplete(description: string, iterations: number): void {
664
+ this.output({
665
+ type: 'system',
666
+ subtype: 'gui_complete',
667
+ timestamp: Date.now(),
668
+ data: {
669
+ description,
670
+ iterations,
671
+ message: `GUI task completed in ${iterations} iterations`
672
+ }
673
+ });
674
+ }
675
+
676
+ /**
677
+ * Format and output GUI agent cancellation.
678
+ */
679
+ outputGUIAgentCancelled(description: string): void {
680
+ this.output({
681
+ type: 'system',
682
+ subtype: 'gui_cancelled',
683
+ timestamp: Date.now(),
684
+ data: {
685
+ description,
686
+ message: 'GUI task cancelled by user'
687
+ }
688
+ });
689
+ }
690
+
691
+ /**
692
+ * Format and output GUI agent error.
693
+ */
694
+ outputGUIAgentError(description: string, error: string): void {
695
+ this.output({
696
+ type: 'error',
697
+ subtype: 'gui_error',
698
+ timestamp: Date.now(),
699
+ data: {
700
+ description,
701
+ error
702
+ }
703
+ });
704
+ }
705
+
706
+ /**
707
+ * Create a GUI Agent output handler that maps GUIAgentOutput to SDK format.
708
+ * This handler can be passed directly to GUIAgent.
709
+ */
710
+ createGUIAgentHandler(): GUIAgentHandler {
711
+ return (output: GUIAgentOutput) => {
712
+ switch (output.type) {
713
+ case 'action':
714
+ this.output({
715
+ type: 'system',
716
+ subtype: 'gui_action',
717
+ timestamp: output.timestamp,
718
+ data: output.data
719
+ });
720
+ break;
721
+ case 'status':
722
+ this.outputGUIAgentStatus(
723
+ output.data.status as GUIAgentStatus,
724
+ output.data.iteration as number | undefined,
725
+ output.data.error as string | undefined
726
+ );
727
+ break;
728
+ case 'conversation':
729
+ this.outputGUIConversation({
730
+ iteration: output.data.iteration as number,
731
+ from: output.data.from as 'human' | 'assistant',
732
+ actionType: output.data.actionType as string | undefined,
733
+ indentLevel: output.data.indentLevel as number | undefined,
734
+ timing: output.data.timing as { start: number; end: number; cost: number } | undefined
735
+ });
736
+ break;
737
+ case 'complete':
738
+ this.output({
739
+ type: 'system',
740
+ subtype: 'gui_complete',
741
+ timestamp: output.timestamp,
742
+ data: output.data
743
+ });
744
+ break;
745
+ case 'error':
746
+ this.output({
747
+ type: 'error',
748
+ subtype: 'gui_error',
749
+ timestamp: output.timestamp,
750
+ data: output.data
751
+ });
752
+ break;
753
+ case 'screenshot':
754
+ this.output({
755
+ type: 'output',
756
+ subtype: 'gui_screenshot',
757
+ timestamp: output.timestamp,
758
+ data: output.data
759
+ });
760
+ break;
761
+ }
762
+ };
763
+ }
764
+
765
+ /**
766
+ * Output a raw message.
767
+ */
768
+ output(message: SdkOutputMessage): void {
769
+ this.outputHandler(message);
770
+ }
771
+
772
+ /**
773
+ * Get mode configuration.
774
+ */
775
+ private getModeConfig(mode: string): { color: string; icon: string; description: string } {
776
+ const modeConfigs: Record<string, { color: string; icon: string; description: string }> = {
777
+ yolo: {
778
+ color: 'red',
779
+ icon: '🔥',
780
+ description: 'Execute commands without confirmation'
781
+ },
782
+ accept_edits: {
783
+ color: 'yellow',
784
+ icon: '✅',
785
+ description: 'Accept all edits automatically'
786
+ },
787
+ plan: {
788
+ color: 'blue',
789
+ icon: '🧠',
790
+ description: 'Plan before executing'
791
+ },
792
+ default: {
793
+ color: 'green',
794
+ icon: '⚡',
795
+ description: 'Safe execution with confirmations'
796
+ },
797
+ smart: {
798
+ color: 'cyan',
799
+ icon: '✨',
800
+ description: 'Smart approval with intelligent security checks'
801
+ }
802
+ };
803
+
804
+ return modeConfigs[mode.toLowerCase()] || modeConfigs.default;
805
+ }
806
+
807
+ /**
808
+ * Convert a SessionInput to SDK format.
809
+ */
810
+ static formatSessionInput(input: SessionInput): SdkOutputMessage {
811
+ return {
812
+ type: 'input',
813
+ timestamp: input.timestamp,
814
+ data: {
815
+ inputType: input.type,
816
+ content: input.content,
817
+ rawInput: input.rawInput,
818
+ filePath: input.filePath
819
+ }
820
+ };
821
+ }
822
+
823
+ /**
824
+ * Convert a SessionOutput to SDK format.
825
+ */
826
+ static formatSessionOutput(output: SessionOutput): SdkOutputMessage {
827
+ return {
828
+ type: 'output',
829
+ timestamp: output.timestamp,
830
+ data: {
831
+ role: output.role,
832
+ content: output.content,
833
+ toolName: output.toolName,
834
+ toolParams: output.toolParams,
835
+ toolResult: output.toolResult,
836
+ duration: output.duration,
837
+ reasoning_content: output.reasoning_content,
838
+ tool_calls: output.tool_calls
839
+ }
840
+ };
841
+ }
842
+ }