@spences10/pi-skills 0.0.8 → 0.0.10
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/README.md +15 -5
- package/dist/commands.d.ts +2 -0
- package/dist/commands.js +481 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +13 -1
- package/dist/config.js +122 -7
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +1 -720
- package/dist/index.js.map +1 -1
- package/dist/manager.d.ts +20 -1
- package/dist/manager.js +191 -25
- package/dist/manager.js.map +1 -1
- package/dist/skill-utils.d.ts +23 -0
- package/dist/skill-utils.js +221 -0
- package/dist/skill-utils.js.map +1 -0
- package/dist/skills-ui.d.ts +16 -0
- package/dist/skills-ui.js +374 -0
- package/dist/skills-ui.js.map +1 -0
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -54,22 +54,32 @@ detect local edits and upstream changes.
|
|
|
54
54
|
|
|
55
55
|
```text
|
|
56
56
|
/skills
|
|
57
|
+
/skills enable <key|name|pattern>
|
|
58
|
+
/skills disable <key|name|pattern>
|
|
57
59
|
/skills import <key-or-name>
|
|
58
60
|
/skills sync <key-or-name>
|
|
61
|
+
/skills profile create <name>
|
|
62
|
+
/skills profile use <name>
|
|
59
63
|
/skills refresh
|
|
60
64
|
/skills defaults all-enabled
|
|
61
65
|
/skills defaults all-disabled
|
|
62
66
|
```
|
|
63
67
|
|
|
64
68
|
With a UI available, `/skills` opens a modal home menu for managing,
|
|
65
|
-
importing, syncing, refreshing,
|
|
66
|
-
`import`, `sync`, and `defaults`
|
|
67
|
-
in interactive mode. In headless
|
|
69
|
+
importing, syncing, refreshing, profile switching, and profile
|
|
70
|
+
baseline selection. The no-arg `import`, `sync`, and `defaults`
|
|
71
|
+
subcommands use modal pickers/forms in interactive mode. In headless
|
|
72
|
+
mode, use the subcommands directly.
|
|
68
73
|
|
|
69
74
|
## Skill enablement
|
|
70
75
|
|
|
71
|
-
The extension
|
|
72
|
-
|
|
76
|
+
The extension treats profiles as named skill sets. The active profile
|
|
77
|
+
contains include/exclude rules for skill names, keys, sources, or
|
|
78
|
+
paths; `*` wildcards are supported. Legacy top-level enablement is
|
|
79
|
+
migrated into the `default` profile on load.
|
|
80
|
+
|
|
81
|
+
The extension contributes enabled managed skill paths during Pi
|
|
82
|
+
resource discovery.
|
|
73
83
|
|
|
74
84
|
In a custom harness such as `my-pi`, this can be combined with a
|
|
75
85
|
resource filter to enforce disabled skills. In vanilla `pi`, Pi's own
|
package/dist/commands.js
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
import { show_input_modal, show_text_modal, } from '@spences10/pi-tui-modal';
|
|
2
|
+
import { create_skills_manager } from './manager.js';
|
|
3
|
+
import { find_skill, format_profile_detail, format_skill_detail, format_skill_list, profile_description, sort_skills, } from './skill-utils.js';
|
|
4
|
+
import { pick_profile, pick_skill, show_defaults_modal, show_profiles_modal, show_refresh_summary, show_skill_detail_modal, show_skill_list_modal, show_skills_home_modal, show_skills_manager_modal, } from './skills-ui.js';
|
|
5
|
+
export default async function skills(pi) {
|
|
6
|
+
const mgr = create_skills_manager();
|
|
7
|
+
const subs = [
|
|
8
|
+
'list',
|
|
9
|
+
'show',
|
|
10
|
+
'enable',
|
|
11
|
+
'disable',
|
|
12
|
+
'import',
|
|
13
|
+
'sync',
|
|
14
|
+
'profile',
|
|
15
|
+
'refresh',
|
|
16
|
+
'defaults',
|
|
17
|
+
];
|
|
18
|
+
pi.registerCommand('skills', {
|
|
19
|
+
description: 'Manage pi-native skills and import external skills',
|
|
20
|
+
getArgumentCompletions: (prefix) => {
|
|
21
|
+
const parts = prefix.trimStart().split(/\s+/);
|
|
22
|
+
const has_trailing_space = /\s$/.test(prefix);
|
|
23
|
+
if (parts.length <= 1 && !has_trailing_space) {
|
|
24
|
+
return subs
|
|
25
|
+
.filter((s) => s.startsWith(parts[0] || ''))
|
|
26
|
+
.map((s) => ({ value: s, label: s }));
|
|
27
|
+
}
|
|
28
|
+
if (['show', 'enable', 'disable'].includes(parts[0] ?? '')) {
|
|
29
|
+
const q = parts.slice(1).join(' ').toLowerCase();
|
|
30
|
+
const skills = parts[0] === 'show'
|
|
31
|
+
? [...mgr.discover(), ...mgr.discover_importable()]
|
|
32
|
+
: mgr.discover();
|
|
33
|
+
return sort_skills(skills)
|
|
34
|
+
.filter((s) => s.key.toLowerCase().includes(q) ||
|
|
35
|
+
s.name.toLowerCase().includes(q))
|
|
36
|
+
.slice(0, 20)
|
|
37
|
+
.map((s) => ({
|
|
38
|
+
value: `${parts[0]} ${s.key}`,
|
|
39
|
+
label: s.key,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
if (parts[0] === 'import') {
|
|
43
|
+
const q = parts.slice(1).join(' ').toLowerCase();
|
|
44
|
+
return sort_skills(mgr.discover_importable())
|
|
45
|
+
.filter((s) => s.key.toLowerCase().includes(q) ||
|
|
46
|
+
s.name.toLowerCase().includes(q))
|
|
47
|
+
.slice(0, 20)
|
|
48
|
+
.map((s) => ({
|
|
49
|
+
value: `${parts[0]} ${s.key}`,
|
|
50
|
+
label: s.key,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
if (parts[0] === 'sync') {
|
|
54
|
+
const q = parts.slice(1).join(' ').toLowerCase();
|
|
55
|
+
return sort_skills(mgr
|
|
56
|
+
.discover()
|
|
57
|
+
.filter((skill) => Boolean(skill.import_meta)))
|
|
58
|
+
.filter((s) => s.key.toLowerCase().includes(q) ||
|
|
59
|
+
s.name.toLowerCase().includes(q))
|
|
60
|
+
.slice(0, 20)
|
|
61
|
+
.map((s) => ({
|
|
62
|
+
value: `${parts[0]} ${s.key}`,
|
|
63
|
+
label: s.key,
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
if (parts[0] === 'profile') {
|
|
67
|
+
const profile_subs = [
|
|
68
|
+
'list',
|
|
69
|
+
'show',
|
|
70
|
+
'use',
|
|
71
|
+
'create',
|
|
72
|
+
'include',
|
|
73
|
+
'exclude',
|
|
74
|
+
];
|
|
75
|
+
if (parts.length <= 2 && !has_trailing_space) {
|
|
76
|
+
return profile_subs
|
|
77
|
+
.filter((s) => s.startsWith(parts[1] || ''))
|
|
78
|
+
.map((s) => ({ value: `profile ${s}`, label: s }));
|
|
79
|
+
}
|
|
80
|
+
if (['show', 'use', 'include', 'exclude'].includes(parts[1] ?? '')) {
|
|
81
|
+
const q = parts.slice(2).join(' ').toLowerCase();
|
|
82
|
+
return mgr
|
|
83
|
+
.list_profiles()
|
|
84
|
+
.filter((profile) => profile.name.toLowerCase().includes(q))
|
|
85
|
+
.slice(0, 20)
|
|
86
|
+
.map((profile) => ({
|
|
87
|
+
value: `profile ${parts[1]} ${profile.name}`,
|
|
88
|
+
label: profile.name,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
},
|
|
94
|
+
handler: async (args, ctx) => {
|
|
95
|
+
const trimmed = args.trim();
|
|
96
|
+
if (!trimmed && ctx.hasUI) {
|
|
97
|
+
while (true) {
|
|
98
|
+
const managed_count = mgr.discover().length;
|
|
99
|
+
const importable_count = mgr.discover_importable().length;
|
|
100
|
+
const selected = await show_skills_home_modal(ctx, managed_count, importable_count, mgr.get_active_profile());
|
|
101
|
+
if (!selected)
|
|
102
|
+
return;
|
|
103
|
+
if (selected === 'manage') {
|
|
104
|
+
if (await show_skills_manager_modal(ctx, mgr))
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
else if (selected === 'browse') {
|
|
108
|
+
await show_skill_list_modal(ctx, mgr);
|
|
109
|
+
}
|
|
110
|
+
else if (selected === 'import') {
|
|
111
|
+
const key = await pick_skill(ctx, {
|
|
112
|
+
title: 'Import skill',
|
|
113
|
+
subtitle: 'Copy an external skill into Pi-native storage',
|
|
114
|
+
skills: sort_skills(mgr.discover_importable()),
|
|
115
|
+
empty_message: 'No importable skills found',
|
|
116
|
+
});
|
|
117
|
+
if (!key)
|
|
118
|
+
continue;
|
|
119
|
+
try {
|
|
120
|
+
const result = mgr.import_skill(key);
|
|
121
|
+
ctx.ui.notify(`Imported ${key} to ${result.skillDir}. Reloading...`, 'info');
|
|
122
|
+
await ctx.reload();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
ctx.ui.notify(error instanceof Error
|
|
127
|
+
? error.message
|
|
128
|
+
: String(error), 'warning');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (selected === 'sync') {
|
|
132
|
+
const key = await pick_skill(ctx, {
|
|
133
|
+
title: 'Sync imported skill',
|
|
134
|
+
subtitle: 'Update an imported skill from its upstream source',
|
|
135
|
+
skills: sort_skills(mgr
|
|
136
|
+
.discover()
|
|
137
|
+
.filter((skill) => Boolean(skill.import_meta))),
|
|
138
|
+
empty_message: 'No imported skills found',
|
|
139
|
+
});
|
|
140
|
+
if (!key)
|
|
141
|
+
continue;
|
|
142
|
+
try {
|
|
143
|
+
const result = mgr.sync_skill(key);
|
|
144
|
+
if (result.changed) {
|
|
145
|
+
ctx.ui.notify(`Synced ${key}. Reloading...`, 'info');
|
|
146
|
+
await ctx.reload();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await show_text_modal(ctx, {
|
|
150
|
+
title: 'Skill already up to date',
|
|
151
|
+
text: `${key} is already up to date.`,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
ctx.ui.notify(error instanceof Error
|
|
156
|
+
? error.message
|
|
157
|
+
: String(error), 'warning');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else if (selected === 'profiles') {
|
|
161
|
+
if (await show_profiles_modal(ctx, mgr))
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
else if (selected === 'refresh') {
|
|
165
|
+
await show_refresh_summary(ctx, mgr);
|
|
166
|
+
}
|
|
167
|
+
else if (selected === 'defaults') {
|
|
168
|
+
await show_defaults_modal(ctx, mgr);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
const [sub, ...rest] = (trimmed || 'list').split(/\s+/);
|
|
173
|
+
const arg = rest.join(' ');
|
|
174
|
+
switch (sub) {
|
|
175
|
+
case 'list': {
|
|
176
|
+
const skills = [
|
|
177
|
+
...mgr.discover(),
|
|
178
|
+
...mgr.discover_importable(),
|
|
179
|
+
];
|
|
180
|
+
if (ctx.hasUI) {
|
|
181
|
+
await show_skill_list_modal(ctx, mgr);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
ctx.ui.notify(format_skill_list(skills));
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case 'show': {
|
|
189
|
+
const skills = [
|
|
190
|
+
...mgr.discover(),
|
|
191
|
+
...mgr.discover_importable(),
|
|
192
|
+
];
|
|
193
|
+
let target = arg;
|
|
194
|
+
if (!target && ctx.hasUI) {
|
|
195
|
+
target =
|
|
196
|
+
(await pick_skill(ctx, {
|
|
197
|
+
title: 'Show skill details',
|
|
198
|
+
subtitle: 'Open a read-only skill detail view',
|
|
199
|
+
skills: sort_skills(skills),
|
|
200
|
+
empty_message: 'No skills found',
|
|
201
|
+
})) ?? '';
|
|
202
|
+
if (!target)
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (!target) {
|
|
206
|
+
ctx.ui.notify('Usage: /skills show <key|name>', 'warning');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
const skill = find_skill(skills, target);
|
|
211
|
+
if (ctx.hasUI) {
|
|
212
|
+
await show_skill_detail_modal(ctx, skill);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
ctx.ui.notify(format_skill_detail(skill));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case 'enable':
|
|
224
|
+
case 'disable': {
|
|
225
|
+
let target = arg;
|
|
226
|
+
if (!target && ctx.hasUI) {
|
|
227
|
+
target =
|
|
228
|
+
(await pick_skill(ctx, {
|
|
229
|
+
title: sub === 'enable'
|
|
230
|
+
? 'Enable skill in active profile'
|
|
231
|
+
: 'Disable skill in active profile',
|
|
232
|
+
subtitle: `Profile: ${mgr.get_active_profile()}`,
|
|
233
|
+
skills: sort_skills(mgr.discover()),
|
|
234
|
+
empty_message: 'No managed skills found',
|
|
235
|
+
})) ?? '';
|
|
236
|
+
if (!target)
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (!target) {
|
|
240
|
+
ctx.ui.notify(`Usage: /skills ${sub} <key|name|pattern>`, 'warning');
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
let pattern = target;
|
|
244
|
+
try {
|
|
245
|
+
pattern = find_skill(mgr.discover(), target).key;
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// Treat misses as patterns, e.g. design-* or *@plugin:vendor.
|
|
249
|
+
}
|
|
250
|
+
if (sub === 'enable')
|
|
251
|
+
mgr.enable(pattern);
|
|
252
|
+
else
|
|
253
|
+
mgr.disable(pattern);
|
|
254
|
+
ctx.ui.notify(`Updated ${mgr.get_active_profile()} profile. Reloading...`, 'info');
|
|
255
|
+
await ctx.reload();
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
case 'import': {
|
|
259
|
+
let target = arg;
|
|
260
|
+
if (!target && ctx.hasUI) {
|
|
261
|
+
target =
|
|
262
|
+
(await pick_skill(ctx, {
|
|
263
|
+
title: 'Import skill',
|
|
264
|
+
subtitle: 'Copy an external skill into Pi-native storage',
|
|
265
|
+
skills: sort_skills(mgr.discover_importable()),
|
|
266
|
+
empty_message: 'No importable skills found',
|
|
267
|
+
})) ?? '';
|
|
268
|
+
if (!target)
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (!target) {
|
|
272
|
+
ctx.ui.notify('Usage: /skills import <key|name>', 'warning');
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
const result = mgr.import_skill(target);
|
|
277
|
+
ctx.ui.notify(`Imported ${target} to ${result.skillDir}. Reloading...`, 'info');
|
|
278
|
+
await ctx.reload();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
case 'sync': {
|
|
287
|
+
let target = arg;
|
|
288
|
+
if (!target && ctx.hasUI) {
|
|
289
|
+
target =
|
|
290
|
+
(await pick_skill(ctx, {
|
|
291
|
+
title: 'Sync imported skill',
|
|
292
|
+
subtitle: 'Update an imported skill from its upstream source',
|
|
293
|
+
skills: sort_skills(mgr
|
|
294
|
+
.discover()
|
|
295
|
+
.filter((skill) => Boolean(skill.import_meta))),
|
|
296
|
+
empty_message: 'No imported skills found',
|
|
297
|
+
})) ?? '';
|
|
298
|
+
if (!target)
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (!target) {
|
|
302
|
+
ctx.ui.notify('Usage: /skills sync <key|name>', 'warning');
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const result = mgr.sync_skill(target);
|
|
307
|
+
if (result.changed) {
|
|
308
|
+
ctx.ui.notify(`Synced ${target}. Reloading...`, 'info');
|
|
309
|
+
await ctx.reload();
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (ctx.hasUI) {
|
|
313
|
+
await show_text_modal(ctx, {
|
|
314
|
+
title: 'Skill already up to date',
|
|
315
|
+
text: `${target} is already up to date.`,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
ctx.ui.notify(`${target} is already up to date.`, 'info');
|
|
320
|
+
}
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
case 'profile': {
|
|
329
|
+
const [action = 'list', name, ...pattern_parts] = rest;
|
|
330
|
+
const pattern = pattern_parts.join(' ');
|
|
331
|
+
if (!args.trim().startsWith('profile') && ctx.hasUI) {
|
|
332
|
+
if (await show_profiles_modal(ctx, mgr))
|
|
333
|
+
return;
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
if (action === 'list') {
|
|
337
|
+
const text = mgr
|
|
338
|
+
.list_profiles()
|
|
339
|
+
.map((profile) => `${profile.active ? 'active' : ' '} ${profile.name} — ${profile_description(profile)}`)
|
|
340
|
+
.join('\n');
|
|
341
|
+
if (ctx.hasUI) {
|
|
342
|
+
await show_text_modal(ctx, {
|
|
343
|
+
title: 'Skill profiles',
|
|
344
|
+
text: text || 'No skill profiles found',
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
ctx.ui.notify(text || 'No skill profiles found');
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
if (action === 'show') {
|
|
353
|
+
let target = name;
|
|
354
|
+
if (!target && ctx.hasUI) {
|
|
355
|
+
target = await pick_profile(ctx, mgr, 'Show skill profile');
|
|
356
|
+
}
|
|
357
|
+
const profile = mgr
|
|
358
|
+
.list_profiles()
|
|
359
|
+
.find((candidate) => candidate.name === target);
|
|
360
|
+
if (!profile) {
|
|
361
|
+
ctx.ui.notify('Usage: /skills profile show <name>', 'warning');
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
if (ctx.hasUI) {
|
|
365
|
+
await show_text_modal(ctx, {
|
|
366
|
+
title: profile.name,
|
|
367
|
+
text: format_profile_detail(profile),
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
ctx.ui.notify(format_profile_detail(profile));
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
if (action === 'use') {
|
|
376
|
+
let target = name;
|
|
377
|
+
if (!target && ctx.hasUI) {
|
|
378
|
+
target = await pick_profile(ctx, mgr, 'Use skill profile');
|
|
379
|
+
}
|
|
380
|
+
if (!target) {
|
|
381
|
+
ctx.ui.notify('Usage: /skills profile use <name>', 'warning');
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
try {
|
|
385
|
+
mgr.use_profile(target);
|
|
386
|
+
ctx.ui.notify(`Using skill profile ${target}. Reloading...`, 'info');
|
|
387
|
+
await ctx.reload();
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
ctx.ui.notify(error instanceof Error
|
|
392
|
+
? error.message
|
|
393
|
+
: String(error), 'warning');
|
|
394
|
+
}
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
if (action === 'create') {
|
|
398
|
+
let target = name;
|
|
399
|
+
if (!target && ctx.hasUI) {
|
|
400
|
+
target = await show_input_modal(ctx, {
|
|
401
|
+
title: 'Create skill profile',
|
|
402
|
+
label: 'Profile name',
|
|
403
|
+
trim: true,
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
if (!target) {
|
|
407
|
+
ctx.ui.notify('Usage: /skills profile create <name>', 'warning');
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
try {
|
|
411
|
+
mgr.create_profile(target);
|
|
412
|
+
ctx.ui.notify(`Created empty skill profile ${target}`);
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
ctx.ui.notify(error instanceof Error
|
|
416
|
+
? error.message
|
|
417
|
+
: String(error), 'warning');
|
|
418
|
+
}
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
if (action === 'include' || action === 'exclude') {
|
|
422
|
+
if (!name || !pattern) {
|
|
423
|
+
ctx.ui.notify(`Usage: /skills profile ${action} <name> <pattern>`, 'warning');
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
try {
|
|
427
|
+
if (action === 'include')
|
|
428
|
+
mgr.include_in_profile(name, pattern);
|
|
429
|
+
else
|
|
430
|
+
mgr.exclude_from_profile(name, pattern);
|
|
431
|
+
ctx.ui.notify(`Updated skill profile ${name}. Reloading...`, 'info');
|
|
432
|
+
await ctx.reload();
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
ctx.ui.notify(error instanceof Error
|
|
437
|
+
? error.message
|
|
438
|
+
: String(error), 'warning');
|
|
439
|
+
}
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
ctx.ui.notify('Usage: /skills profile <list|show|use|create|include|exclude>', 'warning');
|
|
443
|
+
break;
|
|
444
|
+
}
|
|
445
|
+
case 'refresh': {
|
|
446
|
+
if (ctx.hasUI) {
|
|
447
|
+
await show_refresh_summary(ctx, mgr);
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
mgr.refresh();
|
|
451
|
+
ctx.ui.notify(`Rescanned: ${mgr.discover().length} managed skills, ${mgr.discover_importable().length} importable skills found`);
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
case 'defaults': {
|
|
455
|
+
if (!arg && ctx.hasUI) {
|
|
456
|
+
await show_defaults_modal(ctx, mgr);
|
|
457
|
+
break;
|
|
458
|
+
}
|
|
459
|
+
if (arg !== 'all-enabled' && arg !== 'all-disabled') {
|
|
460
|
+
ctx.ui.notify('Usage: /skills defaults <all-enabled|all-disabled>', 'warning');
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
mgr.set_defaults(arg);
|
|
464
|
+
if (ctx.hasUI) {
|
|
465
|
+
await show_text_modal(ctx, {
|
|
466
|
+
title: 'Skill profile baseline updated',
|
|
467
|
+
text: `Active profile baseline: ${arg}`,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
ctx.ui.notify(`Active profile baseline: ${arg}`);
|
|
472
|
+
}
|
|
473
|
+
break;
|
|
474
|
+
}
|
|
475
|
+
default:
|
|
476
|
+
ctx.ui.notify(`Unknown: ${sub}. Use: ${subs.join(', ')}`, 'warning');
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
export type SkillDefaultPolicy = 'all-enabled' | 'all-disabled';
|
|
2
|
+
export interface SkillProfileConfig {
|
|
3
|
+
description?: string;
|
|
4
|
+
extends?: string | string[];
|
|
5
|
+
include?: string[];
|
|
6
|
+
exclude?: string[];
|
|
7
|
+
}
|
|
1
8
|
export interface SkillsConfig {
|
|
2
9
|
version: number;
|
|
10
|
+
/** Legacy global enablement map. v3 stores enablement in profiles. */
|
|
3
11
|
enabled: Record<string, boolean>;
|
|
4
|
-
|
|
12
|
+
/** Legacy fallback policy. v3 stores baseline behavior as profile rules. */
|
|
13
|
+
defaults: SkillDefaultPolicy;
|
|
14
|
+
current_profile?: string;
|
|
15
|
+
profiles: Record<string, SkillProfileConfig>;
|
|
5
16
|
}
|
|
6
17
|
export declare function get_config_path(): string;
|
|
18
|
+
export declare function safe_profile_name(value: string): string | undefined;
|
|
7
19
|
export declare function load_skills_config(): SkillsConfig;
|
|
8
20
|
export declare function save_skills_config(config: SkillsConfig): void;
|
|
9
21
|
export declare function make_skill_key(name: string, source: string): string;
|