overskill 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +121 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/bundle.d.ts +3 -0
  8. package/dist/commands/bundle.d.ts.map +1 -0
  9. package/dist/commands/bundle.js +58 -0
  10. package/dist/commands/bundle.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +109 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/delete.d.ts +3 -0
  16. package/dist/commands/delete.d.ts.map +1 -0
  17. package/dist/commands/delete.js +64 -0
  18. package/dist/commands/delete.js.map +1 -0
  19. package/dist/commands/diff.d.ts +3 -0
  20. package/dist/commands/diff.d.ts.map +1 -0
  21. package/dist/commands/diff.js +93 -0
  22. package/dist/commands/diff.js.map +1 -0
  23. package/dist/commands/edit.d.ts +3 -0
  24. package/dist/commands/edit.d.ts.map +1 -0
  25. package/dist/commands/edit.js +69 -0
  26. package/dist/commands/edit.js.map +1 -0
  27. package/dist/commands/import.d.ts +3 -0
  28. package/dist/commands/import.d.ts.map +1 -0
  29. package/dist/commands/import.js +514 -0
  30. package/dist/commands/import.js.map +1 -0
  31. package/dist/commands/info.d.ts +3 -0
  32. package/dist/commands/info.d.ts.map +1 -0
  33. package/dist/commands/info.js +89 -0
  34. package/dist/commands/info.js.map +1 -0
  35. package/dist/commands/init.d.ts +3 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +88 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/list.d.ts +3 -0
  40. package/dist/commands/list.d.ts.map +1 -0
  41. package/dist/commands/list.js +84 -0
  42. package/dist/commands/list.js.map +1 -0
  43. package/dist/commands/login.d.ts +3 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +143 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/new.d.ts +3 -0
  48. package/dist/commands/new.d.ts.map +1 -0
  49. package/dist/commands/new.js +262 -0
  50. package/dist/commands/new.js.map +1 -0
  51. package/dist/commands/publish.d.ts +3 -0
  52. package/dist/commands/publish.d.ts.map +1 -0
  53. package/dist/commands/publish.js +215 -0
  54. package/dist/commands/publish.js.map +1 -0
  55. package/dist/commands/push.d.ts +3 -0
  56. package/dist/commands/push.d.ts.map +1 -0
  57. package/dist/commands/push.js +151 -0
  58. package/dist/commands/push.js.map +1 -0
  59. package/dist/commands/registry.d.ts +3 -0
  60. package/dist/commands/registry.d.ts.map +1 -0
  61. package/dist/commands/registry.js +169 -0
  62. package/dist/commands/registry.js.map +1 -0
  63. package/dist/commands/remove.d.ts +3 -0
  64. package/dist/commands/remove.d.ts.map +1 -0
  65. package/dist/commands/remove.js +48 -0
  66. package/dist/commands/remove.js.map +1 -0
  67. package/dist/commands/search.d.ts +3 -0
  68. package/dist/commands/search.d.ts.map +1 -0
  69. package/dist/commands/search.js +48 -0
  70. package/dist/commands/search.js.map +1 -0
  71. package/dist/commands/sync.d.ts +3 -0
  72. package/dist/commands/sync.d.ts.map +1 -0
  73. package/dist/commands/sync.js +160 -0
  74. package/dist/commands/sync.js.map +1 -0
  75. package/dist/commands/update.d.ts +3 -0
  76. package/dist/commands/update.d.ts.map +1 -0
  77. package/dist/commands/update.js +130 -0
  78. package/dist/commands/update.js.map +1 -0
  79. package/dist/commands/validate.d.ts +3 -0
  80. package/dist/commands/validate.d.ts.map +1 -0
  81. package/dist/commands/validate.js +94 -0
  82. package/dist/commands/validate.js.map +1 -0
  83. package/dist/index.d.ts +3 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +56 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lib/api.d.ts +60 -0
  88. package/dist/lib/api.d.ts.map +1 -0
  89. package/dist/lib/api.js +340 -0
  90. package/dist/lib/api.js.map +1 -0
  91. package/dist/lib/auth.d.ts +78 -0
  92. package/dist/lib/auth.d.ts.map +1 -0
  93. package/dist/lib/auth.js +241 -0
  94. package/dist/lib/auth.js.map +1 -0
  95. package/dist/lib/config.d.ts +94 -0
  96. package/dist/lib/config.d.ts.map +1 -0
  97. package/dist/lib/config.js +294 -0
  98. package/dist/lib/config.js.map +1 -0
  99. package/dist/lib/editor.d.ts +6 -0
  100. package/dist/lib/editor.d.ts.map +1 -0
  101. package/dist/lib/editor.js +60 -0
  102. package/dist/lib/editor.js.map +1 -0
  103. package/dist/lib/fs.d.ts +74 -0
  104. package/dist/lib/fs.d.ts.map +1 -0
  105. package/dist/lib/fs.js +235 -0
  106. package/dist/lib/fs.js.map +1 -0
  107. package/dist/lib/index-gen.d.ts +18 -0
  108. package/dist/lib/index-gen.d.ts.map +1 -0
  109. package/dist/lib/index-gen.js +75 -0
  110. package/dist/lib/index-gen.js.map +1 -0
  111. package/dist/lib/local-registry/index.d.ts +15 -0
  112. package/dist/lib/local-registry/index.d.ts.map +1 -0
  113. package/dist/lib/local-registry/index.js +18 -0
  114. package/dist/lib/local-registry/index.js.map +1 -0
  115. package/dist/lib/local-registry/objects.d.ts +51 -0
  116. package/dist/lib/local-registry/objects.d.ts.map +1 -0
  117. package/dist/lib/local-registry/objects.js +148 -0
  118. package/dist/lib/local-registry/objects.js.map +1 -0
  119. package/dist/lib/local-registry/paths.d.ts +53 -0
  120. package/dist/lib/local-registry/paths.d.ts.map +1 -0
  121. package/dist/lib/local-registry/paths.js +85 -0
  122. package/dist/lib/local-registry/paths.js.map +1 -0
  123. package/dist/lib/local-registry/skills.d.ts +83 -0
  124. package/dist/lib/local-registry/skills.d.ts.map +1 -0
  125. package/dist/lib/local-registry/skills.js +261 -0
  126. package/dist/lib/local-registry/skills.js.map +1 -0
  127. package/dist/lib/local-registry/types.d.ts +79 -0
  128. package/dist/lib/local-registry/types.d.ts.map +1 -0
  129. package/dist/lib/local-registry/types.js +5 -0
  130. package/dist/lib/local-registry/types.js.map +1 -0
  131. package/dist/lib/local-registry/versions.d.ts +61 -0
  132. package/dist/lib/local-registry/versions.d.ts.map +1 -0
  133. package/dist/lib/local-registry/versions.js +163 -0
  134. package/dist/lib/local-registry/versions.js.map +1 -0
  135. package/dist/lib/lockfile.d.ts +38 -0
  136. package/dist/lib/lockfile.d.ts.map +1 -0
  137. package/dist/lib/lockfile.js +102 -0
  138. package/dist/lib/lockfile.js.map +1 -0
  139. package/dist/lib/meta-skill.d.ts +6 -0
  140. package/dist/lib/meta-skill.d.ts.map +1 -0
  141. package/dist/lib/meta-skill.js +72 -0
  142. package/dist/lib/meta-skill.js.map +1 -0
  143. package/dist/lib/semver.d.ts +63 -0
  144. package/dist/lib/semver.d.ts.map +1 -0
  145. package/dist/lib/semver.js +107 -0
  146. package/dist/lib/semver.js.map +1 -0
  147. package/dist/types.d.ts +147 -0
  148. package/dist/types.d.ts.map +1 -0
  149. package/dist/types.js +8 -0
  150. package/dist/types.js.map +1 -0
  151. package/package.json +57 -0
@@ -0,0 +1,241 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import * as os from "os";
4
+ /**
5
+ * Get the ~/.overskill directory path (cross-platform)
6
+ */
7
+ function getOverskillDir() {
8
+ return path.join(os.homedir(), ".overskill");
9
+ }
10
+ /**
11
+ * Get legacy config paths (from conf package)
12
+ * macOS: ~/Library/Preferences/overskill-nodejs/
13
+ * Linux: ~/.config/overskill/
14
+ * Windows: %APPDATA%/overskill-nodejs/
15
+ */
16
+ function getLegacyConfigPaths() {
17
+ const platform = os.platform();
18
+ const homeDir = os.homedir();
19
+ if (platform === "darwin") {
20
+ return [path.join(homeDir, "Library", "Preferences", "overskill-nodejs", "config.json")];
21
+ }
22
+ else if (platform === "win32") {
23
+ const appData = process.env.APPDATA || path.join(homeDir, "AppData", "Roaming");
24
+ return [path.join(appData, "overskill-nodejs", "config.json")];
25
+ }
26
+ else {
27
+ // Linux and other Unix-like systems
28
+ return [path.join(homeDir, ".config", "overskill", "config.json")];
29
+ }
30
+ }
31
+ /**
32
+ * Migrate config from legacy location to ~/.overskill/
33
+ * Called automatically on first read if new config doesn't exist
34
+ */
35
+ function migrateLegacyConfig() {
36
+ const newConfigPath = getConfigPath();
37
+ // Don't migrate if new config already exists
38
+ if (fs.existsSync(newConfigPath)) {
39
+ return;
40
+ }
41
+ // Check each legacy path
42
+ for (const legacyPath of getLegacyConfigPaths()) {
43
+ if (fs.existsSync(legacyPath)) {
44
+ try {
45
+ // Read legacy config
46
+ const legacyContent = fs.readFileSync(legacyPath, "utf-8");
47
+ const legacyConfig = JSON.parse(legacyContent);
48
+ // Write to new location
49
+ ensureOverskillDir();
50
+ fs.writeFileSync(newConfigPath, JSON.stringify(legacyConfig, null, 2), "utf-8");
51
+ console.log(`Migrated config from ${legacyPath} to ${newConfigPath}`);
52
+ return;
53
+ }
54
+ catch (error) {
55
+ console.error(`Failed to migrate config from ${legacyPath}:`, error);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Get the config file path (~/.overskill/config.json)
62
+ */
63
+ export function getConfigPath() {
64
+ return path.join(getOverskillDir(), "config.json");
65
+ }
66
+ /**
67
+ * Ensure the ~/.overskill directory exists
68
+ */
69
+ function ensureOverskillDir() {
70
+ const dir = getOverskillDir();
71
+ if (!fs.existsSync(dir)) {
72
+ fs.mkdirSync(dir, { recursive: true });
73
+ }
74
+ }
75
+ /**
76
+ * Read config from ~/.overskill/config.json
77
+ */
78
+ function readConfig() {
79
+ const configPath = getConfigPath();
80
+ // Migrate from legacy location if needed
81
+ if (!fs.existsSync(configPath)) {
82
+ migrateLegacyConfig();
83
+ }
84
+ // Read config if it exists
85
+ if (!fs.existsSync(configPath)) {
86
+ return {};
87
+ }
88
+ try {
89
+ const content = fs.readFileSync(configPath, "utf-8");
90
+ return JSON.parse(content);
91
+ }
92
+ catch (error) {
93
+ console.error(`Failed to read config from ${configPath}:`, error);
94
+ return {};
95
+ }
96
+ }
97
+ /**
98
+ * Write config to ~/.overskill/config.json
99
+ */
100
+ function writeConfig(config) {
101
+ ensureOverskillDir();
102
+ const configPath = getConfigPath();
103
+ try {
104
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
105
+ }
106
+ catch (error) {
107
+ console.error(`Failed to write config to ${configPath}:`, error);
108
+ throw error;
109
+ }
110
+ }
111
+ /**
112
+ * Get the API URL
113
+ */
114
+ export function getApiUrl() {
115
+ return readConfig().api_url;
116
+ }
117
+ /**
118
+ * Set the API URL
119
+ */
120
+ export function setApiUrl(url) {
121
+ const config = readConfig();
122
+ config.api_url = url;
123
+ writeConfig(config);
124
+ }
125
+ /**
126
+ * Get the web app URL
127
+ */
128
+ export function getWebAppUrl() {
129
+ return readConfig().web_app_url;
130
+ }
131
+ /**
132
+ * Set the web app URL
133
+ */
134
+ export function setWebAppUrl(url) {
135
+ const config = readConfig();
136
+ config.web_app_url = url;
137
+ writeConfig(config);
138
+ }
139
+ /**
140
+ * Get the access token
141
+ */
142
+ export function getAccessToken() {
143
+ return readConfig().access_token;
144
+ }
145
+ /**
146
+ * Get the refresh token
147
+ */
148
+ export function getRefreshToken() {
149
+ return readConfig().refresh_token;
150
+ }
151
+ /**
152
+ * Get token expiration time
153
+ */
154
+ export function getExpiresAt() {
155
+ return readConfig().expires_at;
156
+ }
157
+ /**
158
+ * Store authentication tokens
159
+ */
160
+ export function setTokens(accessToken, refreshToken, expiresIn) {
161
+ const config = readConfig();
162
+ config.access_token = accessToken;
163
+ config.refresh_token = refreshToken;
164
+ config.expires_at = Date.now() + expiresIn * 1000;
165
+ writeConfig(config);
166
+ }
167
+ /**
168
+ * Clear authentication tokens
169
+ */
170
+ export function clearTokens() {
171
+ const config = readConfig();
172
+ delete config.access_token;
173
+ delete config.refresh_token;
174
+ delete config.expires_at;
175
+ writeConfig(config);
176
+ }
177
+ /**
178
+ * Check if tokens are expired
179
+ */
180
+ export function isTokenExpired() {
181
+ const expiresAt = getExpiresAt();
182
+ if (!expiresAt)
183
+ return true;
184
+ // Add 60 second buffer
185
+ return Date.now() > expiresAt - 60000;
186
+ }
187
+ /**
188
+ * Check if user is logged in
189
+ */
190
+ export function isLoggedIn() {
191
+ return !!getAccessToken() && !!getRefreshToken();
192
+ }
193
+ /**
194
+ * Get preferred editor
195
+ */
196
+ export function getEditor() {
197
+ return (readConfig().editor || process.env.VISUAL || process.env.EDITOR || "vim");
198
+ }
199
+ /**
200
+ * Set preferred editor
201
+ */
202
+ export function setEditor(editor) {
203
+ const config = readConfig();
204
+ config.editor = editor;
205
+ writeConfig(config);
206
+ }
207
+ /**
208
+ * Get default install path
209
+ */
210
+ export function getDefaultInstallPath() {
211
+ return readConfig().install_path || ".skills";
212
+ }
213
+ /**
214
+ * Set default install path
215
+ */
216
+ export function setDefaultInstallPath(installPath) {
217
+ const config = readConfig();
218
+ config.install_path = installPath;
219
+ writeConfig(config);
220
+ }
221
+ /**
222
+ * Get a config value
223
+ */
224
+ export function get(key) {
225
+ return readConfig()[key];
226
+ }
227
+ /**
228
+ * Set a config value
229
+ */
230
+ export function set(key, value) {
231
+ const config = readConfig();
232
+ config[key] = value;
233
+ writeConfig(config);
234
+ }
235
+ /**
236
+ * Get all config
237
+ */
238
+ export function getAll() {
239
+ return readConfig();
240
+ }
241
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { SkillsConfig, SkillEntry, SkillSource, LocalSource, CloudSource } from '../types.js';
2
+ /**
3
+ * Find the project root by looking for .skills.yaml
4
+ */
5
+ export declare function findProjectRoot(): string | null;
6
+ /**
7
+ * Get the path to .skills.yaml
8
+ */
9
+ export declare function getConfigPath(): string;
10
+ /**
11
+ * Check if skills config exists
12
+ */
13
+ export declare function configExists(): boolean;
14
+ /**
15
+ * Read .skills.yaml config
16
+ */
17
+ export declare function readConfig(): SkillsConfig;
18
+ /**
19
+ * Write .skills.yaml config
20
+ */
21
+ export declare function writeConfig(config: SkillsConfig): void;
22
+ /**
23
+ * Add a source to the config
24
+ */
25
+ export declare function addSource(source: SkillSource): void;
26
+ /**
27
+ * Add a skill to the config
28
+ */
29
+ export declare function addSkill(skill: SkillEntry): void;
30
+ /**
31
+ * Remove a skill from the config
32
+ */
33
+ export declare function removeSkill(slug: string, source?: string): boolean;
34
+ /**
35
+ * Get the install path (absolute)
36
+ */
37
+ export declare function getInstallPath(): string;
38
+ /**
39
+ * Get a source by name
40
+ */
41
+ export declare function getSource(name: string): SkillSource | undefined;
42
+ /**
43
+ * Get the default source (prefer local, then first)
44
+ */
45
+ export declare function getDefaultSource(): SkillSource | undefined;
46
+ /**
47
+ * Get the first local source
48
+ */
49
+ export declare function getLocalSource(): LocalSource | undefined;
50
+ /**
51
+ * Get all cloud sources
52
+ */
53
+ export declare function getCloudSources(): CloudSource[];
54
+ /**
55
+ * Check if config has a local source
56
+ */
57
+ export declare function hasLocalSource(): boolean;
58
+ /**
59
+ * Check if config has any cloud sources
60
+ */
61
+ export declare function hasCloudSource(): boolean;
62
+ /**
63
+ * Find a skill in config
64
+ */
65
+ export declare function findSkill(slug: string): SkillEntry | undefined;
66
+ /**
67
+ * Get source for a skill entry (resolves default if not specified)
68
+ */
69
+ export declare function getSourceForSkill(skill: SkillEntry): SkillSource | undefined;
70
+ /**
71
+ * Create a default local source
72
+ */
73
+ export declare function createLocalSource(name?: string): LocalSource;
74
+ /**
75
+ * Create a cloud source
76
+ */
77
+ export declare function createCloudSource(name: string, registry: string, url: string): CloudSource;
78
+ /**
79
+ * Get registry slug from a source (only for cloud sources)
80
+ * Returns undefined for local sources
81
+ */
82
+ export declare function getSourceRegistry(source: SkillSource): string | undefined;
83
+ /**
84
+ * Get URL from a source (only for cloud sources)
85
+ * Returns undefined for local sources
86
+ */
87
+ export declare function getSourceUrl(source: SkillSource): string | undefined;
88
+ /**
89
+ * Require a cloud source or throw an error
90
+ * Used for operations that only work with cloud sources
91
+ */
92
+ export declare function requireCloudSource(source: SkillSource | undefined, operation: string): CloudSource;
93
+ export { isLocalSource, isCloudSource } from '../types.js';
94
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EAEZ,MAAM,aAAa,CAAC;AASrB;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAa/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAwCD;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAmBzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAQtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAYnD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAkBhD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBlE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAG/D;AAcD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,GAAG,SAAS,CAQ1D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAG/C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAG9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAK5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAKrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,WAAW,CAOb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAWlG;AAGD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,294 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as yaml from 'yaml';
4
+ import { isLocalSource, isCloudSource } from '../types.js';
5
+ const DEFAULT_CONFIG = {
6
+ sources: [],
7
+ install_path: '.skills',
8
+ skills: [],
9
+ };
10
+ /**
11
+ * Find the project root by looking for .skills.yaml
12
+ */
13
+ export function findProjectRoot() {
14
+ let currentDir = process.cwd();
15
+ const root = path.parse(currentDir).root;
16
+ while (currentDir !== root) {
17
+ const configPath = path.join(currentDir, '.skills.yaml');
18
+ if (fs.existsSync(configPath)) {
19
+ return currentDir;
20
+ }
21
+ currentDir = path.dirname(currentDir);
22
+ }
23
+ return null;
24
+ }
25
+ /**
26
+ * Get the path to .skills.yaml
27
+ */
28
+ export function getConfigPath() {
29
+ const projectRoot = findProjectRoot();
30
+ if (projectRoot) {
31
+ return path.join(projectRoot, '.skills.yaml');
32
+ }
33
+ return path.join(process.cwd(), '.skills.yaml');
34
+ }
35
+ /**
36
+ * Check if skills config exists
37
+ */
38
+ export function configExists() {
39
+ return fs.existsSync(getConfigPath());
40
+ }
41
+ /**
42
+ * Check if a source is in legacy format (has url/registry but no kind)
43
+ */
44
+ function isLegacySource(source) {
45
+ return (typeof source === 'object' &&
46
+ source !== null &&
47
+ 'name' in source &&
48
+ 'registry' in source &&
49
+ 'url' in source &&
50
+ !('kind' in source));
51
+ }
52
+ /**
53
+ * Convert a legacy source to cloud source
54
+ */
55
+ function convertLegacySource(legacy) {
56
+ return {
57
+ name: legacy.name,
58
+ kind: 'cloud',
59
+ registry: legacy.registry,
60
+ url: legacy.url,
61
+ };
62
+ }
63
+ /**
64
+ * Normalize sources (convert legacy format to new format)
65
+ */
66
+ function normalizeSources(sources) {
67
+ return sources.map((source) => {
68
+ if (isLegacySource(source)) {
69
+ return convertLegacySource(source);
70
+ }
71
+ return source;
72
+ });
73
+ }
74
+ /**
75
+ * Read .skills.yaml config
76
+ */
77
+ export function readConfig() {
78
+ const configPath = getConfigPath();
79
+ if (!fs.existsSync(configPath)) {
80
+ return { ...DEFAULT_CONFIG };
81
+ }
82
+ const content = fs.readFileSync(configPath, 'utf-8');
83
+ const parsed = yaml.parse(content);
84
+ // Normalize sources (handle legacy format)
85
+ const rawSources = parsed.sources || [];
86
+ const sources = normalizeSources(rawSources);
87
+ return {
88
+ sources,
89
+ install_path: parsed.install_path || '.skills',
90
+ skills: parsed.skills || [],
91
+ };
92
+ }
93
+ /**
94
+ * Write .skills.yaml config
95
+ */
96
+ export function writeConfig(config) {
97
+ const configPath = getConfigPath();
98
+ const content = yaml.stringify(config, {
99
+ lineWidth: 0,
100
+ defaultStringType: 'QUOTE_DOUBLE',
101
+ defaultKeyType: 'PLAIN',
102
+ });
103
+ fs.writeFileSync(configPath, content, 'utf-8');
104
+ }
105
+ /**
106
+ * Add a source to the config
107
+ */
108
+ export function addSource(source) {
109
+ const config = readConfig();
110
+ // Check if source already exists
111
+ const existingIndex = config.sources.findIndex((s) => s.name === source.name);
112
+ if (existingIndex >= 0) {
113
+ config.sources[existingIndex] = source;
114
+ }
115
+ else {
116
+ config.sources.push(source);
117
+ }
118
+ writeConfig(config);
119
+ }
120
+ /**
121
+ * Add a skill to the config
122
+ */
123
+ export function addSkill(skill) {
124
+ const config = readConfig();
125
+ // Normalize source to compare (use default if not specified)
126
+ const skillSource = skill.source || getDefaultSourceName(config);
127
+ // Check if skill already exists
128
+ const existingIndex = config.skills.findIndex((s) => s.slug === skill.slug && (s.source || getDefaultSourceName(config)) === skillSource);
129
+ if (existingIndex >= 0) {
130
+ config.skills[existingIndex] = skill;
131
+ }
132
+ else {
133
+ config.skills.push(skill);
134
+ }
135
+ writeConfig(config);
136
+ }
137
+ /**
138
+ * Remove a skill from the config
139
+ */
140
+ export function removeSkill(slug, source) {
141
+ const config = readConfig();
142
+ const initialLength = config.skills.length;
143
+ if (source) {
144
+ config.skills = config.skills.filter((s) => !(s.slug === slug && s.source === source));
145
+ }
146
+ else {
147
+ config.skills = config.skills.filter((s) => s.slug !== slug);
148
+ }
149
+ if (config.skills.length < initialLength) {
150
+ writeConfig(config);
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ /**
156
+ * Get the install path (absolute)
157
+ */
158
+ export function getInstallPath() {
159
+ const config = readConfig();
160
+ const projectRoot = findProjectRoot() || process.cwd();
161
+ return path.join(projectRoot, config.install_path);
162
+ }
163
+ /**
164
+ * Get a source by name
165
+ */
166
+ export function getSource(name) {
167
+ const config = readConfig();
168
+ return config.sources.find((s) => s.name === name);
169
+ }
170
+ /**
171
+ * Get the default source name from config
172
+ */
173
+ function getDefaultSourceName(config) {
174
+ // Prefer local source as default
175
+ const localSource = config.sources.find((s) => isLocalSource(s));
176
+ if (localSource)
177
+ return localSource.name;
178
+ // Fall back to first source
179
+ return config.sources[0]?.name;
180
+ }
181
+ /**
182
+ * Get the default source (prefer local, then first)
183
+ */
184
+ export function getDefaultSource() {
185
+ const config = readConfig();
186
+ // Prefer local source as default
187
+ const localSource = config.sources.find((s) => isLocalSource(s));
188
+ if (localSource)
189
+ return localSource;
190
+ // Fall back to first source
191
+ return config.sources[0];
192
+ }
193
+ /**
194
+ * Get the first local source
195
+ */
196
+ export function getLocalSource() {
197
+ const config = readConfig();
198
+ return config.sources.find((s) => isLocalSource(s));
199
+ }
200
+ /**
201
+ * Get all cloud sources
202
+ */
203
+ export function getCloudSources() {
204
+ const config = readConfig();
205
+ return config.sources.filter((s) => isCloudSource(s));
206
+ }
207
+ /**
208
+ * Check if config has a local source
209
+ */
210
+ export function hasLocalSource() {
211
+ const config = readConfig();
212
+ return config.sources.some((s) => isLocalSource(s));
213
+ }
214
+ /**
215
+ * Check if config has any cloud sources
216
+ */
217
+ export function hasCloudSource() {
218
+ const config = readConfig();
219
+ return config.sources.some((s) => isCloudSource(s));
220
+ }
221
+ /**
222
+ * Find a skill in config
223
+ */
224
+ export function findSkill(slug) {
225
+ const config = readConfig();
226
+ return config.skills.find((s) => s.slug === slug);
227
+ }
228
+ /**
229
+ * Get source for a skill entry (resolves default if not specified)
230
+ */
231
+ export function getSourceForSkill(skill) {
232
+ const config = readConfig();
233
+ const sourceName = skill.source || getDefaultSourceName(config);
234
+ if (!sourceName)
235
+ return undefined;
236
+ return config.sources.find((s) => s.name === sourceName);
237
+ }
238
+ /**
239
+ * Create a default local source
240
+ */
241
+ export function createLocalSource(name = 'local') {
242
+ return {
243
+ name,
244
+ kind: 'local',
245
+ };
246
+ }
247
+ /**
248
+ * Create a cloud source
249
+ */
250
+ export function createCloudSource(name, registry, url) {
251
+ return {
252
+ name,
253
+ kind: 'cloud',
254
+ registry,
255
+ url,
256
+ };
257
+ }
258
+ /**
259
+ * Get registry slug from a source (only for cloud sources)
260
+ * Returns undefined for local sources
261
+ */
262
+ export function getSourceRegistry(source) {
263
+ if (isCloudSource(source)) {
264
+ return source.registry;
265
+ }
266
+ return undefined;
267
+ }
268
+ /**
269
+ * Get URL from a source (only for cloud sources)
270
+ * Returns undefined for local sources
271
+ */
272
+ export function getSourceUrl(source) {
273
+ if (isCloudSource(source)) {
274
+ return source.url;
275
+ }
276
+ return undefined;
277
+ }
278
+ /**
279
+ * Require a cloud source or throw an error
280
+ * Used for operations that only work with cloud sources
281
+ */
282
+ export function requireCloudSource(source, operation) {
283
+ if (!source) {
284
+ throw new Error(`No source configured. Add a source in .skills.yaml`);
285
+ }
286
+ if (!isCloudSource(source)) {
287
+ throw new Error(`Operation '${operation}' requires a cloud source, but '${source.name}' is a local source. ` +
288
+ `Use a cloud source with --source or configure one in .skills.yaml`);
289
+ }
290
+ return source;
291
+ }
292
+ // Re-export type guards
293
+ export { isLocalSource, isCloudSource } from '../types.js';
294
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type EditorCommand = {
2
+ command: string;
3
+ args: string[];
4
+ };
5
+ export declare function parseEditorCommand(editor: string): EditorCommand;
6
+ //# sourceMappingURL=editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/lib/editor.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAUhE"}