@downcity/plugins 1.0.52 → 1.0.56
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.
- package/bin/BuiltinPlugins.d.ts +2 -3
- package/bin/BuiltinPlugins.d.ts.map +1 -1
- package/bin/BuiltinPlugins.js +2 -2
- package/bin/BuiltinPlugins.js.map +1 -1
- package/bin/asr/Plugin.d.ts +1 -2
- package/bin/asr/Plugin.d.ts.map +1 -1
- package/bin/asr/Plugin.js +2 -2
- package/bin/asr/Plugin.js.map +1 -1
- package/bin/auth/Plugin.d.ts +1 -2
- package/bin/auth/Plugin.d.ts.map +1 -1
- package/bin/auth/Plugin.js +2 -2
- package/bin/auth/Plugin.js.map +1 -1
- package/bin/chat/ChatPlugin.d.ts +1 -2
- package/bin/chat/ChatPlugin.d.ts.map +1 -1
- package/bin/chat/ChatPlugin.js +3 -12
- package/bin/chat/ChatPlugin.js.map +1 -1
- package/bin/chat/PROMPT.direct.d.ts +1 -1
- package/bin/chat/PROMPT.direct.d.ts.map +1 -1
- package/bin/chat/PROMPT.direct.js +1 -1
- package/bin/chat/PROMPT.direct.js.map +1 -1
- package/bin/chat/channels/qq/PROMPT.direct.d.ts +1 -1
- package/bin/chat/channels/qq/PROMPT.direct.d.ts.map +1 -1
- package/bin/chat/channels/qq/PROMPT.direct.js +1 -1
- package/bin/chat/channels/qq/PROMPT.direct.js.map +1 -1
- package/bin/chat/channels/telegram/Bot.d.ts +6 -0
- package/bin/chat/channels/telegram/Bot.d.ts.map +1 -1
- package/bin/chat/channels/telegram/Bot.js +24 -0
- package/bin/chat/channels/telegram/Bot.js.map +1 -1
- package/bin/chat/channels/telegram/TelegramPlatformClient.d.ts +14 -0
- package/bin/chat/channels/telegram/TelegramPlatformClient.d.ts.map +1 -1
- package/bin/chat/channels/telegram/TelegramPlatformClient.js +39 -5
- package/bin/chat/channels/telegram/TelegramPlatformClient.js.map +1 -1
- package/bin/contact/ContactPlugin.d.ts +1 -2
- package/bin/contact/ContactPlugin.d.ts.map +1 -1
- package/bin/contact/ContactPlugin.js +2 -2
- package/bin/contact/ContactPlugin.js.map +1 -1
- package/bin/contact/PROMPT.d.ts +1 -1
- package/bin/contact/PROMPT.d.ts.map +1 -1
- package/bin/contact/PROMPT.js +1 -1
- package/bin/contact/PROMPT.js.map +1 -1
- package/bin/image/ImagePlugin.d.ts +61 -0
- package/bin/image/ImagePlugin.d.ts.map +1 -0
- package/bin/image/ImagePlugin.js +189 -0
- package/bin/image/ImagePlugin.js.map +1 -0
- package/bin/image/types/ImagePlugin.d.ts +136 -0
- package/bin/image/types/ImagePlugin.d.ts.map +1 -0
- package/bin/image/types/ImagePlugin.js +10 -0
- package/bin/image/types/ImagePlugin.js.map +1 -0
- package/bin/index.d.ts +2 -0
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +1 -0
- package/bin/index.js.map +1 -1
- package/bin/shell/ShellPlugin.d.ts +1 -2
- package/bin/shell/ShellPlugin.d.ts.map +1 -1
- package/bin/shell/ShellPlugin.js +2 -2
- package/bin/shell/ShellPlugin.js.map +1 -1
- package/bin/skill/Action.d.ts +8 -3
- package/bin/skill/Action.d.ts.map +1 -1
- package/bin/skill/Action.js +9 -11
- package/bin/skill/Action.js.map +1 -1
- package/bin/skill/Command.d.ts +1 -1
- package/bin/skill/Command.d.ts.map +1 -1
- package/bin/skill/Command.js +3 -10
- package/bin/skill/Command.js.map +1 -1
- package/bin/skill/Config.d.ts +9 -9
- package/bin/skill/Config.d.ts.map +1 -1
- package/bin/skill/Config.js +36 -24
- package/bin/skill/Config.js.map +1 -1
- package/bin/skill/PROMPT.d.ts +1 -1
- package/bin/skill/PROMPT.d.ts.map +1 -1
- package/bin/skill/PROMPT.js +1 -1
- package/bin/skill/PROMPT.js.map +1 -1
- package/bin/skill/Plugin.d.ts +2 -2
- package/bin/skill/Plugin.d.ts.map +1 -1
- package/bin/skill/Plugin.js +20 -37
- package/bin/skill/Plugin.js.map +1 -1
- package/bin/skill/runtime/Discovery.d.ts +3 -3
- package/bin/skill/runtime/Discovery.d.ts.map +1 -1
- package/bin/skill/runtime/Discovery.js +37 -14
- package/bin/skill/runtime/Discovery.js.map +1 -1
- package/bin/skill/runtime/Paths.d.ts +5 -5
- package/bin/skill/runtime/Paths.d.ts.map +1 -1
- package/bin/skill/runtime/Paths.js +23 -33
- package/bin/skill/runtime/Paths.js.map +1 -1
- package/bin/skill/runtime/Prompt.d.ts +2 -2
- package/bin/skill/runtime/Prompt.d.ts.map +1 -1
- package/bin/skill/runtime/Prompt.js +3 -8
- package/bin/skill/runtime/Prompt.js.map +1 -1
- package/bin/skill/runtime/SystemProvider.d.ts +2 -2
- package/bin/skill/runtime/SystemProvider.d.ts.map +1 -1
- package/bin/skill/runtime/SystemProvider.js +2 -2
- package/bin/skill/runtime/SystemProvider.js.map +1 -1
- package/bin/skill/types/SkillPlugin.d.ts +34 -12
- package/bin/skill/types/SkillPlugin.d.ts.map +1 -1
- package/bin/skill/types/SkillPlugin.js +2 -1
- package/bin/skill/types/SkillPlugin.js.map +1 -1
- package/bin/skill/types/SkillRoot.d.ts +1 -1
- package/bin/task/Action.js +2 -2
- package/bin/task/Action.js.map +1 -1
- package/bin/task/PROMPT.d.ts +1 -1
- package/bin/task/PROMPT.d.ts.map +1 -1
- package/bin/task/PROMPT.js +1 -1
- package/bin/task/PROMPT.js.map +1 -1
- package/bin/task/TaskPlugin.d.ts +1 -2
- package/bin/task/TaskPlugin.d.ts.map +1 -1
- package/bin/task/TaskPlugin.js +2 -2
- package/bin/task/TaskPlugin.js.map +1 -1
- package/bin/tts/Plugin.d.ts +1 -2
- package/bin/tts/Plugin.d.ts.map +1 -1
- package/bin/tts/Plugin.js +6 -6
- package/bin/tts/Plugin.js.map +1 -1
- package/bin/web/PROMPT.agent-browser.d.ts +1 -1
- package/bin/web/PROMPT.agent-browser.d.ts.map +1 -1
- package/bin/web/PROMPT.agent-browser.js +1 -1
- package/bin/web/PROMPT.agent-browser.js.map +1 -1
- package/bin/web/Plugin.d.ts +1 -2
- package/bin/web/Plugin.d.ts.map +1 -1
- package/bin/web/Plugin.js +10 -3
- package/bin/web/Plugin.js.map +1 -1
- package/bin/workboard/Plugin.d.ts +1 -2
- package/bin/workboard/Plugin.d.ts.map +1 -1
- package/bin/workboard/Plugin.js +2 -2
- package/bin/workboard/Plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/BuiltinPlugins.ts +3 -6
- package/src/asr/Plugin.ts +2 -3
- package/src/auth/Plugin.ts +2 -3
- package/src/chat/ChatPlugin.ts +3 -14
- package/src/chat/PROMPT.direct.ts +1 -1
- package/src/chat/PROMPT.direct.ts.txt +5 -7
- package/src/chat/channels/qq/PROMPT.direct.ts +1 -1
- package/src/chat/channels/qq/PROMPT.direct.ts.txt +1 -1
- package/src/chat/channels/telegram/Bot.ts +22 -0
- package/src/chat/channels/telegram/TelegramPlatformClient.ts +42 -6
- package/src/contact/ContactPlugin.ts +2 -3
- package/src/contact/PROMPT.ts +1 -1
- package/src/contact/PROMPT.ts.txt +12 -12
- package/src/image/ImagePlugin.ts +250 -0
- package/src/image/types/ImagePlugin.ts +157 -0
- package/src/index.ts +13 -0
- package/src/shell/ShellPlugin.ts +2 -3
- package/src/skill/Action.ts +20 -9
- package/src/skill/Command.ts +3 -13
- package/src/skill/Config.ts +41 -34
- package/src/skill/PROMPT.ts +1 -1
- package/src/skill/PROMPT.ts.txt +14 -2
- package/src/skill/Plugin.ts +205 -214
- package/src/skill/runtime/Discovery.ts +43 -17
- package/src/skill/runtime/Paths.ts +24 -35
- package/src/skill/runtime/Prompt.ts +4 -10
- package/src/skill/runtime/SystemProvider.ts +4 -4
- package/src/skill/types/SkillPlugin.ts +39 -12
- package/src/skill/types/SkillRoot.ts +1 -1
- package/src/task/Action.ts +2 -2
- package/src/task/PROMPT.ts +1 -1
- package/src/task/PROMPT.ts.txt +10 -10
- package/src/task/TaskPlugin.ts +2 -3
- package/src/tts/Plugin.ts +6 -7
- package/src/web/PROMPT.agent-browser.ts +1 -1
- package/src/web/PROMPT.agent-browser.ts.txt +1 -1
- package/src/web/Plugin.ts +3 -4
- package/src/workboard/Plugin.ts +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAGhF,OAAO,KAAK,EAIV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAqTtC;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,IAAI,WAAW;gBAEZ,OAAO,GAAE,kBAAuB;CAK7C"}
|
package/bin/skill/Plugin.js
CHANGED
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
* - skills overview 文本通过 `plugin.system` 注入,不再依赖 plugin.system。
|
|
8
8
|
*/
|
|
9
9
|
import { BasePlugin } from "@downcity/agent/internal/plugin/core/BasePlugin.js";
|
|
10
|
-
import { isPluginEnabled } from "@downcity/agent/internal/plugin/core/Activation.js";
|
|
11
10
|
import { SKILL_PLUGIN_ACTIONS } from "../skill/types/SkillPlugin.js";
|
|
12
|
-
import {
|
|
11
|
+
import { resolveSkillPluginOptions } from "../skill/Config.js";
|
|
13
12
|
import { skillFindCommand, skillInstallCommand } from "../skill/Command.js";
|
|
14
13
|
import { findLearnedSkillExact, listSkills, lookupSkill, searchLearnedSkills, } from "../skill/Action.js";
|
|
15
14
|
import { buildSkillsSystemText } from "../skill/runtime/SystemProvider.js";
|
|
@@ -63,34 +62,16 @@ function inferSkillQueryFromSpec(spec) {
|
|
|
63
62
|
return normalized;
|
|
64
63
|
return "";
|
|
65
64
|
}
|
|
66
|
-
function createSkillPluginDefinition(
|
|
65
|
+
function createSkillPluginDefinition(options) {
|
|
67
66
|
return {
|
|
68
67
|
name: "skill",
|
|
69
68
|
title: "Skill Catalog And Loader",
|
|
70
69
|
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.",
|
|
71
|
-
config: {
|
|
72
|
-
plugin: "skill",
|
|
73
|
-
scope: "project",
|
|
74
|
-
defaultValue: {
|
|
75
|
-
...DEFAULT_SKILL_PLUGIN_CONFIG,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
availability(context) {
|
|
79
|
-
if (!isPluginEnabled({ plugin, context })) {
|
|
80
|
-
return {
|
|
81
|
-
enabled: false,
|
|
82
|
-
available: false,
|
|
83
|
-
reasons: ["skill plugin disabled in project config"],
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
enabled: true,
|
|
88
|
-
available: true,
|
|
89
|
-
reasons: [],
|
|
90
|
-
};
|
|
91
|
-
},
|
|
92
70
|
async system(context) {
|
|
93
|
-
const dynamicText = String(await buildSkillsSystemText(
|
|
71
|
+
const dynamicText = String(await buildSkillsSystemText({
|
|
72
|
+
rootPath: context.rootPath,
|
|
73
|
+
options,
|
|
74
|
+
})).trim();
|
|
94
75
|
return [SKILL_PLUGIN_PROMPT, dynamicText].filter(Boolean).join("\n\n");
|
|
95
76
|
},
|
|
96
77
|
actions: {
|
|
@@ -110,7 +91,7 @@ function createSkillPluginDefinition(plugin) {
|
|
|
110
91
|
async execute(params) {
|
|
111
92
|
const payload = params.payload;
|
|
112
93
|
const rootPath = params.context.rootPath;
|
|
113
|
-
const exactLearned = findLearnedSkillExact(rootPath, payload.query);
|
|
94
|
+
const exactLearned = findLearnedSkillExact(rootPath, payload.query, options);
|
|
114
95
|
if (exactLearned) {
|
|
115
96
|
return {
|
|
116
97
|
success: true,
|
|
@@ -124,7 +105,7 @@ function createSkillPluginDefinition(plugin) {
|
|
|
124
105
|
},
|
|
125
106
|
};
|
|
126
107
|
}
|
|
127
|
-
const learnedHints = searchLearnedSkills(rootPath, payload.query, 5);
|
|
108
|
+
const learnedHints = searchLearnedSkills(rootPath, payload.query, 5, options);
|
|
128
109
|
await skillFindCommand(payload.query);
|
|
129
110
|
return {
|
|
130
111
|
success: true,
|
|
@@ -165,10 +146,10 @@ function createSkillPluginDefinition(plugin) {
|
|
|
165
146
|
const payload = params.payload;
|
|
166
147
|
const rootPath = params.context.rootPath;
|
|
167
148
|
const queryFromSpec = inferSkillQueryFromSpec(payload.spec);
|
|
168
|
-
const beforeList = listSkills(rootPath).skills;
|
|
149
|
+
const beforeList = listSkills(rootPath, options).skills;
|
|
169
150
|
const beforeIds = new Set(beforeList.map((item) => item.id));
|
|
170
|
-
const learnedBefore = findLearnedSkillExact(rootPath, queryFromSpec) ||
|
|
171
|
-
findLearnedSkillExact(rootPath, payload.spec);
|
|
151
|
+
const learnedBefore = findLearnedSkillExact(rootPath, queryFromSpec, options) ||
|
|
152
|
+
findLearnedSkillExact(rootPath, payload.spec, options);
|
|
172
153
|
if (learnedBefore) {
|
|
173
154
|
return {
|
|
174
155
|
success: true,
|
|
@@ -189,10 +170,10 @@ function createSkillPluginDefinition(plugin) {
|
|
|
189
170
|
yes: payload.yes,
|
|
190
171
|
agent: payload.agent,
|
|
191
172
|
});
|
|
192
|
-
const afterList = listSkills(rootPath).skills;
|
|
173
|
+
const afterList = listSkills(rootPath, options).skills;
|
|
193
174
|
const addedSkills = afterList.filter((item) => !beforeIds.has(item.id));
|
|
194
|
-
const learnedAfter = findLearnedSkillExact(rootPath, queryFromSpec) ||
|
|
195
|
-
findLearnedSkillExact(rootPath, payload.spec) ||
|
|
175
|
+
const learnedAfter = findLearnedSkillExact(rootPath, queryFromSpec, options) ||
|
|
176
|
+
findLearnedSkillExact(rootPath, payload.spec, options) ||
|
|
196
177
|
(addedSkills.length === 1 ? addedSkills[0] : undefined);
|
|
197
178
|
return {
|
|
198
179
|
success: true,
|
|
@@ -222,7 +203,7 @@ function createSkillPluginDefinition(plugin) {
|
|
|
222
203
|
execute(params) {
|
|
223
204
|
return {
|
|
224
205
|
success: true,
|
|
225
|
-
data: listSkills(params.context.rootPath),
|
|
206
|
+
data: listSkills(params.context.rootPath, options),
|
|
226
207
|
};
|
|
227
208
|
},
|
|
228
209
|
},
|
|
@@ -256,6 +237,7 @@ function createSkillPluginDefinition(plugin) {
|
|
|
256
237
|
request: {
|
|
257
238
|
name: payload.name,
|
|
258
239
|
},
|
|
240
|
+
options,
|
|
259
241
|
});
|
|
260
242
|
if (!result.success) {
|
|
261
243
|
return {
|
|
@@ -303,9 +285,10 @@ function createSkillPluginDefinition(plugin) {
|
|
|
303
285
|
*/
|
|
304
286
|
export class SkillPlugin extends BasePlugin {
|
|
305
287
|
name = "skill";
|
|
306
|
-
constructor(
|
|
307
|
-
super(
|
|
308
|
-
|
|
288
|
+
constructor(options = {}) {
|
|
289
|
+
super();
|
|
290
|
+
const resolvedOptions = resolveSkillPluginOptions(options);
|
|
291
|
+
Object.assign(this, createSkillPluginDefinition(resolvedOptions));
|
|
309
292
|
}
|
|
310
293
|
}
|
|
311
294
|
//# sourceMappingURL=Plugin.js.map
|
package/bin/skill/Plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/skill/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAShF,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;gBAC3B,OAAO,EAAE;oBACP,WAAW,EAAE,yCAAyC;oBACtD,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,OAAiC,CAAC;oBACzD,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,yCAAyC;gCAClD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCAC5B,UAAU,EAAE,QAAQ;gCACpB,YAAY,EAAE,YAAY;gCAC1B,YAAY,EAAE,EAAE;6BACjB;yBACF,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,6CAA6C;4BACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;4BACvC,UAAU,EAAE,SAAS;4BACrB,YAAY,EAAE,IAAI;4BAClB,YAAY;yBACb;qBACF,CAAC;gBACJ,CAAC;aACF;YACD,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBAC9B,OAAO,EAAE;oBACP,WAAW,EAAE,qCAAqC;oBAClD,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,EAAE,aAAa,CAAC,CAAC;oBAC1D,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,OAAoC,CAAC;oBAC5D,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,wCAAwC;gCACjD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCAC5B,UAAU,EAAE,QAAQ;gCACpB,aAAa;gCACb,WAAW,EAAE,EAAE;gCACf,YAAY,EAAE,aAAa;6BAC5B;yBACF,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,6CAA6C;4BACtD,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;yBACnC;qBACF,CAAC;gBACJ,CAAC;aACF;YACD,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;gBAC3B,OAAO,EAAE;oBACP,WAAW,EAAE,wBAAwB;oBACrC,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,CAAC;qBACnD,CAAC;gBACJ,CAAC;aACF;YACD,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE;gBAC7B,OAAO,EAAE;oBACP,WAAW,EAAE,0BAA0B;oBACvC,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,OAAmC,CAAC;oBAC3D,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,qDAAqD;4BAC9D,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;yBACF;qBACF,CAAC;gBACJ,CAAC;aACF;SACF;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"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* Skills discovery:扫描可用 skills 并生成索引。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - 扫描范围由 `paths.ts`
|
|
5
|
+
* - 扫描范围由 `paths.ts` 决定(项目、用户目录、构造参数路径)。
|
|
6
6
|
* - 同名 skill 按根目录优先级“先到先得”。
|
|
7
7
|
*/
|
|
8
|
-
import type { DowncityConfig } from "@downcity/agent/internal/config/Config.js";
|
|
9
8
|
import type { ClaudeSkill } from "../../skill/types/ClaudeSkill.js";
|
|
9
|
+
import type { SkillPluginOptions } from "../../skill/types/SkillPlugin.js";
|
|
10
10
|
/**
|
|
11
11
|
* 扫描并发现 Claude Code-compatible skills。
|
|
12
12
|
*
|
|
@@ -21,5 +21,5 @@ import type { ClaudeSkill } from "../../skill/types/ClaudeSkill.js";
|
|
|
21
21
|
* 3) 按 id 去重并构造 ClaudeSkill
|
|
22
22
|
* 4) 最终按 name 排序,保证输出稳定
|
|
23
23
|
*/
|
|
24
|
-
export declare function discoverClaudeSkillsSync(projectRoot: string,
|
|
24
|
+
export declare function discoverClaudeSkillsSync(projectRoot: string, options?: SkillPluginOptions | null): ClaudeSkill[];
|
|
25
25
|
//# sourceMappingURL=Discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"Discovery.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAiCtC;;;;;;GAMG;AACH;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAClC,WAAW,EAAE,CAiGf"}
|
|
@@ -2,16 +2,42 @@
|
|
|
2
2
|
* Skills discovery:扫描可用 skills 并生成索引。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - 扫描范围由 `paths.ts`
|
|
5
|
+
* - 扫描范围由 `paths.ts` 决定(项目、用户目录、构造参数路径)。
|
|
6
6
|
* - 同名 skill 按根目录优先级“先到先得”。
|
|
7
7
|
*/
|
|
8
8
|
import fs from "fs-extra";
|
|
9
9
|
import yaml from "js-yaml";
|
|
10
10
|
import path from "path";
|
|
11
|
-
import {
|
|
11
|
+
import { resolveSkillPluginOptions } from "../Config.js";
|
|
12
12
|
import { parseFrontMatter } from "./Frontmatter.js";
|
|
13
13
|
import { getClaudeSkillSearchRoots } from "./Paths.js";
|
|
14
|
-
|
|
14
|
+
function matchesIgnoreRule(skill, rule) {
|
|
15
|
+
if (typeof rule === "string") {
|
|
16
|
+
const value = rule.trim().toLowerCase();
|
|
17
|
+
if (!value)
|
|
18
|
+
return false;
|
|
19
|
+
return skill.id.toLowerCase() === value || skill.name.toLowerCase() === value;
|
|
20
|
+
}
|
|
21
|
+
if (rule instanceof RegExp) {
|
|
22
|
+
rule.lastIndex = 0;
|
|
23
|
+
const matchesId = rule.test(skill.id);
|
|
24
|
+
rule.lastIndex = 0;
|
|
25
|
+
const matchesName = rule.test(skill.name);
|
|
26
|
+
rule.lastIndex = 0;
|
|
27
|
+
return matchesId || matchesName;
|
|
28
|
+
}
|
|
29
|
+
if (typeof rule === "function") {
|
|
30
|
+
return rule(skill);
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function shouldIgnoreSkill(skill, rules) {
|
|
35
|
+
for (const rule of rules) {
|
|
36
|
+
if (matchesIgnoreRule(skill, rule))
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
15
41
|
/**
|
|
16
42
|
* 扫描并发现 Claude Code-compatible skills。
|
|
17
43
|
*
|
|
@@ -26,21 +52,15 @@ import { isSubpath } from "./Utils.js";
|
|
|
26
52
|
* 3) 按 id 去重并构造 ClaudeSkill
|
|
27
53
|
* 4) 最终按 name 排序,保证输出稳定
|
|
28
54
|
*/
|
|
29
|
-
export function discoverClaudeSkillsSync(projectRoot,
|
|
55
|
+
export function discoverClaudeSkillsSync(projectRoot, options) {
|
|
30
56
|
const root = String(projectRoot || "").trim();
|
|
31
57
|
if (!root)
|
|
32
58
|
return [];
|
|
33
|
-
const
|
|
34
|
-
const roots = getClaudeSkillSearchRoots(root,
|
|
59
|
+
const resolvedOptions = resolveSkillPluginOptions(options);
|
|
60
|
+
const roots = getClaudeSkillSearchRoots(root, resolvedOptions);
|
|
35
61
|
const outById = new Map();
|
|
36
62
|
for (const r of roots) {
|
|
37
63
|
const sourceRoot = r.resolved;
|
|
38
|
-
// allowExternalPaths 只影响 config 外部路径;home 默认可扫描
|
|
39
|
-
if (r.source === "config" &&
|
|
40
|
-
!allowExternal &&
|
|
41
|
-
!isSubpath(root, sourceRoot)) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
64
|
if (!fs.existsSync(sourceRoot))
|
|
45
65
|
continue;
|
|
46
66
|
let stat;
|
|
@@ -111,7 +131,7 @@ export function discoverClaudeSkillsSync(projectRoot, config) {
|
|
|
111
131
|
: id;
|
|
112
132
|
const description = typeof meta?.description === "string" ? meta.description.trim() : "";
|
|
113
133
|
const allowedTools = meta?.["allowed-tools"] ?? meta?.allowedTools ?? meta?.allowed_tools;
|
|
114
|
-
|
|
134
|
+
const skill = {
|
|
115
135
|
id,
|
|
116
136
|
name,
|
|
117
137
|
description,
|
|
@@ -120,7 +140,10 @@ export function discoverClaudeSkillsSync(projectRoot, config) {
|
|
|
120
140
|
directoryPath,
|
|
121
141
|
skillMdPath,
|
|
122
142
|
allowedTools,
|
|
123
|
-
}
|
|
143
|
+
};
|
|
144
|
+
if (shouldIgnoreSkill(skill, resolvedOptions.ignore))
|
|
145
|
+
continue;
|
|
146
|
+
outById.set(id, skill);
|
|
124
147
|
}
|
|
125
148
|
}
|
|
126
149
|
const out = Array.from(outById.values());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Discovery.js","sourceRoot":"","sources":["../../../src/skill/runtime/Discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Discovery.js","sourceRoot":"","sources":["../../../src/skill/runtime/Discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Skills roots resolution.
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - roots 分三类:项目内(project)、用户目录(home
|
|
6
|
-
* -
|
|
5
|
+
* - roots 分三类:项目内(project)、用户目录(home),以及构造参数路径(custom)
|
|
6
|
+
* - SkillPlugin constructor 是唯一配置入口,不再读取 downcity.json 的 skill 私有配置
|
|
7
7
|
* - 兼容 `<any>/skills` 这种布局:如果 root basename 不是 `skills` 且其子目录 `skills/` 存在,则优先扫描 `<root>/skills`
|
|
8
8
|
*/
|
|
9
|
-
import type { DowncityConfig } from "@downcity/agent/internal/config/Config.js";
|
|
10
9
|
import type { SkillRoot } from "../../skill/types/SkillRoot.js";
|
|
11
|
-
|
|
12
|
-
export declare function
|
|
10
|
+
import type { SkillPluginOptions } from "../../skill/types/SkillPlugin.js";
|
|
11
|
+
export declare function getClaudeSkillSearchRoots(projectRoot: string, options?: SkillPluginOptions | null): SkillRoot[];
|
|
12
|
+
export declare function getClaudeSkillSearchPaths(projectRoot: string, options?: SkillPluginOptions | null): {
|
|
13
13
|
raw: string[];
|
|
14
14
|
resolved: string[];
|
|
15
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Paths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Paths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAyBvE,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAClC,SAAS,EAAE,CAiEb;AAGD,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAClC;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAMvC"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Skills roots resolution.
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - roots 分三类:项目内(project)、用户目录(home
|
|
6
|
-
* -
|
|
5
|
+
* - roots 分三类:项目内(project)、用户目录(home),以及构造参数路径(custom)
|
|
6
|
+
* - SkillPlugin constructor 是唯一配置入口,不再读取 downcity.json 的 skill 私有配置
|
|
7
7
|
* - 兼容 `<any>/skills` 这种布局:如果 root basename 不是 `skills` 且其子目录 `skills/` 存在,则优先扫描 `<root>/skills`
|
|
8
8
|
*/
|
|
9
9
|
import fs from "fs-extra";
|
|
10
10
|
import path from "node:path";
|
|
11
|
-
import {
|
|
11
|
+
import { resolveSkillPluginOptions } from "../Config.js";
|
|
12
12
|
import { expandHome, uniqStrings } from "./Utils.js";
|
|
13
13
|
function normalizeSkillRootCandidate(candidate) {
|
|
14
14
|
const normalized = path.normalize(candidate);
|
|
@@ -31,11 +31,15 @@ function resolveSkillRootPath(projectRoot, raw) {
|
|
|
31
31
|
? path.normalize(expanded)
|
|
32
32
|
: path.resolve(projectRoot, expanded);
|
|
33
33
|
}
|
|
34
|
-
export function getClaudeSkillSearchRoots(projectRoot,
|
|
35
|
-
const
|
|
36
|
-
const configured =
|
|
37
|
-
const defaultsProject =
|
|
38
|
-
|
|
34
|
+
export function getClaudeSkillSearchRoots(projectRoot, options) {
|
|
35
|
+
const skillPluginOptions = resolveSkillPluginOptions(options);
|
|
36
|
+
const configured = skillPluginOptions.paths.map((x) => String(x));
|
|
37
|
+
const defaultsProject = skillPluginOptions.use.includes("project")
|
|
38
|
+
? [".agents/skills"]
|
|
39
|
+
: [];
|
|
40
|
+
const defaultsHome = skillPluginOptions.use.includes("home")
|
|
41
|
+
? ["~/.agents/skills"]
|
|
42
|
+
: [];
|
|
39
43
|
const rawConfigured = uniqStrings(configured);
|
|
40
44
|
const rawProject = uniqStrings(defaultsProject);
|
|
41
45
|
const rawHome = uniqStrings(defaultsHome);
|
|
@@ -52,31 +56,17 @@ export function getClaudeSkillSearchRoots(projectRoot, config) {
|
|
|
52
56
|
trustedWhenExternalDisabled: true,
|
|
53
57
|
});
|
|
54
58
|
}
|
|
55
|
-
// 2)
|
|
59
|
+
// 2) constructor paths:用户显式传入的路径,统一视为 custom 来源
|
|
56
60
|
for (const raw of rawConfigured) {
|
|
57
61
|
const resolved = normalizeSkillRootCandidate(resolveSkillRootPath(projectRoot, raw));
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
priority: 12,
|
|
67
|
-
trustedWhenExternalDisabled: true,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
roots.push({
|
|
72
|
-
source: "config",
|
|
73
|
-
raw,
|
|
74
|
-
resolved,
|
|
75
|
-
display: raw,
|
|
76
|
-
priority: 40,
|
|
77
|
-
trustedWhenExternalDisabled: false,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
62
|
+
roots.push({
|
|
63
|
+
source: "custom",
|
|
64
|
+
raw,
|
|
65
|
+
resolved,
|
|
66
|
+
display: raw,
|
|
67
|
+
priority: 12,
|
|
68
|
+
trustedWhenExternalDisabled: true,
|
|
69
|
+
});
|
|
80
70
|
}
|
|
81
71
|
// 3) home root(用户目录)
|
|
82
72
|
for (const raw of rawHome) {
|
|
@@ -101,8 +91,8 @@ export function getClaudeSkillSearchRoots(projectRoot, config) {
|
|
|
101
91
|
return Array.from(byResolved.values()).sort((a, b) => a.priority - b.priority);
|
|
102
92
|
}
|
|
103
93
|
// Back-compat(内部仅用于 prompt 展示):保留旧 API 形状,避免外部 import 立刻断裂。
|
|
104
|
-
export function getClaudeSkillSearchPaths(projectRoot,
|
|
105
|
-
const roots = getClaudeSkillSearchRoots(projectRoot,
|
|
94
|
+
export function getClaudeSkillSearchPaths(projectRoot, options) {
|
|
95
|
+
const roots = getClaudeSkillSearchRoots(projectRoot, options);
|
|
106
96
|
return {
|
|
107
97
|
raw: roots.map((r) => r.display),
|
|
108
98
|
resolved: roots.map((r) => r.resolved),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../../../src/skill/runtime/Paths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../../../src/skill/runtime/Paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* - 稳定规则放在 `SkillPromptAssets.ts`,避免分散在代码里维护。
|
|
7
7
|
* - 仅做字符串渲染,不做文件 IO。
|
|
8
8
|
*/
|
|
9
|
-
import type { DowncityConfig } from "@downcity/agent/internal/config/Config.js";
|
|
10
9
|
import type { ClaudeSkill } from "../../skill/types/ClaudeSkill.js";
|
|
10
|
+
import type { SkillPluginOptions } from "../../skill/types/SkillPlugin.js";
|
|
11
11
|
/**
|
|
12
12
|
* 渲染 skills 系统提示片段。
|
|
13
13
|
*
|
|
@@ -15,5 +15,5 @@ import type { ClaudeSkill } from "../../skill/types/ClaudeSkill.js";
|
|
|
15
15
|
* - 为控制 token 成本,最多展示前 40 个 skill。
|
|
16
16
|
* - roots 会按扫描顺序输出,便于排查冲突覆盖。
|
|
17
17
|
*/
|
|
18
|
-
export declare function renderClaudeSkillsPromptSection(projectRoot: string,
|
|
18
|
+
export declare function renderClaudeSkillsPromptSection(projectRoot: string, options: SkillPluginOptions | null | undefined, skills: ClaudeSkill[]): string;
|
|
19
19
|
//# 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;
|
|
1
|
+
{"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,MAAM,EAAE,WAAW,EAAE,GACpB,MAAM,CAoCR"}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* - 稳定规则放在 `SkillPromptAssets.ts`,避免分散在代码里维护。
|
|
7
7
|
* - 仅做字符串渲染,不做文件 IO。
|
|
8
8
|
*/
|
|
9
|
-
import { readSkillPluginConfig } from "../Config.js";
|
|
10
9
|
import { getClaudeSkillSearchRoots } from "./Paths.js";
|
|
11
10
|
/**
|
|
12
11
|
* 渲染 skills 系统提示片段。
|
|
@@ -15,9 +14,8 @@ import { getClaudeSkillSearchRoots } from "./Paths.js";
|
|
|
15
14
|
* - 为控制 token 成本,最多展示前 40 个 skill。
|
|
16
15
|
* - roots 会按扫描顺序输出,便于排查冲突覆盖。
|
|
17
16
|
*/
|
|
18
|
-
export function renderClaudeSkillsPromptSection(projectRoot,
|
|
19
|
-
const roots = getClaudeSkillSearchRoots(projectRoot,
|
|
20
|
-
const allowExternal = readSkillPluginConfig(config).allowExternalPaths;
|
|
17
|
+
export function renderClaudeSkillsPromptSection(projectRoot, options, skills) {
|
|
18
|
+
const roots = getClaudeSkillSearchRoots(projectRoot, options);
|
|
21
19
|
const skillsSection = skills.length > 0
|
|
22
20
|
? skills
|
|
23
21
|
.map((skill) => {
|
|
@@ -29,10 +27,7 @@ export function renderClaudeSkillsPromptSection(projectRoot, config, skills) {
|
|
|
29
27
|
const rootsSection = roots.length > 0
|
|
30
28
|
? roots
|
|
31
29
|
.map((root) => {
|
|
32
|
-
|
|
33
|
-
? " (disabled: allowExternalPaths=false)"
|
|
34
|
-
: "";
|
|
35
|
-
return `- [${root.source}] ${root.display}${externalNote}`;
|
|
30
|
+
return `- [${root.source}] ${root.display}`;
|
|
36
31
|
})
|
|
37
32
|
.join("\n")
|
|
38
33
|
: "- (none)";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/skill/runtime/Prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAIvD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,EACnB,OAA8C,EAC9C,MAAqB;IAErB,MAAM,KAAK,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE9D,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"}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* - 不再读取/写入 pinnedSkillIds,不做会话级技能注入
|
|
7
7
|
* - `lookup` 行为为无状态:由 action 读取 SKILL.md 后通过协议注入 user message
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
9
|
+
import type { SkillPluginOptions } from "../../skill/types/SkillPlugin.js";
|
|
10
10
|
type SkillSystemRuntime = {
|
|
11
11
|
rootPath: string;
|
|
12
|
-
|
|
12
|
+
options?: SkillPluginOptions | null;
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* 构建 skill plugin system 文本。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemProvider.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/SystemProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"SystemProvider.d.ts","sourceRoot":"","sources":["../../../src/skill/runtime/SystemProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC,CAAC;AAOF;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
|
|
@@ -24,10 +24,10 @@ function getCurrentSessionId() {
|
|
|
24
24
|
*/
|
|
25
25
|
export async function buildSkillsSystemText(runtime) {
|
|
26
26
|
const sessionId = getCurrentSessionId();
|
|
27
|
-
const discoveredSkills = discoverClaudeSkillsSync(runtime.rootPath, runtime.
|
|
27
|
+
const discoveredSkills = discoverClaudeSkillsSync(runtime.rootPath, runtime.options);
|
|
28
28
|
if (sessionId) {
|
|
29
29
|
setSessionAvailableSkills(sessionId, discoveredSkills);
|
|
30
30
|
}
|
|
31
|
-
return renderClaudeSkillsPromptSection(runtime.rootPath, runtime.
|
|
31
|
+
return renderClaudeSkillsPromptSection(runtime.rootPath, runtime.options, discoveredSkills).trim();
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=SystemProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemProvider.js","sourceRoot":"","sources":["../../../src/skill/runtime/SystemProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemProvider.js","sourceRoot":"","sources":["../../../src/skill/runtime/SystemProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAQvD,SAAS,mBAAmB;IAC1B,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA2B;IAE3B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,+BAA+B,CACpC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,OAAO,EACf,gBAAgB,CACjB,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
|