@downcity/plugins 1.0.174 → 1.0.194

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 (301) hide show
  1. package/bin/BuiltinPlugins.d.ts +4 -9
  2. package/bin/BuiltinPlugins.d.ts.map +1 -1
  3. package/bin/BuiltinPlugins.js +4 -8
  4. package/bin/BuiltinPlugins.js.map +1 -1
  5. package/bin/chat/Action.d.ts +8 -2
  6. package/bin/chat/Action.d.ts.map +1 -1
  7. package/bin/chat/Action.js +9 -5
  8. package/bin/chat/Action.js.map +1 -1
  9. package/bin/chat/ChatPlugin.d.ts +2 -22
  10. package/bin/chat/ChatPlugin.d.ts.map +1 -1
  11. package/bin/chat/ChatPlugin.js +2 -21
  12. package/bin/chat/ChatPlugin.js.map +1 -1
  13. package/bin/chat/Index.d.ts +1 -1
  14. package/bin/chat/Index.d.ts.map +1 -1
  15. package/bin/chat/channels/BaseChatChannel.js +1 -1
  16. package/bin/chat/channels/BaseChatChannel.js.map +1 -1
  17. package/bin/chat/channels/Configuration.d.ts +1 -1
  18. package/bin/chat/channels/Configuration.js +1 -1
  19. package/bin/chat/channels/RuntimeChannel.d.ts +2 -3
  20. package/bin/chat/channels/RuntimeChannel.d.ts.map +1 -1
  21. package/bin/chat/channels/RuntimeChannel.js +0 -8
  22. package/bin/chat/channels/RuntimeChannel.js.map +1 -1
  23. package/bin/chat/channels/feishu/Feishu.d.ts.map +1 -1
  24. package/bin/chat/channels/feishu/Feishu.js +2 -1
  25. package/bin/chat/channels/feishu/Feishu.js.map +1 -1
  26. package/bin/chat/runtime/ChannelContextStore.d.ts.map +1 -1
  27. package/bin/chat/runtime/ChannelContextStore.js +13 -12
  28. package/bin/chat/runtime/ChannelContextStore.js.map +1 -1
  29. package/bin/chat/runtime/ChatActionExecution.d.ts +26 -1
  30. package/bin/chat/runtime/ChatActionExecution.d.ts.map +1 -1
  31. package/bin/chat/runtime/ChatActionExecution.js +31 -3
  32. package/bin/chat/runtime/ChatActionExecution.js.map +1 -1
  33. package/bin/chat/runtime/ChatActionInput.d.ts +1 -2
  34. package/bin/chat/runtime/ChatActionInput.d.ts.map +1 -1
  35. package/bin/chat/runtime/ChatActionInput.js +1 -27
  36. package/bin/chat/runtime/ChatActionInput.js.map +1 -1
  37. package/bin/chat/runtime/ChatChannelActions.d.ts +2 -66
  38. package/bin/chat/runtime/ChatChannelActions.d.ts.map +1 -1
  39. package/bin/chat/runtime/ChatChannelActions.js +3 -195
  40. package/bin/chat/runtime/ChatChannelActions.js.map +1 -1
  41. package/bin/chat/runtime/ChatChannelConfig.d.ts +2 -23
  42. package/bin/chat/runtime/ChatChannelConfig.d.ts.map +1 -1
  43. package/bin/chat/runtime/ChatChannelConfig.js +3 -116
  44. package/bin/chat/runtime/ChatChannelConfig.js.map +1 -1
  45. package/bin/chat/runtime/ChatChannelCore.d.ts +0 -14
  46. package/bin/chat/runtime/ChatChannelCore.d.ts.map +1 -1
  47. package/bin/chat/runtime/ChatChannelCore.js +1 -1
  48. package/bin/chat/runtime/ChatChannelCore.js.map +1 -1
  49. package/bin/chat/runtime/ChatChannelFacade.d.ts +1 -1
  50. package/bin/chat/runtime/ChatChannelFacade.d.ts.map +1 -1
  51. package/bin/chat/runtime/ChatChannelFacade.js +1 -1
  52. package/bin/chat/runtime/ChatChannelFacade.js.map +1 -1
  53. package/bin/chat/runtime/ChatHistoryStore.d.ts.map +1 -1
  54. package/bin/chat/runtime/ChatHistoryStore.js +4 -3
  55. package/bin/chat/runtime/ChatHistoryStore.js.map +1 -1
  56. package/bin/chat/runtime/ChatPluginActionRegistry.d.ts.map +1 -1
  57. package/bin/chat/runtime/ChatPluginActionRegistry.js +27 -89
  58. package/bin/chat/runtime/ChatPluginActionRegistry.js.map +1 -1
  59. package/bin/chat/runtime/ChatPluginSystem.d.ts +3 -2
  60. package/bin/chat/runtime/ChatPluginSystem.d.ts.map +1 -1
  61. package/bin/chat/runtime/ChatPluginSystem.js +5 -5
  62. package/bin/chat/runtime/ChatPluginSystem.js.map +1 -1
  63. package/bin/chat/runtime/ChatQueueStore.d.ts +1 -1
  64. package/bin/chat/runtime/ChatQueueStore.js +2 -2
  65. package/bin/chat/runtime/ChatQueueStore.js.map +1 -1
  66. package/bin/chat/runtime/ChatQueueWorker.js +1 -1
  67. package/bin/chat/runtime/ChatQueueWorker.js.map +1 -1
  68. package/bin/chat/runtime/ChatSessionDelete.d.ts.map +1 -1
  69. package/bin/chat/runtime/ChatSessionDelete.js +11 -20
  70. package/bin/chat/runtime/ChatSessionDelete.js.map +1 -1
  71. package/bin/chat/runtime/ChatStorage.d.ts +32 -0
  72. package/bin/chat/runtime/ChatStorage.d.ts.map +1 -0
  73. package/bin/chat/runtime/ChatStorage.js +158 -0
  74. package/bin/chat/runtime/ChatStorage.js.map +1 -0
  75. package/bin/chat/runtime/SystemPrompt.d.ts +3 -2
  76. package/bin/chat/runtime/SystemPrompt.d.ts.map +1 -1
  77. package/bin/chat/runtime/SystemPrompt.js +4 -5
  78. package/bin/chat/runtime/SystemPrompt.js.map +1 -1
  79. package/bin/chat/types/ChannelConfiguration.d.ts +2 -2
  80. package/bin/chat/types/ChatPluginActionPayload.d.ts +7 -45
  81. package/bin/chat/types/ChatPluginActionPayload.d.ts.map +1 -1
  82. package/bin/chat/types/ChatPluginOptions.d.ts +0 -21
  83. package/bin/chat/types/ChatPluginOptions.d.ts.map +1 -1
  84. package/bin/chat/types/ChatStorage.d.ts +36 -0
  85. package/bin/chat/types/ChatStorage.d.ts.map +1 -0
  86. package/bin/chat/types/ChatStorage.js +9 -0
  87. package/bin/chat/types/ChatStorage.js.map +1 -0
  88. package/bin/contact/Action.d.ts +3 -2
  89. package/bin/contact/Action.d.ts.map +1 -1
  90. package/bin/contact/Action.js +2 -2
  91. package/bin/contact/Action.js.map +1 -1
  92. package/bin/contact/ContactPlugin.d.ts.map +1 -1
  93. package/bin/contact/ContactPlugin.js +17 -14
  94. package/bin/contact/ContactPlugin.js.map +1 -1
  95. package/bin/contact/runtime/ChatRuntime.js +1 -1
  96. package/bin/contact/runtime/ChatRuntime.js.map +1 -1
  97. package/bin/contact/types/ContactPluginOptions.d.ts +4 -0
  98. package/bin/contact/types/ContactPluginOptions.d.ts.map +1 -1
  99. package/bin/index.d.ts +5 -5
  100. package/bin/index.d.ts.map +1 -1
  101. package/bin/index.js +2 -2
  102. package/bin/index.js.map +1 -1
  103. package/bin/memory/Action.d.ts.map +1 -1
  104. package/bin/memory/Action.js +16 -4
  105. package/bin/memory/Action.js.map +1 -1
  106. package/bin/memory/runtime/Store.d.ts.map +1 -1
  107. package/bin/memory/runtime/Store.js +0 -22
  108. package/bin/memory/runtime/Store.js.map +1 -1
  109. package/bin/memory/runtime/Writer.d.ts +1 -1
  110. package/bin/memory/runtime/Writer.d.ts.map +1 -1
  111. package/bin/memory/runtime/Writer.js +2 -4
  112. package/bin/memory/runtime/Writer.js.map +1 -1
  113. package/bin/skill/Command.d.ts +3 -11
  114. package/bin/skill/Command.d.ts.map +1 -1
  115. package/bin/skill/Command.js +3 -31
  116. package/bin/skill/Command.js.map +1 -1
  117. package/bin/skill/PROMPT.d.ts +1 -1
  118. package/bin/skill/PROMPT.d.ts.map +1 -1
  119. package/bin/skill/PROMPT.js +1 -1
  120. package/bin/skill/PROMPT.js.map +1 -1
  121. package/bin/skill/Plugin.d.ts +3 -2
  122. package/bin/skill/Plugin.d.ts.map +1 -1
  123. package/bin/skill/Plugin.js +37 -129
  124. package/bin/skill/Plugin.js.map +1 -1
  125. package/bin/skill/runtime/Prompt.d.ts +11 -2
  126. package/bin/skill/runtime/Prompt.d.ts.map +1 -1
  127. package/bin/skill/runtime/Prompt.js +93 -8
  128. package/bin/skill/runtime/Prompt.js.map +1 -1
  129. package/bin/skill/runtime/SystemProvider.d.ts +2 -1
  130. package/bin/skill/runtime/SystemProvider.d.ts.map +1 -1
  131. package/bin/skill/runtime/SystemProvider.js +4 -9
  132. package/bin/skill/runtime/SystemProvider.js.map +1 -1
  133. package/bin/skill/types/SkillPlugin.d.ts +6 -18
  134. package/bin/skill/types/SkillPlugin.d.ts.map +1 -1
  135. package/bin/skill/types/SkillPlugin.js +2 -2
  136. package/bin/sound/Plugin.d.ts +69 -0
  137. package/bin/sound/Plugin.d.ts.map +1 -0
  138. package/bin/sound/Plugin.js +623 -0
  139. package/bin/sound/Plugin.js.map +1 -0
  140. package/bin/sound/types/SoundPlugin.d.ts +150 -0
  141. package/bin/sound/types/SoundPlugin.d.ts.map +1 -0
  142. package/bin/sound/types/SoundPlugin.js +10 -0
  143. package/bin/sound/types/SoundPlugin.js.map +1 -0
  144. package/bin/task/Action.d.ts +2 -0
  145. package/bin/task/Action.d.ts.map +1 -1
  146. package/bin/task/Action.js +6 -0
  147. package/bin/task/Action.js.map +1 -1
  148. package/bin/task/runtime/Runner.d.ts +4 -0
  149. package/bin/task/runtime/Runner.d.ts.map +1 -1
  150. package/bin/task/runtime/Runner.js +15 -11
  151. package/bin/task/runtime/Runner.js.map +1 -1
  152. package/bin/task/runtime/TaskActionExecution.d.ts +2 -0
  153. package/bin/task/runtime/TaskActionExecution.d.ts.map +1 -1
  154. package/bin/task/runtime/TaskActionExecution.js +1 -0
  155. package/bin/task/runtime/TaskActionExecution.js.map +1 -1
  156. package/bin/task/runtime/TaskPluginActionRegistry.d.ts.map +1 -1
  157. package/bin/task/runtime/TaskPluginActionRegistry.js +1 -0
  158. package/bin/task/runtime/TaskPluginActionRegistry.js.map +1 -1
  159. package/bin/task/runtime/TaskRunChatDispatch.js +1 -1
  160. package/bin/task/runtime/TaskRunChatDispatch.js.map +1 -1
  161. package/bin/task/runtime/TaskRunnerRound.d.ts.map +1 -1
  162. package/bin/task/runtime/TaskRunnerRound.js +19 -26
  163. package/bin/task/runtime/TaskRunnerRound.js.map +1 -1
  164. package/bin/task/runtime/TaskRunnerSession.d.ts +6 -2
  165. package/bin/task/runtime/TaskRunnerSession.d.ts.map +1 -1
  166. package/bin/task/runtime/TaskRunnerSession.js +93 -72
  167. package/bin/task/runtime/TaskRunnerSession.js.map +1 -1
  168. package/bin/task/runtime/TaskRunnerTypes.d.ts +4 -4
  169. package/bin/task/runtime/TaskRunnerTypes.d.ts.map +1 -1
  170. package/bin/task/types/TaskPluginOptions.d.ts.map +1 -1
  171. package/bin/web/PROMPT.d.ts +1 -1
  172. package/bin/web/PROMPT.d.ts.map +1 -1
  173. package/bin/web/PROMPT.js +2 -2
  174. package/bin/web/PROMPT.js.map +1 -1
  175. package/bin/web/Plugin.d.ts +1 -21
  176. package/bin/web/Plugin.d.ts.map +1 -1
  177. package/bin/web/Plugin.js +14 -79
  178. package/bin/web/Plugin.js.map +1 -1
  179. package/bin/web/runtime/Prompt.d.ts +14 -0
  180. package/bin/web/runtime/Prompt.d.ts.map +1 -0
  181. package/bin/web/runtime/Prompt.js +77 -0
  182. package/bin/web/runtime/Prompt.js.map +1 -0
  183. package/bin/web/types/WebPlugin.d.ts +40 -29
  184. package/bin/web/types/WebPlugin.d.ts.map +1 -1
  185. package/bin/web/types/WebPlugin.js +11 -3
  186. package/bin/web/types/WebPlugin.js.map +1 -1
  187. package/bin/workboard/runtime/Collector.js +1 -1
  188. package/bin/workboard/runtime/Collector.js.map +1 -1
  189. package/bin/workboard/runtime/Normalizer.js +1 -1
  190. package/bin/workboard/runtime/Normalizer.js.map +1 -1
  191. package/bin/workboard/runtime/SessionSummary.d.ts.map +1 -1
  192. package/bin/workboard/runtime/SessionSummary.js +11 -38
  193. package/bin/workboard/runtime/SessionSummary.js.map +1 -1
  194. package/package.json +8 -4
  195. package/scripts/chat-access.test.mjs +1 -1
  196. package/scripts/chat-channel-config.test.mjs +15 -64
  197. package/scripts/chat-storage.test.mjs +92 -0
  198. package/scripts/skill-plugin.test.mjs +93 -0
  199. package/scripts/sound-plugin.test.mjs +250 -0
  200. package/scripts/web-plugin.test.mjs +85 -0
  201. package/src/BuiltinPlugins.ts +7 -17
  202. package/src/chat/Action.ts +16 -5
  203. package/src/chat/ChatPlugin.ts +6 -35
  204. package/src/chat/Index.ts +0 -1
  205. package/src/chat/channels/BaseChatChannel.ts +1 -1
  206. package/src/chat/channels/Configuration.ts +1 -1
  207. package/src/chat/channels/RuntimeChannel.ts +2 -14
  208. package/src/chat/channels/feishu/Feishu.ts +2 -1
  209. package/src/chat/runtime/ChannelContextStore.ts +16 -12
  210. package/src/chat/runtime/ChatActionExecution.ts +48 -3
  211. package/src/chat/runtime/ChatActionInput.ts +0 -31
  212. package/src/chat/runtime/ChatChannelActions.ts +3 -254
  213. package/src/chat/runtime/ChatChannelConfig.ts +4 -133
  214. package/src/chat/runtime/ChatChannelCore.ts +1 -15
  215. package/src/chat/runtime/ChatChannelFacade.ts +0 -4
  216. package/src/chat/runtime/ChatHistoryStore.ts +4 -3
  217. package/src/chat/runtime/ChatPluginActionRegistry.ts +26 -98
  218. package/src/chat/runtime/ChatPluginSystem.ts +9 -3
  219. package/src/chat/runtime/ChatQueueStore.ts +2 -2
  220. package/src/chat/runtime/ChatQueueWorker.ts +1 -1
  221. package/src/chat/runtime/ChatSessionDelete.ts +11 -21
  222. package/src/chat/runtime/ChatStorage.ts +203 -0
  223. package/src/chat/runtime/SystemPrompt.ts +8 -3
  224. package/src/chat/types/ChannelConfiguration.ts +2 -2
  225. package/src/chat/types/ChatPluginActionPayload.ts +8 -49
  226. package/src/chat/types/ChatPluginOptions.ts +0 -22
  227. package/src/chat/types/ChatStorage.ts +37 -0
  228. package/src/contact/Action.ts +9 -1
  229. package/src/contact/ContactPlugin.ts +38 -14
  230. package/src/contact/runtime/ChatRuntime.ts +1 -1
  231. package/src/contact/types/ContactPluginOptions.ts +6 -0
  232. package/src/index.ts +16 -14
  233. package/src/memory/Action.ts +19 -4
  234. package/src/memory/runtime/Store.ts +0 -27
  235. package/src/memory/runtime/Writer.ts +2 -5
  236. package/src/skill/Command.ts +3 -33
  237. package/src/skill/PROMPT.ts +1 -1
  238. package/src/skill/PROMPT.ts.txt +5 -1
  239. package/src/skill/Plugin.ts +49 -156
  240. package/src/skill/runtime/Prompt.ts +109 -9
  241. package/src/skill/runtime/SystemProvider.ts +5 -9
  242. package/src/skill/types/SkillPlugin.ts +6 -18
  243. package/src/sound/Plugin.ts +699 -0
  244. package/src/sound/types/SoundPlugin.ts +163 -0
  245. package/src/task/Action.ts +8 -0
  246. package/src/task/runtime/Runner.ts +19 -13
  247. package/src/task/runtime/TaskActionExecution.ts +3 -0
  248. package/src/task/runtime/TaskPluginActionRegistry.ts +1 -0
  249. package/src/task/runtime/TaskRunChatDispatch.ts +1 -1
  250. package/src/task/runtime/TaskRunnerRound.ts +20 -38
  251. package/src/task/runtime/TaskRunnerSession.ts +108 -72
  252. package/src/task/runtime/TaskRunnerTypes.ts +4 -4
  253. package/src/task/types/TaskPluginOptions.ts +1 -0
  254. package/src/web/PROMPT.ts +2 -2
  255. package/src/web/PROMPT.ts.txt +4 -2
  256. package/src/web/Plugin.ts +20 -90
  257. package/src/web/runtime/Prompt.ts +99 -0
  258. package/src/web/types/WebPlugin.ts +42 -29
  259. package/src/workboard/runtime/Collector.ts +1 -1
  260. package/src/workboard/runtime/Normalizer.ts +1 -1
  261. package/src/workboard/runtime/SessionSummary.ts +11 -42
  262. package/bin/asr/Plugin.d.ts +0 -63
  263. package/bin/asr/Plugin.d.ts.map +0 -1
  264. package/bin/asr/Plugin.js +0 -280
  265. package/bin/asr/Plugin.js.map +0 -1
  266. package/bin/asr/types/AsrPlugin.d.ts +0 -114
  267. package/bin/asr/types/AsrPlugin.d.ts.map +0 -1
  268. package/bin/asr/types/AsrPlugin.js +0 -10
  269. package/bin/asr/types/AsrPlugin.js.map +0 -1
  270. package/bin/chat/runtime/ChatSession.d.ts +0 -97
  271. package/bin/chat/runtime/ChatSession.d.ts.map +0 -1
  272. package/bin/chat/runtime/ChatSession.js +0 -91
  273. package/bin/chat/runtime/ChatSession.js.map +0 -1
  274. package/bin/chat/runtime/ChatSessionContextComposer.d.ts +0 -45
  275. package/bin/chat/runtime/ChatSessionContextComposer.d.ts.map +0 -1
  276. package/bin/chat/runtime/ChatSessionContextComposer.js +0 -60
  277. package/bin/chat/runtime/ChatSessionContextComposer.js.map +0 -1
  278. package/bin/chat/runtime/ChatSessionTypes.d.ts +0 -30
  279. package/bin/chat/runtime/ChatSessionTypes.d.ts.map +0 -1
  280. package/bin/chat/runtime/ChatSessionTypes.js +0 -9
  281. package/bin/chat/runtime/ChatSessionTypes.js.map +0 -1
  282. package/bin/tts/Plugin.d.ts +0 -49
  283. package/bin/tts/Plugin.d.ts.map +0 -1
  284. package/bin/tts/Plugin.js +0 -247
  285. package/bin/tts/Plugin.js.map +0 -1
  286. package/bin/tts/types/TtsPlugin.d.ts +0 -122
  287. package/bin/tts/types/TtsPlugin.d.ts.map +0 -1
  288. package/bin/tts/types/TtsPlugin.js +0 -10
  289. package/bin/tts/types/TtsPlugin.js.map +0 -1
  290. package/bin/web/runtime/Install.d.ts +0 -19
  291. package/bin/web/runtime/Install.d.ts.map +0 -1
  292. package/bin/web/runtime/Install.js +0 -178
  293. package/bin/web/runtime/Install.js.map +0 -1
  294. package/src/asr/Plugin.ts +0 -322
  295. package/src/asr/types/AsrPlugin.ts +0 -118
  296. package/src/chat/runtime/ChatSession.ts +0 -168
  297. package/src/chat/runtime/ChatSessionContextComposer.ts +0 -106
  298. package/src/chat/runtime/ChatSessionTypes.ts +0 -32
  299. package/src/tts/Plugin.ts +0 -284
  300. package/src/tts/types/TtsPlugin.ts +0 -129
  301. package/src/web/runtime/Install.ts +0 -241
@@ -1,14 +1,11 @@
1
1
  /**
2
- * `downcity skill` 命令 helper。
2
+ * Skill 安装命令 helper。
3
3
  *
4
4
  * 设计目标(中文)
5
- * - 尽量不自建 registry:直接复用社区的 `npx skills` 生态(find/install)。
6
- * - 同时提供本地视角的 `list`:按 SkillPlugin 默认构造参数列出当前项目 skills。
5
+ * - 不自建 registry,直接复用社区的 `npx skills` 安装生态。
6
+ * - 当前 helper 由需要准备 skill 依赖的其他 plugin 复用,不作为 SkillPlugin action 暴露。
7
7
  */
8
- import path from "node:path";
9
8
  import { execa } from "execa";
10
- import { discoverSkillsSync } from "../skill/runtime/Discovery.js";
11
- import { getSkillSearchRoots } from "../skill/runtime/Paths.js";
12
9
  async function runNpxSkills(args, opts) {
13
10
  const yes = opts?.yes !== false;
14
11
  const result = await execa("npx", [yes ? "-y" : "", "skills", ...args].filter(Boolean), {
@@ -16,15 +13,6 @@ async function runNpxSkills(args, opts) {
16
13
  });
17
14
  return result.exitCode ?? 0;
18
15
  }
19
- /**
20
- * 执行远程 skill 查找。
21
- */
22
- export async function skillFindCommand(query) {
23
- const q = String(query || "").trim();
24
- if (!q)
25
- throw new Error("Missing query");
26
- await runNpxSkills(["find", q], { yes: true });
27
- }
28
16
  /**
29
17
  * 安装指定 skill。
30
18
  */
@@ -44,20 +32,4 @@ export async function skillInstallCommand(spec, options = {}) {
44
32
  args.push("-g");
45
33
  await runNpxSkills(args, { yes });
46
34
  }
47
- /**
48
- * 输出当前项目的本地 skill 列表。
49
- */
50
- export async function skillListCommand(cwd = ".") {
51
- const projectRoot = path.resolve(String(cwd || "."));
52
- const roots = getSkillSearchRoots(projectRoot);
53
- const skills = discoverSkillsSync(projectRoot);
54
- console.log("Skill roots:");
55
- for (const root of roots)
56
- console.log(`- [${root.source}] ${root.display}`);
57
- console.log(`\nFound: ${skills.length}`);
58
- for (const skill of skills) {
59
- const desc = skill.description ? ` — ${skill.description}` : "";
60
- console.log(`- [${skill.source}] ${skill.id}: ${skill.name}${desc}`);
61
- }
62
- }
63
35
  //# sourceMappingURL=Command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/skill/Command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../src/skill/Command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,IAAwB;IAClE,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACtF,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAoBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,UAA+B,EAAE;IAEjC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAExC,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC;IAClC,IAAI,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/C,IAAI,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * 自动生成文件,请勿手改。
3
3
  * 源文件:由同路径 `*.ts.txt` 生成。
4
4
  */
5
- declare const TEXT_MODULE_CONTENT = "# Skill Plugin\n\nSkills are capabilities available to you. For every user request or task, first consider whether a relevant skill can help you complete it with higher quality.\n\n## Usage\n\nBefore using a skill, load its content through the `skill` plugin's `lookup` action.\n\nIf `plugin_call` is available, use:\n\n```ts\nplugin_call({\n plugin: \"skill\",\n action: \"lookup\",\n payload: {\n name: \"<skill-name>\",\n },\n});\n```\n\nAvailable actions include `list`, `find`, `install`, and `lookup`.\n";
5
+ declare const TEXT_MODULE_CONTENT = "# Skill Plugin\n\nSkills are capabilities available to you. For every user request or task, first consider whether a relevant skill can help you complete it with higher quality.\n\n## Usage\n\nBefore using a skill, load its content through the `skill` plugin's `lookup` action.\n\nIf `plugin_call` is available, use:\n\n```ts\nplugin_call({\n plugin: \"skill\",\n action: \"lookup\",\n payload: {\n name: \"<skill-name>\",\n },\n});\n```\n\nAvailable actions are `find`, `install`, `list`, and `lookup`.\n\n`find` and `install` are instruction-only actions. They return the Shell steps the agent should take, but never execute commands, access the network, install a skill, or change files themselves. The `install` instructions are generated from this SkillPlugin instance's configured scan roots.\n\nThe returned installation prompt tells the agent to call `list` after running the Shell command. This is workflow guidance, not code-level enforcement. If the installed skill appears in `list`, call `lookup` before using it.\n";
6
6
  export default TEXT_MODULE_CONTENT;
7
7
  //# sourceMappingURL=PROMPT.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PROMPT.d.ts","sourceRoot":"","sources":["../../src/skill/PROMPT.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,mBAAmB,ygBAAygB,CAAC;AAEniB,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"PROMPT.d.ts","sourceRoot":"","sources":["../../src/skill/PROMPT.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,mBAAmB,ghCAAghC,CAAC;AAE1iC,eAAe,mBAAmB,CAAC"}
@@ -3,6 +3,6 @@
3
3
  * 源文件:由同路径 `*.ts.txt` 生成。
4
4
  */
5
5
  // Source: src/skill/PROMPT.ts.txt
6
- const TEXT_MODULE_CONTENT = "# Skill Plugin\n\nSkills are capabilities available to you. For every user request or task, first consider whether a relevant skill can help you complete it with higher quality.\n\n## Usage\n\nBefore using a skill, load its content through the `skill` plugin's `lookup` action.\n\nIf `plugin_call` is available, use:\n\n```ts\nplugin_call({\n plugin: \"skill\",\n action: \"lookup\",\n payload: {\n name: \"<skill-name>\",\n },\n});\n```\n\nAvailable actions include `list`, `find`, `install`, and `lookup`.\n";
6
+ const TEXT_MODULE_CONTENT = "# Skill Plugin\n\nSkills are capabilities available to you. For every user request or task, first consider whether a relevant skill can help you complete it with higher quality.\n\n## Usage\n\nBefore using a skill, load its content through the `skill` plugin's `lookup` action.\n\nIf `plugin_call` is available, use:\n\n```ts\nplugin_call({\n plugin: \"skill\",\n action: \"lookup\",\n payload: {\n name: \"<skill-name>\",\n },\n});\n```\n\nAvailable actions are `find`, `install`, `list`, and `lookup`.\n\n`find` and `install` are instruction-only actions. They return the Shell steps the agent should take, but never execute commands, access the network, install a skill, or change files themselves. The `install` instructions are generated from this SkillPlugin instance's configured scan roots.\n\nThe returned installation prompt tells the agent to call `list` after running the Shell command. This is workflow guidance, not code-level enforcement. If the installed skill appears in `list`, call `lookup` before using it.\n";
7
7
  export default TEXT_MODULE_CONTENT;
8
8
  //# sourceMappingURL=PROMPT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PROMPT.js","sourceRoot":"","sources":["../../src/skill/PROMPT.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kCAAkC;AAClC,MAAM,mBAAmB,GAAG,sgBAAsgB,CAAC;AAEniB,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"PROMPT.js","sourceRoot":"","sources":["../../src/skill/PROMPT.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kCAAkC;AAClC,MAAM,mBAAmB,GAAG,6gCAA6gC,CAAC;AAE1iC,eAAe,mBAAmB,CAAC"}
@@ -3,13 +3,14 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - skill 不再作为 service 存在,而是作为显式 action + system 提供者接入 plugin 体系。
6
- * - `find/install/list/lookup` 全部通过 plugin actions 暴露。
6
+ * - `find/install` action 只返回 Shell 操作提示,不执行命令或修改文件。
7
+ * - `list/lookup` action 负责读取当前可发现的本地 skill。
7
8
  * - skills overview 文本通过 `plugin.system` 注入,不再依赖 plugin.system。
8
9
  */
9
10
  import { BasePlugin } from "@downcity/agent";
10
11
  import type { SkillPluginOptions } from "../skill/types/SkillPlugin.js";
11
12
  /**
12
- * SkillPlugin:技能发现、安装、读取与 system 注入。
13
+ * SkillPlugin:技能发现、读取与扫描感知的 system 注入。
13
14
  */
14
15
  export declare class SkillPlugin extends BasePlugin {
15
16
  readonly name = "skill";
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAkYtC;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,IAAI,WAAW;gBAEZ,OAAO,GAAE,kBAAuB;CAK7C"}
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAsRtC;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,IAAI,WAAW;gBAEZ,OAAO,GAAE,kBAAuB;CAK7C"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - skill 不再作为 service 存在,而是作为显式 action + system 提供者接入 plugin 体系。
6
- * - `find/install/list/lookup` 全部通过 plugin actions 暴露。
6
+ * - `find/install` action 只返回 Shell 操作提示,不执行命令或修改文件。
7
+ * - `list/lookup` action 负责读取当前可发现的本地 skill。
7
8
  * - skills overview 文本通过 `plugin.system` 注入,不再依赖 plugin.system。
8
9
  */
9
10
  import { BasePlugin } from "@downcity/agent";
@@ -11,9 +12,9 @@ import { createAction } from "@downcity/agent";
11
12
  import { z } from "zod";
12
13
  import { SKILL_PLUGIN_ACTIONS } from "../skill/types/SkillPlugin.js";
13
14
  import { resolveSkillPluginOptions } from "../skill/Config.js";
14
- import { skillFindCommand, skillInstallCommand } from "../skill/Command.js";
15
- import { findLearnedSkillExact, listSkills, lookupSkill, searchLearnedSkills, } from "../skill/Action.js";
15
+ import { listSkills, lookupSkill, } from "../skill/Action.js";
16
16
  import { buildSkillsSystemText } from "../skill/runtime/SystemProvider.js";
17
+ import { render_skill_find_prompt, render_skill_install_prompt, } from "../skill/runtime/Prompt.js";
17
18
  import { SKILL_PLUGIN_PROMPT } from "../skill/SkillPromptAssets.js";
18
19
  /**
19
20
  * 读取 JSON object。
@@ -24,20 +25,6 @@ function readJsonObject(value) {
24
25
  }
25
26
  return value;
26
27
  }
27
- /**
28
- * 读取字符串选项。
29
- */
30
- function getStringOpt(opts, key) {
31
- const value = opts[key];
32
- return typeof value === "string" ? value.trim() : undefined;
33
- }
34
- /**
35
- * 读取布尔选项。
36
- */
37
- function getBooleanOpt(opts, key) {
38
- const value = opts[key];
39
- return typeof value === "boolean" ? value : undefined;
40
- }
41
28
  /**
42
29
  * XML 属性转义。
43
30
  */
@@ -48,57 +35,44 @@ function sanitizeXmlAttr(value) {
48
35
  .replace(/</g, "&lt;")
49
36
  .replace(/>/g, "&gt;");
50
37
  }
51
- /**
52
- * 从 install spec 推断候选 skill 标识。
53
- */
54
- function inferSkillQueryFromSpec(spec) {
55
- const raw = String(spec || "").trim();
56
- if (!raw)
57
- return "";
58
- const normalized = raw.split(/[?#]/, 1)[0]?.trim() || raw;
59
- const atIndex = normalized.lastIndexOf("@");
60
- if (atIndex > 0 && atIndex < normalized.length - 1) {
61
- return normalized.slice(atIndex + 1).trim();
62
- }
63
- if (!normalized.includes("/"))
64
- return normalized;
65
- return "";
66
- }
67
38
  function createSkillPluginDefinition(options) {
68
39
  return {
69
40
  name: "skill",
70
41
  title: "Skill Catalog And Loader",
71
- description: "Finds, installs, lists, and reads local skills, and injects the current skill overview into system prompts so the agent knows what capabilities are available.",
72
- async system(context) {
42
+ description: "Lists and reads local skills, and injects scan-aware discovery and installation guidance into system prompts.",
43
+ async system(context, run_context) {
73
44
  const dynamicText = String(await buildSkillsSystemText({
74
45
  rootPath: context.rootPath,
75
46
  options,
76
- })).trim();
47
+ }, run_context)).trim();
77
48
  return [SKILL_PLUGIN_PROMPT, dynamicText].filter(Boolean).join("\n\n");
78
49
  },
79
50
  actions: {
80
51
  [SKILL_PLUGIN_ACTIONS.find]: createAction({
81
- description: "Find unlearned skills that are not in `list`; install only if missing.",
52
+ description: "Return shell instructions for finding a skill. This action does not execute the search.",
82
53
  input_schema: {
83
54
  zod: z.object({
84
- query: z.string(),
55
+ query: z.string().trim().min(1),
85
56
  }),
86
57
  json_schema: {
87
58
  type: "object",
88
59
  required: ["query"],
89
60
  properties: {
90
- query: { type: "string", description: "Skill search query." },
61
+ query: {
62
+ type: "string",
63
+ description: "Skill search query.",
64
+ },
91
65
  },
92
66
  },
93
67
  },
94
68
  examples: [
95
69
  {
96
- title: "Find skill",
97
- payload: { query: "web-search" },
70
+ title: "Get skill search instructions",
71
+ payload: { query: "web access" },
98
72
  },
99
73
  ],
100
74
  command: {
101
- description: "Find unlearned skills that are not in `list`; install only if missing.",
75
+ description: "Return shell instructions for finding a skill without executing the search.",
102
76
  configure(command) {
103
77
  command.argument("<query>");
104
78
  },
@@ -109,129 +83,63 @@ function createSkillPluginDefinition(options) {
109
83
  return { query };
110
84
  },
111
85
  },
112
- async execute(params) {
86
+ execute(params) {
113
87
  const payload = params.input;
114
- const rootPath = params.context.rootPath;
115
- const exactLearned = findLearnedSkillExact(rootPath, payload.query, options);
116
- if (exactLearned) {
117
- return {
118
- success: true,
119
- data: {
120
- query: payload.query,
121
- message: "This skill is already in list; installation is not needed. Run lookup before using it.",
122
- workflow: ["list", "lookup"],
123
- nextAction: "lookup",
124
- learnedSkill: exactLearned,
125
- learnedHints: [],
126
- },
127
- };
128
- }
129
- const learnedHints = searchLearnedSkills(rootPath, payload.query, 5, options);
130
- await skillFindCommand(payload.query);
131
88
  return {
132
89
  success: true,
90
+ message: "Skill search instructions ready; no search was executed.",
133
91
  data: {
92
+ kind: "instructions",
134
93
  query: payload.query,
135
- message: "Missing-skill search completed. If the target is not in list, install it and then run lookup.",
136
- workflow: ["find", "install", "lookup"],
137
- nextAction: "install",
138
- learnedSkill: null,
139
- learnedHints,
94
+ prompt: render_skill_find_prompt(payload.query),
140
95
  },
141
96
  };
142
97
  },
143
98
  }),
144
99
  [SKILL_PLUGIN_ACTIONS.install]: createAction({
145
- description: "Install a skill that is not in `list`; run lookup after installation.",
100
+ description: "Return scan-aware shell instructions for installing a skill. This action does not install anything.",
146
101
  input_schema: {
147
102
  zod: z.object({
148
- spec: z.string(),
149
- global: z.boolean().optional(),
150
- yes: z.boolean().optional(),
151
- agent: z.string().optional(),
103
+ spec: z.string().trim().min(1),
152
104
  }),
153
105
  json_schema: {
154
106
  type: "object",
155
107
  required: ["spec"],
156
108
  properties: {
157
- spec: { type: "string", description: "Skill installation spec." },
158
- global: { type: "boolean", description: "Whether to install globally." },
159
- yes: { type: "boolean", description: "Skip confirmation." },
160
- agent: { type: "string", description: "Target agent." },
109
+ spec: {
110
+ type: "string",
111
+ description: "Skill installation source or spec.",
112
+ },
161
113
  },
162
114
  },
163
115
  },
164
116
  examples: [
165
117
  {
166
- title: "Install skill",
167
- payload: { spec: "web-search", global: true, yes: true },
118
+ title: "Get skill installation instructions",
119
+ payload: { spec: "owner/repository@skill-name" },
168
120
  },
169
121
  ],
170
122
  command: {
171
- description: "Install a skill that is not in `list`; run lookup after installation.",
123
+ description: "Return scan-aware shell instructions without installing a skill.",
172
124
  configure(command) {
173
- command
174
- .argument("<spec>")
175
- .option("-g, --global", "全局安装(默认 true)", true)
176
- .option("-y, --yes", "跳过确认(默认 true)", true)
177
- .option("--agent <agent>", "指定 agent");
125
+ command.argument("<spec>");
178
126
  },
179
- mapInput({ args, opts }) {
127
+ mapInput({ args }) {
180
128
  const spec = String(args[0] || "").trim();
181
129
  if (!spec)
182
130
  throw new Error("Missing spec");
183
- return {
184
- spec,
185
- global: getBooleanOpt(opts, "global"),
186
- yes: getBooleanOpt(opts, "yes"),
187
- agent: getStringOpt(opts, "agent"),
188
- };
131
+ return { spec };
189
132
  },
190
133
  },
191
- async execute(params) {
134
+ execute(params) {
192
135
  const payload = params.input;
193
- const rootPath = params.context.rootPath;
194
- const queryFromSpec = inferSkillQueryFromSpec(payload.spec);
195
- const beforeList = listSkills(rootPath, options).skills;
196
- const beforeIds = new Set(beforeList.map((item) => item.id));
197
- const learnedBefore = findLearnedSkillExact(rootPath, queryFromSpec, options) ||
198
- findLearnedSkillExact(rootPath, payload.spec, options);
199
- if (learnedBefore) {
200
- return {
201
- success: true,
202
- data: {
203
- spec: payload.spec,
204
- skipped: true,
205
- message: "The skill is already in list; installation is not needed. Run lookup before using it.",
206
- workflow: ["list", "lookup"],
207
- nextAction: "lookup",
208
- queryFromSpec,
209
- addedSkills: [],
210
- learnedSkill: learnedBefore,
211
- },
212
- };
213
- }
214
- await skillInstallCommand(payload.spec, {
215
- global: payload.global,
216
- yes: payload.yes,
217
- agent: payload.agent,
218
- });
219
- const afterList = listSkills(rootPath, options).skills;
220
- const addedSkills = afterList.filter((item) => !beforeIds.has(item.id));
221
- const learnedAfter = findLearnedSkillExact(rootPath, queryFromSpec, options) ||
222
- findLearnedSkillExact(rootPath, payload.spec, options) ||
223
- (addedSkills.length === 1 ? addedSkills[0] : undefined);
224
136
  return {
225
137
  success: true,
138
+ message: "Skill installation instructions ready; no files were changed.",
226
139
  data: {
140
+ kind: "instructions",
227
141
  spec: payload.spec,
228
- message: "Skill learning completed. Before using the skill, run lookup to read its SKILL.md content.",
229
- workflow: ["find", "install", "lookup"],
230
- nextAction: "lookup",
231
- skipped: false,
232
- queryFromSpec,
233
- addedSkills,
234
- learnedSkill: learnedAfter || null,
142
+ prompt: render_skill_install_prompt(params.context.rootPath, options, payload.spec),
235
143
  },
236
144
  };
237
145
  },
@@ -360,7 +268,7 @@ function createSkillPluginDefinition(options) {
360
268
  };
361
269
  }
362
270
  /**
363
- * SkillPlugin:技能发现、安装、读取与 system 注入。
271
+ * SkillPlugin:技能发现、读取与扫描感知的 system 注入。
364
272
  */
365
273
  export class SkillPlugin extends BasePlugin {
366
274
  name = "skill";
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,WAAW,EACX,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;GAEG;AACH,SAAS,cAAc,CAAC,KAAgB;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,IAA+B,EAC/B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,IAA+B,EAC/B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;IAE1D,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,2BAA2B,CAAC,OAA2B;IAC9D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,gKAAgK;QAClK,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,MAAM,WAAW,GAAG,MAAM,CACxB,MAAM,qBAAqB,CAAC;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO;aACR,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,EAAE;YACP,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;gBACxC,WAAW,EAAE,wEAAwE;gBACrF,YAAY,EAAE;oBACZ,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;wBACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;qBAClB,CAAC;oBACF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,OAAO,CAAC;wBACnB,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;yBAC9D;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,YAAY;wBACnB,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;qBACjC;iBACF;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,wEAAwE;oBACrF,SAAS,CAAC,OAAO;wBACf,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;oBACD,QAAQ,CAAC,EAAE,IAAI,EAAE;wBACf,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC3C,IAAI,CAAC,KAAK;4BAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;wBAC7C,OAAO,EAAE,KAAK,EAAE,CAAC;oBACnB,CAAC;iBACF;gBACD,KAAK,CAAC,OAAO,CAAC,MAAM;oBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,KAA+B,CAAC;oBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzC,MAAM,YAAY,GAAG,qBAAqB,CACxC,QAAQ,EACR,OAAO,CAAC,KAAK,EACb,OAAO,CACR,CAAC;oBACF,IAAI,YAAY,EAAE,CAAC;wBACjB,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE;gCACJ,KAAK,EAAE,OAAO,CAAC,KAAK;gCACpB,OAAO,EAAE,wFAAwF;gCACjG,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCAC5B,UAAU,EAAE,QAAQ;gCACpB,YAAY,EAAE,YAAY;gCAC1B,YAAY,EAAE,EAAE;6BACH;yBAChB,CAAC;oBACJ,CAAC;oBAED,MAAM,YAAY,GAAG,mBAAmB,CACtC,QAAQ,EACR,OAAO,CAAC,KAAK,EACb,CAAC,EACD,OAAO,CACR,CAAC;oBACF,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACtC,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE;4BACJ,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,OAAO,EAAE,+FAA+F;4BACxG,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;4BACvC,UAAU,EAAE,SAAS;4BACrB,YAAY,EAAE,IAAI;4BAClB,YAAY;yBACC;qBAChB,CAAC;gBACJ,CAAC;aACF,CAAC;YACF,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;gBAC3C,WAAW,EAAE,uEAAuE;gBACpF,YAAY,EAAE;oBACZ,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;wBACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;wBAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;wBAC9B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;wBAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;qBAC7B,CAAC;oBACF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;wBAClB,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;4BACjE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE;4BACxE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;4BAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;yBACxD;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,eAAe;wBACtB,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;qBACzD;iBACF;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,uEAAuE;oBACpF,SAAS,CAAC,OAAO;wBACf,OAAO;6BACJ,QAAQ,CAAC,QAAQ,CAAC;6BAClB,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC;6BAC7C,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC;6BAC1C,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;oBAC3C,CAAC;oBACD,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;wBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC1C,IAAI,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;wBAC3C,OAAO;4BACL,IAAI;4BACJ,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC;4BACrC,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;4BAC/B,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;yBACnC,CAAC;oBACJ,CAAC;iBACF;gBACD,KAAK,CAAC,OAAO,CAAC,MAAM;oBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAkC,CAAC;oBAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzC,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC5D,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;oBACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAE7D,MAAM,aAAa,GACjB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;wBACvD,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACzD,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE;gCACJ,IAAI,EAAE,OAAO,CAAC,IAAI;gCAClB,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,uFAAuF;gCAChG,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCAC5B,UAAU,EAAE,QAAQ;gCACpB,aAAa;gCACb,WAAW,EAAE,EAAE;gCACf,YAAY,EAAE,aAAa;6BACd;yBAChB,CAAC;oBACJ,CAAC;oBAED,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE;wBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;qBACrB,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;oBACvD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxE,MAAM,YAAY,GAChB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;wBACvD,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;wBACtD,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAE1D,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,4FAA4F;4BACrG,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;4BACvC,UAAU,EAAE,QAAQ;4BACpB,OAAO,EAAE,KAAK;4BACd,aAAa;4BACb,WAAW;4BACX,YAAY,EAAE,YAAY,IAAI,IAAI;yBACrB;qBAChB,CAAC;gBACJ,CAAC;aACF,CAAC;YACF,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;gBACxC,WAAW,EAAE,qDAAqD;gBAClE,YAAY,EAAE;oBACZ,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;oBAC/B,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,aAAa;wBACpB,OAAO,EAAE,EAAE;qBACZ;iBACF;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,qDAAqD;oBAClE,QAAQ;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;iBACF;gBACD,GAAG,EAAE;oBACH,MAAM,EAAE,KAAK;iBACd;gBACD,OAAO,CAAC,MAAM;oBACZ,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAA0B;qBAC5E,CAAC;gBACJ,CAAC;aACF,CAAC;YACF,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;gBAC1C,WAAW,EAAE,wCAAwC;gBACrD,YAAY,EAAE;oBACZ,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;wBACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;qBACjB,CAAC;oBACF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;wBAClB,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;yBACrD;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,YAAY;wBACnB,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;qBAChC;iBACF;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,wCAAwC;oBACrD,SAAS,CAAC,OAAO;wBACf,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC7B,CAAC;oBACD,QAAQ,CAAC,EAAE,IAAI,EAAE;wBACf,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC1C,IAAI,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;wBAC3C,OAAO,EAAE,IAAI,EAAE,CAAC;oBAClB,CAAC;iBACF;gBACD,GAAG,EAAE;oBACH,MAAM,EAAE,MAAM;oBACd,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACd,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;wBAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC5C,IAAI,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;wBAC3C,OAAO,EAAE,IAAI,EAAE,CAAC;oBAClB,CAAC;iBACF;gBACD,KAAK,CAAC,OAAO,CAAC,MAAM;oBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAiC,CAAC;oBACzD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;wBAC/B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;wBACpC,OAAO,EAAE;4BACP,IAAI,EAAE,OAAO,CAAC,IAAI;yBACnB;wBACD,OAAO;qBACR,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,qBAAqB;yBAC7C,CAAC;oBACJ,CAAC;oBAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9E,MAAM,UAAU,GAAG,SAAS;wBAC1B,CAAC,CAAC,gBAAgB,eAAe,CAAC,SAAS,CAAC,IAAI;wBAChD,CAAC,CAAC,SAAS,CAAC;oBACd,MAAM,gBAAgB,GAAG;wBACvB,UAAU;wBACV,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;wBACnC,UAAU;qBACX;yBACE,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,IAAI,CAAC;yBACV,IAAI,EAAE,CAAC;oBAEV,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE;4BACJ,OAAO,EAAE,IAAI;4BACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAChD,OAAO,EAAE,0FAA0F;4BACnG,MAAM,EAAE;gCACN,kBAAkB,EAAE;oCAClB;wCACE,IAAI,EAAE,gBAAgB;wCACtB,IAAI,EAAE,cAAc;qCACrB;iCACF;gCACD,kBAAkB,EAAE,IAAI;gCACxB,iBAAiB,EACf,iEAAiE;6BACpE;yBACY;qBAChB,CAAC;gBACJ,CAAC;aACF,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,UAAU;IAChC,IAAI,GAAG,OAAO,CAAC;IAExB,YAAY,UAA8B,EAAE;QAC1C,KAAK,EAAE,CAAC;QACR,MAAM,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,27 @@
2
2
  * Skill plugin prompt section 渲染器。
3
3
  *
4
4
  * 关键点(中文)
5
- * - 仅负责渲染运行时动态清单(已发现 skills + 扫描根目录)。
5
+ * - 负责渲染运行时动态清单,以及 find/install action 返回的纯提示词。
6
6
  * - 稳定规则放在 `SkillPromptAssets.ts`,避免分散在代码里维护。
7
7
  * - 仅做字符串渲染,不做文件 IO。
8
8
  */
9
9
  import type { SkillDefinition } from "../../skill/types/SkillDefinition.js";
10
10
  import type { SkillPluginOptions } from "../../skill/types/SkillPlugin.js";
11
+ /**
12
+ * 生成 find action 返回的纯提示词。
13
+ */
14
+ export declare function render_skill_find_prompt(query: string): string;
15
+ /**
16
+ * 生成 install action 返回的扫描感知纯提示词。
17
+ */
18
+ export declare function render_skill_install_prompt(project_root: string, options: SkillPluginOptions | null | undefined, spec: string): string;
11
19
  /**
12
20
  * 渲染 skills 系统提示片段。
13
21
  *
14
22
  * 约束(中文)
15
23
  * - 为控制 token 成本,最多展示前 40 个 skill。
16
24
  * - roots 会按扫描顺序输出,便于排查冲突覆盖。
25
+ * - 查找与安装指引必须根据实际 roots 生成,不能假设固定安装范围。
17
26
  */
18
- export declare function renderSkillsPromptSection(projectRoot: string, options: SkillPluginOptions | null | undefined, skills: SkillDefinition[]): string;
27
+ export declare function render_skills_prompt_section(project_root: string, options: SkillPluginOptions | null | undefined, skills: SkillDefinition[]): string;
19
28
  //# sourceMappingURL=Prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,CAoCR"}
1
+ {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA+CvE;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,IAAI,EAAE,MAAM,GACX,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,CA+CR"}
@@ -2,21 +2,97 @@
2
2
  * Skill plugin prompt section 渲染器。
3
3
  *
4
4
  * 关键点(中文)
5
- * - 仅负责渲染运行时动态清单(已发现 skills + 扫描根目录)。
5
+ * - 负责渲染运行时动态清单,以及 find/install action 返回的纯提示词。
6
6
  * - 稳定规则放在 `SkillPromptAssets.ts`,避免分散在代码里维护。
7
7
  * - 仅做字符串渲染,不做文件 IO。
8
8
  */
9
9
  import { getSkillSearchRoots } from "./Paths.js";
10
+ /**
11
+ * 把外部输入编码为单个 POSIX Shell 参数。
12
+ *
13
+ * 关键点(中文):action 只返回提示词,但提示中的命令仍需避免把 query/spec 解释为额外 Shell 语法。
14
+ */
15
+ function quote_shell_argument(value) {
16
+ return `'${String(value).replaceAll("'", "'\\''")}'`;
17
+ }
18
+ /**
19
+ * 根据已配置扫描根生成安装位置提示。
20
+ */
21
+ function render_install_root_instructions(roots, spec_argument) {
22
+ if (roots.length === 0) {
23
+ return [
24
+ "- No scan roots are configured.",
25
+ " Do not install a skill until the SkillPlugin configuration provides a discoverable root.",
26
+ ].join("\n");
27
+ }
28
+ return roots
29
+ .map((root) => {
30
+ if (root.source === "project") {
31
+ return [
32
+ `- [project] Install from the project root with \`npx -y skills add ${spec_argument} -y\`.`,
33
+ ` The installed skill must end up under \`${root.resolved}/<skill-id>/SKILL.md\`.`,
34
+ ].join("\n");
35
+ }
36
+ if (root.source === "home") {
37
+ return [
38
+ `- [home] Install globally with \`npx -y skills add ${spec_argument} -g -y\`.`,
39
+ ` The installed skill must end up under \`${root.resolved}/<skill-id>/SKILL.md\`.`,
40
+ ].join("\n");
41
+ }
42
+ return [
43
+ `- [custom] Install or copy the skill into \`${root.resolved}/<skill-id>/SKILL.md\`.`,
44
+ " The skills CLI has no generic custom-root flag, so verify the final path instead of assuming installation succeeded.",
45
+ ].join("\n");
46
+ })
47
+ .join("\n");
48
+ }
49
+ /**
50
+ * 生成 find action 返回的纯提示词。
51
+ */
52
+ export function render_skill_find_prompt(query) {
53
+ const query_argument = quote_shell_argument(query);
54
+ return [
55
+ "# Find Skill Instructions",
56
+ "",
57
+ "This action only returns instructions. It has not searched for or installed anything.",
58
+ "Use the available web or browser capability to search these Skill catalogs:",
59
+ "- https://www.skills.sh/",
60
+ "- https://app.lobehub.com/community/skill",
61
+ `Use the available shell tool to run \`npx -y skills find ${query_argument}\`.`,
62
+ "Compare the catalog and CLI results, then choose an installation spec before calling the `skill.install` action.",
63
+ ].join("\n");
64
+ }
65
+ /**
66
+ * 生成 install action 返回的扫描感知纯提示词。
67
+ */
68
+ export function render_skill_install_prompt(project_root, options, spec) {
69
+ const roots = getSkillSearchRoots(project_root, options);
70
+ const spec_argument = quote_shell_argument(spec);
71
+ return [
72
+ "# Install Skill Instructions",
73
+ "",
74
+ "This action only returns instructions. It has not installed or changed any files.",
75
+ "Install only into one of the configured scan roots:",
76
+ render_install_root_instructions(roots, spec_argument),
77
+ "",
78
+ [
79
+ "After the shell installation command completes, call",
80
+ "`plugin_call({ plugin: \"skill\", action: \"list\", payload: {} })`",
81
+ "and check whether the new skill appears. Then call `skill.lookup` before using it.",
82
+ ].join(" "),
83
+ ].join("\n");
84
+ }
10
85
  /**
11
86
  * 渲染 skills 系统提示片段。
12
87
  *
13
88
  * 约束(中文)
14
89
  * - 为控制 token 成本,最多展示前 40 个 skill。
15
90
  * - roots 会按扫描顺序输出,便于排查冲突覆盖。
91
+ * - 查找与安装指引必须根据实际 roots 生成,不能假设固定安装范围。
16
92
  */
17
- export function renderSkillsPromptSection(projectRoot, options, skills) {
18
- const roots = getSkillSearchRoots(projectRoot, options);
19
- const skillsSection = skills.length > 0
93
+ export function render_skills_prompt_section(project_root, options, skills) {
94
+ const roots = getSkillSearchRoots(project_root, options);
95
+ const skills_section = skills.length > 0
20
96
  ? skills
21
97
  .map((skill) => {
22
98
  const desc = skill.description ? ` - ${skill.description}` : "";
@@ -24,13 +100,16 @@ export function renderSkillsPromptSection(projectRoot, options, skills) {
24
100
  })
25
101
  .join("\n")
26
102
  : "- (none)";
27
- const rootsSection = roots.length > 0
103
+ const roots_section = roots.length > 0
28
104
  ? roots
29
105
  .map((root) => {
30
- return `- [${root.source}] ${root.display}`;
106
+ return `- [${root.source}] ${root.display} -> ${root.resolved}`;
31
107
  })
32
108
  .join("\n")
33
109
  : "- (none)";
110
+ const ignore_notice = Array.isArray(options?.ignore) && options.ignore.length > 0
111
+ ? "Configured ignore rules are active. A matching skill will not appear in `list`, even if its files exist in a scan root."
112
+ : "";
34
113
  return [
35
114
  "# Runtime Skills Inventory",
36
115
  "",
@@ -38,10 +117,16 @@ export function renderSkillsPromptSection(projectRoot, options, skills) {
38
117
  "All skills in `Available Skills` are already available locally.",
39
118
  "",
40
119
  "## Available Skills",
41
- skillsSection,
120
+ skills_section,
42
121
  "",
43
122
  "## Skill Roots (scan order, higher wins on conflicts)",
44
- rootsSection,
123
+ roots_section,
124
+ "",
125
+ "## Missing Skill Workflow",
126
+ "Call `skill.find` with the search query to receive Shell search instructions.",
127
+ "After choosing a spec, call `skill.install` to receive scan-aware installation instructions.",
128
+ "Both actions return prompts only. They do not execute commands or change files.",
129
+ ignore_notice,
45
130
  ]
46
131
  .filter(Boolean)
47
132
  .join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAmB,EACnB,OAA8C,EAC9C,MAAyB;IAEzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAExD,MAAM,aAAa,GACjB,MAAM,CAAC,MAAM,GAAG,CAAC;QACf,CAAC,CAAC,MAAM;aACH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACtC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,UAAU,CAAC;IAEjB,MAAM,YAAY,GAChB,KAAK,CAAC,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,KAAK;aACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,OAAO,MAAM,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,UAAU,CAAC;IAEjB,OAAO;QACL,4BAA4B;QAC5B,EAAE;QACF,cAAc,MAAM,CAAC,MAAM,8BAA8B;QACzD,iEAAiE;QACjE,EAAE;QACF,qBAAqB;QACrB,aAAa;QACb,EAAE;QACF,uDAAuD;QACvD,YAAY;KACb;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"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"}