@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/dist/config.js
CHANGED
|
@@ -1,30 +1,145 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
|
+
const DEFAULT_PROFILES = {
|
|
5
|
+
default: {
|
|
6
|
+
description: 'General-purpose skills profile.',
|
|
7
|
+
include: [],
|
|
8
|
+
exclude: [],
|
|
9
|
+
},
|
|
10
|
+
};
|
|
4
11
|
const DEFAULT_CONFIG = {
|
|
5
|
-
version:
|
|
12
|
+
version: 3,
|
|
6
13
|
enabled: {},
|
|
7
14
|
defaults: 'all-disabled',
|
|
15
|
+
current_profile: 'default',
|
|
16
|
+
profiles: DEFAULT_PROFILES,
|
|
8
17
|
};
|
|
9
18
|
export function get_config_path() {
|
|
10
19
|
const xdg = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
|
|
11
20
|
return join(xdg, 'my-pi', 'skills.json');
|
|
12
21
|
}
|
|
22
|
+
function string_array(value) {
|
|
23
|
+
if (!Array.isArray(value))
|
|
24
|
+
return undefined;
|
|
25
|
+
const values = value
|
|
26
|
+
.map((item) => (typeof item === 'string' ? item.trim() : ''))
|
|
27
|
+
.filter(Boolean);
|
|
28
|
+
return values.length ? [...new Set(values)] : undefined;
|
|
29
|
+
}
|
|
30
|
+
function normalize_profile(value) {
|
|
31
|
+
if (!value || typeof value !== 'object')
|
|
32
|
+
return {};
|
|
33
|
+
const parsed = value;
|
|
34
|
+
const description = typeof parsed.description === 'string' &&
|
|
35
|
+
parsed.description.trim()
|
|
36
|
+
? parsed.description.trim()
|
|
37
|
+
: undefined;
|
|
38
|
+
const extends_value = Array.isArray(parsed.extends)
|
|
39
|
+
? string_array(parsed.extends)
|
|
40
|
+
: typeof parsed.extends === 'string' && parsed.extends.trim()
|
|
41
|
+
? parsed.extends.trim()
|
|
42
|
+
: undefined;
|
|
43
|
+
const include = string_array(parsed.include);
|
|
44
|
+
const exclude = string_array(parsed.exclude);
|
|
45
|
+
const profile = {};
|
|
46
|
+
if (description)
|
|
47
|
+
profile.description = description;
|
|
48
|
+
if (extends_value)
|
|
49
|
+
profile.extends = extends_value;
|
|
50
|
+
if (include)
|
|
51
|
+
profile.include = include;
|
|
52
|
+
if (exclude)
|
|
53
|
+
profile.exclude = exclude;
|
|
54
|
+
return profile;
|
|
55
|
+
}
|
|
56
|
+
function normalize_profiles(value) {
|
|
57
|
+
if (!value || typeof value !== 'object') {
|
|
58
|
+
return structuredClone(DEFAULT_PROFILES);
|
|
59
|
+
}
|
|
60
|
+
const profiles = {};
|
|
61
|
+
for (const [name, profile] of Object.entries(value)) {
|
|
62
|
+
if (!safe_profile_name(name))
|
|
63
|
+
continue;
|
|
64
|
+
profiles[name] = normalize_profile(profile);
|
|
65
|
+
}
|
|
66
|
+
return Object.keys(profiles).length
|
|
67
|
+
? profiles
|
|
68
|
+
: structuredClone(DEFAULT_PROFILES);
|
|
69
|
+
}
|
|
70
|
+
function unique_push(values, value) {
|
|
71
|
+
if (!values.includes(value))
|
|
72
|
+
values.push(value);
|
|
73
|
+
}
|
|
74
|
+
function remove_value(values, value) {
|
|
75
|
+
return values.filter((item) => item !== value);
|
|
76
|
+
}
|
|
77
|
+
function normalize_enabled_map(value) {
|
|
78
|
+
if (!value || typeof value !== 'object')
|
|
79
|
+
return {};
|
|
80
|
+
return Object.fromEntries(Object.entries(value)
|
|
81
|
+
.filter((entry) => typeof entry[1] === 'boolean' && Boolean(entry[0].trim()))
|
|
82
|
+
.map(([key, enabled]) => [key.trim(), enabled]));
|
|
83
|
+
}
|
|
84
|
+
function migrate_legacy_enablement_to_default_profile(profiles, enabled, defaults) {
|
|
85
|
+
const migrated = { ...profiles };
|
|
86
|
+
const base_default = {
|
|
87
|
+
...DEFAULT_PROFILES.default,
|
|
88
|
+
...migrated.default,
|
|
89
|
+
};
|
|
90
|
+
let include = [...(base_default.include ?? [])];
|
|
91
|
+
let exclude = [...(base_default.exclude ?? [])];
|
|
92
|
+
if (defaults === 'all-enabled') {
|
|
93
|
+
unique_push(include, '*');
|
|
94
|
+
}
|
|
95
|
+
for (const [key, is_enabled] of Object.entries(enabled)) {
|
|
96
|
+
if (is_enabled) {
|
|
97
|
+
exclude = remove_value(exclude, key);
|
|
98
|
+
unique_push(include, key);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
include = remove_value(include, key);
|
|
102
|
+
unique_push(exclude, key);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
migrated.default = {
|
|
106
|
+
...base_default,
|
|
107
|
+
include,
|
|
108
|
+
exclude,
|
|
109
|
+
};
|
|
110
|
+
return migrated;
|
|
111
|
+
}
|
|
112
|
+
export function safe_profile_name(value) {
|
|
113
|
+
const trimmed = value.trim();
|
|
114
|
+
if (!trimmed || trimmed === '.' || trimmed === '..')
|
|
115
|
+
return undefined;
|
|
116
|
+
if (!/^[a-zA-Z0-9_.-]+$/.test(trimmed))
|
|
117
|
+
return undefined;
|
|
118
|
+
return trimmed;
|
|
119
|
+
}
|
|
13
120
|
export function load_skills_config() {
|
|
14
121
|
const path = get_config_path();
|
|
15
122
|
if (!existsSync(path))
|
|
16
|
-
return
|
|
123
|
+
return structuredClone(DEFAULT_CONFIG);
|
|
17
124
|
try {
|
|
18
125
|
const raw = readFileSync(path, 'utf-8');
|
|
19
126
|
const parsed = JSON.parse(raw);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
127
|
+
const enabled = normalize_enabled_map(parsed.enabled);
|
|
128
|
+
const defaults = parsed.defaults ?? 'all-disabled';
|
|
129
|
+
const profiles = migrate_legacy_enablement_to_default_profile(normalize_profiles(parsed.profiles), enabled, defaults);
|
|
130
|
+
const current_profile = safe_profile_name(parsed.current_profile ?? 'default');
|
|
131
|
+
const config = {
|
|
132
|
+
version: 3,
|
|
133
|
+
enabled: {},
|
|
134
|
+
defaults: 'all-disabled',
|
|
135
|
+
profiles,
|
|
24
136
|
};
|
|
137
|
+
if (current_profile)
|
|
138
|
+
config.current_profile = current_profile;
|
|
139
|
+
return config;
|
|
25
140
|
}
|
|
26
141
|
catch {
|
|
27
|
-
return
|
|
142
|
+
return structuredClone(DEFAULT_CONFIG);
|
|
28
143
|
}
|
|
29
144
|
}
|
|
30
145
|
export function save_skills_config(config) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAqB1C,MAAM,gBAAgB,GAAuC;IAC5D,OAAO,EAAE;QACR,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACX;CACD,CAAC;AAEF,MAAM,cAAc,GAAiB;IACpC,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,cAAc;IACxB,eAAe,EAAE,SAAS;IAC1B,QAAQ,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,UAAU,eAAe;IAC9B,MAAM,GAAG,GACR,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5D,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,WAAW,GAChB,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACtC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QACxB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAC3B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,IAAI,WAAW;QAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IACnD,IAAI,aAAa;QAAE,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;IACnD,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IACvC,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IACvC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAC1B,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAuC,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,KAAgC,CAChC,EAAE,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;QAClC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,MAAgB,EAAE,KAAa;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB,EAAE,KAAa;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAC7B,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC9C,MAAM,CACN,CAAC,KAAK,EAA8B,EAAE,CACrC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAC1D;SACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAChD,CAAC;AACH,CAAC;AAED,SAAS,4CAA4C,CACpD,QAA4C,EAC5C,OAAgC,EAChC,QAA4B;IAE5B,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG;QACpB,GAAG,gBAAgB,CAAC,OAAO;QAC3B,GAAG,QAAQ,CAAC,OAAO;KACnB,CAAC;IACF,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG;QAClB,GAAG,YAAY;QACf,OAAO;QACP,OAAO;KACP,CAAC;IACF,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;QAClD,OAAO,SAAS,CAAC;IAClB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB;IACjC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC;IAE9D,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACxD,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC;QACnD,MAAM,QAAQ,GAAG,4CAA4C,CAC5D,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EACnC,OAAO,EACP,QAAQ,CACR,CAAC;QACF,MAAM,eAAe,GAAG,iBAAiB,CACxC,MAAM,CAAC,eAAe,IAAI,SAAS,CACnC,CAAC;QACF,MAAM,MAAM,GAAiB;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,cAAc;YACxB,QAAQ;SACR,CAAC;QACF,IAAI,eAAe;YAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;QAC9D,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACtD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;QAC7D,IAAI,EAAE,KAAK;KACX,CAAC,CAAC;IACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAc;IAC1D,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,MAAoB,EACpB,GAAW;IAEX,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ExtensionAPI } from '@mariozechner/pi-coding-agent';
|
|
2
1
|
export { create_skills_manager } from './manager.js';
|
|
3
|
-
export type { ManagedSkill, SkillsManager } from './manager.js';
|
|
4
|
-
export default
|
|
2
|
+
export type { ManagedSkill, SkillProfile, SkillsManager, } from './manager.js';
|
|
3
|
+
export { default } from './commands.js';
|