@spences10/pi-skills 0.0.12 → 0.0.14

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/dist/scanner.js CHANGED
@@ -1,7 +1,7 @@
1
- import { getAgentDir, parseFrontmatter, } from '@mariozechner/pi-coding-agent';
2
- import { existsSync, globSync, readFileSync } from 'node:fs';
1
+ import { getAgentDir, parseFrontmatter, } from '@earendil-works/pi-coding-agent';
2
+ import { existsSync, globSync, readFileSync, statSync, } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
- import { basename, dirname, join, resolve } from 'node:path';
4
+ import { basename, dirname, join, parse, resolve } from 'node:path';
5
5
  export const IMPORT_METADATA_FILE = '.my-pi-source.json';
6
6
  function read_installed_plugins() {
7
7
  const path = join(homedir(), '.claude', 'plugins', 'installed_plugins.json');
@@ -53,6 +53,7 @@ function scan_dir_for_skills(dir, options) {
53
53
  skillPath: direct,
54
54
  baseDir: dir,
55
55
  source: options.source,
56
+ scope: options.scope,
56
57
  kind: options.kind,
57
58
  plugin: options.plugin,
58
59
  import_meta: options.kind === 'managed'
@@ -74,6 +75,7 @@ function scan_dir_for_skills(dir, options) {
74
75
  skillPath: full_path,
75
76
  baseDir: base_dir,
76
77
  source: options.source,
78
+ scope: options.scope,
77
79
  kind: options.kind,
78
80
  plugin: options.plugin,
79
81
  import_meta: options.kind === 'managed'
@@ -103,12 +105,14 @@ export function scan_managed_skills() {
103
105
  const skills = [];
104
106
  for (const skill of scan_dir_for_skills(join(homedir(), '.claude', 'skills'), {
105
107
  source: 'user-local',
108
+ scope: 'global',
106
109
  kind: 'managed',
107
110
  })) {
108
111
  skills.push(skill);
109
112
  }
110
113
  for (const skill of scan_dir_for_skills(join(getAgentDir(), 'skills'), {
111
114
  source: 'pi-native',
115
+ scope: 'global',
112
116
  kind: 'managed',
113
117
  include_direct_root_skill: false,
114
118
  })) {
@@ -116,6 +120,63 @@ export function scan_managed_skills() {
116
120
  }
117
121
  return dedupe_by_skill_path(skills);
118
122
  }
123
+ function parent_dir(path) {
124
+ const parsed = parse(path);
125
+ const parent = dirname(path);
126
+ return parent === path || parent === parsed.root ? null : parent;
127
+ }
128
+ function is_directory(path) {
129
+ try {
130
+ return statSync(path).isDirectory();
131
+ }
132
+ catch {
133
+ return false;
134
+ }
135
+ }
136
+ function project_roots(cwd) {
137
+ const roots = [];
138
+ let current = resolve(cwd);
139
+ while (true) {
140
+ roots.push(current);
141
+ if (is_directory(join(current, '.git')))
142
+ break;
143
+ const parent = parent_dir(current);
144
+ if (!parent)
145
+ break;
146
+ current = parent;
147
+ }
148
+ return roots;
149
+ }
150
+ export function scan_project_skills(cwd = process.cwd()) {
151
+ const skills = [];
152
+ for (const root of project_roots(cwd)) {
153
+ for (const skill of scan_dir_for_skills(join(root, '.agents'), {
154
+ source: 'project:.agents',
155
+ scope: 'project',
156
+ kind: 'managed',
157
+ include_direct_root_skill: false,
158
+ })) {
159
+ skills.push(skill);
160
+ }
161
+ for (const skill of scan_dir_for_skills(join(root, '.agents', 'skills'), {
162
+ source: 'project:.agents/skills',
163
+ scope: 'project',
164
+ kind: 'managed',
165
+ include_direct_root_skill: false,
166
+ })) {
167
+ skills.push(skill);
168
+ }
169
+ for (const skill of scan_dir_for_skills(join(root, '.pi', 'skills'), {
170
+ source: 'project:.pi/skills',
171
+ scope: 'project',
172
+ kind: 'managed',
173
+ include_direct_root_skill: false,
174
+ })) {
175
+ skills.push(skill);
176
+ }
177
+ }
178
+ return dedupe_by_skill_path(skills);
179
+ }
119
180
  export function scan_importable_skills() {
120
181
  const skills = [];
121
182
  const plugins = read_installed_plugins();
@@ -134,6 +195,7 @@ export function scan_importable_skills() {
134
195
  };
135
196
  for (const skill of scan_dir_for_skills(join(entry.installPath, 'skills'), {
136
197
  source,
198
+ scope: 'plugin',
137
199
  kind: 'external',
138
200
  plugin,
139
201
  })) {
@@ -141,6 +203,7 @@ export function scan_importable_skills() {
141
203
  }
142
204
  for (const skill of scan_dir_for_skills(join(entry.installPath, '.pi', 'skills'), {
143
205
  source,
206
+ scope: 'plugin',
144
207
  kind: 'external',
145
208
  plugin,
146
209
  })) {
@@ -155,6 +218,7 @@ export function scan_importable_skills() {
155
218
  skillPath: direct_root_skill,
156
219
  baseDir: entry.installPath,
157
220
  source,
221
+ scope: 'plugin',
158
222
  kind: 'external',
159
223
  plugin,
160
224
  });
@@ -163,7 +227,11 @@ export function scan_importable_skills() {
163
227
  }
164
228
  return dedupe_by_skill_path(skills);
165
229
  }
166
- export function scan_all_skills() {
167
- return [...scan_managed_skills(), ...scan_importable_skills()];
230
+ export function scan_all_skills(cwd = process.cwd()) {
231
+ return [
232
+ ...scan_managed_skills(),
233
+ ...scan_project_skills(cwd),
234
+ ...scan_importable_skills(),
235
+ ];
168
236
  }
169
237
  //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,7 @@
1
- import { type SettingItem } from '@mariozechner/pi-tui';
1
+ import { type SettingItem } from '@earendil-works/pi-tui';
2
2
  import type { ManagedSkill, SkillProfile } from './manager.js';
3
3
  export declare const ENABLED = "\u25CF enabled";
4
4
  export declare const DISABLED = "\u25CB disabled";
5
- export declare const SYNC = "\u21BB sync";
6
- export declare const IMPORTED_LABEL = "\u2713 imported";
7
5
  export interface ImportableSkillState {
8
6
  label: string;
9
7
  detail: string;
@@ -13,7 +11,6 @@ export declare function sort_skills(skills: ManagedSkill[]): ManagedSkill[];
13
11
  export declare function find_matching_imported_skill(managed_skills: ManagedSkill[], skill: ManagedSkill): ManagedSkill | undefined;
14
12
  export declare function get_importable_state(managed_skills: ManagedSkill[], skill: ManagedSkill): ImportableSkillState;
15
13
  export declare function to_setting_item(skill: ManagedSkill): SettingItem;
16
- export declare function to_importable_setting_item(managed_skills: ManagedSkill[], skill: ManagedSkill): SettingItem;
17
14
  export declare function sets_equal(a: ReadonlySet<string>, b: ReadonlySet<string>): boolean;
18
15
  export declare function skill_status(skill: ManagedSkill): string;
19
16
  export declare function format_skill_detail(skill: ManagedSkill): string;
@@ -1,7 +1,5 @@
1
1
  export const ENABLED = '● enabled';
2
2
  export const DISABLED = '○ disabled';
3
- export const SYNC = '↻ sync';
4
- export const IMPORTED_LABEL = '✓ imported';
5
3
  export function sort_skills(skills) {
6
4
  return [...skills].sort((a, b) => {
7
5
  const by_name = a.name.localeCompare(b.name);
@@ -77,43 +75,6 @@ export function to_setting_item(skill) {
77
75
  values: [ENABLED, DISABLED],
78
76
  };
79
77
  }
80
- export function to_importable_setting_item(managed_skills, skill) {
81
- const state = get_importable_state(managed_skills, skill);
82
- const detail_lines = [
83
- `${skill.source} • ${skill.key}`,
84
- skill.description,
85
- skill.baseDir,
86
- ];
87
- if (skill.plugin?.version) {
88
- detail_lines.push(`plugin: ${skill.plugin.version}${skill.plugin.gitCommitSha ? ` • ${skill.plugin.gitCommitSha.slice(0, 12)}` : ''}`);
89
- }
90
- if (state.action === 'import') {
91
- return {
92
- id: skill.key,
93
- label: skill.name,
94
- description: detail_lines.join('\n'),
95
- currentValue: DISABLED,
96
- values: [ENABLED, DISABLED],
97
- };
98
- }
99
- if (state.action === 'sync') {
100
- detail_lines.push('enter to sync');
101
- return {
102
- id: skill.key,
103
- label: skill.name,
104
- description: detail_lines.join('\n'),
105
- currentValue: SYNC,
106
- values: [SYNC],
107
- };
108
- }
109
- detail_lines.push(state.detail);
110
- return {
111
- id: skill.key,
112
- label: skill.name,
113
- description: detail_lines.join('\n'),
114
- currentValue: IMPORTED_LABEL,
115
- };
116
- }
117
78
  export function sets_equal(a, b) {
118
79
  if (a.size !== b.size)
119
80
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-utils.js","sourceRoot":"","sources":["../src/skill-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-utils.js","sourceRoot":"","sources":["../src/skill-utils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAQrC,MAAM,UAAU,WAAW,CAAC,MAAsB;IACjD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAClC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,cAA8B,EAC9B,KAAmB;IAEnB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CACtC,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC,MAAM;QAC9C,CAAC,SAAS,CAAC,WAAW,CAAC,mBAAmB;YACzC,KAAK,CAAC,SAAS;YACf,SAAS,CAAC,WAAW,CAAC,iBAAiB,KAAK,KAAK,CAAC,OAAO,CAAC,CAC5D,CAAC;IACF,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,OAAO,cAAc,CAAC,IAAI,CACzB,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC,MAAM;QAC9C,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,cAA8B,EAC9B,KAAmB;IAEnB,MAAM,QAAQ,GAAG,4BAA4B,CAC5C,cAAc,EACd,KAAK,CACL,CAAC;IACF,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,OAAO,CAC9B,KAAK,CAAC,MAAM,EAAE,OAAO;YACrB,QAAQ,CAAC,WAAW,CAAC,gBAAgB;YACrC,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAC9D,CAAC;QACF,MAAM,WAAW,GAAG,OAAO,CAC1B,KAAK,CAAC,MAAM,EAAE,YAAY;YAC1B,QAAQ,CAAC,WAAW,CAAC,uBAAuB;YAC5C,KAAK,CAAC,MAAM,CAAC,YAAY;gBACxB,QAAQ,CAAC,WAAW,CAAC,uBAAuB,CAC7C,CAAC;QAEF,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;YACpC,OAAO;gBACN,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,kDAAkD;gBAC1D,MAAM,EAAE,MAAM;aACd,CAAC;QACH,CAAC;QAED,OAAO;YACN,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,uBAAuB,QAAQ,CAAC,OAAO,EAAE;YACjD,MAAM,EAAE,IAAI;SACZ,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAC3C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC5C,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACtB,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,sBAAsB,gBAAgB,CAAC,OAAO,EAAE;YACxD,MAAM,EAAE,IAAI;SACZ,CAAC;IACH,CAAC;IAED,OAAO;QACN,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,wDAAwD;QAChE,MAAM,EAAE,QAAQ;KAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAmB;IAClD,MAAM,YAAY,GAAG;QACpB,GAAG,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,OAAO;KACb,CAAC;IACF,IAAI,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;QACzC,YAAY,CAAC,IAAI,CAChB,aAAa,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACnK,CAAC;IACH,CAAC;IAED,OAAO;QACN,EAAE,EAAE,KAAK,CAAC,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QAChD,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CACzB,CAAsB,EACtB,CAAsB;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC;IACnD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACtD,MAAM,KAAK,GAAG;QACb,KAAK,KAAK,CAAC,IAAI,EAAE;QACjB,EAAE;QACF,WAAW,YAAY,CAAC,KAAK,CAAC,EAAE;QAChC,WAAW,KAAK,CAAC,MAAM,EAAE;QACzB,QAAQ,KAAK,CAAC,GAAG,EAAE;QACnB,SAAS,KAAK,CAAC,IAAI,EAAE;QACrB,EAAE;QACF,KAAK,CAAC,WAAW;QACjB,EAAE;QACF,mBAAmB,KAAK,CAAC,OAAO,EAAE;QAClC,eAAe,KAAK,CAAC,SAAS,EAAE;KAChC,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACT,EAAE,EACF,QAAQ,EACR,SAAS,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAChC,cAAc,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EACpC,mBAAmB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAC7C,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACT,EAAE,EACF,iBAAiB,EACjB,sBAAsB,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,EAChD,kBAAkB,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EACjD,qBAAqB,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,EACvD,oBAAoB,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAC3D,CAAC;QACF,IAAI,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CACT,uBAAuB,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAC3D,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CACT,sBAAsB,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,CACjE,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACnD,OAAO,WAAW,CAAC,MAAM,CAAC;SACxB,GAAG,CACH,CAAC,KAAK,EAAE,EAAE,CACT,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,CACjE;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACzB,MAAsB,EACtB,WAAmB;IAEnB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IAC9D,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACd,yBAAyB,KAAK,6BAA6B,CAC3D,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAC1B,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK;QACjC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CACnC,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACd,2BAA2B,KAAK,6BAA6B,CAC7D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACxD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IAC1D,MAAM,KAAK,GAAG;QACb,KAAK,OAAO,CAAC,IAAI,EAAE;QACnB,EAAE;QACF,WAAW,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE;KACnD,CAAC;IACF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CACT,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;QACzB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CACd,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CACT,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;QACzB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CACd,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { ExtensionCommandContext } from '@mariozechner/pi-coding-agent';
1
+ import type { ExtensionCommandContext } from '@earendil-works/pi-coding-agent';
2
2
  import type { ManagedSkill, SkillsManager } from './manager.js';
3
3
  export declare function show_skills_home_modal(ctx: ExtensionCommandContext, managed_count: number, importable_count: number, active_profile: string): Promise<string | undefined>;
4
4
  export declare function show_skills_manager_modal(ctx: ExtensionCommandContext, mgr: SkillsManager): Promise<boolean>;
5
+ export declare function show_importable_skills_modal(ctx: ExtensionCommandContext, mgr: SkillsManager): Promise<boolean>;
5
6
  export declare function pick_skill(ctx: ExtensionCommandContext, options: {
6
7
  title: string;
7
8
  subtitle: string;
package/dist/skills-ui.js CHANGED
@@ -1,5 +1,14 @@
1
1
  import { show_input_modal, show_picker_modal, show_settings_modal, show_text_modal, } from '@spences10/pi-tui-modal';
2
- import { ENABLED, find_matching_imported_skill, find_skill, format_profile_detail, format_skill_detail, get_importable_state, profile_description, sets_equal, skill_status, sort_skills, to_importable_setting_item, to_setting_item, } from './skill-utils.js';
2
+ import { ENABLED, find_matching_imported_skill, find_skill, format_profile_detail, format_skill_detail, get_importable_state, profile_description, sets_equal, skill_status, sort_skills, to_setting_item, } from './skill-utils.js';
3
+ function importable_action_label(state) {
4
+ if (state.action === 'import')
5
+ return 'Import';
6
+ if (state.action === 'sync')
7
+ return 'Sync available';
8
+ return state.label === 'managed'
9
+ ? 'Already managed'
10
+ : 'Already imported';
11
+ }
3
12
  export async function show_skills_home_modal(ctx, managed_count, importable_count, active_profile) {
4
13
  return await show_picker_modal(ctx, {
5
14
  title: 'Skills',
@@ -8,175 +17,136 @@ export async function show_skills_home_modal(ctx, managed_count, importable_coun
8
17
  {
9
18
  value: 'manage',
10
19
  label: 'Manage skills',
11
- description: 'Enable, disable, import, and sync skills',
12
- },
13
- {
14
- value: 'browse',
15
- label: 'Browse details',
16
- description: 'Open read-only detail views for discovered skills',
17
- },
18
- {
19
- value: 'import',
20
- label: 'Import skill',
21
- description: 'Copy an external skill into Pi-native storage',
20
+ description: 'Search and enable/disable managed skills',
22
21
  },
23
22
  {
24
- value: 'sync',
25
- label: 'Sync imported skill',
26
- description: 'Update an imported skill from its upstream source',
23
+ value: 'importable',
24
+ label: 'Importable skills',
25
+ description: 'Import external skills or sync imported copies',
27
26
  },
28
27
  {
29
28
  value: 'profiles',
30
29
  label: 'Profiles',
31
- description: 'Create and switch named skill sets',
30
+ description: 'Switch profiles and edit profile rules',
32
31
  },
33
32
  {
34
33
  value: 'refresh',
35
34
  label: 'Refresh discovery',
36
35
  description: 'Rescan managed and importable skills',
37
36
  },
38
- {
39
- value: 'defaults',
40
- label: 'Profile baseline',
41
- description: 'Choose whether this profile starts enabled or disabled',
42
- },
43
37
  ],
44
38
  footer: 'enter opens • esc close/back',
45
39
  });
46
40
  }
47
41
  export async function show_skills_manager_modal(ctx, mgr) {
48
42
  const discovered = sort_skills(mgr.discover());
49
- const importable = sort_skills(mgr.discover_importable());
50
- if (discovered.length === 0 && importable.length === 0) {
51
- ctx.ui.notify('No managed or importable skills found');
43
+ if (discovered.length === 0) {
44
+ ctx.ui.notify('No managed skills found');
52
45
  return false;
53
46
  }
54
47
  const initial_enabled = new Set(discovered
55
48
  .filter((skill) => skill.enabled)
56
49
  .map((skill) => skill.key));
57
50
  const current_enabled = new Set(initial_enabled);
58
- const queued_imports = new Set();
59
- let reload_notice = null;
60
- const managed_items = discovered.map(to_setting_item);
61
- const importable_items = importable.map((skill) => to_importable_setting_item(discovered, skill));
62
- const all_items = [];
63
- if (managed_items.length > 0) {
64
- all_items.push({
65
- id: '__header_managed__',
66
- label: `── Managed (${managed_items.length}) ──`,
67
- description: '',
68
- currentValue: '',
69
- });
70
- all_items.push(...managed_items);
71
- }
72
- if (importable_items.length > 0) {
73
- all_items.push({
74
- id: '__header_importable__',
75
- label: `── Importable (${importable_items.length}) ──`,
76
- description: '',
77
- currentValue: '',
78
- });
79
- all_items.push(...importable_items);
80
- }
81
- const metadata_by_id = new Map(all_items.map((item) => [item.id, item.description ?? '']));
82
- for (const item of all_items) {
83
- if (!item.id.startsWith('__header_'))
84
- item.description = '';
85
- }
86
- const managed_keys = new Set(discovered.map((skill) => skill.key));
87
- const importable_map = new Map(importable.map((skill) => [skill.key, skill]));
51
+ const items = discovered.map(to_setting_item);
52
+ const metadata_by_id = new Map(items.map((item) => [item.id, item.description ?? '']));
53
+ for (const item of items)
54
+ item.description = '';
88
55
  await show_settings_modal(ctx, {
89
- title: 'Skills',
56
+ title: 'Manage skills',
90
57
  subtitle: () => {
91
58
  const enabled = current_enabled.size;
92
59
  const disabled = discovered.length - enabled;
93
- const queued = queued_imports.size;
94
- const parts = [
95
- `profile ${mgr.get_active_profile()}`,
96
- `${enabled} enabled`,
97
- `${disabled} disabled`,
98
- ];
99
- if (importable.length > 0)
100
- parts.push(`${importable.length} importable`);
101
- if (queued > 0)
102
- parts.push(`${queued} queued for import`);
103
- return parts.join(' • ');
60
+ return `profile ${mgr.get_active_profile()} • ${enabled} enabled • ${disabled} disabled`;
104
61
  },
105
- items: all_items,
106
- max_visible: Math.min(Math.max(all_items.length + 4, 8), 12),
62
+ items,
63
+ max_visible: Math.min(Math.max(items.length + 4, 8), 12),
107
64
  enable_search: true,
108
65
  metadata: (item) => item ? metadata_by_id.get(item.id)?.split('\n') : undefined,
109
66
  on_change: (id, new_value) => {
110
- if (id.startsWith('__header_'))
111
- return;
112
- if (managed_keys.has(id)) {
113
- if (new_value === ENABLED) {
114
- current_enabled.add(id);
115
- mgr.enable(id);
116
- }
117
- else {
118
- current_enabled.delete(id);
119
- mgr.disable(id);
120
- }
121
- return;
67
+ if (new_value === ENABLED) {
68
+ current_enabled.add(id);
69
+ mgr.enable(id);
122
70
  }
123
- const import_skill = importable_map.get(id);
124
- if (!import_skill)
125
- return;
126
- const state = get_importable_state(discovered, import_skill);
127
- if (state.action === 'import') {
128
- if (new_value === ENABLED)
129
- queued_imports.add(id);
130
- else
131
- queued_imports.delete(id);
132
- return;
71
+ else {
72
+ current_enabled.delete(id);
73
+ mgr.disable(id);
74
+ }
75
+ },
76
+ });
77
+ if (!sets_equal(initial_enabled, current_enabled)) {
78
+ ctx.ui.notify('Reloading to apply updated skills...', 'info');
79
+ await ctx.reload();
80
+ return true;
81
+ }
82
+ return false;
83
+ }
84
+ export async function show_importable_skills_modal(ctx, mgr) {
85
+ while (true) {
86
+ const managed = sort_skills(mgr.discover());
87
+ const importable = sort_skills(mgr.discover_importable());
88
+ if (importable.length === 0) {
89
+ ctx.ui.notify('No importable skills found');
90
+ return false;
91
+ }
92
+ const selected = await show_picker_modal(ctx, {
93
+ title: 'Importable skills',
94
+ subtitle: `${importable.length} external skills • enter imports or syncs`,
95
+ items: importable.map((skill) => {
96
+ const state = get_importable_state(managed, skill);
97
+ return {
98
+ value: skill.key,
99
+ label: skill.name,
100
+ description: `${importable_action_label(state)} • ${skill.source} • ${skill.key}`,
101
+ };
102
+ }),
103
+ empty_message: 'No importable skills found',
104
+ });
105
+ if (!selected)
106
+ return false;
107
+ const skill = find_skill(importable, selected);
108
+ const state = get_importable_state(managed, skill);
109
+ if (state.action === 'import') {
110
+ try {
111
+ const result = mgr.import_skill(skill.key);
112
+ ctx.ui.notify(`Imported ${skill.name} to ${result.skillDir}. Reloading...`, 'info');
113
+ await ctx.reload();
114
+ return true;
133
115
  }
134
- if (state.action !== 'sync')
135
- return;
136
- const imported_skill = find_matching_imported_skill(discovered, import_skill);
116
+ catch (error) {
117
+ ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
118
+ }
119
+ continue;
120
+ }
121
+ if (state.action === 'sync') {
122
+ const imported_skill = find_matching_imported_skill(managed, skill);
137
123
  if (!imported_skill) {
138
- ctx.ui.notify(`Imported copy for ${import_skill.name} was not found`, 'warning');
139
- return;
124
+ ctx.ui.notify(`Imported copy for ${skill.name} was not found`, 'warning');
125
+ continue;
140
126
  }
141
127
  try {
142
128
  const result = mgr.sync_skill(imported_skill.key);
143
129
  if (result.changed) {
144
- reload_notice = `Synced ${import_skill.name}. Reloading...`;
130
+ ctx.ui.notify(`Synced ${skill.name}. Reloading...`, 'info');
131
+ await ctx.reload();
145
132
  return true;
146
133
  }
147
- ctx.ui.notify(`${import_skill.name} is already up to date.`, 'info');
148
- }
149
- catch (error) {
150
- ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
151
- }
152
- },
153
- });
154
- if (queued_imports.size > 0) {
155
- const imported_names = [];
156
- for (const key of queued_imports) {
157
- try {
158
- mgr.import_skill(key);
159
- imported_names.push(key);
134
+ await show_text_modal(ctx, {
135
+ title: 'Skill already up to date',
136
+ text: `${skill.name} is already up to date.`,
137
+ });
160
138
  }
161
139
  catch (error) {
162
140
  ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
163
141
  }
142
+ continue;
164
143
  }
165
- if (imported_names.length > 0) {
166
- reload_notice = `Imported ${imported_names.length} skill(s). Reloading...`;
167
- }
168
- }
169
- if (reload_notice) {
170
- ctx.ui.notify(reload_notice, 'info');
171
- await ctx.reload();
172
- return true;
173
- }
174
- if (!sets_equal(initial_enabled, current_enabled)) {
175
- ctx.ui.notify('Reloading to apply updated skills...', 'info');
176
- await ctx.reload();
177
- return true;
144
+ await show_text_modal(ctx, {
145
+ title: skill.name,
146
+ subtitle: importable_action_label(state),
147
+ text: state.detail,
148
+ });
178
149
  }
179
- return false;
180
150
  }
181
151
  export async function pick_skill(ctx, options) {
182
152
  return await show_picker_modal(ctx, {
@@ -223,18 +193,18 @@ export async function show_refresh_summary(ctx, mgr) {
223
193
  }
224
194
  export async function show_defaults_modal(ctx, mgr) {
225
195
  const selected = await show_picker_modal(ctx, {
226
- title: 'Skill profile baseline',
196
+ title: 'Default skill policy',
227
197
  subtitle: `Active profile: ${mgr.get_active_profile()}`,
228
198
  items: [
229
199
  {
230
200
  value: 'all-enabled',
231
- label: 'All enabled',
232
- description: 'This profile enables every matching skill',
201
+ label: 'Enable by default',
202
+ description: 'Start with matching skills enabled; exclude rules turn skills off',
233
203
  },
234
204
  {
235
205
  value: 'all-disabled',
236
- label: 'All disabled',
237
- description: 'This profile only enables explicit includes',
206
+ label: 'Disable by default',
207
+ description: 'Start with skills disabled; include rules turn skills on',
238
208
  },
239
209
  ],
240
210
  });
@@ -242,8 +212,8 @@ export async function show_defaults_modal(ctx, mgr) {
242
212
  return;
243
213
  mgr.set_defaults(selected);
244
214
  await show_text_modal(ctx, {
245
- title: 'Skill profile baseline updated',
246
- text: `Active profile baseline: ${selected}`,
215
+ title: 'Default skill policy updated',
216
+ text: `Active profile now starts from: ${selected}`,
247
217
  });
248
218
  }
249
219
  export async function pick_profile(ctx, mgr, title) {
@@ -276,13 +246,18 @@ export async function show_profiles_modal(ctx, mgr) {
276
246
  },
277
247
  {
278
248
  value: 'include',
279
- label: 'Enable skill/pattern',
280
- description: 'Enable matching skills in a profile',
249
+ label: 'Add include rule',
250
+ description: 'Turn on skills that match a profile pattern',
281
251
  },
282
252
  {
283
253
  value: 'exclude',
284
- label: 'Disable skill/pattern',
285
- description: 'Disable matching skills in a profile',
254
+ label: 'Add exclude rule',
255
+ description: 'Turn off skills that match a profile pattern',
256
+ },
257
+ {
258
+ value: 'defaults',
259
+ label: 'Default skill policy',
260
+ description: 'Choose the profile starting point before rules apply',
286
261
  },
287
262
  {
288
263
  value: 'show',
@@ -329,14 +304,14 @@ export async function show_profiles_modal(ctx, mgr) {
329
304
  }
330
305
  else if (selected === 'include' || selected === 'exclude') {
331
306
  const profile = await pick_profile(ctx, mgr, selected === 'include'
332
- ? 'Choose enable profile'
333
- : 'Choose disable profile');
307
+ ? 'Choose profile for include rule'
308
+ : 'Choose profile for exclude rule');
334
309
  if (!profile)
335
310
  continue;
336
311
  const pattern = await show_input_modal(ctx, {
337
312
  title: selected === 'include'
338
- ? 'Enable skill or pattern'
339
- : 'Disable skill or pattern',
313
+ ? 'Add include rule'
314
+ : 'Add exclude rule',
340
315
  subtitle: `Profile: ${profile}`,
341
316
  label: 'Skill name, key, or pattern',
342
317
  trim: true,
@@ -356,6 +331,9 @@ export async function show_profiles_modal(ctx, mgr) {
356
331
  ctx.ui.notify(error instanceof Error ? error.message : String(error), 'warning');
357
332
  }
358
333
  }
334
+ else if (selected === 'defaults') {
335
+ await show_defaults_modal(ctx, mgr);
336
+ }
359
337
  else if (selected === 'show') {
360
338
  const profile_name = await pick_profile(ctx, mgr, 'Show skill profile');
361
339
  const profile = mgr