skilld 1.6.2 → 1.7.1
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 +29 -20
- package/dist/_chunks/agent.mjs +14 -4
- package/dist/_chunks/agent.mjs.map +1 -1
- package/dist/_chunks/assemble.mjs +1 -1
- package/dist/_chunks/author-group.mjs +17 -0
- package/dist/_chunks/author-group.mjs.map +1 -0
- package/dist/_chunks/author.mjs +11 -12
- package/dist/_chunks/author.mjs.map +1 -1
- package/dist/_chunks/cache.mjs +12 -2
- package/dist/_chunks/cache.mjs.map +1 -1
- package/dist/_chunks/cache2.mjs +1 -1
- package/dist/_chunks/cli-helpers.mjs +4 -120
- package/dist/_chunks/cli-helpers.mjs.map +1 -1
- package/dist/_chunks/config.mjs +119 -27
- package/dist/_chunks/config.mjs.map +1 -1
- package/dist/_chunks/core.mjs +2 -2
- package/dist/_chunks/embedding-cache2.mjs +1 -1
- package/dist/_chunks/index.d.mts +4 -1
- package/dist/_chunks/index.d.mts.map +1 -1
- package/dist/_chunks/index3.d.mts +81 -78
- package/dist/_chunks/index3.d.mts.map +1 -1
- package/dist/_chunks/install.mjs +22 -34
- package/dist/_chunks/install.mjs.map +1 -1
- package/dist/_chunks/list.mjs +1 -1
- package/dist/_chunks/lockfile.mjs +5 -1
- package/dist/_chunks/lockfile.mjs.map +1 -1
- package/dist/_chunks/prefix.mjs +108 -0
- package/dist/_chunks/prefix.mjs.map +1 -0
- package/dist/_chunks/prepare.mjs +6 -2
- package/dist/_chunks/prepare.mjs.map +1 -1
- package/dist/_chunks/prepare2.mjs +4 -4
- package/dist/_chunks/prepare2.mjs.map +1 -1
- package/dist/_chunks/prompts.mjs +4 -237
- package/dist/_chunks/prompts.mjs.map +1 -1
- package/dist/_chunks/search-helpers.mjs +99 -0
- package/dist/_chunks/search-helpers.mjs.map +1 -0
- package/dist/_chunks/search-interactive.mjs +2 -2
- package/dist/_chunks/search-interactive.mjs.map +1 -1
- package/dist/_chunks/search.mjs +219 -1
- package/dist/_chunks/search.mjs.map +1 -0
- package/dist/_chunks/skill.mjs +329 -0
- package/dist/_chunks/skill.mjs.map +1 -0
- package/dist/_chunks/skills.mjs +2 -2
- package/dist/_chunks/sources.mjs +1180 -987
- package/dist/_chunks/sources.mjs.map +1 -1
- package/dist/_chunks/sync-registry.mjs +59 -0
- package/dist/_chunks/sync-registry.mjs.map +1 -0
- package/dist/_chunks/sync-shared2.mjs +14 -12
- package/dist/_chunks/sync-shared2.mjs.map +1 -1
- package/dist/_chunks/sync.mjs +253 -158
- package/dist/_chunks/sync.mjs.map +1 -1
- package/dist/_chunks/sync2.mjs +1 -1
- package/dist/_chunks/uninstall.mjs +5 -4
- package/dist/_chunks/uninstall.mjs.map +1 -1
- package/dist/_chunks/upload.mjs +152 -0
- package/dist/_chunks/upload.mjs.map +1 -0
- package/dist/_chunks/validate.mjs +1 -1
- package/dist/_chunks/version.mjs +30 -0
- package/dist/_chunks/version.mjs.map +1 -0
- package/dist/_chunks/wizard.mjs +3 -2
- package/dist/_chunks/wizard.mjs.map +1 -1
- package/dist/agent/index.d.mts +3 -1
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs +4 -3
- package/dist/cache/index.d.mts +2 -2
- package/dist/cache/index.mjs +3 -3
- package/dist/cli.mjs +48 -21
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -3
- package/dist/prepare.mjs +1 -1
- package/dist/sources/index.d.mts +2 -2
- package/dist/sources/index.mjs +2 -2
- package/dist/types.d.mts +2 -2
- package/package.json +12 -12
- package/dist/THIRD-PARTY-LICENSES.md +0 -38
- package/dist/_chunks/formatting.mjs +0 -82
- package/dist/_chunks/formatting.mjs.map +0 -1
- package/dist/_chunks/libs/@sinclair/typebox.mjs +0 -2304
- package/dist/_chunks/libs/@sinclair/typebox.mjs.map +0 -1
- package/dist/_chunks/rolldown-runtime.mjs +0 -11
- package/dist/_chunks/search2.mjs +0 -310
- package/dist/_chunks/search2.mjs.map +0 -1
package/dist/_chunks/config.mjs
CHANGED
|
@@ -1,30 +1,122 @@
|
|
|
1
|
+
import { n as yamlParseKV, r as yamlUnescape, t as yamlEscape } from "./yaml.mjs";
|
|
1
2
|
import { homedir } from "node:os";
|
|
2
|
-
import { join
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
3
|
+
import { join } from "pathe";
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
5
|
+
const defaultFeatures = {
|
|
6
|
+
search: true,
|
|
7
|
+
issues: true,
|
|
8
|
+
discussions: true,
|
|
9
|
+
releases: true
|
|
10
|
+
};
|
|
11
|
+
const CONFIG_DIR = join(homedir(), ".skilld");
|
|
12
|
+
const CONFIG_PATH = join(CONFIG_DIR, "config.yaml");
|
|
13
|
+
let configCache;
|
|
14
|
+
function hasConfig() {
|
|
15
|
+
return existsSync(CONFIG_PATH);
|
|
16
|
+
}
|
|
17
|
+
function hasCompletedWizard() {
|
|
18
|
+
if (!existsSync(CONFIG_PATH)) return false;
|
|
19
|
+
const config = readConfig();
|
|
20
|
+
return config.features !== void 0 || config.model !== void 0 || config.skipLlm !== void 0;
|
|
21
|
+
}
|
|
22
|
+
function readConfig() {
|
|
23
|
+
if (configCache) return {
|
|
24
|
+
...configCache,
|
|
25
|
+
features: configCache.features ? { ...configCache.features } : void 0,
|
|
26
|
+
projects: configCache.projects ? [...configCache.projects] : void 0
|
|
27
|
+
};
|
|
28
|
+
if (!existsSync(CONFIG_PATH)) return {};
|
|
29
|
+
const content = readFileSync(CONFIG_PATH, "utf-8");
|
|
30
|
+
const config = {};
|
|
31
|
+
let inBlock = null;
|
|
32
|
+
const projects = [];
|
|
33
|
+
const features = {};
|
|
34
|
+
for (const line of content.split("\n")) {
|
|
35
|
+
if (line.startsWith("projects:")) {
|
|
36
|
+
inBlock = "projects";
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (line.startsWith("features:")) {
|
|
40
|
+
inBlock = "features";
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (inBlock === "projects") {
|
|
44
|
+
if (line.startsWith(" - ")) {
|
|
45
|
+
projects.push(yamlUnescape(line.slice(4)));
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
inBlock = null;
|
|
49
|
+
}
|
|
50
|
+
if (inBlock === "features") {
|
|
51
|
+
const m = line.match(/^ {2}(\w+):\s*(.+)/);
|
|
52
|
+
if (m) {
|
|
53
|
+
const key = m[1];
|
|
54
|
+
if (key in defaultFeatures) features[key] = m[2] === "true";
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
inBlock = null;
|
|
58
|
+
}
|
|
59
|
+
const kv = yamlParseKV(line);
|
|
60
|
+
if (!kv) continue;
|
|
61
|
+
const [key, value] = kv;
|
|
62
|
+
if (key === "model" && value) config.model = value;
|
|
63
|
+
if (key === "agent" && value) config.agent = value;
|
|
64
|
+
if (key === "skipLlm") config.skipLlm = value === "true";
|
|
65
|
+
}
|
|
66
|
+
if (projects.length > 0) config.projects = projects;
|
|
67
|
+
if (Object.keys(features).length > 0) config.features = {
|
|
68
|
+
...defaultFeatures,
|
|
69
|
+
...features
|
|
70
|
+
};
|
|
71
|
+
configCache = config;
|
|
72
|
+
return config;
|
|
73
|
+
}
|
|
74
|
+
function writeConfig(config) {
|
|
75
|
+
mkdirSync(CONFIG_DIR, {
|
|
76
|
+
recursive: true,
|
|
77
|
+
mode: 448
|
|
78
|
+
});
|
|
79
|
+
let yaml = "";
|
|
80
|
+
if (config.model) yaml += `model: ${config.model}\n`;
|
|
81
|
+
if (config.agent) yaml += `agent: ${config.agent}\n`;
|
|
82
|
+
if (config.skipLlm) yaml += `skipLlm: true\n`;
|
|
83
|
+
if (config.features) {
|
|
84
|
+
yaml += "features:\n";
|
|
85
|
+
for (const [k, v] of Object.entries(config.features)) yaml += ` ${k}: ${v}\n`;
|
|
86
|
+
}
|
|
87
|
+
if (config.projects?.length) {
|
|
88
|
+
yaml += "projects:\n";
|
|
89
|
+
for (const p of config.projects) yaml += ` - ${yamlEscape(p)}\n`;
|
|
90
|
+
}
|
|
91
|
+
writeFileSync(CONFIG_PATH, yaml, { mode: 384 });
|
|
92
|
+
configCache = void 0;
|
|
93
|
+
}
|
|
94
|
+
function updateConfig(updates) {
|
|
95
|
+
writeConfig({
|
|
96
|
+
...readConfig(),
|
|
97
|
+
...updates
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function registerProject(projectPath) {
|
|
101
|
+
const config = readConfig();
|
|
102
|
+
const projects = new Set(config.projects || []);
|
|
103
|
+
projects.add(projectPath);
|
|
104
|
+
writeConfig({
|
|
105
|
+
...config,
|
|
106
|
+
projects: [...projects]
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function unregisterProject(projectPath) {
|
|
110
|
+
const config = readConfig();
|
|
111
|
+
const projects = (config.projects || []).filter((p) => p !== projectPath);
|
|
112
|
+
writeConfig({
|
|
113
|
+
...config,
|
|
114
|
+
projects
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function getRegisteredProjects() {
|
|
118
|
+
return readConfig().projects || [];
|
|
119
|
+
}
|
|
120
|
+
export { readConfig as a, updateConfig as c, hasConfig as i, getRegisteredProjects as n, registerProject as o, hasCompletedWizard as r, unregisterProject as s, defaultFeatures as t };
|
|
29
121
|
|
|
30
122
|
//# sourceMappingURL=config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","names":[],"sources":["../../src/
|
|
1
|
+
{"version":3,"file":"config.mjs","names":[],"sources":["../../src/core/config.ts"],"sourcesContent":["import type { OptimizeModel } from '../agent/index.ts'\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'pathe'\nimport { yamlEscape, yamlParseKV, yamlUnescape } from './yaml.ts'\n\nexport interface FeaturesConfig {\n search: boolean\n issues: boolean\n discussions: boolean\n releases: boolean\n}\n\nexport const defaultFeatures: FeaturesConfig = {\n search: true,\n issues: true,\n discussions: true,\n releases: true,\n}\n\nexport interface SkilldConfig {\n model?: OptimizeModel\n agent?: string\n features?: FeaturesConfig\n projects?: string[]\n skipLlm?: boolean\n}\n\nconst CONFIG_DIR = join(homedir(), '.skilld')\nconst CONFIG_PATH = join(CONFIG_DIR, 'config.yaml')\n\nlet configCache: SkilldConfig | undefined\n\nexport function hasConfig(): boolean {\n return existsSync(CONFIG_PATH)\n}\n\n/** Whether the first-run wizard has been completed (not just agent selection) */\nexport function hasCompletedWizard(): boolean {\n if (!existsSync(CONFIG_PATH))\n return false\n const config = readConfig()\n return config.features !== undefined || config.model !== undefined || config.skipLlm !== undefined\n}\n\nexport function readConfig(): SkilldConfig {\n if (configCache) {\n return {\n ...configCache,\n features: configCache.features ? { ...configCache.features } : undefined,\n projects: configCache.projects ? [...configCache.projects] : undefined,\n }\n }\n if (!existsSync(CONFIG_PATH))\n return {}\n\n const content = readFileSync(CONFIG_PATH, 'utf-8')\n const config: SkilldConfig = {}\n let inBlock: 'projects' | 'features' | null = null\n const projects: string[] = []\n const features: Partial<FeaturesConfig> = {}\n\n for (const line of content.split('\\n')) {\n if (line.startsWith('projects:')) {\n inBlock = 'projects'\n continue\n }\n if (line.startsWith('features:')) {\n inBlock = 'features'\n continue\n }\n if (inBlock === 'projects') {\n if (line.startsWith(' - ')) {\n projects.push(yamlUnescape(line.slice(4)))\n continue\n }\n inBlock = null\n }\n if (inBlock === 'features') {\n const m = line.match(/^ {2}(\\w+):\\s*(.+)/)\n if (m) {\n const key = m[1] as keyof FeaturesConfig\n if (key in defaultFeatures)\n features[key] = m[2] === 'true'\n continue\n }\n inBlock = null\n }\n const kv = yamlParseKV(line)\n if (!kv)\n continue\n const [key, value] = kv\n if (key === 'model' && value)\n config.model = value as OptimizeModel\n if (key === 'agent' && value)\n config.agent = value\n if (key === 'skipLlm')\n config.skipLlm = value === 'true'\n }\n\n if (projects.length > 0)\n config.projects = projects\n if (Object.keys(features).length > 0)\n config.features = { ...defaultFeatures, ...features }\n configCache = config\n return config\n}\n\nexport function writeConfig(config: SkilldConfig): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 })\n\n let yaml = ''\n if (config.model)\n yaml += `model: ${config.model}\\n`\n if (config.agent)\n yaml += `agent: ${config.agent}\\n`\n if (config.skipLlm)\n yaml += `skipLlm: true\\n`\n if (config.features) {\n yaml += 'features:\\n'\n for (const [k, v] of Object.entries(config.features)) {\n yaml += ` ${k}: ${v}\\n`\n }\n }\n if (config.projects?.length) {\n yaml += 'projects:\\n'\n for (const p of config.projects) {\n yaml += ` - ${yamlEscape(p)}\\n`\n }\n }\n\n writeFileSync(CONFIG_PATH, yaml, { mode: 0o600 })\n configCache = undefined\n}\n\nexport function updateConfig(updates: Partial<SkilldConfig>): void {\n const config = readConfig()\n writeConfig({ ...config, ...updates })\n}\n\nexport function registerProject(projectPath: string): void {\n const config = readConfig()\n const projects = new Set(config.projects || [])\n projects.add(projectPath)\n writeConfig({ ...config, projects: [...projects] })\n}\n\nexport function unregisterProject(projectPath: string): void {\n const config = readConfig()\n const projects = (config.projects || []).filter(p => p !== projectPath)\n writeConfig({ ...config, projects })\n}\n\nexport function getRegisteredProjects(): string[] {\n return readConfig().projects || []\n}\n"],"mappings":"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"}
|
package/dist/_chunks/core.mjs
CHANGED
|
@@ -3,8 +3,8 @@ import "./sanitize.mjs";
|
|
|
3
3
|
import "./yaml.mjs";
|
|
4
4
|
import "./markdown.mjs";
|
|
5
5
|
import "./shared.mjs";
|
|
6
|
-
import "./
|
|
6
|
+
import "./skill.mjs";
|
|
7
|
+
import "./config.mjs";
|
|
7
8
|
import "./lockfile.mjs";
|
|
8
9
|
import "./skills.mjs";
|
|
9
|
-
import "./formatting.mjs";
|
|
10
10
|
export {};
|
package/dist/_chunks/index.d.mts
CHANGED
|
@@ -43,6 +43,9 @@ declare function linkShippedSkill(baseDir: string, skillName: string, targetDir:
|
|
|
43
43
|
* Check if package is cached at given version
|
|
44
44
|
*/
|
|
45
45
|
declare function isCached(name: string, version: string): boolean;
|
|
46
|
+
/** Check if cache only has docs/README.md (pkg/ already has this) */
|
|
47
|
+
declare function isReadmeOnlyCache(cacheDir: string): boolean;
|
|
48
|
+
declare function inferDocsTypeFromCache(cacheDir: string, source?: string): 'llms.txt' | 'readme' | 'docs';
|
|
46
49
|
/**
|
|
47
50
|
* Ensure cache directories exist
|
|
48
51
|
*/
|
|
@@ -144,5 +147,5 @@ declare function getCacheKey(name: string, version: string): string;
|
|
|
144
147
|
* Validates name/version to prevent path traversal.
|
|
145
148
|
*/
|
|
146
149
|
declare function getCacheDir(name: string, version: string): string;
|
|
147
|
-
export {
|
|
150
|
+
export { CACHE_DIR as A, ShippedSkill as C, CacheConfig as D, resolvePkgDir as E, REPOS_DIR as M, getPackageDbPath as N, CachedDoc as O, getRepoCacheDir as P, writeToRepoCache as S, linkShippedSkill as T, listReferenceFiles as _, clearCache as a, writeSections as b, hasShippedDocs as c, isReadmeOnlyCache as d, linkCachedDir as f, listCached as g, linkRepoCachedDir as h, clearAllCache as i, REFERENCES_DIR as j, CachedPackage as k, inferDocsTypeFromCache as l, linkPkgNamed as m, getCacheKey as n, ensureCacheDir as o, linkPkg as p, getVersionKey as r, getPkgKeyFiles as s, getCacheDir as t, isCached as u, readCachedDocs as v, getShippedSkills as w, writeToCache as x, readCachedSection as y };
|
|
148
151
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/cache/config.ts","../../src/cache/types.ts","../../src/core/prepare.ts","../../src/cache/storage.ts","../../src/cache/version.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/cache/config.ts","../../src/cache/types.ts","../../src/core/prepare.ts","../../src/cache/storage.ts","../../src/cache/version.ts"],"mappings":"AAQA;;;;cAAa,SAAA;AAGb;AAAA,cAAa,cAAA;;cAGA,SAAA;;iBAGG,eAAA,CAAgB,KAAA,UAAe,IAAA;;iBAO/B,gBAAA,CAAiB,IAAA,UAAc,OAAA;AAhB/C;;;AAAA,UCJiB,WAAA;EDIkC;ECFjD,IAAA;EDKyD;ECHzD,OAAA;AAAA;AAAA,UAGe,aAAA;EACf,IAAA;EACA,OAAA;EACA,GAAA;AAAA;AAAA,UAGe,SAAA;EACf,IAAA;EACA,OAAA;AAAA;;iBCEc,aAAA,CAAc,IAAA,UAAc,GAAA,UAAa,OAAA;AAAA,UAiDxC,YAAA;EACf,SAAA;EACA,QAAA;AAAA;;iBAIc,gBAAA,CAAiB,IAAA,UAAc,GAAA,UAAa,OAAA,YAAmB,YAAA;;iBAe/D,gBAAA,CAAiB,OAAA,UAAiB,SAAA,UAAmB,SAAA;;AFhFrE;;iBGoBgB,QAAA,CAAS,IAAA,UAAc,OAAA;;iBAKvB,iBAAA,CAAkB,QAAA;AAAA,iBAQlB,sBAAA,CAAuB,QAAA,UAAkB,MAAA;;;;iBASzC,cAAA,CAAA;AHpChB;;;AAAA,iBG4CgB,YAAA,CACd,IAAA,UACA,OAAA,UACA,IAAA,EAAM,SAAA;;AHxCR;;iBGyDgB,gBAAA,CACd,KAAA,UACA,IAAA,UACA,IAAA,EAAM,SAAA;;;;AFhFR;iBEkGgB,iBAAA,CAAkB,QAAA,UAAkB,KAAA,UAAe,IAAA,UAAc,MAAA;;;;AF3FjF;;;;;;iBEiHgB,aAAA,CAAc,QAAA,UAAkB,IAAA,UAAc,OAAA,UAAiB,MAAA;;ADvG/E;;;;;;;iBCoIgB,OAAA,CAAQ,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;ADnFrE;;;;;AAMA;iBCqGgB,YAAA,CAAa,QAAA,UAAkB,IAAA,UAAc,GAAA,UAAa,OAAA;;;;;iBAsB1D,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;;;AD5G1D;;;iBCmJgB,aAAA,CAAc,IAAA,UAAc,OAAA,UAAiB,QAAA,EAAU,KAAA;EAAQ,IAAA;EAAc,OAAA;AAAA;;;;iBAY7E,iBAAA,CAAkB,IAAA,UAAc,OAAA,UAAiB,IAAA;AAAA,iBAOjD,cAAA,CAAe,IAAA,UAAc,GAAA,UAAa,OAAA;;;;iBAiB1C,UAAA,CAAA,GAAc,aAAA;;;;iBAed,cAAA,CAAe,IAAA,UAAc,OAAA,WAAkB,SAAA;AArP/D;;;AAAA,iBAoRgB,UAAA,CAAW,IAAA,UAAc,OAAA;;AA3QzC;;iBAuRgB,aAAA,CAAA;;;AA/QhB;;iBA8RgB,kBAAA,CAAmB,QAAA,UAAkB,QAAA;AHnVrD;;;;;AAGA;iBIKgB,aAAA,CAAc,OAAA;;;;iBAOd,WAAA,CAAY,IAAA,UAAc,OAAA;;;;;iBAQ1B,WAAA,CAAY,IAAA,UAAc,OAAA"}
|
|
@@ -9,6 +9,84 @@ interface CachedDoc$1 {
|
|
|
9
9
|
* Returns CachedDoc[] with releases/blog-{version}.md files
|
|
10
10
|
*/
|
|
11
11
|
declare function fetchBlogReleases(packageName: string, installedVersion: string): Promise<CachedDoc$1[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Doc resolver types
|
|
14
|
+
*/
|
|
15
|
+
interface NpmPackageInfo {
|
|
16
|
+
name: string;
|
|
17
|
+
version?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
homepage?: string;
|
|
20
|
+
repository?: string | {
|
|
21
|
+
type: string;
|
|
22
|
+
url: string;
|
|
23
|
+
directory?: string;
|
|
24
|
+
};
|
|
25
|
+
readme?: string;
|
|
26
|
+
dependencies?: Record<string, string>;
|
|
27
|
+
devDependencies?: Record<string, string>;
|
|
28
|
+
peerDependencies?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
interface ResolvedPackage {
|
|
31
|
+
name: string;
|
|
32
|
+
version?: string;
|
|
33
|
+
/** ISO date string when this version was released */
|
|
34
|
+
releasedAt?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
/** Production dependencies with version specifiers */
|
|
37
|
+
dependencies?: Record<string, string>;
|
|
38
|
+
/** npm dist-tags with version and release date */
|
|
39
|
+
distTags?: Record<string, {
|
|
40
|
+
version: string;
|
|
41
|
+
releasedAt?: string;
|
|
42
|
+
}>;
|
|
43
|
+
docsUrl?: string;
|
|
44
|
+
llmsUrl?: string;
|
|
45
|
+
readmeUrl?: string;
|
|
46
|
+
repoUrl?: string;
|
|
47
|
+
/** Git docs folder - versioned docs from repo */
|
|
48
|
+
gitDocsUrl?: string;
|
|
49
|
+
/** Git tag/ref used for gitDocsUrl */
|
|
50
|
+
gitRef?: string;
|
|
51
|
+
/** True when gitRef is a branch fallback (no version tag found) */
|
|
52
|
+
gitDocsFallback?: boolean;
|
|
53
|
+
/** URL pattern to crawl for docs */
|
|
54
|
+
crawlUrl?: string;
|
|
55
|
+
}
|
|
56
|
+
interface LocalDependency {
|
|
57
|
+
name: string;
|
|
58
|
+
version: string;
|
|
59
|
+
}
|
|
60
|
+
interface LlmsContent {
|
|
61
|
+
raw: string;
|
|
62
|
+
/** Markdown links extracted from llms.txt */
|
|
63
|
+
links: LlmsLink[];
|
|
64
|
+
}
|
|
65
|
+
interface LlmsLink {
|
|
66
|
+
title: string;
|
|
67
|
+
url: string;
|
|
68
|
+
}
|
|
69
|
+
interface FetchedDoc {
|
|
70
|
+
url: string;
|
|
71
|
+
title: string;
|
|
72
|
+
content: string;
|
|
73
|
+
}
|
|
74
|
+
interface ResolveAttempt {
|
|
75
|
+
source: 'npm' | 'crates' | 'github-docs' | 'github-meta' | 'github-search' | 'llms.txt' | 'readme';
|
|
76
|
+
url?: string;
|
|
77
|
+
status: 'success' | 'not-found' | 'error';
|
|
78
|
+
message?: string;
|
|
79
|
+
}
|
|
80
|
+
interface ResolveResult {
|
|
81
|
+
package: ResolvedPackage | null;
|
|
82
|
+
attempts: ResolveAttempt[];
|
|
83
|
+
/** npm registry version, available even when doc resolution fails */
|
|
84
|
+
registryVersion?: string;
|
|
85
|
+
}
|
|
86
|
+
declare function resolveCrateDocsWithAttempts(crateName: string, options?: {
|
|
87
|
+
version?: string;
|
|
88
|
+
onProgress?: (message: string) => void;
|
|
89
|
+
}): Promise<ResolveResult>;
|
|
12
90
|
/**
|
|
13
91
|
* Website crawl doc source — fetches docs by crawling a URL pattern
|
|
14
92
|
*/
|
|
@@ -136,80 +214,6 @@ declare function parseSkillFrontmatterName(content: string): {
|
|
|
136
214
|
declare function fetchGitSkills(source: GitSkillSource, onProgress?: (msg: string) => void): Promise<{
|
|
137
215
|
skills: RemoteSkill[];
|
|
138
216
|
}>;
|
|
139
|
-
/**
|
|
140
|
-
* Doc resolver types
|
|
141
|
-
*/
|
|
142
|
-
interface NpmPackageInfo {
|
|
143
|
-
name: string;
|
|
144
|
-
version?: string;
|
|
145
|
-
description?: string;
|
|
146
|
-
homepage?: string;
|
|
147
|
-
repository?: string | {
|
|
148
|
-
type: string;
|
|
149
|
-
url: string;
|
|
150
|
-
directory?: string;
|
|
151
|
-
};
|
|
152
|
-
readme?: string;
|
|
153
|
-
dependencies?: Record<string, string>;
|
|
154
|
-
devDependencies?: Record<string, string>;
|
|
155
|
-
peerDependencies?: Record<string, string>;
|
|
156
|
-
}
|
|
157
|
-
interface ResolvedPackage {
|
|
158
|
-
name: string;
|
|
159
|
-
version?: string;
|
|
160
|
-
/** ISO date string when this version was released */
|
|
161
|
-
releasedAt?: string;
|
|
162
|
-
description?: string;
|
|
163
|
-
/** Production dependencies with version specifiers */
|
|
164
|
-
dependencies?: Record<string, string>;
|
|
165
|
-
/** npm dist-tags with version and release date */
|
|
166
|
-
distTags?: Record<string, {
|
|
167
|
-
version: string;
|
|
168
|
-
releasedAt?: string;
|
|
169
|
-
}>;
|
|
170
|
-
docsUrl?: string;
|
|
171
|
-
llmsUrl?: string;
|
|
172
|
-
readmeUrl?: string;
|
|
173
|
-
repoUrl?: string;
|
|
174
|
-
/** Git docs folder - versioned docs from repo */
|
|
175
|
-
gitDocsUrl?: string;
|
|
176
|
-
/** Git tag/ref used for gitDocsUrl */
|
|
177
|
-
gitRef?: string;
|
|
178
|
-
/** True when gitRef is a branch fallback (no version tag found) */
|
|
179
|
-
gitDocsFallback?: boolean;
|
|
180
|
-
/** URL pattern to crawl for docs */
|
|
181
|
-
crawlUrl?: string;
|
|
182
|
-
}
|
|
183
|
-
interface LocalDependency {
|
|
184
|
-
name: string;
|
|
185
|
-
version: string;
|
|
186
|
-
}
|
|
187
|
-
interface LlmsContent {
|
|
188
|
-
raw: string;
|
|
189
|
-
/** Markdown links extracted from llms.txt */
|
|
190
|
-
links: LlmsLink[];
|
|
191
|
-
}
|
|
192
|
-
interface LlmsLink {
|
|
193
|
-
title: string;
|
|
194
|
-
url: string;
|
|
195
|
-
}
|
|
196
|
-
interface FetchedDoc {
|
|
197
|
-
url: string;
|
|
198
|
-
title: string;
|
|
199
|
-
content: string;
|
|
200
|
-
}
|
|
201
|
-
interface ResolveAttempt {
|
|
202
|
-
source: 'npm' | 'github-docs' | 'github-meta' | 'github-search' | 'llms.txt' | 'readme';
|
|
203
|
-
url?: string;
|
|
204
|
-
status: 'success' | 'not-found' | 'error';
|
|
205
|
-
message?: string;
|
|
206
|
-
}
|
|
207
|
-
interface ResolveResult {
|
|
208
|
-
package: ResolvedPackage | null;
|
|
209
|
-
attempts: ResolveAttempt[];
|
|
210
|
-
/** npm registry version, available even when doc resolution fails */
|
|
211
|
-
registryVersion?: string;
|
|
212
|
-
}
|
|
213
217
|
/** Minimum git-doc file count to prefer over llms.txt */
|
|
214
218
|
declare const MIN_GIT_DOCS = 5;
|
|
215
219
|
/** True when git-docs exist but are too few to be useful (< MIN_GIT_DOCS) */
|
|
@@ -534,9 +538,6 @@ declare function generateReleaseIndex(releasesOrOpts: GitHubRelease[] | ReleaseI
|
|
|
534
538
|
* 2. If no releases found, try CHANGELOG.md as fallback
|
|
535
539
|
*/
|
|
536
540
|
declare function fetchReleaseNotes(owner: string, repo: string, installedVersion: string, gitRef?: string, packageName?: string, fromDate?: string, changelogRef?: string): Promise<CachedDoc[]>;
|
|
537
|
-
/**
|
|
538
|
-
* Shared utilities for doc resolution
|
|
539
|
-
*/
|
|
540
541
|
declare const $fetch: _$ofetch.$Fetch;
|
|
541
542
|
/**
|
|
542
543
|
* Fetch text content from URL
|
|
@@ -566,6 +567,8 @@ declare function parseGitHubUrl(url: string): {
|
|
|
566
567
|
owner: string;
|
|
567
568
|
repo: string;
|
|
568
569
|
} | null;
|
|
570
|
+
/** Parse owner/repo slug from GitHub URL */
|
|
571
|
+
declare function parseGitHubRepoSlug(url: string | undefined): string | undefined;
|
|
569
572
|
/**
|
|
570
573
|
* Normalize git repo URL to https
|
|
571
574
|
*/
|
|
@@ -582,5 +585,5 @@ declare function parsePackageSpec(spec: string): {
|
|
|
582
585
|
* Extract branch hint from URL fragment (e.g. "git+https://...#main" → "main")
|
|
583
586
|
*/
|
|
584
587
|
declare function extractBranchHint(url: string): string | undefined;
|
|
585
|
-
export {
|
|
588
|
+
export { fetchGitHubIssues as $, LocalPackageInfo as A, LlmsLink as At, readLocalPackageInfo as B, getCrawlUrl as C, formatDiscussionAsMarkdown as Ct, getRelatedPackages as D, resolveCrateDocsWithAttempts as Dt, getPrereleaseChangelogRef as E, toCrawlPattern as Et, fetchNpmRegistryMeta as F, ResolvedPackage as Ft, searchNpmPackages as G, resolveLocalPackageDocs as H, fetchPkgDist as I, fetchBlogReleases as It, fetchLlmsTxt as J, downloadLlmsDocs as K, getInstalledSkillVersion as L, ResolveStep as M, NpmPackageInfo as Mt, fetchLatestVersion as N, ResolveAttempt as Nt, getRepoEntry as O, FetchedDoc as Ot, fetchNpmPackage as P, ResolveResult as Pt, GitHubIssue as Q, parseVersionSpecifier as R, getBlogPreset as S, fetchGitHubDiscussions as St, getFilePatterns as T, fetchCrawledDocs as Tt, resolvePackageDocs as U, resolveInstalledVersion as V, resolvePackageDocsWithAttempts as W, normalizeLlmsLinks as X, fetchLlmsUrl as Y, parseMarkdownLinks as Z, isPrerelease as _, parseSkillFrontmatterName as _t, isGitHubRepoUrl as a, fetchGitDocs as at, BlogRelease as b, generateDocsIndex as bt, parseGitHubUrl as c, fetchReadmeContent as ct, GitHubRelease as d, resolveGitHubRepo as dt, formatIssueAsMarkdown as et, ReleaseIndexOptions as f, validateGitDocsWithLlms as ft, generateReleaseIndex as g, parseGitSkillInput as gt, fetchReleaseNotes as h, fetchGitSkills as ht, fetchText as i, MIN_GIT_DOCS as it, ResolveOptions as j, LocalDependency as jt, getRepoKeyForPackage as k, LlmsContent as kt, parsePackageSpec as l, filterFrameworkDocs as lt, compareSemver as m, RemoteSkill as mt, extractBranchHint as n, isGhAvailable as nt, normalizeRepoUrl as o, fetchGitHubRepoMeta as ot, SemVer as p, GitSkillSource as pt, extractSections as q, fetchGitHubRaw as r, GitDocsResult as rt, parseGitHubRepoSlug as s, fetchReadme as st, $fetch as t, generateIssueIndex as tt, verifyUrl as u, isShallowGitDocs as ut, parseSemver as v, EntryFile as vt, getDocOverride as w, generateDiscussionIndex as wt, DocOverride as x, GitHubDiscussion as xt, BlogPreset as y, resolveEntryFiles as yt, readLocalDependencies as z };
|
|
586
589
|
//# sourceMappingURL=index3.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.d.mts","names":[],"sources":["../../src/sources/blog-releases.ts","../../src/sources/
|
|
1
|
+
{"version":3,"file":"index3.d.mts","names":[],"sources":["../../src/sources/blog-releases.ts","../../src/sources/types.ts","../../src/sources/crates.ts","../../src/sources/crawl.ts","../../src/sources/discussions.ts","../../src/sources/docs.ts","../../src/sources/entries.ts","../../src/sources/git-skills.ts","../../src/sources/github.ts","../../src/sources/issues.ts","../../src/sources/llms.ts","../../src/sources/npm.ts","../../src/sources/package-registry.ts","../../src/sources/releases.ts","../../src/sources/utils.ts"],"mappings":"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"}
|
package/dist/_chunks/install.mjs
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as getModelLabel, r as createToolProgress, s as optimizeDocs } from "./agent.mjs";
|
|
2
|
+
import { c as getRepoCacheDir, s as getPackageDbPath, t as getCacheDir } from "./version.mjs";
|
|
2
3
|
import { i as readPackageJsonSafe } from "./package-json.mjs";
|
|
3
4
|
import { n as linkShippedSkill, r as resolvePkgDir, t as getShippedSkills } from "./prepare.mjs";
|
|
4
5
|
import { n as sanitizeMarkdown } from "./sanitize.mjs";
|
|
5
|
-
import { a as hasShippedDocs,
|
|
6
|
+
import { a as hasShippedDocs, c as isReadmeOnlyCache, d as linkPkgNamed, h as readCachedDocs, i as getPkgKeyFiles, m as listReferenceFiles, o as inferDocsTypeFromCache, r as ensureCacheDir, s as isCached, v as writeToCache } from "./cache.mjs";
|
|
6
7
|
import { r as createIndex, t as SearchDepsUnavailableError } from "./retriv.mjs";
|
|
7
8
|
import { n as getSharedSkillsDir } from "./shared.mjs";
|
|
8
|
-
import {
|
|
9
|
+
import { A as filterFrameworkDocs, E as fetchGitDocs, I as fetchLlmsTxt, P as downloadLlmsDocs, Q as fetchGitHubRaw, R as normalizeLlmsLinks, _ as resolveEntryFiles, d as resolvePackageDocs, j as isShallowGitDocs, k as fetchReadmeContent, m as fetchGitSkills, rt as parseGitHubUrl } from "./sources.mjs";
|
|
9
10
|
import { a as targets } from "./detect.mjs";
|
|
10
|
-
import {
|
|
11
|
-
import { a as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { _ as timedSpinner, n as writeGeneratedSkillMd, o as linkSkillToAgents, r as writeSkillMd } from "./skill.mjs";
|
|
12
|
+
import { a as readConfig, t as defaultFeatures } from "./config.mjs";
|
|
13
|
+
import { _ as promptForAgent, b as resolveAgent, x as sharedArgs } from "./cli-helpers.mjs";
|
|
14
|
+
import { a as readLock, c as writeLock, n as parsePackageNames, r as parsePackages, s as syncLockfilesToDirs, t as mergeLocks } from "./lockfile.mjs";
|
|
15
|
+
import { r as toStoragePackageName } from "./prefix.mjs";
|
|
15
16
|
import { S as writePromptFiles, a as classifyCachedDoc, b as selectLlmConfig, g as indexResources } from "./sync-shared2.mjs";
|
|
16
17
|
import { n as shutdownWorker } from "./pool2.mjs";
|
|
17
18
|
import "./sync.mjs";
|
|
@@ -47,7 +48,7 @@ async function installCommand(opts) {
|
|
|
47
48
|
const skillDir = join(skillsDir, name);
|
|
48
49
|
const referencesPath = join(skillDir, ".skilld");
|
|
49
50
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
50
|
-
if (!existsSync(skillDir) || !existsSync(skillMdPath) || !existsSync(referencesPath) || hasStaleReferences(referencesPath, info.packageName || name, info.version, features)) toRestore.push({
|
|
51
|
+
if (!existsSync(skillDir) || !existsSync(skillMdPath) || !existsSync(referencesPath) || hasStaleReferences(referencesPath, toStoragePackageName(info.packageName || name), info.version, features)) toRestore.push({
|
|
51
52
|
name,
|
|
52
53
|
info
|
|
53
54
|
});
|
|
@@ -62,7 +63,7 @@ async function installCommand(opts) {
|
|
|
62
63
|
const regenerated = [];
|
|
63
64
|
for (const { name, info } of toRestore) {
|
|
64
65
|
const version = info.version;
|
|
65
|
-
const pkgName = info.packageName || unsanitizeName(name, info.source);
|
|
66
|
+
const pkgName = toStoragePackageName(info.packageName || unsanitizeName(name, info.source));
|
|
66
67
|
if (info.source === "shipped") {
|
|
67
68
|
const match = getShippedSkills(pkgName, cwd, version).find((s) => s.skillName === name);
|
|
68
69
|
if (match) {
|
|
@@ -85,7 +86,7 @@ async function installCommand(opts) {
|
|
|
85
86
|
if (match) {
|
|
86
87
|
const skillDir = join(skillsDir, name);
|
|
87
88
|
mkdirSync(skillDir, { recursive: true });
|
|
88
|
-
|
|
89
|
+
writeSkillMd(skillDir, sanitizeMarkdown(match.content));
|
|
89
90
|
for (const f of match.files) {
|
|
90
91
|
const filePath = join(skillDir, f.path);
|
|
91
92
|
mkdirSync(dirname(filePath), { recursive: true });
|
|
@@ -105,7 +106,7 @@ async function installCommand(opts) {
|
|
|
105
106
|
mkdirSync(referencesPath, { recursive: true });
|
|
106
107
|
linkPkgSymlink(referencesPath, pkgName, cwd, version);
|
|
107
108
|
for (const pkg of parsePackages(info.packages)) linkPkgNamed(skillDir, pkg.name, cwd, pkg.version);
|
|
108
|
-
if (!pkgHasShippedDocs(pkgName, cwd, version) && !
|
|
109
|
+
if (!pkgHasShippedDocs(pkgName, cwd, version) && !isReadmeOnlyCache(globalCachePath)) {
|
|
109
110
|
const docsLink = join(referencesPath, "docs");
|
|
110
111
|
const cachedDocs = join(globalCachePath, "docs");
|
|
111
112
|
if (existsSync(docsLink)) unlinkSync(docsLink);
|
|
@@ -291,7 +292,7 @@ async function installCommand(opts) {
|
|
|
291
292
|
mkdirSync(referencesPath, { recursive: true });
|
|
292
293
|
linkPkgSymlink(referencesPath, pkgName, cwd, version);
|
|
293
294
|
for (const pkg of parsePackages(info.packages)) linkPkgNamed(skillDir, pkg.name, cwd, pkg.version);
|
|
294
|
-
if (!
|
|
295
|
+
if (!isReadmeOnlyCache(globalCachePath)) {
|
|
295
296
|
const docsLink = join(referencesPath, "docs");
|
|
296
297
|
const cachedDocsDir = join(globalCachePath, "docs");
|
|
297
298
|
if (existsSync(docsLink)) unlinkSync(docsLink);
|
|
@@ -391,12 +392,6 @@ function linkPkgSymlink(referencesDir, name, cwd, version) {
|
|
|
391
392
|
if (existsSync(pkgLink)) unlinkSync(pkgLink);
|
|
392
393
|
symlinkSync(pkgPath, pkgLink, "junction");
|
|
393
394
|
}
|
|
394
|
-
function isReadmeOnly(cacheDir) {
|
|
395
|
-
const docsDir = join(cacheDir, "docs");
|
|
396
|
-
if (!existsSync(docsDir)) return false;
|
|
397
|
-
const files = readdirSync(docsDir);
|
|
398
|
-
return files.length === 1 && files[0] === "README.md";
|
|
399
|
-
}
|
|
400
395
|
function pkgHasShippedDocs(name, cwd, version) {
|
|
401
396
|
const pkgPath = resolvePkgDir(name, cwd, version);
|
|
402
397
|
if (!pkgPath) return false;
|
|
@@ -442,12 +437,10 @@ async function enhanceRegenerated(pkgName, version, skillDir, model, sections, c
|
|
|
442
437
|
const pkgJsonResult = readPackageJsonSafe(join(pkgPath, "package.json"));
|
|
443
438
|
if (pkgJsonResult) description = pkgJsonResult.parsed.description;
|
|
444
439
|
}
|
|
445
|
-
|
|
446
|
-
if (existsSync(join(globalCachePath, "docs", "llms.txt"))) docsType = "llms.txt";
|
|
447
|
-
else if (isReadmeOnly(globalCachePath)) docsType = "readme";
|
|
440
|
+
const docsType = inferDocsTypeFromCache(globalCachePath);
|
|
448
441
|
const dirName = skillDir.split("/").pop();
|
|
449
|
-
const allPackages =
|
|
450
|
-
|
|
442
|
+
const allPackages = parsePackageNames(packages);
|
|
443
|
+
writeGeneratedSkillMd(skillDir, {
|
|
451
444
|
name: pkgName,
|
|
452
445
|
version,
|
|
453
446
|
description,
|
|
@@ -463,7 +456,6 @@ async function enhanceRegenerated(pkgName, version, skillDir, model, sections, c
|
|
|
463
456
|
packages: allPackages.length > 1 ? allPackages : void 0,
|
|
464
457
|
features
|
|
465
458
|
});
|
|
466
|
-
writeFileSync(join(skillDir, "SKILL.md"), skillMd);
|
|
467
459
|
} else llmLog.message("Enhancement skipped");
|
|
468
460
|
}
|
|
469
461
|
const installCommandDef = defineCommand({
|
|
@@ -491,8 +483,7 @@ const installCommandDef = defineCommand({
|
|
|
491
483
|
}
|
|
492
484
|
});
|
|
493
485
|
function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, source, packages) {
|
|
494
|
-
|
|
495
|
-
if (existsSync(skillMdPath)) return false;
|
|
486
|
+
if (existsSync(join(skillDir, "SKILL.md"))) return false;
|
|
496
487
|
const pkgPath = resolvePkgDir(pkgName, cwd, version);
|
|
497
488
|
let description;
|
|
498
489
|
if (pkgPath) {
|
|
@@ -500,17 +491,16 @@ function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, s
|
|
|
500
491
|
if (pkgResult) description = pkgResult.parsed.description;
|
|
501
492
|
}
|
|
502
493
|
const globalCachePath = getCacheDir(pkgName, version);
|
|
503
|
-
|
|
504
|
-
if (source?.includes("llms.txt") || existsSync(join(globalCachePath, "docs", "llms.txt"))) docsType = "llms.txt";
|
|
505
|
-
else if (isReadmeOnly(globalCachePath)) docsType = "readme";
|
|
494
|
+
const docsType = inferDocsTypeFromCache(globalCachePath, source);
|
|
506
495
|
const feat = readConfig().features ?? defaultFeatures;
|
|
507
496
|
const hasIssues = feat.issues && existsSync(join(globalCachePath, "issues"));
|
|
508
497
|
const hasDiscussions = feat.discussions && existsSync(join(globalCachePath, "discussions"));
|
|
509
498
|
const hasReleases = feat.releases && existsSync(join(globalCachePath, "releases"));
|
|
510
499
|
const relatedSkills = allSkillNames.filter((n) => n !== pkgName);
|
|
511
500
|
const dirName = skillDir.split("/").pop();
|
|
512
|
-
const allPackages =
|
|
513
|
-
|
|
501
|
+
const allPackages = parsePackageNames(packages);
|
|
502
|
+
mkdirSync(skillDir, { recursive: true });
|
|
503
|
+
writeGeneratedSkillMd(skillDir, {
|
|
514
504
|
name: pkgName,
|
|
515
505
|
version,
|
|
516
506
|
description,
|
|
@@ -525,8 +515,6 @@ function regenerateBaseSkillMd(skillDir, pkgName, version, cwd, allSkillNames, s
|
|
|
525
515
|
packages: allPackages.length > 1 ? allPackages : void 0,
|
|
526
516
|
features: readConfig().features ?? defaultFeatures
|
|
527
517
|
});
|
|
528
|
-
mkdirSync(skillDir, { recursive: true });
|
|
529
|
-
writeFileSync(skillMdPath, content);
|
|
530
518
|
return true;
|
|
531
519
|
}
|
|
532
520
|
function hasStaleReferences(referencesPath, pkgName, version, features) {
|