@xagent-ai/cli 1.0.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 (537) hide show
  1. package/.eslintrc.js +25 -0
  2. package/.gitmodules +3 -0
  3. package/.prettierrc.json +8 -0
  4. package/CONTRIBUTING.md +167 -0
  5. package/LICENSE +21 -0
  6. package/README.md +280 -0
  7. package/README_CN.md +280 -0
  8. package/dist/agents.d.ts +21 -0
  9. package/dist/agents.d.ts.map +1 -0
  10. package/dist/agents.js +463 -0
  11. package/dist/agents.js.map +1 -0
  12. package/dist/ai-client.d.ts +83 -0
  13. package/dist/ai-client.d.ts.map +1 -0
  14. package/dist/ai-client.js +1280 -0
  15. package/dist/ai-client.js.map +1 -0
  16. package/dist/auth.d.ts +25 -0
  17. package/dist/auth.d.ts.map +1 -0
  18. package/dist/auth.js +573 -0
  19. package/dist/auth.js.map +1 -0
  20. package/dist/cancellation.d.ts +46 -0
  21. package/dist/cancellation.d.ts.map +1 -0
  22. package/dist/cancellation.js +154 -0
  23. package/dist/cancellation.js.map +1 -0
  24. package/dist/checkpoint.d.ts +28 -0
  25. package/dist/checkpoint.d.ts.map +1 -0
  26. package/dist/checkpoint.js +186 -0
  27. package/dist/checkpoint.js.map +1 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +364 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/config.d.ts +49 -0
  33. package/dist/config.d.ts.map +1 -0
  34. package/dist/config.js +205 -0
  35. package/dist/config.js.map +1 -0
  36. package/dist/context-compressor.d.ts +51 -0
  37. package/dist/context-compressor.d.ts.map +1 -0
  38. package/dist/context-compressor.js +231 -0
  39. package/dist/context-compressor.js.map +1 -0
  40. package/dist/conversation.d.ts +34 -0
  41. package/dist/conversation.d.ts.map +1 -0
  42. package/dist/conversation.js +221 -0
  43. package/dist/conversation.js.map +1 -0
  44. package/dist/gui-subagent/action-parser/actionParser.d.ts +19 -0
  45. package/dist/gui-subagent/action-parser/actionParser.d.ts.map +1 -0
  46. package/dist/gui-subagent/action-parser/actionParser.js +203 -0
  47. package/dist/gui-subagent/action-parser/actionParser.js.map +1 -0
  48. package/dist/gui-subagent/action-parser/constants.d.ts +8 -0
  49. package/dist/gui-subagent/action-parser/constants.d.ts.map +1 -0
  50. package/dist/gui-subagent/action-parser/constants.js +12 -0
  51. package/dist/gui-subagent/action-parser/constants.js.map +1 -0
  52. package/dist/gui-subagent/action-parser/index.d.ts +3 -0
  53. package/dist/gui-subagent/action-parser/index.d.ts.map +1 -0
  54. package/dist/gui-subagent/action-parser/index.js +6 -0
  55. package/dist/gui-subagent/action-parser/index.js.map +1 -0
  56. package/dist/gui-subagent/action-parser/types.d.ts +24 -0
  57. package/dist/gui-subagent/action-parser/types.d.ts.map +1 -0
  58. package/dist/gui-subagent/action-parser/types.js +12 -0
  59. package/dist/gui-subagent/action-parser/types.js.map +1 -0
  60. package/dist/gui-subagent/agent/gui-agent.d.ts +126 -0
  61. package/dist/gui-subagent/agent/gui-agent.d.ts.map +1 -0
  62. package/dist/gui-subagent/agent/gui-agent.js +820 -0
  63. package/dist/gui-subagent/agent/gui-agent.js.map +1 -0
  64. package/dist/gui-subagent/agent/index.d.ts +5 -0
  65. package/dist/gui-subagent/agent/index.d.ts.map +1 -0
  66. package/dist/gui-subagent/agent/index.js +5 -0
  67. package/dist/gui-subagent/agent/index.js.map +1 -0
  68. package/dist/gui-subagent/index.d.ts +43 -0
  69. package/dist/gui-subagent/index.d.ts.map +1 -0
  70. package/dist/gui-subagent/index.js +96 -0
  71. package/dist/gui-subagent/index.js.map +1 -0
  72. package/dist/gui-subagent/operator/base-operator.d.ts +108 -0
  73. package/dist/gui-subagent/operator/base-operator.d.ts.map +1 -0
  74. package/dist/gui-subagent/operator/base-operator.js +172 -0
  75. package/dist/gui-subagent/operator/base-operator.js.map +1 -0
  76. package/dist/gui-subagent/operator/browser-operator.d.ts +36 -0
  77. package/dist/gui-subagent/operator/browser-operator.d.ts.map +1 -0
  78. package/dist/gui-subagent/operator/browser-operator.js +306 -0
  79. package/dist/gui-subagent/operator/browser-operator.js.map +1 -0
  80. package/dist/gui-subagent/operator/computer-operator.d.ts +31 -0
  81. package/dist/gui-subagent/operator/computer-operator.d.ts.map +1 -0
  82. package/dist/gui-subagent/operator/computer-operator.js +441 -0
  83. package/dist/gui-subagent/operator/computer-operator.js.map +1 -0
  84. package/dist/gui-subagent/operator/desktop-operator.d.ts +55 -0
  85. package/dist/gui-subagent/operator/desktop-operator.d.ts.map +1 -0
  86. package/dist/gui-subagent/operator/desktop-operator.js +527 -0
  87. package/dist/gui-subagent/operator/desktop-operator.js.map +1 -0
  88. package/dist/gui-subagent/operator/index.d.ts +7 -0
  89. package/dist/gui-subagent/operator/index.d.ts.map +1 -0
  90. package/dist/gui-subagent/operator/index.js +6 -0
  91. package/dist/gui-subagent/operator/index.js.map +1 -0
  92. package/dist/gui-subagent/types/actions.d.ts +108 -0
  93. package/dist/gui-subagent/types/actions.d.ts.map +1 -0
  94. package/dist/gui-subagent/types/actions.js +39 -0
  95. package/dist/gui-subagent/types/actions.js.map +1 -0
  96. package/dist/gui-subagent/types/index.d.ts +6 -0
  97. package/dist/gui-subagent/types/index.d.ts.map +1 -0
  98. package/dist/gui-subagent/types/index.js +6 -0
  99. package/dist/gui-subagent/types/index.js.map +1 -0
  100. package/dist/gui-subagent/types/operator.d.ts +95 -0
  101. package/dist/gui-subagent/types/operator.d.ts.map +1 -0
  102. package/dist/gui-subagent/types/operator.js +16 -0
  103. package/dist/gui-subagent/types/operator.js.map +1 -0
  104. package/dist/gui-subagent/utils.d.ts +19 -0
  105. package/dist/gui-subagent/utils.d.ts.map +1 -0
  106. package/dist/gui-subagent/utils.js +42 -0
  107. package/dist/gui-subagent/utils.js.map +1 -0
  108. package/dist/hook.d.ts +73 -0
  109. package/dist/hook.d.ts.map +1 -0
  110. package/dist/hook.js +156 -0
  111. package/dist/hook.js.map +1 -0
  112. package/dist/index.d.ts +19 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +19 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/input-history.d.ts +24 -0
  117. package/dist/input-history.d.ts.map +1 -0
  118. package/dist/input-history.js +94 -0
  119. package/dist/input-history.js.map +1 -0
  120. package/dist/input-processor.d.ts +31 -0
  121. package/dist/input-processor.d.ts.map +1 -0
  122. package/dist/input-processor.js +233 -0
  123. package/dist/input-processor.js.map +1 -0
  124. package/dist/keyboard-manager.d.ts +151 -0
  125. package/dist/keyboard-manager.d.ts.map +1 -0
  126. package/dist/keyboard-manager.js +396 -0
  127. package/dist/keyboard-manager.js.map +1 -0
  128. package/dist/logger.d.ts +75 -0
  129. package/dist/logger.d.ts.map +1 -0
  130. package/dist/logger.js +339 -0
  131. package/dist/logger.js.map +1 -0
  132. package/dist/mcp.d.ts +57 -0
  133. package/dist/mcp.d.ts.map +1 -0
  134. package/dist/mcp.js +483 -0
  135. package/dist/mcp.js.map +1 -0
  136. package/dist/memory.d.ts +25 -0
  137. package/dist/memory.d.ts.map +1 -0
  138. package/dist/memory.js +250 -0
  139. package/dist/memory.js.map +1 -0
  140. package/dist/print-system-prompt.d.ts +2 -0
  141. package/dist/print-system-prompt.d.ts.map +1 -0
  142. package/dist/print-system-prompt.js +40 -0
  143. package/dist/print-system-prompt.js.map +1 -0
  144. package/dist/session-manager.d.ts +41 -0
  145. package/dist/session-manager.d.ts.map +1 -0
  146. package/dist/session-manager.js +234 -0
  147. package/dist/session-manager.js.map +1 -0
  148. package/dist/session.d.ts +77 -0
  149. package/dist/session.d.ts.map +1 -0
  150. package/dist/session.js +1081 -0
  151. package/dist/session.js.map +1 -0
  152. package/dist/skill-invoker.d.ts +177 -0
  153. package/dist/skill-invoker.d.ts.map +1 -0
  154. package/dist/skill-invoker.js +1643 -0
  155. package/dist/skill-invoker.js.map +1 -0
  156. package/dist/skill-loader.d.ts +76 -0
  157. package/dist/skill-loader.d.ts.map +1 -0
  158. package/dist/skill-loader.js +407 -0
  159. package/dist/skill-loader.js.map +1 -0
  160. package/dist/slash-commands.d.ts +60 -0
  161. package/dist/slash-commands.d.ts.map +1 -0
  162. package/dist/slash-commands.js +1021 -0
  163. package/dist/slash-commands.js.map +1 -0
  164. package/dist/smart-approval.d.ts +137 -0
  165. package/dist/smart-approval.d.ts.map +1 -0
  166. package/dist/smart-approval.js +512 -0
  167. package/dist/smart-approval.js.map +1 -0
  168. package/dist/system-prompt-generator.d.ts +35 -0
  169. package/dist/system-prompt-generator.d.ts.map +1 -0
  170. package/dist/system-prompt-generator.js +729 -0
  171. package/dist/system-prompt-generator.js.map +1 -0
  172. package/dist/test-boundary-conditions.d.ts.map +1 -0
  173. package/dist/test-boundary-conditions.js.map +1 -0
  174. package/dist/test-cancellation-fix.d.ts.map +1 -0
  175. package/dist/test-cancellation-fix.js.map +1 -0
  176. package/dist/test-input-history.d.ts.map +1 -0
  177. package/dist/test-input-history.js.map +1 -0
  178. package/dist/test-interaction-flow.d.ts.map +1 -0
  179. package/dist/test-interaction-flow.js.map +1 -0
  180. package/dist/test-quick.d.ts.map +1 -0
  181. package/dist/test-quick.js.map +1 -0
  182. package/dist/test-user-interaction.d.ts.map +1 -0
  183. package/dist/test-user-interaction.js.map +1 -0
  184. package/dist/theme.d.ts +353 -0
  185. package/dist/theme.d.ts.map +1 -0
  186. package/dist/theme.js +383 -0
  187. package/dist/theme.js.map +1 -0
  188. package/dist/tools.d.ts +373 -0
  189. package/dist/tools.d.ts.map +1 -0
  190. package/dist/tools.js +2906 -0
  191. package/dist/tools.js.map +1 -0
  192. package/dist/types.d.ts +180 -0
  193. package/dist/types.d.ts.map +1 -0
  194. package/dist/types.js +23 -0
  195. package/dist/types.js.map +1 -0
  196. package/dist/unified-session.d.ts +42 -0
  197. package/dist/unified-session.d.ts.map +1 -0
  198. package/dist/unified-session.js +271 -0
  199. package/dist/unified-session.js.map +1 -0
  200. package/dist/update.d.ts +30 -0
  201. package/dist/update.d.ts.map +1 -0
  202. package/dist/update.js +211 -0
  203. package/dist/update.js.map +1 -0
  204. package/dist/workflow.d.ts +53 -0
  205. package/dist/workflow.d.ts.map +1 -0
  206. package/dist/workflow.js +405 -0
  207. package/dist/workflow.js.map +1 -0
  208. package/docs/architecture/mcp-integration-guide.md +131 -0
  209. package/docs/architecture/overview.md +93 -0
  210. package/docs/architecture/tool-system-design.md +89 -0
  211. package/docs/cli/commands.md +189 -0
  212. package/docs/smart-mode.md +257 -0
  213. package/docs/third-party-models.md +449 -0
  214. package/package.json +85 -0
  215. package/scripts/init-skills-path.js +58 -0
  216. package/skills/.claude-plugin/marketplace.json +45 -0
  217. package/skills/README.md +94 -0
  218. package/skills/THIRD_PARTY_NOTICES.md +405 -0
  219. package/skills/skills/algorithmic-art/LICENSE.txt +202 -0
  220. package/skills/skills/algorithmic-art/SKILL.md +405 -0
  221. package/skills/skills/algorithmic-art/templates/generator_template.js +223 -0
  222. package/skills/skills/algorithmic-art/templates/viewer.html +599 -0
  223. package/skills/skills/brand-guidelines/LICENSE.txt +202 -0
  224. package/skills/skills/brand-guidelines/SKILL.md +73 -0
  225. package/skills/skills/canvas-design/LICENSE.txt +202 -0
  226. package/skills/skills/canvas-design/SKILL.md +130 -0
  227. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  228. package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  229. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  230. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  231. package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  232. package/skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  233. package/skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  234. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  235. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  236. package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  237. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  238. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  239. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  240. package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  241. package/skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  242. package/skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  243. package/skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  244. package/skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  245. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  246. package/skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  247. package/skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  248. package/skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  249. package/skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  250. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  251. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  252. package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  253. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  254. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  255. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  256. package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  257. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  258. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  259. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  260. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  261. package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  262. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  263. package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  264. package/skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  265. package/skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  266. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  267. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  268. package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  269. package/skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  270. package/skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  271. package/skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  272. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  273. package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  274. package/skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  275. package/skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  276. package/skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  277. package/skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  278. package/skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  279. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  280. package/skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  281. package/skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  282. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  283. package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  284. package/skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  285. package/skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  286. package/skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  287. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  288. package/skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  289. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  290. package/skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  291. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  292. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  293. package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  294. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  295. package/skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  296. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  297. package/skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  298. package/skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  299. package/skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  300. package/skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  301. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  302. package/skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  303. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  304. package/skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  305. package/skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  306. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  307. package/skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  308. package/skills/skills/doc-coauthoring/SKILL.md +375 -0
  309. package/skills/skills/docx/LICENSE.txt +30 -0
  310. package/skills/skills/docx/SKILL.md +197 -0
  311. package/skills/skills/docx/docx-js.md +350 -0
  312. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  313. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  314. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  315. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  316. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  317. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  318. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  319. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  320. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  321. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  322. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  323. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  324. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  325. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  326. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  327. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  328. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  329. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  330. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  331. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  332. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  333. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  334. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  335. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  336. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  337. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  338. package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  339. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  340. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  341. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  342. package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  343. package/skills/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  344. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  345. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  346. package/skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  347. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  348. package/skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  349. package/skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  350. package/skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  351. package/skills/skills/docx/ooxml/scripts/pack.py +159 -0
  352. package/skills/skills/docx/ooxml/scripts/unpack.py +29 -0
  353. package/skills/skills/docx/ooxml/scripts/validate.py +69 -0
  354. package/skills/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  355. package/skills/skills/docx/ooxml/scripts/validation/base.py +951 -0
  356. package/skills/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  357. package/skills/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  358. package/skills/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  359. package/skills/skills/docx/ooxml.md +610 -0
  360. package/skills/skills/docx/scripts/__init__.py +1 -0
  361. package/skills/skills/docx/scripts/document.py +1276 -0
  362. package/skills/skills/docx/scripts/templates/comments.xml +3 -0
  363. package/skills/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  364. package/skills/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  365. package/skills/skills/docx/scripts/templates/commentsIds.xml +3 -0
  366. package/skills/skills/docx/scripts/templates/people.xml +3 -0
  367. package/skills/skills/docx/scripts/utilities.py +374 -0
  368. package/skills/skills/frontend-design/LICENSE.txt +177 -0
  369. package/skills/skills/frontend-design/SKILL.md +42 -0
  370. package/skills/skills/internal-comms/LICENSE.txt +202 -0
  371. package/skills/skills/internal-comms/SKILL.md +32 -0
  372. package/skills/skills/internal-comms/examples/3p-updates.md +47 -0
  373. package/skills/skills/internal-comms/examples/company-newsletter.md +65 -0
  374. package/skills/skills/internal-comms/examples/faq-answers.md +30 -0
  375. package/skills/skills/internal-comms/examples/general-comms.md +16 -0
  376. package/skills/skills/mcp-builder/LICENSE.txt +202 -0
  377. package/skills/skills/mcp-builder/SKILL.md +236 -0
  378. package/skills/skills/mcp-builder/reference/evaluation.md +602 -0
  379. package/skills/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  380. package/skills/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  381. package/skills/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  382. package/skills/skills/mcp-builder/scripts/connections.py +151 -0
  383. package/skills/skills/mcp-builder/scripts/evaluation.py +373 -0
  384. package/skills/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  385. package/skills/skills/mcp-builder/scripts/requirements.txt +2 -0
  386. package/skills/skills/pdf/LICENSE.txt +30 -0
  387. package/skills/skills/pdf/SKILL.md +294 -0
  388. package/skills/skills/pdf/forms.md +205 -0
  389. package/skills/skills/pdf/reference.md +612 -0
  390. package/skills/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  391. package/skills/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  392. package/skills/skills/pdf/scripts/check_fillable_fields.py +12 -0
  393. package/skills/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  394. package/skills/skills/pdf/scripts/create_validation_image.py +41 -0
  395. package/skills/skills/pdf/scripts/extract_form_field_info.py +152 -0
  396. package/skills/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  397. package/skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  398. package/skills/skills/pptx/LICENSE.txt +30 -0
  399. package/skills/skills/pptx/SKILL.md +484 -0
  400. package/skills/skills/pptx/html2pptx.md +625 -0
  401. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  402. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  403. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  404. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  405. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  406. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  407. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  408. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  409. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  410. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  411. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  412. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  413. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  414. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  415. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  416. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  417. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  418. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  419. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  420. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  421. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  422. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  423. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  424. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  425. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  426. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  427. package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  428. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  429. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  430. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  431. package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  432. package/skills/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  433. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  434. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  435. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  436. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  437. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  438. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  439. package/skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  440. package/skills/skills/pptx/ooxml/scripts/pack.py +159 -0
  441. package/skills/skills/pptx/ooxml/scripts/unpack.py +29 -0
  442. package/skills/skills/pptx/ooxml/scripts/validate.py +69 -0
  443. package/skills/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  444. package/skills/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  445. package/skills/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  446. package/skills/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  447. package/skills/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  448. package/skills/skills/pptx/ooxml.md +427 -0
  449. package/skills/skills/pptx/scripts/html2pptx.js +979 -0
  450. package/skills/skills/pptx/scripts/inventory.py +1020 -0
  451. package/skills/skills/pptx/scripts/rearrange.py +231 -0
  452. package/skills/skills/pptx/scripts/replace.py +385 -0
  453. package/skills/skills/pptx/scripts/thumbnail.py +450 -0
  454. package/skills/skills/skill-creator/LICENSE.txt +202 -0
  455. package/skills/skills/skill-creator/SKILL.md +356 -0
  456. package/skills/skills/skill-creator/references/output-patterns.md +82 -0
  457. package/skills/skills/skill-creator/references/workflows.md +28 -0
  458. package/skills/skills/skill-creator/scripts/init_skill.py +303 -0
  459. package/skills/skills/skill-creator/scripts/package_skill.py +110 -0
  460. package/skills/skills/skill-creator/scripts/quick_validate.py +95 -0
  461. package/skills/skills/slack-gif-creator/LICENSE.txt +202 -0
  462. package/skills/skills/slack-gif-creator/SKILL.md +254 -0
  463. package/skills/skills/slack-gif-creator/core/easing.py +234 -0
  464. package/skills/skills/slack-gif-creator/core/frame_composer.py +176 -0
  465. package/skills/skills/slack-gif-creator/core/gif_builder.py +269 -0
  466. package/skills/skills/slack-gif-creator/core/validators.py +136 -0
  467. package/skills/skills/slack-gif-creator/requirements.txt +4 -0
  468. package/skills/skills/theme-factory/LICENSE.txt +202 -0
  469. package/skills/skills/theme-factory/SKILL.md +59 -0
  470. package/skills/skills/theme-factory/theme-showcase.pdf +0 -0
  471. package/skills/skills/theme-factory/themes/arctic-frost.md +19 -0
  472. package/skills/skills/theme-factory/themes/botanical-garden.md +19 -0
  473. package/skills/skills/theme-factory/themes/desert-rose.md +19 -0
  474. package/skills/skills/theme-factory/themes/forest-canopy.md +19 -0
  475. package/skills/skills/theme-factory/themes/golden-hour.md +19 -0
  476. package/skills/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  477. package/skills/skills/theme-factory/themes/modern-minimalist.md +19 -0
  478. package/skills/skills/theme-factory/themes/ocean-depths.md +19 -0
  479. package/skills/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  480. package/skills/skills/theme-factory/themes/tech-innovation.md +19 -0
  481. package/skills/skills/web-artifacts-builder/LICENSE.txt +202 -0
  482. package/skills/skills/web-artifacts-builder/SKILL.md +74 -0
  483. package/skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  484. package/skills/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  485. package/skills/skills/webapp-testing/LICENSE.txt +202 -0
  486. package/skills/skills/webapp-testing/SKILL.md +96 -0
  487. package/skills/skills/webapp-testing/examples/console_logging.py +35 -0
  488. package/skills/skills/webapp-testing/examples/element_discovery.py +40 -0
  489. package/skills/skills/webapp-testing/examples/static_html_automation.py +33 -0
  490. package/skills/skills/webapp-testing/scripts/with_server.py +106 -0
  491. package/skills/skills/xlsx/LICENSE.txt +30 -0
  492. package/skills/skills/xlsx/SKILL.md +289 -0
  493. package/skills/skills/xlsx/recalc.py +178 -0
  494. package/skills/spec/agent-skills-spec.md +3 -0
  495. package/skills/template/SKILL.md +6 -0
  496. package/src/agents.ts +504 -0
  497. package/src/ai-client.ts +1456 -0
  498. package/src/auth.ts +648 -0
  499. package/src/cancellation.ts +176 -0
  500. package/src/checkpoint.ts +219 -0
  501. package/src/cli.ts +384 -0
  502. package/src/config.ts +248 -0
  503. package/src/context-compressor.ts +290 -0
  504. package/src/conversation.ts +288 -0
  505. package/src/gui-subagent/action-parser/actionParser.ts +312 -0
  506. package/src/gui-subagent/action-parser/constants.ts +12 -0
  507. package/src/gui-subagent/action-parser/index.ts +6 -0
  508. package/src/gui-subagent/action-parser/types.ts +31 -0
  509. package/src/gui-subagent/agent/gui-agent.ts +982 -0
  510. package/src/gui-subagent/agent/index.ts +5 -0
  511. package/src/gui-subagent/index.ts +139 -0
  512. package/src/gui-subagent/operator/base-operator.ts +246 -0
  513. package/src/gui-subagent/operator/computer-operator.ts +520 -0
  514. package/src/gui-subagent/operator/index.ts +7 -0
  515. package/src/gui-subagent/types/actions.ts +263 -0
  516. package/src/gui-subagent/types/index.ts +6 -0
  517. package/src/gui-subagent/types/operator.ts +106 -0
  518. package/src/gui-subagent/utils.ts +51 -0
  519. package/src/index.ts +18 -0
  520. package/src/input-processor.ts +282 -0
  521. package/src/logger.ts +438 -0
  522. package/src/mcp.ts +563 -0
  523. package/src/memory.ts +303 -0
  524. package/src/session-manager.ts +308 -0
  525. package/src/session.ts +1280 -0
  526. package/src/skill-invoker.ts +1888 -0
  527. package/src/skill-loader.ts +476 -0
  528. package/src/slash-commands.ts +1150 -0
  529. package/src/smart-approval.ts +595 -0
  530. package/src/system-prompt-generator.ts +786 -0
  531. package/src/theme.ts +455 -0
  532. package/src/tools.ts +3398 -0
  533. package/src/types.ts +198 -0
  534. package/src/update.ts +270 -0
  535. package/src/workflow.ts +508 -0
  536. package/tsconfig.json +22 -0
  537. package/vitest.config.ts +19 -0
@@ -0,0 +1,786 @@
1
+ import { ToolRegistry } from './tools.js';
2
+ import { ExecutionMode, AgentConfig } from './types.js';
3
+ import { getAgentManager } from './agents.js';
4
+ import { getSkillInvoker, SkillInfo } from './skill-invoker.js';
5
+
6
+ export interface ToolParameter {
7
+ type: string;
8
+ description: string;
9
+ required?: boolean;
10
+ enum?: string[];
11
+ default?: any;
12
+ }
13
+
14
+ export interface ToolSchema {
15
+ name: string;
16
+ description: string;
17
+ parameters: Record<string, ToolParameter>;
18
+ usage: string;
19
+ examples: string[];
20
+ bestPractices: string[];
21
+ }
22
+
23
+ export class SystemPromptGenerator {
24
+ private toolRegistry: ToolRegistry;
25
+ private executionMode: ExecutionMode;
26
+ private agentConfig?: AgentConfig;
27
+
28
+ constructor(toolRegistry: ToolRegistry, executionMode: ExecutionMode, agentConfig?: AgentConfig) {
29
+ this.toolRegistry = toolRegistry;
30
+ this.executionMode = executionMode;
31
+ this.agentConfig = agentConfig;
32
+ }
33
+
34
+ async generateEnhancedSystemPrompt(baseSystemPrompt: string): Promise<string> {
35
+ let availableTools = this.toolRegistry.getAll().filter(
36
+ tool => tool.allowedModes.includes(this.executionMode)
37
+ );
38
+
39
+ if (this.agentConfig) {
40
+ const agentManager = getAgentManager();
41
+ const allowedToolNames = agentManager.getAvailableToolsForAgent(this.agentConfig, this.executionMode);
42
+ availableTools = availableTools.filter(tool => allowedToolNames.includes(tool.name));
43
+ }
44
+
45
+ let enhancedPrompt = baseSystemPrompt;
46
+
47
+ // Only add tool-related content if tools are available
48
+ if (availableTools.length > 0) {
49
+ const toolSchemas = this.getToolSchemas(availableTools);
50
+ const toolUsageGuide = this.generateToolUsageGuide(toolSchemas);
51
+ const hasInvokeSkillTool = availableTools.some(tool => tool.name === 'InvokeSkill');
52
+ const skillInstructions = hasInvokeSkillTool ? await this.generateSkillInstructions() : '';
53
+ const decisionMakingGuide = this.generateDecisionMakingGuide(availableTools);
54
+ const executionStrategy = this.generateExecutionStrategy();
55
+
56
+
57
+ enhancedPrompt += `
58
+
59
+ ${toolUsageGuide}
60
+
61
+ ${skillInstructions}
62
+
63
+ ${decisionMakingGuide}
64
+
65
+ ${executionStrategy}
66
+
67
+
68
+
69
+ ## Important Notes
70
+ - Always verify tool results before proceeding to next steps
71
+ - If a tool fails, analyze the error and try alternative approaches
72
+ - Use tools efficiently - avoid redundant calls
73
+ - When in doubt, ask the user for clarification
74
+ - Maintain context across tool calls to build a coherent solution`;
75
+ } else {
76
+ // No tools available - explicitly tell the AI not to use tools
77
+ enhancedPrompt += `
78
+
79
+ ## IMPORTANT: READ-ONLY MODE
80
+
81
+ You are in DEFAULT mode (read-only mode). You CANNOT use any tools or functions.
82
+
83
+ STRICT PROHIBITIONS:
84
+ - DO NOT attempt to call any functions, tools, or commands
85
+ - DO NOT output any tool call syntax, such as:
86
+ - <function_calls>...</function_calls>
87
+ - ToolName(params)
88
+ - Function call format
89
+ - Any similar syntax
90
+ - DO NOT simulate tool calls or pretend to use tools
91
+ - DO NOT output code that would execute tools
92
+
93
+ REQUIRED BEHAVIOR:
94
+ - Respond ONLY with plain text
95
+ - Answer questions based on your knowledge
96
+ - If you need to read files or perform actions, ask the user to switch modes
97
+ - Tell the user they can use "/mode yolo" or "/mode accept_edits" to enable tools
98
+
99
+ Remember: You are in a conversational mode, not a tool-execution mode. Just talk to the user!`;
100
+ }
101
+
102
+ return enhancedPrompt;
103
+ }
104
+
105
+ private getToolSchemas(tools: any[]): ToolSchema[] {
106
+ return tools.map(tool => this.createToolSchema(tool));
107
+ }
108
+
109
+ private createToolSchema(tool: any): ToolSchema {
110
+ const schemas: Record<string, ToolSchema> = {
111
+ Read: {
112
+ name: 'Read',
113
+ description: 'Read the contents of a file from the filesystem',
114
+ parameters: {
115
+ filePath: {
116
+ type: 'string',
117
+ description: 'Path to the file to read (relative or absolute)',
118
+ required: true
119
+ },
120
+ offset: {
121
+ type: 'number',
122
+ description: 'Starting line number (0-indexed)',
123
+ required: false,
124
+ default: 0
125
+ },
126
+ limit: {
127
+ type: 'number',
128
+ description: 'Maximum number of lines to read',
129
+ required: false
130
+ }
131
+ },
132
+ usage: 'Use this tool when you need to examine file contents, understand code structure, or read configuration files',
133
+ examples: [
134
+ 'Read a specific file: Read(filePath="package.json")',
135
+ 'Read with line range: Read(filePath="src/index.ts", offset=100, limit=50)'
136
+ ],
137
+ bestPractices: [
138
+ 'Always check if file exists before reading',
139
+ 'Use offset and limit for large files to avoid excessive output',
140
+ 'Read configuration files first to understand project structure'
141
+ ]
142
+ },
143
+ Write: {
144
+ name: 'Write',
145
+ description: 'Write content to a file, creating directories if needed',
146
+ parameters: {
147
+ filePath: {
148
+ type: 'string',
149
+ description: 'Path where the file should be written',
150
+ required: true
151
+ },
152
+ content: {
153
+ type: 'string',
154
+ description: 'Content to write to the file',
155
+ required: true
156
+ }
157
+ },
158
+ usage: 'Use this tool to create new files or completely overwrite existing files',
159
+ examples: [
160
+ 'Create a new file: Write(filePath="src/utils.ts", content="export function helper() {}")',
161
+ 'Write configuration: Write(filePath=".env", content="API_KEY=secret")'
162
+ ],
163
+ bestPractices: [
164
+ 'Always read existing file before overwriting',
165
+ 'Use proper file extensions',
166
+ 'Create necessary directory structures',
167
+ 'Include appropriate comments and documentation'
168
+ ]
169
+ },
170
+ Grep: {
171
+ name: 'Grep',
172
+ description: 'Search for text patterns across multiple files',
173
+ parameters: {
174
+ pattern: {
175
+ type: 'string',
176
+ description: 'Text pattern or regex to search for',
177
+ required: true
178
+ },
179
+ path: {
180
+ type: 'string',
181
+ description: 'Directory path to search in',
182
+ required: false,
183
+ default: '.'
184
+ },
185
+ include: {
186
+ type: 'string',
187
+ description: 'File pattern to include (glob)',
188
+ required: false
189
+ },
190
+ exclude: {
191
+ type: 'string',
192
+ description: 'File pattern to exclude (glob)',
193
+ required: false
194
+ },
195
+ case_sensitive: {
196
+ type: 'boolean',
197
+ description: 'Whether search is case-sensitive',
198
+ required: false,
199
+ default: false
200
+ },
201
+ fixed_strings: {
202
+ type: 'boolean',
203
+ description: 'Treat pattern as literal string, not regex',
204
+ required: false,
205
+ default: false
206
+ },
207
+ context: {
208
+ type: 'number',
209
+ description: 'Number of context lines before and after match',
210
+ required: false
211
+ },
212
+ before: {
213
+ type: 'number',
214
+ description: 'Number of context lines before match',
215
+ required: false
216
+ },
217
+ after: {
218
+ type: 'number',
219
+ description: 'Number of context lines after match',
220
+ required: false
221
+ },
222
+ no_ignore: {
223
+ type: 'boolean',
224
+ description: 'Ignore .gitignore patterns',
225
+ required: false,
226
+ default: false
227
+ }
228
+ },
229
+ usage: 'Search for code patterns, function definitions, or text across the codebase',
230
+ examples: [
231
+ 'Search for function: Grep(pattern="function.*\\(.*\\)")',
232
+ 'Find specific text: Grep(pattern="TODO", case_sensitive=true)',
233
+ 'Search in specific files: Grep(pattern="import", include="*.ts")'
234
+ ],
235
+ bestPractices: [
236
+ 'Use fixed_strings for simple text searches',
237
+ 'Use context to see surrounding code',
238
+ 'Narrow search with include/exclude patterns',
239
+ 'Use case_sensitive for exact matches'
240
+ ]
241
+ },
242
+ Bash: {
243
+ name: 'Bash',
244
+ description: 'Execute shell commands in the terminal',
245
+ parameters: {
246
+ command: {
247
+ type: 'string',
248
+ description: 'Shell command to execute',
249
+ required: true
250
+ },
251
+ cwd: {
252
+ type: 'string',
253
+ description: 'Working directory for command execution',
254
+ required: false
255
+ },
256
+ description: {
257
+ type: 'string',
258
+ description: 'Human-readable description of what the command does',
259
+ required: false
260
+ },
261
+ timeout: {
262
+ type: 'number',
263
+ description: 'Timeout in seconds (default: 120)',
264
+ required: false,
265
+ default: 120
266
+ },
267
+ run_in_bg: {
268
+ type: 'boolean',
269
+ description: 'Run command in background',
270
+ required: false,
271
+ default: false
272
+ }
273
+ },
274
+ usage: 'Execute terminal commands, run tests, install dependencies, or perform system operations',
275
+ examples: [
276
+ 'Install dependencies: Bash(command="npm install")',
277
+ 'Run tests: Bash(command="npm test", description="Run unit tests")',
278
+ 'Build project: Bash(command="npm run build")'
279
+ ],
280
+ bestPractices: [
281
+ 'Always provide clear descriptions',
282
+ 'Use appropriate timeout values',
283
+ 'Check command exit codes',
284
+ 'Handle errors gracefully',
285
+ 'Use run_in_bg for long-running processes'
286
+ ]
287
+ },
288
+ ListDirectory: {
289
+ name: 'ListDirectory',
290
+ description: 'List files and directories in a given path',
291
+ parameters: {
292
+ path: {
293
+ type: 'string',
294
+ description: 'Directory path to list',
295
+ required: true
296
+ },
297
+ recursive: {
298
+ type: 'boolean',
299
+ description: 'List recursively',
300
+ required: false,
301
+ default: false
302
+ }
303
+ },
304
+ usage: 'Explore directory structure, find files, or understand project layout',
305
+ examples: [
306
+ 'List current directory: ListDirectory(path=".")',
307
+ 'List recursively: ListDirectory(path="src", recursive=true)'
308
+ ],
309
+ bestPractices: [
310
+ 'Use recursive for deep exploration',
311
+ 'Combine with Read to examine files',
312
+ 'Check directory existence first'
313
+ ]
314
+ },
315
+ SearchCodebase: {
316
+ name: 'SearchCodebase',
317
+ description: 'Semantic search through the codebase using embeddings',
318
+ parameters: {
319
+ query: {
320
+ type: 'string',
321
+ description: 'Natural language query describing what to search for',
322
+ required: true
323
+ },
324
+ target_directories: {
325
+ type: 'array',
326
+ description: 'Specific directories to search in',
327
+ required: false
328
+ }
329
+ },
330
+ usage: 'Find code by meaning rather than exact text matches',
331
+ examples: [
332
+ 'Find authentication logic: SearchCodebase(query="how do we check authentication headers?")',
333
+ 'Find error handling: SearchCodebase(query="where do we do error handling in the file watcher?")'
334
+ ],
335
+ bestPractices: [
336
+ 'Use natural language queries',
337
+ 'Be specific about what you are looking for',
338
+ 'Combine with Read to examine found code'
339
+ ]
340
+ },
341
+ DeleteFile: {
342
+ name: 'DeleteFile',
343
+ description: 'Delete a file from the filesystem',
344
+ parameters: {
345
+ filePath: {
346
+ type: 'string',
347
+ description: 'Path to the file to delete',
348
+ required: true
349
+ }
350
+ },
351
+ usage: 'Remove files that are no longer needed',
352
+ examples: [
353
+ 'Delete file: DeleteFile(filePath="old-file.txt")'
354
+ ],
355
+ bestPractices: [
356
+ 'Verify file is not needed before deletion',
357
+ 'Use with caution - deletion is permanent',
358
+ 'Consider backing up important files'
359
+ ]
360
+ },
361
+ CreateDirectory: {
362
+ name: 'CreateDirectory',
363
+ description: 'Create a directory and any necessary parent directories',
364
+ parameters: {
365
+ path: {
366
+ type: 'string',
367
+ description: 'Directory path to create',
368
+ required: true
369
+ }
370
+ },
371
+ usage: 'Create directory structures for organizing files',
372
+ examples: [
373
+ 'Create directory: CreateDirectory(path="src/components")'
374
+ ],
375
+ bestPractices: [
376
+ 'Use descriptive directory names',
377
+ 'Follow project conventions',
378
+ 'Create necessary parent directories automatically'
379
+ ]
380
+ },
381
+ Replace: {
382
+ name: 'Replace',
383
+ description: 'Replace text in a file using search and replace',
384
+ parameters: {
385
+ filePath: {
386
+ type: 'string',
387
+ description: 'Path to the file to modify',
388
+ required: true
389
+ },
390
+ old_str: {
391
+ type: 'string',
392
+ description: 'Text to search for',
393
+ required: true
394
+ },
395
+ new_str: {
396
+ type: 'string',
397
+ description: 'Text to replace with',
398
+ required: true
399
+ }
400
+ },
401
+ usage: 'Make targeted edits to files without rewriting entire content',
402
+ examples: [
403
+ 'Replace text: Replace(filePath="config.json", old_str="old value", new_str="new value")'
404
+ ],
405
+ bestPractices: [
406
+ 'Use unique old_str to avoid multiple replacements',
407
+ 'Read file first to verify content',
408
+ 'Use Write for large changes'
409
+ ]
410
+ },
411
+ WebSearch: {
412
+ name: 'WebSearch',
413
+ description: 'Search the web for information',
414
+ parameters: {
415
+ query: {
416
+ type: 'string',
417
+ description: 'Search query',
418
+ required: true
419
+ },
420
+ num: {
421
+ type: 'number',
422
+ description: 'Number of results to return',
423
+ required: false,
424
+ default: 5
425
+ }
426
+ },
427
+ usage: 'Find information online, research topics, or get current data',
428
+ examples: [
429
+ 'Search web: WebSearch(query="latest Node.js version")',
430
+ 'Multiple results: WebSearch(query="React best practices", num=10)'
431
+ ],
432
+ bestPractices: [
433
+ 'Use specific search queries',
434
+ 'Limit results for focused answers',
435
+ 'Verify information from multiple sources'
436
+ ]
437
+ },
438
+ WebFetch: {
439
+ name: 'WebFetch',
440
+ description: 'Fetch and process URL content',
441
+ parameters: {
442
+ prompt: {
443
+ type: 'string',
444
+ description: 'Prompt containing URL to fetch',
445
+ required: true
446
+ }
447
+ },
448
+ usage: 'Retrieve content from web pages, APIs, or online resources',
449
+ examples: [
450
+ 'Fetch URL: WebFetch(prompt="https://api.example.com/data")'
451
+ ],
452
+ bestPractices: [
453
+ 'Handle network errors gracefully',
454
+ 'Validate URL format',
455
+ 'Consider rate limiting'
456
+ ]
457
+ },
458
+ TodoWrite: {
459
+ name: 'TodoWrite',
460
+ description: 'Create and manage structured task lists',
461
+ parameters: {
462
+ todos: {
463
+ type: 'array',
464
+ description: 'Array of todo items with id, task, status, and priority',
465
+ required: true
466
+ }
467
+ },
468
+ usage: 'Plan and track complex multi-step tasks',
469
+ examples: [
470
+ 'Create todos: TodoWrite(todos=[{"id":"1","task":"Install dependencies","status":"pending","priority":"high"}])'
471
+ ],
472
+ bestPractices: [
473
+ 'Use descriptive task names',
474
+ 'Set appropriate priorities',
475
+ 'Update status as tasks progress',
476
+ 'Break down complex tasks into smaller steps'
477
+ ]
478
+ },
479
+ Task: {
480
+ name: 'Task',
481
+ description: 'Launch a specialized agent to handle specific tasks',
482
+ parameters: {
483
+ description: {
484
+ type: 'string',
485
+ description: 'Brief description of the task',
486
+ required: true
487
+ },
488
+ query: {
489
+ type: 'string',
490
+ description: 'Detailed task instructions',
491
+ required: true
492
+ },
493
+ subagent_type: {
494
+ type: 'string',
495
+ description: 'Type of agent to use (plan-agent, explore-agent, frontend-tester, code-reviewer, frontend-developer, backend-developer)',
496
+ required: true
497
+ },
498
+ response_language: {
499
+ type: 'string',
500
+ description: 'Language for the response',
501
+ required: false
502
+ }
503
+ },
504
+ usage: 'Delegate specialized tasks to expert agents',
505
+ examples: [
506
+ 'Plan task: Task(description="Create implementation plan", query="Create a detailed plan for implementing user authentication system", subagent_type="plan-agent")',
507
+ 'Explore codebase: Task(description="Explore auth module", query="Find and analyze all authentication-related code in the codebase", subagent_type="explore-agent")',
508
+ 'Run tests: Task(description="Create component tests", query="Write unit tests for the Button component including edge cases", subagent_type="frontend-tester")'
509
+ ],
510
+ bestPractices: [
511
+ 'Choose appropriate agent type for the task',
512
+ 'Provide clear task descriptions',
513
+ 'Specify desired response language if needed',
514
+ 'Review agent results carefully'
515
+ ]
516
+ }
517
+ };
518
+
519
+ // Fallback for unknown tools (including MCP tools)
520
+ if (schemas[tool.name]) {
521
+ return schemas[tool.name];
522
+ }
523
+
524
+ // Convert MCP inputSchema to parameters format
525
+ const parameters: Record<string, ToolParameter> = {};
526
+ if (tool.inputSchema?.properties) {
527
+ for (const [paramName, paramDef] of Object.entries<any>(tool.inputSchema.properties)) {
528
+ parameters[paramName] = {
529
+ type: paramDef.type || 'any',
530
+ description: paramDef.description || '',
531
+ required: tool.inputSchema.required?.includes(paramName) || false,
532
+ enum: paramDef.enum
533
+ };
534
+ }
535
+ }
536
+
537
+ return {
538
+ name: tool.name,
539
+ description: tool.description,
540
+ parameters,
541
+ usage: `Use ${tool.name} for related tasks`,
542
+ examples: [],
543
+ bestPractices: []
544
+ };
545
+ }
546
+
547
+ private generateToolUsageGuide(toolSchemas: ToolSchema[]): string {
548
+ let guide = '## Available Tools\n\n';
549
+ guide += 'You have access to the following tools. Use them to accomplish user requests:\n\n';
550
+
551
+ toolSchemas.forEach(schema => {
552
+ guide += `### ${schema.name}\n\n`;
553
+ guide += `**Description**: ${schema.description}\n\n`;
554
+ guide += `**Usage**: ${schema.usage}\n\n`;
555
+ guide += `**Parameters**:\n`;
556
+
557
+ Object.entries(schema.parameters).forEach(([paramName, param]) => {
558
+ const required = param.required ? ' (required)' : ' (optional)';
559
+ const defaultValue = param.default !== undefined ? ` (default: ${param.default})` : '';
560
+ guide += `- \`${paramName}\`${required}${defaultValue}: ${param.description}\n`;
561
+ });
562
+
563
+ if (schema.examples.length > 0) {
564
+ guide += `\n**Examples**:\n`;
565
+ schema.examples.forEach(example => {
566
+ guide += `- ${example}\n`;
567
+ });
568
+ }
569
+
570
+ if (schema.bestPractices.length > 0) {
571
+ guide += `\n**Best Practices**:\n`;
572
+ schema.bestPractices.forEach(practice => {
573
+ guide += `- ${practice}\n`;
574
+ });
575
+ }
576
+
577
+ guide += '\n---\n\n';
578
+ });
579
+
580
+ return guide;
581
+ }
582
+
583
+ private generateDecisionMakingGuide(availableTools: any[]): string {
584
+ // 工具名称到简短描述的映射
585
+ const toolDescriptions: Record<string, string> = {
586
+ 'Read': 'When you need to understand existing code, configuration, or documentation',
587
+ 'Write': 'When creating new files or completely replacing existing content',
588
+ 'Grep': 'When searching for specific patterns, function names, or text across files',
589
+ 'Bash': 'When running tests, installing dependencies, building projects, or executing terminal commands',
590
+ 'SearchCodebase': 'When finding code by meaning rather than exact text matches',
591
+ 'ListDirectory': 'When exploring project structure or finding files',
592
+ 'Replace': 'When making targeted edits without rewriting entire files',
593
+ 'web_search': 'When you need current information from the internet',
594
+ 'web_fetch': 'When retrieving content from specific URLs',
595
+ 'todo_write': 'When planning and tracking complex multi-step tasks',
596
+ 'task': 'When delegating specialized work to expert agents',
597
+ 'DeleteFile': 'When you need to remove a file from the filesystem',
598
+ 'CreateDirectory': 'When you need to create a new directory or folder structure',
599
+ 'ReadBashOutput': 'When you need to read the output of a background task',
600
+ 'ask_user_question': 'When you need to ask the user for clarification or decisions',
601
+ 'save_memory': 'When you need to remember important information for future sessions',
602
+ 'exit_plan_mode': 'When you have completed planning and are ready to execute',
603
+ 'xml_escape': 'When you need to escape special characters in XML/HTML files',
604
+ 'image_read': 'When you need to analyze or read image files',
605
+ 'InvokeSkill': 'When you need to use specialized skills for domain tasks (see Available Skills section for details)'
606
+ };
607
+
608
+ // 根据可用工具生成 "When to Use Tools" 部分
609
+ let toolsSection = '### When to Use Tools\n';
610
+ if (availableTools.length > 0) {
611
+ for (const tool of availableTools) {
612
+ const description = toolDescriptions[tool.name] || `When you need to use ${tool.name}`;
613
+ toolsSection += `- **${tool.name}**: ${description}\n`;
614
+ }
615
+ } else {
616
+ toolsSection += '- (No tools available in current mode)\n';
617
+ }
618
+
619
+ return `## Decision Making Guide
620
+
621
+ ${toolsSection}
622
+
623
+ ### CRITICAL: IMMEDIATE TOOL EXECUTION
624
+ **YOU MUST CALL TOOLS IMMEDIATELY when needed - DO NOT say "let me..." or "I will..." first!**
625
+
626
+ When a user asks you to:
627
+ - Read files → IMMEDIATELY call Read tool with the file path
628
+ - List directory → IMMEDIATELY call ListDirectory tool
629
+ - Search code → IMMEDIATELY call Grep or SearchCodebase tool
630
+ - Run commands → IMMEDIATELY call Bash tool
631
+ - Introduce the codebase → IMMEDIATELY call ListDirectory and Read tools
632
+ - Analyze the project → IMMEDIATELY call ListDirectory and Read tools
633
+ - Explain the code → IMMEDIATELY call Read tools
634
+ - Any action requiring tools → IMMEDIATELY make the tool call
635
+
636
+ **ABSOLUTELY WRONG**:
637
+ - "Let me explore the codebase structure first" (then do nothing)
638
+ - "I will read the file for you" (then do nothing)
639
+ - "Let me help you explore this codebase" (then do nothing)
640
+ - "Let me understand this first" (then do nothing)
641
+
642
+ **ABSOLUTELY CORRECT**:
643
+ - Call ListDirectory(path=".") immediately to explore the structure
644
+ - Call Read(filePath="path/to/file") immediately to read the file
645
+ - Call ListDirectory(path=".") immediately when asked to introduce the codebase
646
+
647
+ **ZERO DELAY POLICY**:
648
+ - Do NOT add any conversational filler before tool calls
649
+ - Do NOT say "I'm going to" or "Let me" - just CALL THE TOOL
650
+ - Your response should START with the tool call, not with a statement about what you'll do
651
+
652
+ ### Tool Selection Strategy
653
+ 1. **Analyze the user's request** - Understand what they want to accomplish
654
+ 2. **Identify the core task** - Determine the primary action needed
655
+ 3. **Choose the most appropriate tool** - Select the tool that best matches the task
656
+ 4. **Consider dependencies** - Some tasks require multiple tools in sequence
657
+ 5. **Plan the execution order** - Determine the logical sequence of tool calls
658
+ 6. **EXECUTE IMMEDIATELY** - Make the tool call right away without delay
659
+
660
+ ### Common Patterns
661
+ - **Code exploration**: ListDirectory → Read → Grep/SearchCodebase
662
+ - **Feature implementation**: Read (existing code) → Write (new files) → Bash (test)
663
+ - **Bug fixing**: Grep/SearchCodebase (find issue) → Read (understand) → Replace/Write (fix) → Bash (verify)
664
+ - **Project setup**: WebSearch (research) → Write (create files) → Bash (install/build)
665
+ - **Documentation**: Read (code) → Write (docs)
666
+
667
+ ### Error Handling
668
+ - If a tool fails, analyze the error message
669
+ - Try alternative approaches or parameters
670
+ - Ask the user for clarification if needed
671
+ - Report errors clearly with context`;
672
+ }
673
+
674
+ private generateExecutionStrategy(): string {
675
+ return `## Execution Strategy
676
+
677
+ ### Step-by-Step Approach
678
+ 1. **Understand the goal**: Clarify what the user wants to achieve
679
+ 2. **Plan the approach**: Break down complex tasks into smaller steps
680
+ 3. **Execute systematically**: Use tools in the right order
681
+ 4. **Verify results**: Check each step before proceeding
682
+ 5. **Report progress**: Keep the user informed of your actions
683
+
684
+ ### Efficiency Tips
685
+ - **Batch similar operations**: Group related tool calls together
686
+ - **Avoid redundant calls**: Don't read the same file multiple times
687
+ - **Use context wisely**: Leverage information from previous tool results
688
+ - **Be precise**: Use specific parameters to get exactly what you need
689
+
690
+ ### Quality Assurance
691
+ - Always verify tool outputs match expectations
692
+ - Test code changes before declaring success
693
+ - Check for edge cases and error conditions
694
+ - Ensure changes don't break existing functionality
695
+
696
+ ### Communication
697
+ - Explain your reasoning before taking action
698
+ - Provide clear summaries of what you've done
699
+ - Highlight any assumptions you've made
700
+ - Ask for confirmation on destructive operations`;
701
+ }
702
+
703
+ /**
704
+ * Dynamically generate skill instructions from loaded skills
705
+ */
706
+ private async generateSkillInstructions(): Promise<string> {
707
+ try {
708
+ const skillInvoker = getSkillInvoker();
709
+ await skillInvoker.initialize();
710
+ const skills = await skillInvoker.listAvailableSkills();
711
+
712
+ if (skills.length === 0) {
713
+ return '';
714
+ }
715
+
716
+ // Group skills by category
717
+ const skillsByCategory = new Map<string, SkillInfo[]>();
718
+ for (const skill of skills) {
719
+ const existing = skillsByCategory.get(skill.category) || [];
720
+ existing.push(skill);
721
+ skillsByCategory.set(skill.category, existing);
722
+ }
723
+
724
+ let guide = '## Available Skills\n\n';
725
+ guide += 'When users request tasks matching these domains, use the "InvokeSkill" tool to access specialized capabilities:\n\n';
726
+
727
+ for (const [category, categorySkills] of skillsByCategory) {
728
+ guide += `### ${category}\n`;
729
+ for (const skill of categorySkills) {
730
+ guide += `- **${skill.name}**: ${skill.description}\n`;
731
+ guide += ` → Invoke: InvokeSkill(skillId="${skill.id}", taskDescription="...")\n`;
732
+ }
733
+ guide += '\n';
734
+ }
735
+
736
+ return guide;
737
+ } catch (error) {
738
+ // If skills can't be loaded, return empty string
739
+ return '';
740
+ }
741
+ }
742
+
743
+ getToolDefinitions(): any[] {
744
+ const tools = this.toolRegistry.getAll().filter(
745
+ tool => tool.allowedModes.includes(this.executionMode)
746
+ );
747
+
748
+ return tools.map(tool => {
749
+ const schema = this.createToolSchema(tool);
750
+ const properties: Record<string, any> = {};
751
+ const required: string[] = [];
752
+
753
+ Object.entries(schema.parameters).forEach(([paramName, param]) => {
754
+ properties[paramName] = {
755
+ type: param.type,
756
+ description: param.description
757
+ };
758
+
759
+ if (param.enum) {
760
+ properties[paramName].enum = param.enum;
761
+ }
762
+
763
+ if (param.default !== undefined) {
764
+ properties[paramName].default = param.default;
765
+ }
766
+
767
+ if (param.required) {
768
+ required.push(paramName);
769
+ }
770
+ });
771
+
772
+ return {
773
+ type: 'function',
774
+ function: {
775
+ name: tool.name,
776
+ description: schema.description + '. ' + schema.usage,
777
+ parameters: {
778
+ type: 'object',
779
+ properties,
780
+ required
781
+ }
782
+ }
783
+ };
784
+ });
785
+ }
786
+ }