@caoxupei/ai-agent-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +350 -0
  3. package/bin/ai-agent-cli.js +14 -0
  4. package/dist/adapters/anthropic.d.ts +15 -0
  5. package/dist/adapters/anthropic.d.ts.map +1 -0
  6. package/dist/adapters/anthropic.js +83 -0
  7. package/dist/adapters/anthropic.js.map +1 -0
  8. package/dist/adapters/base.d.ts +45 -0
  9. package/dist/adapters/base.d.ts.map +1 -0
  10. package/dist/adapters/base.js +27 -0
  11. package/dist/adapters/base.js.map +1 -0
  12. package/dist/adapters/factory.d.ts +17 -0
  13. package/dist/adapters/factory.d.ts.map +1 -0
  14. package/dist/adapters/factory.js +34 -0
  15. package/dist/adapters/factory.js.map +1 -0
  16. package/dist/adapters/gemini.d.ts +16 -0
  17. package/dist/adapters/gemini.d.ts.map +1 -0
  18. package/dist/adapters/gemini.js +164 -0
  19. package/dist/adapters/gemini.js.map +1 -0
  20. package/dist/adapters/openai.d.ts +15 -0
  21. package/dist/adapters/openai.d.ts.map +1 -0
  22. package/dist/adapters/openai.js +175 -0
  23. package/dist/adapters/openai.js.map +1 -0
  24. package/dist/commands/skillCommands.d.ts +21 -0
  25. package/dist/commands/skillCommands.d.ts.map +1 -0
  26. package/dist/commands/skillCommands.js +320 -0
  27. package/dist/commands/skillCommands.js.map +1 -0
  28. package/dist/config/Config.d.ts +35 -0
  29. package/dist/config/Config.d.ts.map +1 -0
  30. package/dist/config/Config.js +108 -0
  31. package/dist/config/Config.js.map +1 -0
  32. package/dist/config/types.d.ts +48 -0
  33. package/dist/config/types.d.ts.map +1 -0
  34. package/dist/config/types.js +32 -0
  35. package/dist/config/types.js.map +1 -0
  36. package/dist/core/agents.d.ts +32 -0
  37. package/dist/core/agents.d.ts.map +1 -0
  38. package/dist/core/agents.js +93 -0
  39. package/dist/core/agents.js.map +1 -0
  40. package/dist/core/constants.d.ts +97 -0
  41. package/dist/core/constants.d.ts.map +1 -0
  42. package/dist/core/constants.js +119 -0
  43. package/dist/core/constants.js.map +1 -0
  44. package/dist/core/loop.d.ts +33 -0
  45. package/dist/core/loop.d.ts.map +1 -0
  46. package/dist/core/loop.js +134 -0
  47. package/dist/core/loop.js.map +1 -0
  48. package/dist/core/outputStyles.d.ts +50 -0
  49. package/dist/core/outputStyles.d.ts.map +1 -0
  50. package/dist/core/outputStyles.js +165 -0
  51. package/dist/core/outputStyles.js.map +1 -0
  52. package/dist/core/planMode.d.ts +40 -0
  53. package/dist/core/planMode.d.ts.map +1 -0
  54. package/dist/core/planMode.js +143 -0
  55. package/dist/core/planMode.js.map +1 -0
  56. package/dist/core/projectContext.d.ts +68 -0
  57. package/dist/core/projectContext.d.ts.map +1 -0
  58. package/dist/core/projectContext.js +183 -0
  59. package/dist/core/projectContext.js.map +1 -0
  60. package/dist/core/prompts.d.ts +26 -0
  61. package/dist/core/prompts.d.ts.map +1 -0
  62. package/dist/core/prompts.js +267 -0
  63. package/dist/core/prompts.js.map +1 -0
  64. package/dist/core/reminder.d.ts +72 -0
  65. package/dist/core/reminder.d.ts.map +1 -0
  66. package/dist/core/reminder.js +152 -0
  67. package/dist/core/reminder.js.map +1 -0
  68. package/dist/core/theme.d.ts +35 -0
  69. package/dist/core/theme.d.ts.map +1 -0
  70. package/dist/core/theme.js +56 -0
  71. package/dist/core/theme.js.map +1 -0
  72. package/dist/core/types.d.ts +55 -0
  73. package/dist/core/types.d.ts.map +1 -0
  74. package/dist/core/types.js +5 -0
  75. package/dist/core/types.js.map +1 -0
  76. package/dist/core/ui/Banner.d.ts +47 -0
  77. package/dist/core/ui/Banner.d.ts.map +1 -0
  78. package/dist/core/ui/Banner.js +122 -0
  79. package/dist/core/ui/Banner.js.map +1 -0
  80. package/dist/core/ui/Input.d.ts +51 -0
  81. package/dist/core/ui/Input.d.ts.map +1 -0
  82. package/dist/core/ui/Input.js +322 -0
  83. package/dist/core/ui/Input.js.map +1 -0
  84. package/dist/core/ui/Logo.d.ts +21 -0
  85. package/dist/core/ui/Logo.d.ts.map +1 -0
  86. package/dist/core/ui/Logo.js +31 -0
  87. package/dist/core/ui/Logo.js.map +1 -0
  88. package/dist/core/ui/Messages.d.ts +45 -0
  89. package/dist/core/ui/Messages.d.ts.map +1 -0
  90. package/dist/core/ui/Messages.js +76 -0
  91. package/dist/core/ui/Messages.js.map +1 -0
  92. package/dist/core/ui/Spinner.d.ts +29 -0
  93. package/dist/core/ui/Spinner.d.ts.map +1 -0
  94. package/dist/core/ui/Spinner.js +64 -0
  95. package/dist/core/ui/Spinner.js.map +1 -0
  96. package/dist/core/ui/ToolDisplay.d.ts +49 -0
  97. package/dist/core/ui/ToolDisplay.d.ts.map +1 -0
  98. package/dist/core/ui/ToolDisplay.js +99 -0
  99. package/dist/core/ui/ToolDisplay.js.map +1 -0
  100. package/dist/core/ui/index.d.ts +16 -0
  101. package/dist/core/ui/index.d.ts.map +1 -0
  102. package/dist/core/ui/index.js +17 -0
  103. package/dist/core/ui/index.js.map +1 -0
  104. package/dist/core/ui/utils.d.ts +28 -0
  105. package/dist/core/ui/utils.d.ts.map +1 -0
  106. package/dist/core/ui/utils.js +76 -0
  107. package/dist/core/ui/utils.js.map +1 -0
  108. package/dist/entrypoints/cli.d.ts +5 -0
  109. package/dist/entrypoints/cli.d.ts.map +1 -0
  110. package/dist/entrypoints/cli.js +199 -0
  111. package/dist/entrypoints/cli.js.map +1 -0
  112. package/dist/entrypoints/index.d.ts +18 -0
  113. package/dist/entrypoints/index.d.ts.map +1 -0
  114. package/dist/entrypoints/index.js +21 -0
  115. package/dist/entrypoints/index.js.map +1 -0
  116. package/dist/index.d.ts +9 -0
  117. package/dist/index.d.ts.map +1 -0
  118. package/dist/index.js +14 -0
  119. package/dist/index.js.map +1 -0
  120. package/dist/services/ai/adapters/anthropic.d.ts +15 -0
  121. package/dist/services/ai/adapters/anthropic.d.ts.map +1 -0
  122. package/dist/services/ai/adapters/anthropic.js +83 -0
  123. package/dist/services/ai/adapters/anthropic.js.map +1 -0
  124. package/dist/services/ai/adapters/base.d.ts +47 -0
  125. package/dist/services/ai/adapters/base.d.ts.map +1 -0
  126. package/dist/services/ai/adapters/base.js +24 -0
  127. package/dist/services/ai/adapters/base.js.map +1 -0
  128. package/dist/services/ai/adapters/factory.d.ts +17 -0
  129. package/dist/services/ai/adapters/factory.d.ts.map +1 -0
  130. package/dist/services/ai/adapters/factory.js +34 -0
  131. package/dist/services/ai/adapters/factory.js.map +1 -0
  132. package/dist/services/ai/adapters/gemini.d.ts +16 -0
  133. package/dist/services/ai/adapters/gemini.d.ts.map +1 -0
  134. package/dist/services/ai/adapters/gemini.js +164 -0
  135. package/dist/services/ai/adapters/gemini.js.map +1 -0
  136. package/dist/services/ai/adapters/openai.d.ts +15 -0
  137. package/dist/services/ai/adapters/openai.d.ts.map +1 -0
  138. package/dist/services/ai/adapters/openai.js +175 -0
  139. package/dist/services/ai/adapters/openai.js.map +1 -0
  140. package/dist/services/ai/index.d.ts +10 -0
  141. package/dist/services/ai/index.d.ts.map +1 -0
  142. package/dist/services/ai/index.js +11 -0
  143. package/dist/services/ai/index.js.map +1 -0
  144. package/dist/services/config/Config.d.ts +41 -0
  145. package/dist/services/config/Config.d.ts.map +1 -0
  146. package/dist/services/config/Config.js +131 -0
  147. package/dist/services/config/Config.js.map +1 -0
  148. package/dist/services/config/configStore.d.ts +42 -0
  149. package/dist/services/config/configStore.d.ts.map +1 -0
  150. package/dist/services/config/configStore.js +77 -0
  151. package/dist/services/config/configStore.js.map +1 -0
  152. package/dist/services/config/index.d.ts +7 -0
  153. package/dist/services/config/index.d.ts.map +1 -0
  154. package/dist/services/config/index.js +6 -0
  155. package/dist/services/config/index.js.map +1 -0
  156. package/dist/services/config/setup.d.ts +13 -0
  157. package/dist/services/config/setup.d.ts.map +1 -0
  158. package/dist/services/config/setup.js +157 -0
  159. package/dist/services/config/setup.js.map +1 -0
  160. package/dist/services/config/types.d.ts +56 -0
  161. package/dist/services/config/types.d.ts.map +1 -0
  162. package/dist/services/config/types.js +32 -0
  163. package/dist/services/config/types.js.map +1 -0
  164. package/dist/services/customCommands.d.ts +37 -0
  165. package/dist/services/customCommands.d.ts.map +1 -0
  166. package/dist/services/customCommands.js +453 -0
  167. package/dist/services/customCommands.js.map +1 -0
  168. package/dist/services/index.d.ts +7 -0
  169. package/dist/services/index.d.ts.map +1 -0
  170. package/dist/services/index.js +10 -0
  171. package/dist/services/index.js.map +1 -0
  172. package/dist/services/skillMarketplace.d.ts +74 -0
  173. package/dist/services/skillMarketplace.d.ts.map +1 -0
  174. package/dist/services/skillMarketplace.js +486 -0
  175. package/dist/services/skillMarketplace.js.map +1 -0
  176. package/dist/services/system/index.d.ts +6 -0
  177. package/dist/services/system/index.d.ts.map +1 -0
  178. package/dist/services/system/index.js +6 -0
  179. package/dist/services/system/index.js.map +1 -0
  180. package/dist/services/system/security.d.ts +30 -0
  181. package/dist/services/system/security.d.ts.map +1 -0
  182. package/dist/services/system/security.js +124 -0
  183. package/dist/services/system/security.js.map +1 -0
  184. package/dist/tools/agent/index.d.ts +6 -0
  185. package/dist/tools/agent/index.d.ts.map +1 -0
  186. package/dist/tools/agent/index.js +6 -0
  187. package/dist/tools/agent/index.js.map +1 -0
  188. package/dist/tools/agent/planMode.d.ts +12 -0
  189. package/dist/tools/agent/planMode.d.ts.map +1 -0
  190. package/dist/tools/agent/planMode.js +23 -0
  191. package/dist/tools/agent/planMode.js.map +1 -0
  192. package/dist/tools/agent/task.d.ts +10 -0
  193. package/dist/tools/agent/task.d.ts.map +1 -0
  194. package/dist/tools/agent/task.js +127 -0
  195. package/dist/tools/agent/task.js.map +1 -0
  196. package/dist/tools/ai/index.d.ts +5 -0
  197. package/dist/tools/ai/index.d.ts.map +1 -0
  198. package/dist/tools/ai/index.js +5 -0
  199. package/dist/tools/ai/index.js.map +1 -0
  200. package/dist/tools/ai/skill.d.ts +78 -0
  201. package/dist/tools/ai/skill.d.ts.map +1 -0
  202. package/dist/tools/ai/skill.js +315 -0
  203. package/dist/tools/ai/skill.js.map +1 -0
  204. package/dist/tools/askQuestion.d.ts +25 -0
  205. package/dist/tools/askQuestion.d.ts.map +1 -0
  206. package/dist/tools/askQuestion.js +99 -0
  207. package/dist/tools/askQuestion.js.map +1 -0
  208. package/dist/tools/bash.d.ts +11 -0
  209. package/dist/tools/bash.d.ts.map +1 -0
  210. package/dist/tools/bash.js +58 -0
  211. package/dist/tools/bash.js.map +1 -0
  212. package/dist/tools/definitions.d.ts +26 -0
  213. package/dist/tools/definitions.d.ts.map +1 -0
  214. package/dist/tools/definitions.js +599 -0
  215. package/dist/tools/definitions.js.map +1 -0
  216. package/dist/tools/dispatcher.d.ts +38 -0
  217. package/dist/tools/dispatcher.d.ts.map +1 -0
  218. package/dist/tools/dispatcher.js +75 -0
  219. package/dist/tools/dispatcher.js.map +1 -0
  220. package/dist/tools/fileOps.d.ts +16 -0
  221. package/dist/tools/fileOps.d.ts.map +1 -0
  222. package/dist/tools/fileOps.js +115 -0
  223. package/dist/tools/fileOps.js.map +1 -0
  224. package/dist/tools/filesystem/bash.d.ts +11 -0
  225. package/dist/tools/filesystem/bash.d.ts.map +1 -0
  226. package/dist/tools/filesystem/bash.js +58 -0
  227. package/dist/tools/filesystem/bash.js.map +1 -0
  228. package/dist/tools/filesystem/fileOps.d.ts +16 -0
  229. package/dist/tools/filesystem/fileOps.d.ts.map +1 -0
  230. package/dist/tools/filesystem/fileOps.js +115 -0
  231. package/dist/tools/filesystem/fileOps.js.map +1 -0
  232. package/dist/tools/filesystem/index.d.ts +1 -0
  233. package/dist/tools/filesystem/index.d.ts.map +1 -0
  234. package/dist/tools/filesystem/index.js +2 -0
  235. package/dist/tools/filesystem/index.js.map +1 -0
  236. package/dist/tools/glob.d.ts +18 -0
  237. package/dist/tools/glob.d.ts.map +1 -0
  238. package/dist/tools/glob.js +63 -0
  239. package/dist/tools/glob.js.map +1 -0
  240. package/dist/tools/grep.d.ts +26 -0
  241. package/dist/tools/grep.d.ts.map +1 -0
  242. package/dist/tools/grep.js +137 -0
  243. package/dist/tools/grep.js.map +1 -0
  244. package/dist/tools/index.d.ts +13 -0
  245. package/dist/tools/index.d.ts.map +1 -0
  246. package/dist/tools/index.js +14 -0
  247. package/dist/tools/index.js.map +1 -0
  248. package/dist/tools/interaction/askQuestion.d.ts +25 -0
  249. package/dist/tools/interaction/askQuestion.d.ts.map +1 -0
  250. package/dist/tools/interaction/askQuestion.js +99 -0
  251. package/dist/tools/interaction/askQuestion.js.map +1 -0
  252. package/dist/tools/interaction/index.d.ts +6 -0
  253. package/dist/tools/interaction/index.d.ts.map +1 -0
  254. package/dist/tools/interaction/index.js +6 -0
  255. package/dist/tools/interaction/index.js.map +1 -0
  256. package/dist/tools/interaction/todo.d.ts +36 -0
  257. package/dist/tools/interaction/todo.d.ts.map +1 -0
  258. package/dist/tools/interaction/todo.js +137 -0
  259. package/dist/tools/interaction/todo.js.map +1 -0
  260. package/dist/tools/network/index.d.ts +6 -0
  261. package/dist/tools/network/index.d.ts.map +1 -0
  262. package/dist/tools/network/index.js +6 -0
  263. package/dist/tools/network/index.js.map +1 -0
  264. package/dist/tools/network/webFetch.d.ts +8 -0
  265. package/dist/tools/network/webFetch.d.ts.map +1 -0
  266. package/dist/tools/network/webFetch.js +87 -0
  267. package/dist/tools/network/webFetch.js.map +1 -0
  268. package/dist/tools/network/webSearch.d.ts +8 -0
  269. package/dist/tools/network/webSearch.d.ts.map +1 -0
  270. package/dist/tools/network/webSearch.js +84 -0
  271. package/dist/tools/network/webSearch.js.map +1 -0
  272. package/dist/tools/planMode.d.ts +12 -0
  273. package/dist/tools/planMode.d.ts.map +1 -0
  274. package/dist/tools/planMode.js +23 -0
  275. package/dist/tools/planMode.js.map +1 -0
  276. package/dist/tools/search/glob.d.ts +18 -0
  277. package/dist/tools/search/glob.d.ts.map +1 -0
  278. package/dist/tools/search/glob.js +63 -0
  279. package/dist/tools/search/glob.js.map +1 -0
  280. package/dist/tools/search/grep.d.ts +26 -0
  281. package/dist/tools/search/grep.d.ts.map +1 -0
  282. package/dist/tools/search/grep.js +137 -0
  283. package/dist/tools/search/grep.js.map +1 -0
  284. package/dist/tools/search/index.d.ts +6 -0
  285. package/dist/tools/search/index.d.ts.map +1 -0
  286. package/dist/tools/search/index.js +6 -0
  287. package/dist/tools/search/index.js.map +1 -0
  288. package/dist/tools/skill.d.ts +41 -0
  289. package/dist/tools/skill.d.ts.map +1 -0
  290. package/dist/tools/skill.js +149 -0
  291. package/dist/tools/skill.js.map +1 -0
  292. package/dist/tools/system/index.d.ts +6 -0
  293. package/dist/tools/system/index.d.ts.map +1 -0
  294. package/dist/tools/system/index.js +6 -0
  295. package/dist/tools/system/index.js.map +1 -0
  296. package/dist/tools/task.d.ts +10 -0
  297. package/dist/tools/task.d.ts.map +1 -0
  298. package/dist/tools/task.js +127 -0
  299. package/dist/tools/task.js.map +1 -0
  300. package/dist/tools/todo.d.ts +36 -0
  301. package/dist/tools/todo.d.ts.map +1 -0
  302. package/dist/tools/todo.js +137 -0
  303. package/dist/tools/todo.js.map +1 -0
  304. package/dist/tools/types.d.ts +139 -0
  305. package/dist/tools/types.d.ts.map +1 -0
  306. package/dist/tools/types.js +5 -0
  307. package/dist/tools/types.js.map +1 -0
  308. package/dist/tools/webFetch.d.ts +8 -0
  309. package/dist/tools/webFetch.d.ts.map +1 -0
  310. package/dist/tools/webFetch.js +87 -0
  311. package/dist/tools/webFetch.js.map +1 -0
  312. package/dist/tools/webSearch.d.ts +8 -0
  313. package/dist/tools/webSearch.d.ts.map +1 -0
  314. package/dist/tools/webSearch.js +84 -0
  315. package/dist/tools/webSearch.js.map +1 -0
  316. package/dist/ui/Banner.d.ts +47 -0
  317. package/dist/ui/Banner.d.ts.map +1 -0
  318. package/dist/ui/Banner.js +122 -0
  319. package/dist/ui/Banner.js.map +1 -0
  320. package/dist/ui/Input.d.ts +42 -0
  321. package/dist/ui/Input.d.ts.map +1 -0
  322. package/dist/ui/Input.js +270 -0
  323. package/dist/ui/Input.js.map +1 -0
  324. package/dist/ui/Logo.d.ts +21 -0
  325. package/dist/ui/Logo.d.ts.map +1 -0
  326. package/dist/ui/Logo.js +31 -0
  327. package/dist/ui/Logo.js.map +1 -0
  328. package/dist/ui/Messages.d.ts +45 -0
  329. package/dist/ui/Messages.d.ts.map +1 -0
  330. package/dist/ui/Messages.js +76 -0
  331. package/dist/ui/Messages.js.map +1 -0
  332. package/dist/ui/Spinner.d.ts +29 -0
  333. package/dist/ui/Spinner.d.ts.map +1 -0
  334. package/dist/ui/Spinner.js +64 -0
  335. package/dist/ui/Spinner.js.map +1 -0
  336. package/dist/ui/ToolDisplay.d.ts +49 -0
  337. package/dist/ui/ToolDisplay.d.ts.map +1 -0
  338. package/dist/ui/ToolDisplay.js +99 -0
  339. package/dist/ui/ToolDisplay.js.map +1 -0
  340. package/dist/ui/components/Banner.d.ts +46 -0
  341. package/dist/ui/components/Banner.d.ts.map +1 -0
  342. package/dist/ui/components/Banner.js +121 -0
  343. package/dist/ui/components/Banner.js.map +1 -0
  344. package/dist/ui/components/Input.d.ts +51 -0
  345. package/dist/ui/components/Input.d.ts.map +1 -0
  346. package/dist/ui/components/Input.js +322 -0
  347. package/dist/ui/components/Input.js.map +1 -0
  348. package/dist/ui/components/Logo.d.ts +21 -0
  349. package/dist/ui/components/Logo.d.ts.map +1 -0
  350. package/dist/ui/components/Logo.js +31 -0
  351. package/dist/ui/components/Logo.js.map +1 -0
  352. package/dist/ui/components/Messages.d.ts +45 -0
  353. package/dist/ui/components/Messages.d.ts.map +1 -0
  354. package/dist/ui/components/Messages.js +76 -0
  355. package/dist/ui/components/Messages.js.map +1 -0
  356. package/dist/ui/components/Spinner.d.ts +29 -0
  357. package/dist/ui/components/Spinner.d.ts.map +1 -0
  358. package/dist/ui/components/Spinner.js +64 -0
  359. package/dist/ui/components/Spinner.js.map +1 -0
  360. package/dist/ui/components/ToolDisplay.d.ts +49 -0
  361. package/dist/ui/components/ToolDisplay.d.ts.map +1 -0
  362. package/dist/ui/components/ToolDisplay.js +99 -0
  363. package/dist/ui/components/ToolDisplay.js.map +1 -0
  364. package/dist/ui/index.d.ts +16 -0
  365. package/dist/ui/index.d.ts.map +1 -0
  366. package/dist/ui/index.js +17 -0
  367. package/dist/ui/index.js.map +1 -0
  368. package/dist/ui/theme.d.ts +34 -0
  369. package/dist/ui/theme.d.ts.map +1 -0
  370. package/dist/ui/theme.js +55 -0
  371. package/dist/ui/theme.js.map +1 -0
  372. package/dist/ui/utils.d.ts +28 -0
  373. package/dist/ui/utils.d.ts.map +1 -0
  374. package/dist/ui/utils.js +76 -0
  375. package/dist/ui/utils.js.map +1 -0
  376. package/dist/utils/fs/index.d.ts +24 -0
  377. package/dist/utils/fs/index.d.ts.map +1 -0
  378. package/dist/utils/fs/index.js +50 -0
  379. package/dist/utils/fs/index.js.map +1 -0
  380. package/dist/utils/index.d.ts +7 -0
  381. package/dist/utils/index.d.ts.map +1 -0
  382. package/dist/utils/index.js +10 -0
  383. package/dist/utils/index.js.map +1 -0
  384. package/dist/utils/security.d.ts +26 -0
  385. package/dist/utils/security.d.ts.map +1 -0
  386. package/dist/utils/security.js +123 -0
  387. package/dist/utils/security.js.map +1 -0
  388. package/dist/utils/text/index.d.ts +28 -0
  389. package/dist/utils/text/index.d.ts.map +1 -0
  390. package/dist/utils/text/index.js +51 -0
  391. package/dist/utils/text/index.js.map +1 -0
  392. package/package.json +84 -0
  393. package/skills/web-dev/SKILL.md +91 -0
@@ -0,0 +1,453 @@
1
+ /**
2
+ * 自定义命令/技能加载器 - Production-grade
3
+ *
4
+ * 支持功能:
5
+ * - 多目录加载 (project/user)
6
+ * - 仅使用 .ai-agent 目录结构
7
+ * - 完整 frontmatter 解析
8
+ * - 技能优先级管理
9
+ * - 缓存和按需重载
10
+ */
11
+ import fs from 'fs-extra';
12
+ import path from 'node:path';
13
+ import { homedir } from 'node:os';
14
+ import matter from 'gray-matter';
15
+ // ============================================================
16
+ // 工具函数
17
+ // ============================================================
18
+ /**
19
+ * 将值转换为布尔值
20
+ */
21
+ function toBoolean(value) {
22
+ if (typeof value === 'boolean')
23
+ return value;
24
+ if (typeof value === 'string') {
25
+ const normalized = value.trim().toLowerCase();
26
+ if (['1', 'true', 'yes', 'on'].includes(normalized))
27
+ return true;
28
+ if (['0', 'false', 'no', 'off'].includes(normalized))
29
+ return false;
30
+ }
31
+ return false;
32
+ }
33
+ /**
34
+ * 解析 allowed-tools 字段
35
+ */
36
+ function parseAllowedTools(value) {
37
+ if (Array.isArray(value)) {
38
+ return value.map(v => String(v).trim()).filter(Boolean);
39
+ }
40
+ if (typeof value === 'string') {
41
+ const trimmed = value.trim();
42
+ if (!trimmed)
43
+ return [];
44
+ return trimmed.split(/\s+/).map(v => v.trim()).filter(Boolean);
45
+ }
46
+ return [];
47
+ }
48
+ /**
49
+ * 解析 max-thinking-tokens 字段
50
+ */
51
+ function parseMaxThinkingTokens(frontmatter) {
52
+ const raw = frontmatter.maxThinkingTokens ??
53
+ frontmatter.max_thinking_tokens ??
54
+ frontmatter['max-thinking-tokens'];
55
+ if (raw === undefined || raw === null)
56
+ return undefined;
57
+ const value = typeof raw === 'number' ? raw : Number(String(raw).trim());
58
+ if (!Number.isFinite(value) || value < 0)
59
+ return undefined;
60
+ return Math.floor(value);
61
+ }
62
+ /**
63
+ * 获取来源标签
64
+ */
65
+ function sourceLabel(source) {
66
+ if (source === 'localSettings')
67
+ return 'project';
68
+ if (source === 'userSettings')
69
+ return 'user';
70
+ if (source === 'pluginDir')
71
+ return 'plugin';
72
+ return 'unknown';
73
+ }
74
+ /**
75
+ * 判断是否为 SKILL.md 文件
76
+ */
77
+ function isSkillMarkdownFile(filePath) {
78
+ return /^skill\.md$/i.test(path.basename(filePath));
79
+ }
80
+ /**
81
+ * 从 Markdown 内容提取描述
82
+ */
83
+ function extractDescriptionFromMarkdown(markdown, fallback) {
84
+ const lines = markdown.split(/\r?\n/);
85
+ for (const line of lines) {
86
+ const trimmed = line.trim();
87
+ if (!trimmed)
88
+ continue;
89
+ const heading = trimmed.match(/^#{1,6}\s+(.*)$/);
90
+ if (heading?.[1])
91
+ return heading[1].trim();
92
+ return trimmed.length > 120 ? `${trimmed.slice(0, 117)}...` : trimmed;
93
+ }
94
+ return fallback;
95
+ }
96
+ // ============================================================
97
+ // 目录配置 (仅 .ai-agent)
98
+ // ============================================================
99
+ /**
100
+ * 获取 Kode 用户目录
101
+ */
102
+ function getKodeUserDir() {
103
+ return path.join(homedir(), '.ai-agent');
104
+ }
105
+ /**
106
+ * 获取所有自定义命令/技能目录
107
+ */
108
+ export function getCustomCommandDirectories(cwd = process.cwd()) {
109
+ const userKodeDir = getKodeUserDir();
110
+ return {
111
+ // Project level (.ai-agent/)
112
+ projectCommands: path.join(cwd, '.ai-agent', 'commands'),
113
+ projectSkills: path.join(cwd, '.ai-agent', 'skills'),
114
+ // User level (~/.ai-agent/)
115
+ userCommands: path.join(userKodeDir, 'commands'),
116
+ userSkills: path.join(userKodeDir, 'skills'),
117
+ };
118
+ }
119
+ // ============================================================
120
+ // 文件扫描
121
+ // ============================================================
122
+ /**
123
+ * 递归列出目录中的所有 Markdown 文件
124
+ */
125
+ function listMarkdownFilesRecursively(baseDir, signal) {
126
+ const results = [];
127
+ const queue = [baseDir];
128
+ while (queue.length > 0) {
129
+ if (signal?.aborted)
130
+ break;
131
+ const currentDir = queue.pop();
132
+ let entries;
133
+ try {
134
+ entries = fs.readdirSync(currentDir, { withFileTypes: true });
135
+ }
136
+ catch {
137
+ continue;
138
+ }
139
+ for (const entry of entries) {
140
+ if (signal?.aborted)
141
+ break;
142
+ const fullPath = path.join(currentDir, entry.name);
143
+ if (entry.isDirectory()) {
144
+ queue.push(fullPath);
145
+ continue;
146
+ }
147
+ if (entry.isFile() && entry.name.toLowerCase().endsWith('.md')) {
148
+ results.push(fullPath);
149
+ }
150
+ }
151
+ }
152
+ return results;
153
+ }
154
+ // ============================================================
155
+ // Frontmatter 解析
156
+ // ============================================================
157
+ /**
158
+ * 解析 Markdown 文件的 frontmatter
159
+ */
160
+ function parseFrontmatter(content) {
161
+ try {
162
+ const { data, content: body } = matter(content);
163
+ return {
164
+ frontmatter: data,
165
+ content: body.trim(),
166
+ };
167
+ }
168
+ catch {
169
+ return {
170
+ frontmatter: {},
171
+ content: content.trim(),
172
+ };
173
+ }
174
+ }
175
+ /**
176
+ * 从目录路径获取命名空间
177
+ */
178
+ function namespaceFromDirPath(dirPath, baseDir) {
179
+ const relPath = path.relative(baseDir, dirPath);
180
+ if (!relPath || relPath === '.' || relPath.startsWith('..'))
181
+ return '';
182
+ return relPath.split(path.sep).join(':');
183
+ }
184
+ /**
185
+ * 从文件路径获取命令名称
186
+ */
187
+ function nameForCommandFile(filePath, baseDir) {
188
+ if (isSkillMarkdownFile(filePath)) {
189
+ const skillDir = path.dirname(filePath);
190
+ const parentDir = path.dirname(skillDir);
191
+ const skillName = path.basename(skillDir);
192
+ const namespace = namespaceFromDirPath(parentDir, baseDir);
193
+ return namespace ? `${namespace}:${skillName}` : skillName;
194
+ }
195
+ const dir = path.dirname(filePath);
196
+ const namespace = namespaceFromDirPath(dir, baseDir);
197
+ const fileName = path.basename(filePath).replace(/\.md$/i, '');
198
+ return namespace ? `${namespace}:${fileName}` : fileName;
199
+ }
200
+ /**
201
+ * 从文件记录创建技能对象
202
+ */
203
+ function createSkillFromFile(record) {
204
+ const isSkill = isSkillMarkdownFile(record.filePath);
205
+ const name = nameForCommandFile(record.filePath, record.baseDir);
206
+ if (!name)
207
+ return null;
208
+ const descriptionText = record.frontmatter.description ??
209
+ extractDescriptionFromMarkdown(record.content, isSkill ? 'Skill' : 'Custom command');
210
+ const allowedTools = parseAllowedTools(record.frontmatter['allowed-tools']);
211
+ const maxThinkingTokens = parseMaxThinkingTokens(record.frontmatter);
212
+ const argumentHint = record.frontmatter['argument-hint'];
213
+ const whenToUse = record.frontmatter.when_to_use;
214
+ const version = record.frontmatter.version;
215
+ const disableModelInvocation = toBoolean(record.frontmatter['disable-model-invocation']);
216
+ const model = record.frontmatter.model === 'inherit'
217
+ ? undefined
218
+ : record.frontmatter.model;
219
+ const description = `${descriptionText} (${sourceLabel(record.source)})`;
220
+ const progressMessage = isSkill ? 'loading' : 'running';
221
+ const skillBaseDir = isSkill ? path.dirname(record.filePath) : undefined;
222
+ const bodyContent = record.content;
223
+ return {
224
+ type: 'prompt',
225
+ name,
226
+ description,
227
+ body: bodyContent,
228
+ path: record.filePath,
229
+ dir: path.dirname(record.filePath),
230
+ isEnabled: record.frontmatter.enabled !== false,
231
+ isHidden: record.frontmatter.hidden === true,
232
+ isSkill,
233
+ aliases: record.frontmatter.aliases,
234
+ allowedTools: allowedTools.length > 0 ? allowedTools : undefined,
235
+ argumentHint,
236
+ whenToUse,
237
+ version,
238
+ model,
239
+ maxThinkingTokens,
240
+ progressMessage,
241
+ disableModelInvocation,
242
+ hasUserSpecifiedDescription: !!record.frontmatter.description,
243
+ source: record.source,
244
+ scope: record.scope,
245
+ userFacingName() {
246
+ return name;
247
+ },
248
+ async getPromptForCommand(args) {
249
+ let prompt = bodyContent;
250
+ // 如果是技能,添加基础目录信息
251
+ if (isSkill && skillBaseDir) {
252
+ prompt = `Base directory for this skill: ${skillBaseDir}\n\n${prompt}`;
253
+ }
254
+ // 参数替换
255
+ const trimmedArgs = args.trim();
256
+ if (trimmedArgs) {
257
+ if (prompt.includes('$ARGUMENTS')) {
258
+ prompt = prompt.replaceAll('$ARGUMENTS', trimmedArgs);
259
+ }
260
+ else {
261
+ prompt = `${prompt}\n\nARGUMENTS: ${trimmedArgs}`;
262
+ }
263
+ }
264
+ return prompt;
265
+ },
266
+ };
267
+ }
268
+ // ============================================================
269
+ // 目录加载
270
+ // ============================================================
271
+ /**
272
+ * 从命令目录加载 Markdown 文件记录
273
+ */
274
+ function loadMarkdownFilesFromDir(baseDir, source, scope, signal) {
275
+ if (!fs.existsSync(baseDir))
276
+ return [];
277
+ const files = listMarkdownFilesRecursively(baseDir, signal);
278
+ const records = [];
279
+ for (const filePath of files) {
280
+ if (signal?.aborted)
281
+ break;
282
+ try {
283
+ const raw = fs.readFileSync(filePath, 'utf8');
284
+ const { frontmatter, content } = parseFrontmatter(raw);
285
+ records.push({ baseDir, filePath, frontmatter, content, source, scope });
286
+ }
287
+ catch {
288
+ // 忽略无法读取的文件
289
+ }
290
+ }
291
+ return records;
292
+ }
293
+ /**
294
+ * 从技能目录加载技能(查找 SKILL.md)
295
+ */
296
+ function loadSkillsFromSkillsDir(skillsDir, source, scope) {
297
+ if (!fs.existsSync(skillsDir))
298
+ return [];
299
+ const out = [];
300
+ let entries;
301
+ try {
302
+ entries = fs.readdirSync(skillsDir, { withFileTypes: true });
303
+ }
304
+ catch {
305
+ return [];
306
+ }
307
+ for (const entry of entries) {
308
+ if (!entry.isDirectory() && !entry.isSymbolicLink())
309
+ continue;
310
+ const skillDir = path.join(skillsDir, entry.name);
311
+ const skillFileCandidates = [
312
+ path.join(skillDir, 'SKILL.md'),
313
+ path.join(skillDir, 'skill.md'),
314
+ ];
315
+ const skillFile = skillFileCandidates.find(p => fs.existsSync(p));
316
+ if (!skillFile)
317
+ continue;
318
+ try {
319
+ const raw = fs.readFileSync(skillFile, 'utf8');
320
+ const { frontmatter, content } = parseFrontmatter(raw);
321
+ const skill = createSkillFromFile({
322
+ baseDir: skillsDir,
323
+ filePath: skillFile,
324
+ frontmatter,
325
+ content,
326
+ source,
327
+ scope,
328
+ });
329
+ if (skill) {
330
+ out.push(skill);
331
+ }
332
+ }
333
+ catch {
334
+ // 忽略无法解析的文件
335
+ }
336
+ }
337
+ return out;
338
+ }
339
+ // ============================================================
340
+ // 主加载函数
341
+ // ============================================================
342
+ // 缓存
343
+ let cachedSkills = null;
344
+ let lastLoadTime = 0;
345
+ const CACHE_TTL = 60000; // 1分钟缓存
346
+ /**
347
+ * 加载所有自定义命令和技能
348
+ */
349
+ export async function loadCustomCommands(cwd = process.cwd()) {
350
+ // 检查缓存
351
+ const now = Date.now();
352
+ if (cachedSkills && (now - lastLoadTime) < CACHE_TTL) {
353
+ return cachedSkills;
354
+ }
355
+ const dirs = getCustomCommandDirectories(cwd);
356
+ const abortController = new AbortController();
357
+ const timeout = setTimeout(() => abortController.abort(), 3000);
358
+ try {
359
+ // 1. 加载命令文件
360
+ const commandFiles = [
361
+ // Project level (higher priority)
362
+ ...loadMarkdownFilesFromDir(dirs.projectCommands, 'localSettings', 'project', abortController.signal),
363
+ // User level (lower priority)
364
+ ...loadMarkdownFilesFromDir(dirs.userCommands, 'userSettings', 'user', abortController.signal),
365
+ ];
366
+ // 2. 从命令文件创建技能
367
+ const fileSkills = commandFiles
368
+ .map(createSkillFromFile)
369
+ .filter((skill) => skill !== null);
370
+ // 3. 加载技能目录
371
+ const skillDirSkills = [
372
+ // Project level
373
+ ...loadSkillsFromSkillsDir(dirs.projectSkills, 'localSettings', 'project'),
374
+ // User level
375
+ ...loadSkillsFromSkillsDir(dirs.userSkills, 'userSettings', 'user'),
376
+ ];
377
+ // 4. 合并并去重(按名称,先定义的优先)
378
+ const allSkills = [...fileSkills, ...skillDirSkills].filter(s => s.isEnabled);
379
+ const seen = new Set();
380
+ const unique = [];
381
+ for (const skill of allSkills) {
382
+ const key = skill.userFacingName();
383
+ if (seen.has(key))
384
+ continue;
385
+ seen.add(key);
386
+ unique.push(skill);
387
+ }
388
+ // 更新缓存
389
+ cachedSkills = unique;
390
+ lastLoadTime = now;
391
+ return unique;
392
+ }
393
+ catch (error) {
394
+ console.error('加载自定义命令失败:', error);
395
+ return cachedSkills || [];
396
+ }
397
+ finally {
398
+ clearTimeout(timeout);
399
+ }
400
+ }
401
+ /**
402
+ * 重新加载自定义命令(清除缓存)
403
+ */
404
+ export function reloadCustomCommands() {
405
+ cachedSkills = null;
406
+ lastLoadTime = 0;
407
+ }
408
+ /**
409
+ * 同步加载自定义命令(用于初始化)
410
+ */
411
+ export function loadCustomCommandsSync(cwd = process.cwd()) {
412
+ // 强制清除缓存并同步加载
413
+ reloadCustomCommands();
414
+ const dirs = getCustomCommandDirectories(cwd);
415
+ // 加载命令文件
416
+ const commandFiles = [
417
+ ...loadMarkdownFilesFromDir(dirs.projectCommands, 'localSettings', 'project'),
418
+ ...loadMarkdownFilesFromDir(dirs.userCommands, 'userSettings', 'user'),
419
+ ];
420
+ const fileSkills = commandFiles
421
+ .map(createSkillFromFile)
422
+ .filter((skill) => skill !== null);
423
+ // 加载技能目录
424
+ const skillDirSkills = [
425
+ ...loadSkillsFromSkillsDir(dirs.projectSkills, 'localSettings', 'project'),
426
+ ...loadSkillsFromSkillsDir(dirs.userSkills, 'userSettings', 'user'),
427
+ ];
428
+ // 合并去重
429
+ const allSkills = [...fileSkills, ...skillDirSkills].filter(s => s.isEnabled);
430
+ const seen = new Set();
431
+ const unique = [];
432
+ for (const skill of allSkills) {
433
+ const key = skill.userFacingName();
434
+ if (seen.has(key))
435
+ continue;
436
+ seen.add(key);
437
+ unique.push(skill);
438
+ }
439
+ cachedSkills = unique;
440
+ lastLoadTime = Date.now();
441
+ return unique;
442
+ }
443
+ /**
444
+ * 检查是否有自定义命令
445
+ */
446
+ export function hasCustomCommands(cwd = process.cwd()) {
447
+ const dirs = getCustomCommandDirectories(cwd);
448
+ return (fs.existsSync(dirs.projectCommands) ||
449
+ fs.existsSync(dirs.projectSkills) ||
450
+ fs.existsSync(dirs.userCommands) ||
451
+ fs.existsSync(dirs.userSkills));
452
+ }
453
+ //# sourceMappingURL=customCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customCommands.js","sourceRoot":"","sources":["../../src/services/customCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 服务层统一导出
3
+ */
4
+ export * from './ai/index.js';
5
+ export * from './config/index.js';
6
+ export * from './system/index.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,eAAe,CAAC;AAG9B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 服务层统一导出
3
+ */
4
+ // AI 服务
5
+ export * from './ai/index.js';
6
+ // 配置服务
7
+ export * from './config/index.js';
8
+ // 系统服务
9
+ export * from './system/index.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,OAAO;AACP,cAAc,mBAAmB,CAAC;AAElC,OAAO;AACP,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * 技能市场 - Skill Marketplace
3
+ *
4
+ * 支持功能:
5
+ * - 本地目录安装
6
+ * - GitHub 仓库安装 (通过 ZIP 下载)
7
+ * - 插件启用/禁用
8
+ * - 插件卸载
9
+ */
10
+ import type { SkillScope, InstalledSkillPlugin } from '../tools/types.js';
11
+ /**
12
+ * 加载已安装插件列表
13
+ */
14
+ export declare function loadInstalledPlugins(): InstalledSkillPlugin[];
15
+ export interface InstallOptions {
16
+ scope?: SkillScope;
17
+ force?: boolean;
18
+ cwd?: string;
19
+ }
20
+ export interface InstallResult {
21
+ success: boolean;
22
+ pluginName: string;
23
+ installedSkills: string[];
24
+ installedCommands: string[];
25
+ error?: string;
26
+ }
27
+ /**
28
+ * 从本地目录安装技能包
29
+ */
30
+ export declare function installFromLocal(sourcePath: string, options?: InstallOptions): Promise<InstallResult>;
31
+ /**
32
+ * 从 GitHub 安装技能包
33
+ */
34
+ export declare function installFromGitHub(repoUrl: string, options?: InstallOptions): Promise<InstallResult>;
35
+ /**
36
+ * 安装技能包(自动检测来源)
37
+ */
38
+ export declare function installSkillPlugin(source: string, options?: InstallOptions): Promise<InstallResult>;
39
+ export interface UninstallResult {
40
+ success: boolean;
41
+ pluginName: string;
42
+ removedSkills: string[];
43
+ removedCommands: string[];
44
+ error?: string;
45
+ }
46
+ /**
47
+ * 卸载技能包
48
+ */
49
+ export declare function uninstallSkillPlugin(pluginName: string, options?: {
50
+ scope?: SkillScope;
51
+ cwd?: string;
52
+ }): Promise<UninstallResult>;
53
+ export interface EnableDisableResult {
54
+ success: boolean;
55
+ pluginName: string;
56
+ error?: string;
57
+ }
58
+ /**
59
+ * 启用插件
60
+ */
61
+ export declare function enableSkillPlugin(pluginName: string): EnableDisableResult;
62
+ /**
63
+ * 禁用插件
64
+ */
65
+ export declare function disableSkillPlugin(pluginName: string): EnableDisableResult;
66
+ /**
67
+ * 列出已安装的插件
68
+ */
69
+ export declare function listInstalledPlugins(): InstalledSkillPlugin[];
70
+ /**
71
+ * 获取插件详情
72
+ */
73
+ export declare function getPluginDetails(pluginName: string): InstalledSkillPlugin | undefined;
74
+ //# sourceMappingURL=skillMarketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillMarketplace.d.ts","sourceRoot":"","sources":["../../src/services/skillMarketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA2L1E;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,EAAE,CAG7D;AAqBD,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,CAgIxB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,CAmExB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,CAQxB;AAMD,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,eAAe,CAAC,CA0D1B;AAMD,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAgBzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAgB1E;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,EAAE,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAErF"}