sema-core 1.0.11 → 1.0.13

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 (325) hide show
  1. package/README.md +6 -11
  2. package/dist/core/Conversation.d.ts +6 -1
  3. package/dist/core/Conversation.d.ts.map +1 -1
  4. package/dist/core/Conversation.js +72 -28
  5. package/dist/core/Conversation.js.map +1 -1
  6. package/dist/core/RunTools.d.ts.map +1 -1
  7. package/dist/core/RunTools.js +1 -1
  8. package/dist/core/RunTools.js.map +1 -1
  9. package/dist/core/SemaCore.d.ts +16 -0
  10. package/dist/core/SemaCore.d.ts.map +1 -1
  11. package/dist/core/SemaCore.js +30 -3
  12. package/dist/core/SemaCore.js.map +1 -1
  13. package/dist/core/SemaEngine.d.ts +2 -18
  14. package/dist/core/SemaEngine.d.ts.map +1 -1
  15. package/dist/core/SemaEngine.js +101 -131
  16. package/dist/core/SemaEngine.js.map +1 -1
  17. package/dist/events/EventSystem.d.ts.map +1 -1
  18. package/dist/events/EventSystem.js +6 -2
  19. package/dist/events/EventSystem.js.map +1 -1
  20. package/dist/events/types.d.ts +60 -13
  21. package/dist/events/types.d.ts.map +1 -1
  22. package/dist/events/types.js +0 -1
  23. package/dist/events/types.js.map +1 -1
  24. package/dist/manager/ConfManager.d.ts.map +1 -1
  25. package/dist/manager/ConfManager.js +3 -1
  26. package/dist/manager/ConfManager.js.map +1 -1
  27. package/dist/manager/CronManager.d.ts +52 -0
  28. package/dist/manager/CronManager.d.ts.map +1 -0
  29. package/dist/manager/CronManager.js +426 -0
  30. package/dist/manager/CronManager.js.map +1 -0
  31. package/dist/manager/PermissionManager.d.ts +1 -1
  32. package/dist/manager/PermissionManager.d.ts.map +1 -1
  33. package/dist/manager/PermissionManager.js +63 -12
  34. package/dist/manager/PermissionManager.js.map +1 -1
  35. package/dist/manager/StateManager.d.ts +79 -11
  36. package/dist/manager/StateManager.d.ts.map +1 -1
  37. package/dist/manager/StateManager.js +287 -4
  38. package/dist/manager/StateManager.js.map +1 -1
  39. package/dist/manager/TaskManager.d.ts +106 -0
  40. package/dist/manager/TaskManager.d.ts.map +1 -0
  41. package/dist/manager/TaskManager.js +664 -0
  42. package/dist/manager/TaskManager.js.map +1 -0
  43. package/dist/services/agents/defaultBuiltInAgentsConfs.js +3 -3
  44. package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -1
  45. package/dist/services/agents/systemReminder.d.ts.map +1 -1
  46. package/dist/services/agents/systemReminder.js +8 -118
  47. package/dist/services/agents/systemReminder.js.map +1 -1
  48. package/dist/services/api/adapt/anthropic.js +2 -2
  49. package/dist/services/api/adapt/anthropic.js.map +1 -1
  50. package/dist/services/api/adapt/openai.js +2 -2
  51. package/dist/services/api/adapt/openai.js.map +1 -1
  52. package/dist/services/api/adapt/util.d.ts +1 -1
  53. package/dist/services/api/adapt/util.d.ts.map +1 -1
  54. package/dist/services/api/adapt/util.js +2 -2
  55. package/dist/services/api/adapt/util.js.map +1 -1
  56. package/dist/services/api/cache.d.ts.map +1 -1
  57. package/dist/services/api/cache.js +1 -3
  58. package/dist/services/api/cache.js.map +1 -1
  59. package/dist/services/api/queryLLM.d.ts.map +1 -1
  60. package/dist/services/api/queryLLM.js +5 -0
  61. package/dist/services/api/queryLLM.js.map +1 -1
  62. package/dist/services/commands/runCommand.d.ts.map +1 -1
  63. package/dist/services/commands/runCommand.js +12 -0
  64. package/dist/services/commands/runCommand.js.map +1 -1
  65. package/dist/services/mcp/MCPManager.d.ts.map +1 -1
  66. package/dist/services/mcp/MCPManager.js +6 -1
  67. package/dist/services/mcp/MCPManager.js.map +1 -1
  68. package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
  69. package/dist/services/plugins/pluginsManager.js +8 -1
  70. package/dist/services/plugins/pluginsManager.js.map +1 -1
  71. package/dist/services/rules/rulesManager.d.ts +51 -0
  72. package/dist/services/rules/rulesManager.d.ts.map +1 -0
  73. package/dist/services/rules/rulesManager.js +192 -0
  74. package/dist/services/rules/rulesManager.js.map +1 -0
  75. package/dist/tools/Agent/Agent.d.ts +19 -11
  76. package/dist/tools/Agent/Agent.d.ts.map +1 -1
  77. package/dist/tools/Agent/Agent.js +249 -72
  78. package/dist/tools/Agent/Agent.js.map +1 -1
  79. package/dist/tools/Agent/prompt.d.ts.map +1 -1
  80. package/dist/tools/Agent/prompt.js +7 -9
  81. package/dist/tools/Agent/prompt.js.map +1 -1
  82. package/dist/tools/Bash/Bash.d.ts +21 -11
  83. package/dist/tools/Bash/Bash.d.ts.map +1 -1
  84. package/dist/tools/Bash/Bash.js +74 -17
  85. package/dist/tools/Bash/Bash.js.map +1 -1
  86. package/dist/tools/Bash/prompt.d.ts.map +1 -1
  87. package/dist/tools/Bash/prompt.js +53 -70
  88. package/dist/tools/Bash/prompt.js.map +1 -1
  89. package/dist/tools/Bash/utils.d.ts +5 -1
  90. package/dist/tools/Bash/utils.d.ts.map +1 -1
  91. package/dist/tools/Bash/utils.js +24 -4
  92. package/dist/tools/Bash/utils.js.map +1 -1
  93. package/dist/tools/CronCreate/CronCreate.d.ts +68 -0
  94. package/dist/tools/CronCreate/CronCreate.d.ts.map +1 -0
  95. package/dist/tools/CronCreate/CronCreate.js +75 -0
  96. package/dist/tools/CronCreate/CronCreate.js.map +1 -0
  97. package/dist/tools/CronCreate/prompt.d.ts +3 -0
  98. package/dist/tools/CronCreate/prompt.d.ts.map +1 -0
  99. package/dist/tools/CronCreate/prompt.js +41 -0
  100. package/dist/tools/CronCreate/prompt.js.map +1 -0
  101. package/dist/tools/CronDelete/CronDelete.d.ts +45 -0
  102. package/dist/tools/CronDelete/CronDelete.d.ts.map +1 -0
  103. package/dist/tools/CronDelete/CronDelete.js +51 -0
  104. package/dist/tools/CronDelete/CronDelete.js.map +1 -0
  105. package/dist/tools/CronDelete/prompt.d.ts +3 -0
  106. package/dist/tools/CronDelete/prompt.d.ts.map +1 -0
  107. package/dist/tools/CronDelete/prompt.js +6 -0
  108. package/dist/tools/CronDelete/prompt.js.map +1 -0
  109. package/dist/tools/CronList/CronList.d.ts +33 -0
  110. package/dist/tools/CronList/CronList.d.ts.map +1 -0
  111. package/dist/tools/CronList/CronList.js +55 -0
  112. package/dist/tools/CronList/CronList.js.map +1 -0
  113. package/dist/tools/CronList/prompt.d.ts +3 -0
  114. package/dist/tools/CronList/prompt.d.ts.map +1 -0
  115. package/dist/tools/CronList/prompt.js +6 -0
  116. package/dist/tools/CronList/prompt.js.map +1 -0
  117. package/dist/tools/Edit/Edit.d.ts.map +1 -1
  118. package/dist/tools/Edit/Edit.js +7 -3
  119. package/dist/tools/Edit/Edit.js.map +1 -1
  120. package/dist/tools/Edit/utils.d.ts.map +1 -1
  121. package/dist/tools/Edit/utils.js +14 -5
  122. package/dist/tools/Edit/utils.js.map +1 -1
  123. package/dist/tools/Grep/Grep.d.ts +4 -4
  124. package/dist/tools/NotebookEdit/NotebookEdit.js +1 -1
  125. package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -1
  126. package/dist/tools/Read/Read.d.ts +74 -3
  127. package/dist/tools/Read/Read.d.ts.map +1 -1
  128. package/dist/tools/Read/Read.js +188 -18
  129. package/dist/tools/Read/Read.js.map +1 -1
  130. package/dist/tools/Read/prompt.d.ts +1 -1
  131. package/dist/tools/Read/prompt.d.ts.map +1 -1
  132. package/dist/tools/Read/prompt.js +2 -1
  133. package/dist/tools/Read/prompt.js.map +1 -1
  134. package/dist/tools/Skill/Skill.d.ts +2 -1
  135. package/dist/tools/Skill/Skill.d.ts.map +1 -1
  136. package/dist/tools/Skill/Skill.js +3 -2
  137. package/dist/tools/Skill/Skill.js.map +1 -1
  138. package/dist/tools/TaskCreate/TaskCreate.d.ts +54 -0
  139. package/dist/tools/TaskCreate/TaskCreate.d.ts.map +1 -0
  140. package/dist/tools/TaskCreate/TaskCreate.js +51 -0
  141. package/dist/tools/TaskCreate/TaskCreate.js.map +1 -0
  142. package/dist/tools/TaskCreate/prompt.d.ts +3 -0
  143. package/dist/tools/TaskCreate/prompt.d.ts.map +1 -0
  144. package/dist/tools/TaskCreate/prompt.js +45 -0
  145. package/dist/tools/TaskCreate/prompt.js.map +1 -0
  146. package/dist/tools/TaskGet/TaskGet.d.ts +34 -0
  147. package/dist/tools/TaskGet/TaskGet.d.ts.map +1 -0
  148. package/dist/tools/TaskGet/TaskGet.js +57 -0
  149. package/dist/tools/TaskGet/TaskGet.js.map +1 -0
  150. package/dist/tools/TaskGet/prompt.d.ts +3 -0
  151. package/dist/tools/TaskGet/prompt.d.ts.map +1 -0
  152. package/dist/tools/TaskGet/prompt.js +26 -0
  153. package/dist/tools/TaskGet/prompt.js.map +1 -0
  154. package/dist/tools/TaskList/TaskList.d.ts +27 -0
  155. package/dist/tools/TaskList/TaskList.d.ts.map +1 -0
  156. package/dist/tools/TaskList/TaskList.js +56 -0
  157. package/dist/tools/TaskList/TaskList.js.map +1 -0
  158. package/dist/tools/TaskList/prompt.d.ts +3 -0
  159. package/dist/tools/TaskList/prompt.d.ts.map +1 -0
  160. package/dist/tools/TaskList/prompt.js +25 -0
  161. package/dist/tools/TaskList/prompt.js.map +1 -0
  162. package/dist/tools/TaskOutput/TaskOutput.d.ts +58 -0
  163. package/dist/tools/TaskOutput/TaskOutput.d.ts.map +1 -0
  164. package/dist/tools/TaskOutput/TaskOutput.js +95 -0
  165. package/dist/tools/TaskOutput/TaskOutput.js.map +1 -0
  166. package/dist/tools/TaskStop/TaskStop.d.ts +50 -0
  167. package/dist/tools/TaskStop/TaskStop.d.ts.map +1 -0
  168. package/dist/tools/TaskStop/TaskStop.js +69 -0
  169. package/dist/tools/TaskStop/TaskStop.js.map +1 -0
  170. package/dist/tools/TaskUpdate/TaskUpdate.d.ts +88 -0
  171. package/dist/tools/TaskUpdate/TaskUpdate.d.ts.map +1 -0
  172. package/dist/tools/TaskUpdate/TaskUpdate.js +115 -0
  173. package/dist/tools/TaskUpdate/TaskUpdate.js.map +1 -0
  174. package/dist/tools/TaskUpdate/prompt.d.ts +3 -0
  175. package/dist/tools/TaskUpdate/prompt.d.ts.map +1 -0
  176. package/dist/tools/TaskUpdate/prompt.js +80 -0
  177. package/dist/tools/TaskUpdate/prompt.js.map +1 -0
  178. package/dist/tools/WebFetch/WebFetch.d.ts +62 -0
  179. package/dist/tools/WebFetch/WebFetch.d.ts.map +1 -0
  180. package/dist/tools/WebFetch/WebFetch.js +143 -0
  181. package/dist/tools/WebFetch/WebFetch.js.map +1 -0
  182. package/dist/tools/WebFetch/prompt.d.ts +4 -0
  183. package/dist/tools/WebFetch/prompt.d.ts.map +1 -0
  184. package/dist/tools/WebFetch/prompt.js +38 -0
  185. package/dist/tools/WebFetch/prompt.js.map +1 -0
  186. package/dist/tools/WebFetch/utils.d.ts +20 -0
  187. package/dist/tools/WebFetch/utils.d.ts.map +1 -0
  188. package/dist/tools/WebFetch/utils.js +223 -0
  189. package/dist/tools/WebFetch/utils.js.map +1 -0
  190. package/dist/tools/Write/Write.js +1 -1
  191. package/dist/tools/Write/Write.js.map +1 -1
  192. package/dist/tools/base/Tool.d.ts +1 -0
  193. package/dist/tools/base/Tool.d.ts.map +1 -1
  194. package/dist/tools/base/tools.d.ts +4 -2
  195. package/dist/tools/base/tools.d.ts.map +1 -1
  196. package/dist/tools/base/tools.js +61 -14
  197. package/dist/tools/base/tools.js.map +1 -1
  198. package/dist/types/cron.d.ts +21 -0
  199. package/dist/types/cron.d.ts.map +1 -0
  200. package/dist/types/cron.js +6 -0
  201. package/dist/types/cron.js.map +1 -0
  202. package/dist/types/index.d.ts +9 -1
  203. package/dist/types/index.d.ts.map +1 -1
  204. package/dist/types/index.js +4 -2
  205. package/dist/types/index.js.map +1 -1
  206. package/dist/types/rule.d.ts +8 -0
  207. package/dist/types/rule.d.ts.map +1 -0
  208. package/dist/types/rule.js +3 -0
  209. package/dist/types/rule.js.map +1 -0
  210. package/dist/types/task.d.ts +93 -0
  211. package/dist/types/task.d.ts.map +1 -0
  212. package/dist/types/task.js +3 -0
  213. package/dist/types/task.js.map +1 -0
  214. package/dist/types/todoTask.d.ts +29 -0
  215. package/dist/types/todoTask.d.ts.map +1 -0
  216. package/dist/types/todoTask.js +6 -0
  217. package/dist/types/todoTask.js.map +1 -0
  218. package/dist/util/assembleTools.d.ts +6 -0
  219. package/dist/util/assembleTools.d.ts.map +1 -0
  220. package/dist/util/assembleTools.js +17 -0
  221. package/dist/util/assembleTools.js.map +1 -0
  222. package/dist/util/btw.d.ts +6 -0
  223. package/dist/util/btw.d.ts.map +1 -0
  224. package/dist/util/btw.js +80 -0
  225. package/dist/util/btw.js.map +1 -0
  226. package/dist/util/compact.d.ts +16 -4
  227. package/dist/util/compact.d.ts.map +1 -1
  228. package/dist/util/compact.js +12 -18
  229. package/dist/util/compact.js.map +1 -1
  230. package/dist/util/cron.d.ts +17 -0
  231. package/dist/util/cron.d.ts.map +1 -0
  232. package/dist/util/cron.js +82 -0
  233. package/dist/util/cron.js.map +1 -0
  234. package/dist/util/file.d.ts +16 -0
  235. package/dist/util/file.d.ts.map +1 -1
  236. package/dist/util/file.js +55 -0
  237. package/dist/util/file.js.map +1 -1
  238. package/dist/util/fileReference.d.ts.map +1 -1
  239. package/dist/util/fileReference.js +10 -1
  240. package/dist/util/fileReference.js.map +1 -1
  241. package/dist/util/format.d.ts +6 -0
  242. package/dist/util/format.d.ts.map +1 -1
  243. package/dist/util/format.js +17 -0
  244. package/dist/util/format.js.map +1 -1
  245. package/dist/util/history.d.ts +4 -1
  246. package/dist/util/history.d.ts.map +1 -1
  247. package/dist/util/history.js +9 -5
  248. package/dist/util/history.js.map +1 -1
  249. package/dist/util/inputQueue.d.ts +19 -0
  250. package/dist/util/inputQueue.d.ts.map +1 -0
  251. package/dist/util/inputQueue.js +30 -0
  252. package/dist/util/inputQueue.js.map +1 -0
  253. package/dist/util/message.d.ts +4 -0
  254. package/dist/util/message.d.ts.map +1 -1
  255. package/dist/util/message.js +27 -0
  256. package/dist/util/message.js.map +1 -1
  257. package/dist/util/pdf.d.ts +83 -0
  258. package/dist/util/pdf.d.ts.map +1 -0
  259. package/dist/util/pdf.js +472 -0
  260. package/dist/util/pdf.js.map +1 -0
  261. package/dist/util/process.d.ts +10 -0
  262. package/dist/util/process.d.ts.map +1 -0
  263. package/dist/util/process.js +88 -0
  264. package/dist/util/process.js.map +1 -0
  265. package/dist/util/savePath.d.ts +0 -11
  266. package/dist/util/savePath.d.ts.map +1 -1
  267. package/dist/util/savePath.js +0 -17
  268. package/dist/util/savePath.js.map +1 -1
  269. package/dist/util/shell.d.ts +10 -1
  270. package/dist/util/shell.d.ts.map +1 -1
  271. package/dist/util/shell.js +89 -34
  272. package/dist/util/shell.js.map +1 -1
  273. package/dist/util/topic.d.ts +7 -0
  274. package/dist/util/topic.d.ts.map +1 -1
  275. package/dist/util/topic.js +40 -0
  276. package/dist/util/topic.js.map +1 -1
  277. package/package.json +2 -1
  278. package/dist/services/command/customCommands.d.ts +0 -1
  279. package/dist/services/command/customCommands.d.ts.map +0 -1
  280. package/dist/services/command/customCommands.js +0 -197
  281. package/dist/services/command/customCommands.js.map +0 -1
  282. package/dist/services/command/runCommand.d.ts +0 -18
  283. package/dist/services/command/runCommand.d.ts.map +0 -1
  284. package/dist/services/command/runCommand.js +0 -147
  285. package/dist/services/command/runCommand.js.map +0 -1
  286. package/dist/services/plugins/customCommands.d.ts +0 -29
  287. package/dist/services/plugins/customCommands.d.ts.map +0 -1
  288. package/dist/services/plugins/customCommands.js +0 -227
  289. package/dist/services/plugins/customCommands.js.map +0 -1
  290. package/dist/services/skill/skillLoader.d.ts +0 -17
  291. package/dist/services/skill/skillLoader.d.ts.map +0 -1
  292. package/dist/services/skill/skillLoader.js +0 -122
  293. package/dist/services/skill/skillLoader.js.map +0 -1
  294. package/dist/services/skill/skillParser.d.ts +0 -15
  295. package/dist/services/skill/skillParser.d.ts.map +0 -1
  296. package/dist/services/skill/skillParser.js +0 -66
  297. package/dist/services/skill/skillParser.js.map +0 -1
  298. package/dist/services/skill/skillRegistry.d.ts +0 -34
  299. package/dist/services/skill/skillRegistry.d.ts.map +0 -1
  300. package/dist/services/skill/skillRegistry.js +0 -98
  301. package/dist/services/skill/skillRegistry.js.map +0 -1
  302. package/dist/services/skill/skillsManager.d.ts +0 -79
  303. package/dist/services/skill/skillsManager.d.ts.map +0 -1
  304. package/dist/services/skill/skillsManager.js +0 -289
  305. package/dist/services/skill/skillsManager.js.map +0 -1
  306. package/dist/tools/Task/Task.d.ts +0 -59
  307. package/dist/tools/Task/Task.d.ts.map +0 -1
  308. package/dist/tools/Task/Task.js +0 -212
  309. package/dist/tools/Task/Task.js.map +0 -1
  310. package/dist/tools/Task/prompt.d.ts +0 -6
  311. package/dist/tools/Task/prompt.d.ts.map +0 -1
  312. package/dist/tools/Task/prompt.js +0 -75
  313. package/dist/tools/Task/prompt.js.map +0 -1
  314. package/dist/util/frontmatter.d.ts +0 -35
  315. package/dist/util/frontmatter.d.ts.map +0 -1
  316. package/dist/util/frontmatter.js +0 -119
  317. package/dist/util/frontmatter.js.map +0 -1
  318. package/dist/util/rules.d.ts +0 -6
  319. package/dist/util/rules.d.ts.map +0 -1
  320. package/dist/util/rules.js +0 -162
  321. package/dist/util/rules.js.map +0 -1
  322. package/dist/util/systemReminder.d.ts +0 -10
  323. package/dist/util/systemReminder.d.ts.map +0 -1
  324. package/dist/util/systemReminder.js +0 -177
  325. package/dist/util/systemReminder.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillLoader.d.ts","sourceRoot":"","sources":["../../../src/services/skill/skillLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAKzC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ/D;AAoED;;GAEG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,KAAG,KAAK,EAAE,qCA8B9B,CAAA"}
@@ -1,122 +0,0 @@
1
- "use strict";
2
- /**
3
- * Skill 加载器
4
- *
5
- * 负责扫描目录、查找和加载 Skills
6
- * 支持项目级和全局级 Skills,项目级优先
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.loadAllSkills = void 0;
10
- exports.getSkillSearchDirs = getSkillSearchDirs;
11
- const fs_1 = require("fs");
12
- const path_1 = require("path");
13
- const os_1 = require("os");
14
- const lodash_es_1 = require("lodash-es");
15
- const skillParser_1 = require("./skillParser");
16
- const log_1 = require("../../util/log");
17
- const file_1 = require("../../util/file");
18
- /**
19
- * 获取 Skill 搜索目录
20
- * 优先级:项目级 > 全局级
21
- */
22
- function getSkillSearchDirs(workingDir) {
23
- // 先标准化 workingDir,然后再进行路径拼接
24
- const normalizedWorkingDir = (0, file_1.normalizeSkillPath)(workingDir);
25
- return [
26
- (0, file_1.normalizeSkillPath)((0, path_1.join)(normalizedWorkingDir, '.sema', 'skills')), // 项目级 Skills(优先)
27
- (0, file_1.normalizeSkillPath)((0, path_1.join)((0, os_1.homedir)(), '.sema', 'skills')), // 全局级 Skills
28
- ];
29
- }
30
- /**
31
- * 扫描单个目录,查找所有 Skill
32
- * @param dir 要扫描的目录
33
- * @param locate Skill 来源:'user' 或 'project'
34
- */
35
- function scanSkillsInDir(dir, locate) {
36
- if (!(0, fs_1.existsSync)(dir)) {
37
- (0, log_1.logDebug)(`Skill directory does not exist: ${dir}`);
38
- return [];
39
- }
40
- const skills = [];
41
- try {
42
- const entries = (0, fs_1.readdirSync)(dir);
43
- for (const entry of entries) {
44
- const fullPath = (0, file_1.normalizeSkillPath)((0, path_1.join)(dir, entry));
45
- const stat = (0, fs_1.statSync)(fullPath);
46
- if (stat.isDirectory()) {
47
- // 查找目录内的 SKILL.md 或 skill.md
48
- const skillFilePath = findSkillFile(fullPath);
49
- if (skillFilePath) {
50
- try {
51
- const skill = (0, skillParser_1.parseSkillFile)(skillFilePath, fullPath, locate);
52
- skills.push(skill);
53
- (0, log_1.logDebug)(`Loaded skill: ${skill.metadata.name} from ${skillFilePath}`);
54
- }
55
- catch (error) {
56
- (0, log_1.logWarn)(`Failed to parse skill at ${skillFilePath}: ${error}`);
57
- }
58
- }
59
- }
60
- else if (entry.toLowerCase().endsWith('.md')) {
61
- // 直接是 .md 文件的 Skill
62
- try {
63
- const skill = (0, skillParser_1.parseSkillFile)(fullPath, dir, locate);
64
- skills.push(skill);
65
- (0, log_1.logDebug)(`Loaded skill: ${skill.metadata.name} from ${fullPath}`);
66
- }
67
- catch (error) {
68
- (0, log_1.logWarn)(`Failed to parse skill at ${fullPath}: ${error}`);
69
- }
70
- }
71
- }
72
- }
73
- catch (error) {
74
- (0, log_1.logWarn)(`Failed to scan skill directory ${dir}: ${error}`);
75
- }
76
- return skills;
77
- }
78
- /**
79
- * 在目录中查找 SKILL.md 或 skill.md
80
- */
81
- function findSkillFile(dir) {
82
- const candidates = ['SKILL.md', 'skill.md', 'Skill.md'];
83
- for (const candidate of candidates) {
84
- const filePath = (0, file_1.normalizeSkillPath)((0, path_1.join)(dir, candidate));
85
- if ((0, fs_1.existsSync)(filePath)) {
86
- return filePath;
87
- }
88
- }
89
- return null;
90
- }
91
- /**
92
- * 加载所有 Skills(带缓存)
93
- */
94
- exports.loadAllSkills = (0, lodash_es_1.memoize)((workingDir) => {
95
- const searchDirs = getSkillSearchDirs(workingDir);
96
- const allSkills = [];
97
- // 第一个目录是项目级,第二个是用户级(全局级)
98
- const locates = ['project', 'user'];
99
- for (let i = 0; i < searchDirs.length; i++) {
100
- const dir = searchDirs[i];
101
- const locate = locates[i] || 'user'; // 默认为 user
102
- const skills = scanSkillsInDir(dir, locate);
103
- allSkills.push(...skills);
104
- }
105
- (0, log_1.logDebug)(`Loaded ${allSkills.length} skills from ${searchDirs.length} directories`);
106
- return allSkills;
107
- },
108
- // 缓存键:workingDir + 目录修改时间戳
109
- (workingDir) => {
110
- const searchDirs = getSkillSearchDirs(workingDir);
111
- const timestamps = searchDirs.map(dir => {
112
- try {
113
- if ((0, fs_1.existsSync)(dir)) {
114
- return (0, fs_1.statSync)(dir).mtimeMs;
115
- }
116
- }
117
- catch { }
118
- return 0;
119
- });
120
- return `${workingDir}:${timestamps.join(':')}`;
121
- });
122
- //# sourceMappingURL=skillLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillLoader.js","sourceRoot":"","sources":["../../../src/services/skill/skillLoader.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Skill 解析器
3
- *
4
- * 负责解析 SKILL.md 文件,提取 YAML frontmatter 和 Markdown 内容
5
- */
6
- import { Skill } from '../../types/skill';
7
- /**
8
- * 解析 SKILL.md 文件
9
- * @param filePath SKILL.md 的绝对路径
10
- * @param baseDir Skill 目录的绝对路径
11
- * @param locate Skill 来源:'user' 或 'project'
12
- * @returns 解析后的 Skill 对象
13
- */
14
- export declare function parseSkillFile(filePath: string, baseDir: string, locate: 'user' | 'project'): Skill;
15
- //# sourceMappingURL=skillParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillParser.d.ts","sourceRoot":"","sources":["../../../src/services/skill/skillParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,EAAiB,MAAM,mBAAmB,CAAA;AAExD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAiCnG"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- /**
3
- * Skill 解析器
4
- *
5
- * 负责解析 SKILL.md 文件,提取 YAML frontmatter 和 Markdown 内容
6
- */
7
- var __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.parseSkillFile = parseSkillFile;
12
- const fs_1 = require("fs");
13
- const gray_matter_1 = __importDefault(require("gray-matter"));
14
- /**
15
- * 解析 SKILL.md 文件
16
- * @param filePath SKILL.md 的绝对路径
17
- * @param baseDir Skill 目录的绝对路径
18
- * @param locate Skill 来源:'user' 或 'project'
19
- * @returns 解析后的 Skill 对象
20
- */
21
- function parseSkillFile(filePath, baseDir, locate) {
22
- const fileContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
23
- // 使用 gray-matter 解析 YAML frontmatter
24
- const { data, content } = (0, gray_matter_1.default)(fileContent);
25
- // 验证必需字段
26
- if (!data.name || !data.description) {
27
- throw new Error(`Invalid SKILL.md: missing 'name' or 'description' in ${filePath}`);
28
- }
29
- // 解析 allowed-tools
30
- const allowedTools = parseAllowedTools(data['allowed-tools']);
31
- const metadata = {
32
- name: String(data.name).trim(),
33
- description: String(data.description).trim(),
34
- 'allowed-tools': allowedTools,
35
- 'when-to-use': data['when-to-use'] ? String(data['when-to-use']).trim() : undefined,
36
- model: data.model,
37
- 'max-thinking-tokens': data['max-thinking-tokens'] ? Number(data['max-thinking-tokens']) : undefined,
38
- 'disable-model-invocation': Boolean(data['disable-model-invocation']),
39
- 'argument-hint': data['argument-hint'] ? String(data['argument-hint']).trim() : undefined,
40
- version: data.version ? String(data.version).trim() : undefined,
41
- };
42
- return {
43
- metadata,
44
- content: content.trim(),
45
- filePath,
46
- baseDir,
47
- locate,
48
- };
49
- }
50
- /**
51
- * 解析 allowed-tools 字段
52
- * 支持数组和空格分隔的字符串
53
- */
54
- function parseAllowedTools(value) {
55
- if (Array.isArray(value)) {
56
- return value.map(v => String(v).trim()).filter(Boolean);
57
- }
58
- if (typeof value === 'string') {
59
- const trimmed = value.trim();
60
- if (!trimmed)
61
- return [];
62
- return trimmed.split(/\s+/).map(v => v.trim()).filter(Boolean);
63
- }
64
- return [];
65
- }
66
- //# sourceMappingURL=skillParser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillParser.js","sourceRoot":"","sources":["../../../src/services/skill/skillParser.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAaH,wCAiCC;AA5CD,2BAAiC;AACjC,8DAAgC;AAGhC;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,OAAe,EAAE,MAA0B;IAC1F,MAAM,WAAW,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEnD,qCAAqC;IACrC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,WAAW,CAAC,CAAA;IAE7C,SAAS;IACT,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,wDAAwD,QAAQ,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;QAC5C,eAAe,EAAE,YAAY;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnF,KAAK,EAAE,IAAI,CAAC,KAAY;QACxB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACpG,0BAA0B,EAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACrE,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACzF,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;KAChE,CAAA;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ;QACR,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QACvB,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Skill 注册表
3
- *
4
- * 管理 Skill 的全局注册和查找
5
- * 实现优先级:项目级 > 全局级
6
- */
7
- import { Skill, SkillRegistry, SkillInfo } from '../../types/skill';
8
- /**
9
- * 初始化 Skill 注册表
10
- * 优先级:项目级 > 全局级
11
- * 如果有重名 Skill,项目级会覆盖全局级
12
- */
13
- export declare function initializeSkillRegistry(workingDir: string): SkillRegistry;
14
- /**
15
- * 获取 Skill 注册表
16
- */
17
- export declare function getSkillRegistry(): SkillRegistry;
18
- /**
19
- * 根据名称查找 Skill
20
- */
21
- export declare function findSkill(name: string): Skill | undefined;
22
- /**
23
- * 获取所有 Skills 的结构化信息
24
- */
25
- export declare function getSkillsInfo(): SkillInfo[];
26
- /**
27
- * 获取所有 Skills 的简要信息(用于系统提示)
28
- */
29
- export declare function getSkillsSummary(): string;
30
- /**
31
- * 清除注册表缓存(用于测试)
32
- */
33
- export declare function clearSkillRegistry(): void;
34
- //# sourceMappingURL=skillRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillRegistry.d.ts","sourceRoot":"","sources":["../../../src/services/skill/skillRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AASnE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAkBzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAGzD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAa3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- /**
3
- * Skill 注册表
4
- *
5
- * 管理 Skill 的全局注册和查找
6
- * 实现优先级:项目级 > 全局级
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.initializeSkillRegistry = initializeSkillRegistry;
10
- exports.getSkillRegistry = getSkillRegistry;
11
- exports.findSkill = findSkill;
12
- exports.getSkillsInfo = getSkillsInfo;
13
- exports.getSkillsSummary = getSkillsSummary;
14
- exports.clearSkillRegistry = clearSkillRegistry;
15
- const skillLoader_1 = require("./skillLoader");
16
- const log_1 = require("../../util/log");
17
- /**
18
- * 全局 Skill 注册表
19
- */
20
- let globalRegistry = null;
21
- /**
22
- * 初始化 Skill 注册表
23
- * 优先级:项目级 > 全局级
24
- * 如果有重名 Skill,项目级会覆盖全局级
25
- */
26
- function initializeSkillRegistry(workingDir) {
27
- const registry = new Map();
28
- const skills = (0, skillLoader_1.loadAllSkills)(workingDir);
29
- for (const skill of skills) {
30
- const name = skill.metadata.name;
31
- // 检查重复(后加载的会覆盖先加载的,由于 loadAllSkills 按项目->全局顺序加载,项目级会优先)
32
- if (registry.has(name)) {
33
- const existingSkill = registry.get(name);
34
- (0, log_1.logWarn)(`Duplicate skill name detected: ${name}. Using ${skill.filePath} (override ${existingSkill.filePath})`);
35
- }
36
- registry.set(name, skill);
37
- }
38
- globalRegistry = registry;
39
- return registry;
40
- }
41
- /**
42
- * 获取 Skill 注册表
43
- */
44
- function getSkillRegistry() {
45
- if (!globalRegistry) {
46
- throw new Error('Skill registry not initialized. Call initializeSkillRegistry() first.');
47
- }
48
- return globalRegistry;
49
- }
50
- /**
51
- * 根据名称查找 Skill
52
- */
53
- function findSkill(name) {
54
- const registry = getSkillRegistry();
55
- return registry.get(name);
56
- }
57
- /**
58
- * 获取所有 Skills 的结构化信息
59
- */
60
- function getSkillsInfo() {
61
- const registry = getSkillRegistry();
62
- const skillsInfo = [];
63
- for (const [name, skill] of registry.entries()) {
64
- skillsInfo.push({
65
- name,
66
- description: skill.metadata.description,
67
- locate: skill.locate
68
- });
69
- }
70
- return skillsInfo;
71
- }
72
- /**
73
- * 获取所有 Skills 的简要信息(用于系统提示)
74
- */
75
- function getSkillsSummary() {
76
- const registry = getSkillRegistry();
77
- if (registry.size === 0) {
78
- return '';
79
- }
80
- const lines = ['', 'Available Skills:'];
81
- for (const [name, skill] of registry.entries()) {
82
- const whenToUse = skill.metadata['when-to-use'];
83
- const desc = whenToUse ? `${skill.metadata.description} (${whenToUse})` : skill.metadata.description;
84
- lines.push(`- ${name}: ${desc}`);
85
- }
86
- lines.push('');
87
- lines.push('When a task requires specific domain knowledge or workflow, use the Skill tool to activate the relevant skill.');
88
- return lines.join('\n');
89
- }
90
- /**
91
- * 清除注册表缓存(用于测试)
92
- */
93
- function clearSkillRegistry() {
94
- globalRegistry = null;
95
- // 清除 loadAllSkills 的缓存
96
- skillLoader_1.loadAllSkills.cache.clear?.();
97
- }
98
- //# sourceMappingURL=skillRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillRegistry.js","sourceRoot":"","sources":["../../../src/services/skill/skillRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Skills 管理器
3
- *
4
- * 管理自定义 Skill 的全局注册和查找
5
- * 实现优先级:用户级(Claude) < 项目级(Claude) < 插件 < 用户级(Sema) < 项目级(Sema)
6
- * 兼容 Claude Code 和 Sema 两套路径(Claude 只读)
7
- */
8
- import { SkillConfig } from '../../types/skill';
9
- /**
10
- * Skills 管理器类 - 单例模式
11
- */
12
- declare class SkillsManager {
13
- private semaUserSkillsDir;
14
- private semaProjectSkillsDir;
15
- private claudeUserSkillsDir;
16
- private claudeProjectSkillsDir;
17
- private skillConfigs;
18
- private skillInfoCache;
19
- private loadingPromise;
20
- constructor();
21
- /**
22
- * 清空缓存
23
- */
24
- private invalidateCache;
25
- /**
26
- * 加载 Skills 配置(内部方法)
27
- * 按优先级加载:用户级(Claude) -> 项目级(Claude) -> 插件 -> 用户级(Sema) -> 项目级(Sema)
28
- * 后加载的覆盖先加载的,优先级从高到低:项目级(Sema) > 用户级(Sema) > 插件 > 项目级(Claude) > 用户级(Claude)
29
- */
30
- private loadSkills;
31
- /**
32
- * 从已安装且启用的插件中加载 skills
33
- * skill 名格式:插件名:skill名,locate 为 'plugin'
34
- */
35
- private loadSkillsFromPlugins;
36
- /**
37
- * 从指定目录加载 skill 配置
38
- * 每个 skill 存放于子目录中,子目录下有 SKILL.md 文件
39
- * Claude 来源为只读
40
- */
41
- private loadSkillsFromDir;
42
- /**
43
- * 解析 Skill Markdown 文件(SKILL.md)
44
- */
45
- private parseSkillFile;
46
- /**
47
- * 获取所有 Skill 配置
48
- */
49
- private getSkillsConfs;
50
- /**
51
- * 获取所有 Skill 信息(有缓存则直接返回,否则等待后台加载或重新加载)
52
- */
53
- getSkillsInfo(): Promise<SkillConfig[]>;
54
- /**
55
- * 刷新 Skills 信息
56
- * 重新加载所有配置,更新缓存
57
- */
58
- refreshSkillsInfo(): Promise<SkillConfig[]>;
59
- /**
60
- * 根据名称获取 Skill 配置
61
- */
62
- getSkillConfig(name: string): SkillConfig | undefined;
63
- /**
64
- * 获取所有 Skill 的类型描述
65
- * 格式: "- SkillName: description"
66
- */
67
- getSkillTypesDescription(): string;
68
- /**
69
- * 清理资源
70
- */
71
- dispose(): void;
72
- }
73
- /**
74
- * 获取 Skills Manager 实例(单例模式)
75
- */
76
- export declare function getSkillsManager(): SkillsManager;
77
- export declare function getSkillTypesDescription(): string;
78
- export { SkillsManager };
79
- //# sourceMappingURL=skillsManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillsManager.d.ts","sourceRoot":"","sources":["../../../src/services/skill/skillsManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK/C;;GAEG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,OAAO,CAAC,YAAY,CAAsC;IAE1D,OAAO,CAAC,cAAc,CAA6B;IAEnD,OAAO,CAAC,cAAc,CAAsC;;IAsB5D;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;YACW,UAAU;IAuBxB;;;OAGG;YACW,qBAAqB;IAoCnC;;;;OAIG;YACW,iBAAiB;IAoC/B;;OAEG;YACW,cAAc;IA6B5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAU7C;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBjD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIrD;;;OAGG;IACH,wBAAwB,IAAI,MAAM;IAUlC;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}