skilld 0.10.1 → 0.11.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.
- package/dist/_chunks/detect-imports.mjs +12 -4
- package/dist/_chunks/detect-imports.mjs.map +1 -1
- package/dist/_chunks/markdown.mjs +76 -0
- package/dist/_chunks/markdown.mjs.map +1 -0
- package/dist/_chunks/npm.mjs +87 -32
- package/dist/_chunks/npm.mjs.map +1 -1
- package/dist/_chunks/package-registry.mjs +445 -0
- package/dist/_chunks/package-registry.mjs.map +1 -0
- package/dist/_chunks/utils.d.mts +16 -1
- package/dist/_chunks/utils.d.mts.map +1 -1
- package/dist/_chunks/yaml.mjs +1 -443
- package/dist/_chunks/yaml.mjs.map +1 -1
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs +1 -1
- package/dist/cli.mjs +43 -26
- package/dist/cli.mjs.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/retriv/index.d.mts.map +1 -1
- package/dist/retriv/index.mjs +1 -4
- package/dist/retriv/index.mjs.map +1 -1
- package/dist/sources/index.d.mts +2 -2
- package/dist/sources/index.mjs +4 -3
- package/package.json +8 -3
package/dist/_chunks/yaml.mjs
CHANGED
|
@@ -1,445 +1,3 @@
|
|
|
1
|
-
const REPO_REGISTRY = {
|
|
2
|
-
"vuejs/core": {
|
|
3
|
-
owner: "vuejs",
|
|
4
|
-
repo: "core",
|
|
5
|
-
docsRepo: "docs",
|
|
6
|
-
docsPath: "src",
|
|
7
|
-
homepage: "https://vuejs.org",
|
|
8
|
-
prereleaseChangelogRef: "minor",
|
|
9
|
-
packages: {
|
|
10
|
-
"vue": {
|
|
11
|
-
primary: true,
|
|
12
|
-
filePatterns: ["*.vue"],
|
|
13
|
-
rules: ["ALWAYS use `<script setup lang=\"ts\">`"]
|
|
14
|
-
},
|
|
15
|
-
"@vue/compiler-core": {},
|
|
16
|
-
"@vue/compiler-dom": {},
|
|
17
|
-
"@vue/reactivity": {},
|
|
18
|
-
"@vue/runtime-core": {},
|
|
19
|
-
"@vue/runtime-dom": {},
|
|
20
|
-
"@vue/shared": {}
|
|
21
|
-
},
|
|
22
|
-
blogReleases: [
|
|
23
|
-
{
|
|
24
|
-
version: "3.5",
|
|
25
|
-
url: "https://blog.vuejs.org/posts/vue-3-5",
|
|
26
|
-
date: "2024-09-01"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
version: "3.4",
|
|
30
|
-
url: "https://blog.vuejs.org/posts/vue-3-4",
|
|
31
|
-
date: "2023-12-28"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
version: "3.3",
|
|
35
|
-
url: "https://blog.vuejs.org/posts/vue-3-3",
|
|
36
|
-
date: "2023-05-11"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
version: "3.2",
|
|
40
|
-
url: "https://blog.vuejs.org/posts/vue-3-2",
|
|
41
|
-
date: "2021-08-05"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
version: "3.1",
|
|
45
|
-
url: "https://blog.vuejs.org/posts/vue-3-1",
|
|
46
|
-
date: "2021-06-07"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
version: "3.0",
|
|
50
|
-
url: "https://blog.vuejs.org/posts/vue-3-0",
|
|
51
|
-
date: "2020-09-18"
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
"tailwindlabs/tailwindcss": {
|
|
56
|
-
owner: "tailwindlabs",
|
|
57
|
-
repo: "tailwindcss",
|
|
58
|
-
docsRepo: "tailwindcss.com",
|
|
59
|
-
docsPath: "src/docs",
|
|
60
|
-
homepage: "https://tailwindcss.com",
|
|
61
|
-
packages: { tailwindcss: { primary: true } }
|
|
62
|
-
},
|
|
63
|
-
"withastro/astro": {
|
|
64
|
-
owner: "withastro",
|
|
65
|
-
repo: "astro",
|
|
66
|
-
docsRepo: "docs",
|
|
67
|
-
docsPath: "src/content/docs/en",
|
|
68
|
-
homepage: "https://docs.astro.build",
|
|
69
|
-
packages: { astro: {
|
|
70
|
-
primary: true,
|
|
71
|
-
filePatterns: ["*.astro"]
|
|
72
|
-
} }
|
|
73
|
-
},
|
|
74
|
-
"vueuse/vueuse": {
|
|
75
|
-
owner: "vueuse",
|
|
76
|
-
repo: "vueuse",
|
|
77
|
-
docsPath: "packages",
|
|
78
|
-
packages: { "@vueuse/core": { primary: true } }
|
|
79
|
-
},
|
|
80
|
-
"sveltejs/svelte": {
|
|
81
|
-
owner: "sveltejs",
|
|
82
|
-
repo: "svelte",
|
|
83
|
-
packages: { svelte: {
|
|
84
|
-
primary: true,
|
|
85
|
-
filePatterns: ["*.svelte"],
|
|
86
|
-
rules: ["ALWAYS use runes syntax ($state, $derived, $effect, $props)"]
|
|
87
|
-
} }
|
|
88
|
-
},
|
|
89
|
-
"solidjs/solid": {
|
|
90
|
-
owner: "solidjs",
|
|
91
|
-
repo: "solid",
|
|
92
|
-
packages: { "solid-js": {
|
|
93
|
-
primary: true,
|
|
94
|
-
filePatterns: ["*.jsx", "*.tsx"]
|
|
95
|
-
} }
|
|
96
|
-
},
|
|
97
|
-
"QwikDev/qwik": {
|
|
98
|
-
owner: "QwikDev",
|
|
99
|
-
repo: "qwik",
|
|
100
|
-
packages: { qwik: {
|
|
101
|
-
primary: true,
|
|
102
|
-
filePatterns: ["*.tsx"]
|
|
103
|
-
} }
|
|
104
|
-
},
|
|
105
|
-
"marko-js/marko": {
|
|
106
|
-
owner: "marko-js",
|
|
107
|
-
repo: "marko",
|
|
108
|
-
packages: { marko: {
|
|
109
|
-
primary: true,
|
|
110
|
-
filePatterns: ["*.marko"]
|
|
111
|
-
} }
|
|
112
|
-
},
|
|
113
|
-
"riot/riot": {
|
|
114
|
-
owner: "riot",
|
|
115
|
-
repo: "riot",
|
|
116
|
-
packages: { riot: {
|
|
117
|
-
primary: true,
|
|
118
|
-
filePatterns: ["*.riot"]
|
|
119
|
-
} }
|
|
120
|
-
},
|
|
121
|
-
"microsoft/TypeScript": {
|
|
122
|
-
owner: "microsoft",
|
|
123
|
-
repo: "TypeScript",
|
|
124
|
-
packages: { typescript: {
|
|
125
|
-
primary: true,
|
|
126
|
-
filePatterns: [
|
|
127
|
-
"*.ts",
|
|
128
|
-
"*.tsx",
|
|
129
|
-
"*.mts",
|
|
130
|
-
"*.cts"
|
|
131
|
-
]
|
|
132
|
-
} },
|
|
133
|
-
blogReleases: [
|
|
134
|
-
{
|
|
135
|
-
version: "6.0",
|
|
136
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/",
|
|
137
|
-
date: "2026-02-11",
|
|
138
|
-
title: "Announcing TypeScript 6.0 Beta"
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
version: "5.9",
|
|
142
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/",
|
|
143
|
-
date: "2025-08-01",
|
|
144
|
-
title: "Announcing TypeScript 5.9"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
version: "5.8",
|
|
148
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/",
|
|
149
|
-
date: "2025-02-28",
|
|
150
|
-
title: "Announcing TypeScript 5.8"
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
version: "5.7",
|
|
154
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/",
|
|
155
|
-
date: "2024-11-22",
|
|
156
|
-
title: "Announcing TypeScript 5.7"
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
version: "5.6",
|
|
160
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/",
|
|
161
|
-
date: "2024-09-09",
|
|
162
|
-
title: "Announcing TypeScript 5.6"
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
version: "5.5",
|
|
166
|
-
url: "https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/",
|
|
167
|
-
date: "2024-06-20",
|
|
168
|
-
title: "Announcing TypeScript 5.5"
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
},
|
|
172
|
-
"jashkenas/coffeescript": {
|
|
173
|
-
owner: "jashkenas",
|
|
174
|
-
repo: "coffeescript",
|
|
175
|
-
packages: { coffeescript: {
|
|
176
|
-
primary: true,
|
|
177
|
-
filePatterns: ["*.coffee"]
|
|
178
|
-
} }
|
|
179
|
-
},
|
|
180
|
-
"gkz/LiveScript": {
|
|
181
|
-
owner: "gkz",
|
|
182
|
-
repo: "LiveScript",
|
|
183
|
-
packages: { livescript: {
|
|
184
|
-
primary: true,
|
|
185
|
-
filePatterns: ["*.ls"]
|
|
186
|
-
} }
|
|
187
|
-
},
|
|
188
|
-
"elm/compiler": {
|
|
189
|
-
owner: "elm",
|
|
190
|
-
repo: "compiler",
|
|
191
|
-
packages: { elm: {
|
|
192
|
-
primary: true,
|
|
193
|
-
filePatterns: ["*.elm"]
|
|
194
|
-
} }
|
|
195
|
-
},
|
|
196
|
-
"sass/dart-sass": {
|
|
197
|
-
owner: "sass",
|
|
198
|
-
repo: "dart-sass",
|
|
199
|
-
packages: { sass: {
|
|
200
|
-
primary: true,
|
|
201
|
-
filePatterns: ["*.scss", "*.sass"]
|
|
202
|
-
} }
|
|
203
|
-
},
|
|
204
|
-
"less/less.js": {
|
|
205
|
-
owner: "less",
|
|
206
|
-
repo: "less.js",
|
|
207
|
-
packages: { less: {
|
|
208
|
-
primary: true,
|
|
209
|
-
filePatterns: ["*.less"]
|
|
210
|
-
} }
|
|
211
|
-
},
|
|
212
|
-
"stylus/stylus": {
|
|
213
|
-
owner: "stylus",
|
|
214
|
-
repo: "stylus",
|
|
215
|
-
packages: { stylus: {
|
|
216
|
-
primary: true,
|
|
217
|
-
filePatterns: ["*.styl"]
|
|
218
|
-
} }
|
|
219
|
-
},
|
|
220
|
-
"postcss/postcss": {
|
|
221
|
-
owner: "postcss",
|
|
222
|
-
repo: "postcss",
|
|
223
|
-
packages: { postcss: {
|
|
224
|
-
primary: true,
|
|
225
|
-
filePatterns: ["*.css", "*.pcss"]
|
|
226
|
-
} }
|
|
227
|
-
},
|
|
228
|
-
"pugjs/pug": {
|
|
229
|
-
owner: "pugjs",
|
|
230
|
-
repo: "pug",
|
|
231
|
-
packages: { pug: {
|
|
232
|
-
primary: true,
|
|
233
|
-
filePatterns: ["*.pug"]
|
|
234
|
-
} }
|
|
235
|
-
},
|
|
236
|
-
"mde/ejs": {
|
|
237
|
-
owner: "mde",
|
|
238
|
-
repo: "ejs",
|
|
239
|
-
packages: { ejs: {
|
|
240
|
-
primary: true,
|
|
241
|
-
filePatterns: ["*.ejs"]
|
|
242
|
-
} }
|
|
243
|
-
},
|
|
244
|
-
"handlebars-lang/handlebars.js": {
|
|
245
|
-
owner: "handlebars-lang",
|
|
246
|
-
repo: "handlebars.js",
|
|
247
|
-
packages: { handlebars: {
|
|
248
|
-
primary: true,
|
|
249
|
-
filePatterns: ["*.hbs", "*.handlebars"]
|
|
250
|
-
} }
|
|
251
|
-
},
|
|
252
|
-
"janl/mustache.js": {
|
|
253
|
-
owner: "janl",
|
|
254
|
-
repo: "mustache.js",
|
|
255
|
-
packages: { mustache: {
|
|
256
|
-
primary: true,
|
|
257
|
-
filePatterns: ["*.mustache"]
|
|
258
|
-
} }
|
|
259
|
-
},
|
|
260
|
-
"mozilla/nunjucks": {
|
|
261
|
-
owner: "mozilla",
|
|
262
|
-
repo: "nunjucks",
|
|
263
|
-
packages: { nunjucks: {
|
|
264
|
-
primary: true,
|
|
265
|
-
filePatterns: ["*.njk"]
|
|
266
|
-
} }
|
|
267
|
-
},
|
|
268
|
-
"Shopify/liquid": {
|
|
269
|
-
owner: "Shopify",
|
|
270
|
-
repo: "liquid",
|
|
271
|
-
packages: { liquid: {
|
|
272
|
-
primary: true,
|
|
273
|
-
filePatterns: ["*.liquid"]
|
|
274
|
-
} }
|
|
275
|
-
},
|
|
276
|
-
"eemeli/yaml": {
|
|
277
|
-
owner: "eemeli",
|
|
278
|
-
repo: "yaml",
|
|
279
|
-
packages: { yaml: {
|
|
280
|
-
primary: true,
|
|
281
|
-
filePatterns: ["*.yaml", "*.yml"]
|
|
282
|
-
} }
|
|
283
|
-
},
|
|
284
|
-
"nodeca/js-yaml": {
|
|
285
|
-
owner: "nodeca",
|
|
286
|
-
repo: "js-yaml",
|
|
287
|
-
packages: { "js-yaml": {
|
|
288
|
-
primary: true,
|
|
289
|
-
filePatterns: ["*.yaml", "*.yml"]
|
|
290
|
-
} }
|
|
291
|
-
},
|
|
292
|
-
"BinaryMuse/toml-node": {
|
|
293
|
-
owner: "BinaryMuse",
|
|
294
|
-
repo: "toml-node",
|
|
295
|
-
packages: {
|
|
296
|
-
"toml": {
|
|
297
|
-
primary: true,
|
|
298
|
-
filePatterns: ["*.toml"]
|
|
299
|
-
},
|
|
300
|
-
"@iarna/toml": { filePatterns: ["*.toml"] }
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
"json5/json5": {
|
|
304
|
-
owner: "json5",
|
|
305
|
-
repo: "json5",
|
|
306
|
-
packages: { json5: {
|
|
307
|
-
primary: true,
|
|
308
|
-
filePatterns: ["*.json5"]
|
|
309
|
-
} }
|
|
310
|
-
},
|
|
311
|
-
"microsoft/node-jsonc-parser": {
|
|
312
|
-
owner: "microsoft",
|
|
313
|
-
repo: "node-jsonc-parser",
|
|
314
|
-
packages: { "jsonc-parser": {
|
|
315
|
-
primary: true,
|
|
316
|
-
filePatterns: ["*.jsonc"]
|
|
317
|
-
} }
|
|
318
|
-
},
|
|
319
|
-
"markdown-it/markdown-it": {
|
|
320
|
-
owner: "markdown-it",
|
|
321
|
-
repo: "markdown-it",
|
|
322
|
-
packages: { "markdown-it": {
|
|
323
|
-
primary: true,
|
|
324
|
-
filePatterns: ["*.md"]
|
|
325
|
-
} }
|
|
326
|
-
},
|
|
327
|
-
"markedjs/marked": {
|
|
328
|
-
owner: "markedjs",
|
|
329
|
-
repo: "marked",
|
|
330
|
-
packages: { marked: {
|
|
331
|
-
primary: true,
|
|
332
|
-
filePatterns: ["*.md"]
|
|
333
|
-
} }
|
|
334
|
-
},
|
|
335
|
-
"remarkjs/remark": {
|
|
336
|
-
owner: "remarkjs",
|
|
337
|
-
repo: "remark",
|
|
338
|
-
packages: { remark: {
|
|
339
|
-
primary: true,
|
|
340
|
-
filePatterns: ["*.md", "*.mdx"]
|
|
341
|
-
} }
|
|
342
|
-
},
|
|
343
|
-
"mdx-js/mdx": {
|
|
344
|
-
owner: "mdx-js",
|
|
345
|
-
repo: "mdx",
|
|
346
|
-
packages: { "@mdx-js/mdx": {
|
|
347
|
-
primary: true,
|
|
348
|
-
filePatterns: ["*.mdx"]
|
|
349
|
-
} }
|
|
350
|
-
},
|
|
351
|
-
"graphql/graphql-js": {
|
|
352
|
-
owner: "graphql",
|
|
353
|
-
repo: "graphql-js",
|
|
354
|
-
packages: {
|
|
355
|
-
"graphql": {
|
|
356
|
-
primary: true,
|
|
357
|
-
filePatterns: ["*.graphql", "*.gql"]
|
|
358
|
-
},
|
|
359
|
-
"graphql-tag": { filePatterns: ["*.graphql", "*.gql"] }
|
|
360
|
-
}
|
|
361
|
-
},
|
|
362
|
-
"dotansimha/graphql-code-generator": {
|
|
363
|
-
owner: "dotansimha",
|
|
364
|
-
repo: "graphql-code-generator",
|
|
365
|
-
packages: { "@graphql-codegen/cli": {
|
|
366
|
-
primary: true,
|
|
367
|
-
filePatterns: ["*.graphql", "*.gql"]
|
|
368
|
-
} }
|
|
369
|
-
},
|
|
370
|
-
"prisma/prisma": {
|
|
371
|
-
owner: "prisma",
|
|
372
|
-
repo: "prisma",
|
|
373
|
-
packages: {
|
|
374
|
-
"prisma": {
|
|
375
|
-
primary: true,
|
|
376
|
-
filePatterns: ["*.prisma"]
|
|
377
|
-
},
|
|
378
|
-
"@prisma/client": { filePatterns: ["*.prisma"] }
|
|
379
|
-
}
|
|
380
|
-
},
|
|
381
|
-
"nicolo-ribaudo/tc39-proposal-wasm-esm-integration": {
|
|
382
|
-
owner: "nicolo-ribaudo",
|
|
383
|
-
repo: "tc39-proposal-wasm-esm-integration",
|
|
384
|
-
packages: { "wasm-pack": {
|
|
385
|
-
primary: true,
|
|
386
|
-
filePatterns: ["*.wasm"]
|
|
387
|
-
} }
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
const PACKAGE_TO_REPO_MAP = {};
|
|
391
|
-
for (const [repoKey, entry] of Object.entries(REPO_REGISTRY)) for (const packageName of Object.keys(entry.packages)) PACKAGE_TO_REPO_MAP[packageName] = repoKey;
|
|
392
|
-
function getDocOverride(packageName) {
|
|
393
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
394
|
-
if (!repoKey) return void 0;
|
|
395
|
-
const entry = REPO_REGISTRY[repoKey];
|
|
396
|
-
if (!entry?.docsRepo && !entry?.docsPath) return void 0;
|
|
397
|
-
return {
|
|
398
|
-
owner: entry.owner,
|
|
399
|
-
repo: entry.docsRepo || entry.repo,
|
|
400
|
-
path: entry.docsPath || "",
|
|
401
|
-
ref: entry.docsRef,
|
|
402
|
-
homepage: entry.homepage
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
function getBlogPreset(packageName) {
|
|
406
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
407
|
-
if (!repoKey) return void 0;
|
|
408
|
-
const entry = REPO_REGISTRY[repoKey];
|
|
409
|
-
if (!entry?.blogReleases) return void 0;
|
|
410
|
-
return {
|
|
411
|
-
packageName,
|
|
412
|
-
releases: entry.blogReleases
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
|
-
function getFilePatterns(packageName) {
|
|
416
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
417
|
-
if (!repoKey) return void 0;
|
|
418
|
-
return REPO_REGISTRY[repoKey]?.packages[packageName]?.filePatterns;
|
|
419
|
-
}
|
|
420
|
-
function getRepoEntry(repoKey) {
|
|
421
|
-
return REPO_REGISTRY[repoKey];
|
|
422
|
-
}
|
|
423
|
-
function getRepoKeyForPackage(packageName) {
|
|
424
|
-
return PACKAGE_TO_REPO_MAP[packageName];
|
|
425
|
-
}
|
|
426
|
-
function getPackageRules(packageName) {
|
|
427
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
428
|
-
if (!repoKey) return [];
|
|
429
|
-
return REPO_REGISTRY[repoKey]?.packages[packageName]?.rules ?? [];
|
|
430
|
-
}
|
|
431
|
-
function getPrereleaseChangelogRef(packageName) {
|
|
432
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
433
|
-
if (!repoKey) return void 0;
|
|
434
|
-
return REPO_REGISTRY[repoKey]?.prereleaseChangelogRef;
|
|
435
|
-
}
|
|
436
|
-
function getRelatedPackages(packageName) {
|
|
437
|
-
const repoKey = PACKAGE_TO_REPO_MAP[packageName];
|
|
438
|
-
if (!repoKey) return [];
|
|
439
|
-
const entry = REPO_REGISTRY[repoKey];
|
|
440
|
-
if (!entry) return [];
|
|
441
|
-
return Object.keys(entry.packages);
|
|
442
|
-
}
|
|
443
1
|
const NEEDS_QUOTING = /[:"'\\\n\r\t#{}[\],&*!|>%@`]/;
|
|
444
2
|
function yamlEscape(value) {
|
|
445
3
|
if (!NEEDS_QUOTING.test(value)) return value;
|
|
@@ -461,6 +19,6 @@ function yamlParseKV(line) {
|
|
|
461
19
|
if (!key) return null;
|
|
462
20
|
return [key, yamlUnescape(rawValue)];
|
|
463
21
|
}
|
|
464
|
-
export {
|
|
22
|
+
export { yamlParseKV as n, yamlUnescape as r, yamlEscape as t };
|
|
465
23
|
|
|
466
24
|
//# sourceMappingURL=yaml.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.mjs","names":[],"sources":["../../src/sources/package-registry.ts","../../src/core/yaml.ts"],"sourcesContent":["/**\n * Unified package registry — single source of truth for package metadata.\n * Consolidates doc overrides, blog presets, and file patterns.\n * Keyed by GitHub 'owner/repo' (source code repo).\n */\n\nexport interface BlogRelease {\n version: string\n url: string\n date: string\n title?: string\n}\n\nexport interface PackageEntry {\n filePatterns?: string[]\n primary?: boolean\n /** Extra rules injected into skill generation prompts */\n rules?: string[]\n}\n\nexport interface RepoEntry {\n owner: string\n repo: string\n /** Separate docs repo name (e.g. 'docs' → owner/docs) */\n docsRepo?: string\n /** Path prefix to filter markdown files */\n docsPath?: string\n /** Branch/ref override */\n docsRef?: string\n /** Homepage URL */\n homepage?: string\n /** Branch to fetch CHANGELOG.md from when installed version is a prerelease (e.g. 'minor' for Vue) */\n prereleaseChangelogRef?: string\n /** Packages in this repo */\n packages: Record<string, PackageEntry>\n /** Curated blog release posts */\n blogReleases?: BlogRelease[]\n}\n\n// Backwards-compatible types\nexport interface DocOverride {\n owner: string\n repo: string\n path: string\n ref?: string\n homepage?: string\n}\n\nexport interface BlogPreset {\n packageName: string\n releases: BlogRelease[]\n}\n\n// ── Registry ──\n\nconst REPO_REGISTRY: Record<string, RepoEntry> = {\n // ── Frameworks with doc overrides ──\n\n 'vuejs/core': {\n owner: 'vuejs',\n repo: 'core',\n docsRepo: 'docs',\n docsPath: 'src',\n homepage: 'https://vuejs.org',\n prereleaseChangelogRef: 'minor',\n packages: {\n 'vue': { primary: true, filePatterns: ['*.vue'], rules: ['ALWAYS use `<script setup lang=\"ts\">`'] },\n '@vue/compiler-core': {},\n '@vue/compiler-dom': {},\n '@vue/reactivity': {},\n '@vue/runtime-core': {},\n '@vue/runtime-dom': {},\n '@vue/shared': {},\n },\n blogReleases: [\n { version: '3.5', url: 'https://blog.vuejs.org/posts/vue-3-5', date: '2024-09-01' },\n { version: '3.4', url: 'https://blog.vuejs.org/posts/vue-3-4', date: '2023-12-28' },\n { version: '3.3', url: 'https://blog.vuejs.org/posts/vue-3-3', date: '2023-05-11' },\n { version: '3.2', url: 'https://blog.vuejs.org/posts/vue-3-2', date: '2021-08-05' },\n { version: '3.1', url: 'https://blog.vuejs.org/posts/vue-3-1', date: '2021-06-07' },\n { version: '3.0', url: 'https://blog.vuejs.org/posts/vue-3-0', date: '2020-09-18' },\n ],\n },\n\n 'tailwindlabs/tailwindcss': {\n owner: 'tailwindlabs',\n repo: 'tailwindcss',\n docsRepo: 'tailwindcss.com',\n docsPath: 'src/docs',\n homepage: 'https://tailwindcss.com',\n packages: {\n tailwindcss: { primary: true },\n },\n },\n\n 'withastro/astro': {\n owner: 'withastro',\n repo: 'astro',\n docsRepo: 'docs',\n docsPath: 'src/content/docs/en',\n homepage: 'https://docs.astro.build',\n packages: {\n astro: { primary: true, filePatterns: ['*.astro'] },\n },\n },\n\n 'vueuse/vueuse': {\n owner: 'vueuse',\n repo: 'vueuse',\n docsPath: 'packages',\n packages: {\n '@vueuse/core': { primary: true },\n },\n },\n\n // ── Frameworks (file patterns only) ──\n\n 'sveltejs/svelte': {\n owner: 'sveltejs',\n repo: 'svelte',\n packages: {\n svelte: { primary: true, filePatterns: ['*.svelte'], rules: ['ALWAYS use runes syntax ($state, $derived, $effect, $props)'] },\n },\n },\n\n 'solidjs/solid': {\n owner: 'solidjs',\n repo: 'solid',\n packages: {\n 'solid-js': { primary: true, filePatterns: ['*.jsx', '*.tsx'] },\n },\n },\n\n 'QwikDev/qwik': {\n owner: 'QwikDev',\n repo: 'qwik',\n packages: {\n qwik: { primary: true, filePatterns: ['*.tsx'] },\n },\n },\n\n 'marko-js/marko': {\n owner: 'marko-js',\n repo: 'marko',\n packages: {\n marko: { primary: true, filePatterns: ['*.marko'] },\n },\n },\n\n 'riot/riot': {\n owner: 'riot',\n repo: 'riot',\n packages: {\n riot: { primary: true, filePatterns: ['*.riot'] },\n },\n },\n\n // ── Languages/transpilers ──\n\n 'microsoft/TypeScript': {\n owner: 'microsoft',\n repo: 'TypeScript',\n packages: {\n typescript: { primary: true, filePatterns: ['*.ts', '*.tsx', '*.mts', '*.cts'] },\n },\n blogReleases: [\n { version: '6.0', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/', date: '2026-02-11', title: 'Announcing TypeScript 6.0 Beta' },\n { version: '5.9', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/', date: '2025-08-01', title: 'Announcing TypeScript 5.9' },\n { version: '5.8', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/', date: '2025-02-28', title: 'Announcing TypeScript 5.8' },\n { version: '5.7', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/', date: '2024-11-22', title: 'Announcing TypeScript 5.7' },\n { version: '5.6', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/', date: '2024-09-09', title: 'Announcing TypeScript 5.6' },\n { version: '5.5', url: 'https://devblogs.microsoft.com/typescript/announcing-typescript-5-5/', date: '2024-06-20', title: 'Announcing TypeScript 5.5' },\n ],\n },\n\n 'jashkenas/coffeescript': {\n owner: 'jashkenas',\n repo: 'coffeescript',\n packages: {\n coffeescript: { primary: true, filePatterns: ['*.coffee'] },\n },\n },\n\n 'gkz/LiveScript': {\n owner: 'gkz',\n repo: 'LiveScript',\n packages: {\n livescript: { primary: true, filePatterns: ['*.ls'] },\n },\n },\n\n 'elm/compiler': {\n owner: 'elm',\n repo: 'compiler',\n packages: {\n elm: { primary: true, filePatterns: ['*.elm'] },\n },\n },\n\n // ── CSS preprocessors ──\n\n 'sass/dart-sass': {\n owner: 'sass',\n repo: 'dart-sass',\n packages: {\n sass: { primary: true, filePatterns: ['*.scss', '*.sass'] },\n },\n },\n\n 'less/less.js': {\n owner: 'less',\n repo: 'less.js',\n packages: {\n less: { primary: true, filePatterns: ['*.less'] },\n },\n },\n\n 'stylus/stylus': {\n owner: 'stylus',\n repo: 'stylus',\n packages: {\n stylus: { primary: true, filePatterns: ['*.styl'] },\n },\n },\n\n 'postcss/postcss': {\n owner: 'postcss',\n repo: 'postcss',\n packages: {\n postcss: { primary: true, filePatterns: ['*.css', '*.pcss'] },\n },\n },\n\n // ── Template engines ──\n\n 'pugjs/pug': {\n owner: 'pugjs',\n repo: 'pug',\n packages: {\n pug: { primary: true, filePatterns: ['*.pug'] },\n },\n },\n\n 'mde/ejs': {\n owner: 'mde',\n repo: 'ejs',\n packages: {\n ejs: { primary: true, filePatterns: ['*.ejs'] },\n },\n },\n\n 'handlebars-lang/handlebars.js': {\n owner: 'handlebars-lang',\n repo: 'handlebars.js',\n packages: {\n handlebars: { primary: true, filePatterns: ['*.hbs', '*.handlebars'] },\n },\n },\n\n 'janl/mustache.js': {\n owner: 'janl',\n repo: 'mustache.js',\n packages: {\n mustache: { primary: true, filePatterns: ['*.mustache'] },\n },\n },\n\n 'mozilla/nunjucks': {\n owner: 'mozilla',\n repo: 'nunjucks',\n packages: {\n nunjucks: { primary: true, filePatterns: ['*.njk'] },\n },\n },\n\n 'Shopify/liquid': {\n owner: 'Shopify',\n repo: 'liquid',\n packages: {\n liquid: { primary: true, filePatterns: ['*.liquid'] },\n },\n },\n\n // ── Data formats ──\n\n 'eemeli/yaml': {\n owner: 'eemeli',\n repo: 'yaml',\n packages: {\n yaml: { primary: true, filePatterns: ['*.yaml', '*.yml'] },\n },\n },\n\n 'nodeca/js-yaml': {\n owner: 'nodeca',\n repo: 'js-yaml',\n packages: {\n 'js-yaml': { primary: true, filePatterns: ['*.yaml', '*.yml'] },\n },\n },\n\n 'BinaryMuse/toml-node': {\n owner: 'BinaryMuse',\n repo: 'toml-node',\n packages: {\n 'toml': { primary: true, filePatterns: ['*.toml'] },\n '@iarna/toml': { filePatterns: ['*.toml'] },\n },\n },\n\n 'json5/json5': {\n owner: 'json5',\n repo: 'json5',\n packages: {\n json5: { primary: true, filePatterns: ['*.json5'] },\n },\n },\n\n 'microsoft/node-jsonc-parser': {\n owner: 'microsoft',\n repo: 'node-jsonc-parser',\n packages: {\n 'jsonc-parser': { primary: true, filePatterns: ['*.jsonc'] },\n },\n },\n\n // ── Markdown ──\n\n 'markdown-it/markdown-it': {\n owner: 'markdown-it',\n repo: 'markdown-it',\n packages: {\n 'markdown-it': { primary: true, filePatterns: ['*.md'] },\n },\n },\n\n 'markedjs/marked': {\n owner: 'markedjs',\n repo: 'marked',\n packages: {\n marked: { primary: true, filePatterns: ['*.md'] },\n },\n },\n\n 'remarkjs/remark': {\n owner: 'remarkjs',\n repo: 'remark',\n packages: {\n remark: { primary: true, filePatterns: ['*.md', '*.mdx'] },\n },\n },\n\n 'mdx-js/mdx': {\n owner: 'mdx-js',\n repo: 'mdx',\n packages: {\n '@mdx-js/mdx': { primary: true, filePatterns: ['*.mdx'] },\n },\n },\n\n // ── GraphQL ──\n\n 'graphql/graphql-js': {\n owner: 'graphql',\n repo: 'graphql-js',\n packages: {\n 'graphql': { primary: true, filePatterns: ['*.graphql', '*.gql'] },\n 'graphql-tag': { filePatterns: ['*.graphql', '*.gql'] },\n },\n },\n\n 'dotansimha/graphql-code-generator': {\n owner: 'dotansimha',\n repo: 'graphql-code-generator',\n packages: {\n '@graphql-codegen/cli': { primary: true, filePatterns: ['*.graphql', '*.gql'] },\n },\n },\n\n // ── Other ──\n\n 'prisma/prisma': {\n owner: 'prisma',\n repo: 'prisma',\n packages: {\n 'prisma': { primary: true, filePatterns: ['*.prisma'] },\n '@prisma/client': { filePatterns: ['*.prisma'] },\n },\n },\n\n 'nicolo-ribaudo/tc39-proposal-wasm-esm-integration': {\n owner: 'nicolo-ribaudo',\n repo: 'tc39-proposal-wasm-esm-integration',\n packages: {\n 'wasm-pack': { primary: true, filePatterns: ['*.wasm'] },\n },\n },\n}\n\n// ── Reverse index (auto-generated) ──\n\nconst PACKAGE_TO_REPO_MAP: Record<string, string> = {}\n\nfor (const [repoKey, entry] of Object.entries(REPO_REGISTRY)) {\n for (const packageName of Object.keys(entry.packages)) {\n PACKAGE_TO_REPO_MAP[packageName] = repoKey\n }\n}\n\n// ── Backwards-compatible helpers ──\n\nexport function getDocOverride(packageName: string): DocOverride | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n const entry = REPO_REGISTRY[repoKey]\n if (!entry?.docsRepo && !entry?.docsPath)\n return undefined\n\n return {\n owner: entry.owner,\n repo: entry.docsRepo || entry.repo,\n path: entry.docsPath || '',\n ref: entry.docsRef,\n homepage: entry.homepage,\n }\n}\n\nexport function getBlogPreset(packageName: string): BlogPreset | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n const entry = REPO_REGISTRY[repoKey]\n if (!entry?.blogReleases)\n return undefined\n\n return {\n packageName,\n releases: entry.blogReleases,\n }\n}\n\nexport function getFilePatterns(packageName: string): string[] | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n return REPO_REGISTRY[repoKey]?.packages[packageName]?.filePatterns\n}\n\n// ── New APIs ──\n\nexport function getRepoEntry(repoKey: string): RepoEntry | undefined {\n return REPO_REGISTRY[repoKey]\n}\n\nexport function getRepoKeyForPackage(packageName: string): string | undefined {\n return PACKAGE_TO_REPO_MAP[packageName]\n}\n\nexport function getPackageRules(packageName: string): string[] {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return []\n return REPO_REGISTRY[repoKey]?.packages[packageName]?.rules ?? []\n}\n\nexport function getPrereleaseChangelogRef(packageName: string): string | undefined {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return undefined\n return REPO_REGISTRY[repoKey]?.prereleaseChangelogRef\n}\n\nexport function getRelatedPackages(packageName: string): string[] {\n const repoKey = PACKAGE_TO_REPO_MAP[packageName]\n if (!repoKey)\n return []\n const entry = REPO_REGISTRY[repoKey]\n if (!entry)\n return []\n return Object.keys(entry.packages)\n}\n","/**\n * Minimal YAML value escaping/unescaping for our hand-rolled parsers.\n *\n * Handles the characters that break naive `:` splitting and quote stripping:\n * colons, quotes, newlines, backslashes.\n */\n\n/** Characters that require double-quoting in YAML values */\nconst NEEDS_QUOTING = /[:\"'\\\\\\n\\r\\t#{}[\\],&*!|>%@`]/\n\n/**\n * Escape a value for safe YAML emission. Always double-quotes if the value\n * contains any special characters; returns unquoted for simple values.\n */\nexport function yamlEscape(value: string): string {\n if (!NEEDS_QUOTING.test(value))\n return value\n // Escape backslashes first, then double quotes, then control chars\n const escaped = value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')\n return `\"${escaped}\"`\n}\n\n/**\n * Parse a raw YAML value string back to its actual value.\n * Handles double-quoted (with escapes), single-quoted, and unquoted values.\n */\nexport function yamlUnescape(raw: string): string {\n const trimmed = raw.trim()\n if (!trimmed)\n return ''\n\n // Double-quoted: process escape sequences\n if (trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1)\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\\\\\/g, '\\\\')\n }\n\n // Single-quoted: no escape processing, just strip quotes\n if (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))\n return trimmed.slice(1, -1)\n\n return trimmed\n}\n\n/**\n * Parse a YAML `key: value` line, correctly handling colons inside quoted values.\n * Returns [key, value] or null if not a valid KV line.\n */\nexport function yamlParseKV(line: string): [string, string] | null {\n const trimmed = line.trim()\n // Find the first `: ` or `:\\n` or `:$` — the YAML key-value separator\n const colonIdx = trimmed.indexOf(':')\n if (colonIdx === -1)\n return null\n const key = trimmed.slice(0, colonIdx).trim()\n const rawValue = trimmed.slice(colonIdx + 1)\n if (!key)\n return null\n return [key, yamlUnescape(rawValue)]\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yaml.mjs","names":[],"sources":["../../src/core/yaml.ts"],"sourcesContent":["/**\n * Minimal YAML value escaping/unescaping for our hand-rolled parsers.\n *\n * Handles the characters that break naive `:` splitting and quote stripping:\n * colons, quotes, newlines, backslashes.\n */\n\n/** Characters that require double-quoting in YAML values */\nconst NEEDS_QUOTING = /[:\"'\\\\\\n\\r\\t#{}[\\],&*!|>%@`]/\n\n/**\n * Escape a value for safe YAML emission. Always double-quotes if the value\n * contains any special characters; returns unquoted for simple values.\n */\nexport function yamlEscape(value: string): string {\n if (!NEEDS_QUOTING.test(value))\n return value\n // Escape backslashes first, then double quotes, then control chars\n const escaped = value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')\n return `\"${escaped}\"`\n}\n\n/**\n * Parse a raw YAML value string back to its actual value.\n * Handles double-quoted (with escapes), single-quoted, and unquoted values.\n */\nexport function yamlUnescape(raw: string): string {\n const trimmed = raw.trim()\n if (!trimmed)\n return ''\n\n // Double-quoted: process escape sequences\n if (trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1)\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\\\\\/g, '\\\\')\n }\n\n // Single-quoted: no escape processing, just strip quotes\n if (trimmed.startsWith('\\'') && trimmed.endsWith('\\''))\n return trimmed.slice(1, -1)\n\n return trimmed\n}\n\n/**\n * Parse a YAML `key: value` line, correctly handling colons inside quoted values.\n * Returns [key, value] or null if not a valid KV line.\n */\nexport function yamlParseKV(line: string): [string, string] | null {\n const trimmed = line.trim()\n // Find the first `: ` or `:\\n` or `:$` — the YAML key-value separator\n const colonIdx = trimmed.indexOf(':')\n if (colonIdx === -1)\n return null\n const key = trimmed.slice(0, colonIdx).trim()\n const rawValue = trimmed.slice(colonIdx + 1)\n if (!key)\n return null\n return [key, yamlUnescape(rawValue)]\n}\n"],"mappings":"AAQA,MAAM,gBAAgB;AAMtB,SAAgB,WAAW,OAAuB;AAChD,KAAI,CAAC,cAAc,KAAK,MAAM,CAC5B,QAAO;AAQT,QAAO,IANS,MACb,QAAQ,OAAO,OAAO,CACtB,QAAQ,MAAM,OAAM,CACpB,QAAQ,OAAO,MAAM,CACrB,QAAQ,OAAO,MAAM,CACrB,QAAQ,OAAO,MAAM,CACL;;AAOrB,SAAgB,aAAa,KAAqB;CAChD,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,QACH,QAAO;AAGT,KAAI,QAAQ,WAAW,KAAI,IAAI,QAAQ,SAAS,KAAI,CAClD,QAAO,QAAQ,MAAM,GAAG,GAAG,CACxB,QAAQ,QAAQ,KAAK,CACrB,QAAQ,QAAQ,KAAK,CACrB,QAAQ,QAAQ,IAAK,CACrB,QAAQ,QAAQ,KAAI,CACpB,QAAQ,SAAS,KAAK;AAI3B,KAAI,QAAQ,WAAW,IAAK,IAAI,QAAQ,SAAS,IAAK,CACpD,QAAO,QAAQ,MAAM,GAAG,GAAG;AAE7B,QAAO;;AAOT,SAAgB,YAAY,MAAuC;CACjE,MAAM,UAAU,KAAK,MAAM;CAE3B,MAAM,WAAW,QAAQ,QAAQ,IAAI;AACrC,KAAI,aAAa,GACf,QAAO;CACT,MAAM,MAAM,QAAQ,MAAM,GAAG,SAAS,CAAC,MAAM;CAC7C,MAAM,WAAW,QAAQ,MAAM,WAAW,EAAE;AAC5C,KAAI,CAAC,IACH,QAAO;AACT,QAAO,CAAC,KAAK,aAAa,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/core/config.ts","../../src/agent/prompts/optional/types.ts","../../src/agent/prompts/prompt.ts","../../src/agent/prompts/skill.ts","../../src/agent/types.ts","../../src/agent/clis/types.ts","../../src/agent/clis/index.ts","../../src/agent/detect-imports.ts","../../src/agent/detect.ts","../../src/agent/install.ts","../../src/agent/targets/types.ts","../../src/agent/targets/registry.ts"],"mappings":";UAMiB,cAAA;EACf,MAAA;EACA,MAAA;EACA,WAAA;EACA,QAAA;AAAA;;;UCuBe,YAAA;EACf,OAAA;EACA,IAAA;AAAA;;;KCzBU,YAAA;;cAGC,oBAAA,EAAsB,MAAA,CAAO,YAAA;;cAQ7B,mBAAA,EAAqB,YAAA;AAAA,UAEjB,uBAAA;EACf,WAAA;;EAEA,QAAA;EDOe;ECLf,OAAA;;EAEA,SAAA;EDKI;ECHJ,cAAA;;EAEA,WAAA;EAxBU;EA0BV,YAAA;;EAEA,QAAA;EA5BsB;EA8BtB,QAAA;EAtBD;EAwBC,cAAA;EA7BiC;EA+BjC,YAAA,GAAe,YAAA;EAvBJ;EAyBX,QAAA,GAAW,cAAA;;EAEX,mBAAA;EA3B4C;EA6B5C,QAAA;AAAA;;;;iBAwHc,kBAAA,CAAmB,IAAA,EAAM,uBAAA;EAA4B,OAAA,EAAS,YAAA;AAAA;;;;iBAqD9D,sBAAA,CAAuB,IAAA,EAAM,uBAAA;EAA4B,QAAA,EAAU,YAAA;AAAA,IAAmB,GAAA,CAAI,YAAA;;;UCrNzF,YAAA;EACf,IAAA;EACA,OAAA;EACA,UAAA;EHHA;EGKA,YAAA,GAAe,MAAA;EHLP;EGOR,QAAA,GAAW,MAAA;IAAiB,OAAA;IAAiB,UAAA;EAAA;EAC7C,KAAA;EACA,WAAA;EFeA;EEbA,IAAA;EACA,aAAA;EACA,SAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,cAAA;EDlBsB;ECoBtB,QAAA;EDZD;ECcC,WAAA;EDnBiC;ECqBjC,OAAA;EDbW;ECeX,QAAA,GAAW,KAAA;IAAQ,IAAA;EAAA;EDfyB;ECiB5C,OAAA;EDfsC;ECiBtC,QAAA,GAAW,cAAA;EDMc;ECJzB,KAAA;AAAA;AAAA,iBAGc,eAAA,CAAgB,IAAA,EAAM,YAAA;;;;AHvCtC;;KIFY,SAAA;AAAA,UAaK,aAAA;EACf,IAAA;EACA,OAAA;EJVA;EIYA,UAAA;EACA,WAAA;AAAA;;;KCGU,aAAA;AAAA,UAWK,SAAA;EACf,EAAA,EAAI,aAAA;EACJ,IAAA;EACA,IAAA;EACA,WAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,cAAA;EACf,KAAA;EACA,IAAA;EACA,IAAA;EACA,SAAA;EACA,OAAA,GAAU,YAAA;AAAA;AAAA,UAGK,mBAAA;EACf,WAAA;EACA,QAAA;EACA,KAAA,GAAQ,aAAA;EACR,OAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,QAAA;EACA,QAAA;EACA,cAAA;EACA,UAAA,IAAc,QAAA,EAAU,cAAA;EACxB,OAAA;EACA,OAAA;EACA,KAAA;EACA,OAAA;EHlBQ;EGoBR,QAAA,GAAW,YAAA;EHoGqB;EGlGhC,YAAA,GAAe,YAAA;EHkGyE;EGhGxF,QAAA,GAAW,cAAA;EHgGwD;EG9FnE,QAAA;AAAA;AAAA,UAGe,cAAA;EACf,SAAA;EACA,YAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;EACA,YAAA;EACA,KAAA;IAAU,WAAA;IAAqB,YAAA;IAAsB,WAAA;EAAA;EACrD,IAAA;EACA,YAAA;AAAA;;;UC3CQ,eAAA;EACR,OAAA,GAAU,GAAA;AAAA;;iBAII,kBAAA,CAAmB,GAAA,EAAK,eAAA,IAAmB,QAAA,EAAU,cAAA;AAAA,iBAkFrD,YAAA,CAAa,EAAA,EAAI,aAAA;AAAA,iBAIjB,aAAA,CAAc,EAAA,EAAI,aAAA;AAAA,iBAQZ,kBAAA,CAAA,GAAsB,OAAA,CAAJ,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/core/config.ts","../../src/agent/prompts/optional/types.ts","../../src/agent/prompts/prompt.ts","../../src/agent/prompts/skill.ts","../../src/agent/types.ts","../../src/agent/clis/types.ts","../../src/agent/clis/index.ts","../../src/agent/detect-imports.ts","../../src/agent/detect.ts","../../src/agent/install.ts","../../src/agent/targets/types.ts","../../src/agent/targets/registry.ts"],"mappings":"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"}
|
package/dist/agent/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../_chunks/chunk.mjs";
|
|
2
2
|
import "../_chunks/config.mjs";
|
|
3
3
|
import "../_chunks/storage.mjs";
|
|
4
|
-
import "../_chunks/
|
|
4
|
+
import "../_chunks/package-registry.mjs";
|
|
5
5
|
import { S as targets, a as getModelName, b as detectTargetAgent, c as computeSkillDirName, d as sanitizeName, f as unlinkSkillFromAgents, g as buildSectionPrompt, h as buildAllSectionPrompts, i as getModelLabel, l as installSkillForAgents, m as SECTION_OUTPUT_FILES, n as createToolProgress, o as optimizeDocs, p as SECTION_MERGE_ORDER, r as getAvailableModels, s as generateSkillMd, t as detectImportedPackages, u as linkSkillToAgents, x as getAgentVersion, y as detectInstalledAgents } from "../_chunks/detect-imports.mjs";
|
|
6
6
|
export { SECTION_MERGE_ORDER, SECTION_OUTPUT_FILES, targets as agents, buildAllSectionPrompts, buildSectionPrompt, computeSkillDirName, createToolProgress, detectImportedPackages, detectInstalledAgents, detectTargetAgent, generateSkillMd, getAgentVersion, getAvailableModels, getModelLabel, getModelName, installSkillForAgents, linkSkillToAgents, optimizeDocs, sanitizeName, unlinkSkillFromAgents };
|
package/dist/cli.mjs
CHANGED
|
@@ -3,10 +3,12 @@ import { t as __exportAll } from "./_chunks/chunk.mjs";
|
|
|
3
3
|
import { i as getCacheDir, n as REFERENCES_DIR, o as getVersionKey, r as getPackageDbPath, t as CACHE_DIR } from "./_chunks/config.mjs";
|
|
4
4
|
import { a as getShippedSkills, b as sanitizeMarkdown, c as linkCachedDir, d as linkShippedSkill, g as resolvePkgDir, i as getPkgKeyFiles, l as linkPkg, m as readCachedDocs, n as clearCache, o as hasShippedDocs, p as listReferenceFiles, r as ensureCacheDir, s as isCached, u as linkPkgNamed, v as writeToCache } from "./_chunks/storage.mjs";
|
|
5
5
|
import "./cache/index.mjs";
|
|
6
|
+
import { n as yamlParseKV, r as yamlUnescape, t as yamlEscape } from "./_chunks/yaml.mjs";
|
|
7
|
+
import { i as parseFrontmatter } from "./_chunks/markdown.mjs";
|
|
6
8
|
import { n as clearEmbeddingCache } from "./_chunks/embedding-cache.mjs";
|
|
7
9
|
import { closePool, createIndex, openPool, searchPooled, searchSnippets } from "./retriv/index.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import { $ as
|
|
10
|
+
import { a as getPrereleaseChangelogRef, t as getBlogPreset } from "./_chunks/package-registry.mjs";
|
|
11
|
+
import { $ as isGhAvailable, B as isPrerelease, E as normalizeLlmsLinks, F as generateDiscussionIndex, H as $fetch, I as fetchBlogReleases, J as parsePackageSpec, M as generateDocsIndex, N as fetchGitHubDiscussions, O as fetchGitSkills, P as formatDiscussionAsMarkdown, Q as generateIssueIndex, R as fetchReleaseNotes, S as downloadLlmsDocs, X as fetchGitHubIssues, Z as formatIssueAsMarkdown, b as resolveGitHubRepo, d as resolvePackageDocs, et as SHARED_SKILLS_DIR, f as resolvePackageDocsWithAttempts, h as fetchGitDocs, i as fetchPkgDist, j as resolveEntryFiles, k as parseGitSkillInput, n as fetchNpmPackage, nt as mapInsert, p as searchNpmPackages, q as parseGitHubUrl, r as fetchNpmRegistryMeta, rt as semverGt, s as readLocalDependencies, t as fetchLatestVersion, tt as getSharedSkillsDir, u as resolveLocalPackageDocs, v as fetchReadmeContent, w as fetchLlmsTxt, y as isShallowGitDocs, z as generateReleaseIndex } from "./_chunks/npm.mjs";
|
|
10
12
|
import "./sources/index.mjs";
|
|
11
13
|
import { S as targets, _ as maxItems, a as getModelName, b as detectTargetAgent, c as computeSkillDirName, d as sanitizeName, f as unlinkSkillFromAgents, i as getModelLabel, n as createToolProgress, o as optimizeDocs, r as getAvailableModels, s as generateSkillMd, t as detectImportedPackages, u as linkSkillToAgents, v as maxLines, x as getAgentVersion, y as detectInstalledAgents } from "./_chunks/detect-imports.mjs";
|
|
12
14
|
import "./agent/index.mjs";
|
|
@@ -337,26 +339,24 @@ function parsePackages(packages) {
|
|
|
337
339
|
function serializePackages(pkgs) {
|
|
338
340
|
return pkgs.map((p) => `${p.name}@${p.version}`).join(", ");
|
|
339
341
|
}
|
|
342
|
+
const SKILL_FM_KEYS = [
|
|
343
|
+
"packageName",
|
|
344
|
+
"version",
|
|
345
|
+
"packages",
|
|
346
|
+
"repo",
|
|
347
|
+
"source",
|
|
348
|
+
"syncedAt",
|
|
349
|
+
"generator",
|
|
350
|
+
"path",
|
|
351
|
+
"ref",
|
|
352
|
+
"commit"
|
|
353
|
+
];
|
|
340
354
|
function parseSkillFrontmatter(skillPath) {
|
|
341
355
|
if (!existsSync(skillPath)) return null;
|
|
342
|
-
const
|
|
343
|
-
if (
|
|
356
|
+
const fm = parseFrontmatter(readFileSync(skillPath, "utf-8"));
|
|
357
|
+
if (Object.keys(fm).length === 0) return null;
|
|
344
358
|
const info = {};
|
|
345
|
-
for (const
|
|
346
|
-
const kv = yamlParseKV(line);
|
|
347
|
-
if (!kv) continue;
|
|
348
|
-
const [key, value] = kv;
|
|
349
|
-
if (key === "packageName") info.packageName = value;
|
|
350
|
-
if (key === "version") info.version = value;
|
|
351
|
-
if (key === "packages") info.packages = value;
|
|
352
|
-
if (key === "repo") info.repo = value;
|
|
353
|
-
if (key === "source") info.source = value;
|
|
354
|
-
if (key === "syncedAt") info.syncedAt = value;
|
|
355
|
-
if (key === "generator") info.generator = value;
|
|
356
|
-
if (key === "path") info.path = value;
|
|
357
|
-
if (key === "ref") info.ref = value;
|
|
358
|
-
if (key === "commit") info.commit = value;
|
|
359
|
-
}
|
|
359
|
+
for (const key of SKILL_FM_KEYS) if (fm[key]) info[key] = fm[key];
|
|
360
360
|
return info;
|
|
361
361
|
}
|
|
362
362
|
function readLock(skillsDir) {
|
|
@@ -1070,6 +1070,13 @@ async function fetchAndCacheResources(opts) {
|
|
|
1070
1070
|
writeToCache(packageName, version, cachedDocs);
|
|
1071
1071
|
}
|
|
1072
1072
|
}
|
|
1073
|
+
if (docsType !== "readme" && cachedDocs.filter((d) => d.path.startsWith("docs/") && d.path.endsWith(".md")).length > 1) {
|
|
1074
|
+
const docsIndex = generateDocsIndex(cachedDocs);
|
|
1075
|
+
if (docsIndex) writeToCache(packageName, version, [{
|
|
1076
|
+
path: "docs/_INDEX.md",
|
|
1077
|
+
content: docsIndex
|
|
1078
|
+
}]);
|
|
1079
|
+
}
|
|
1073
1080
|
} else {
|
|
1074
1081
|
const detected = detectDocsType(packageName, version, resolved.repoUrl, resolved.llmsUrl);
|
|
1075
1082
|
docsType = detected.docsType;
|
|
@@ -1086,6 +1093,16 @@ async function fetchAndCacheResources(opts) {
|
|
|
1086
1093
|
}
|
|
1087
1094
|
});
|
|
1088
1095
|
}
|
|
1096
|
+
if (docsType !== "readme" && !existsSync(join(getCacheDir(packageName, version), "docs", "_INDEX.md"))) {
|
|
1097
|
+
const cached = readCachedDocs(packageName, version);
|
|
1098
|
+
if (cached.filter((d) => d.path.startsWith("docs/") && d.path.endsWith(".md")).length > 1) {
|
|
1099
|
+
const docsIndex = generateDocsIndex(cached);
|
|
1100
|
+
if (docsIndex) writeToCache(packageName, version, [{
|
|
1101
|
+
path: "docs/_INDEX.md",
|
|
1102
|
+
content: docsIndex
|
|
1103
|
+
}]);
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1089
1106
|
}
|
|
1090
1107
|
const cacheDir = getCacheDir(packageName, version);
|
|
1091
1108
|
const issuesDir = join(cacheDir, "issues");
|
|
@@ -1161,18 +1178,18 @@ async function fetchAndCacheResources(opts) {
|
|
|
1161
1178
|
const allDocs = [...releaseDocs, ...blogDocs];
|
|
1162
1179
|
const blogEntries = blogDocs.filter((d) => !d.path.endsWith("_INDEX.md")).map((d) => {
|
|
1163
1180
|
const versionMatch = d.path.match(/blog-(.+)\.md$/);
|
|
1164
|
-
const
|
|
1165
|
-
const dateMatch = d.content.match(/^date:\s*(.+)/m);
|
|
1181
|
+
const fm = parseFrontmatter(d.content);
|
|
1166
1182
|
return {
|
|
1167
1183
|
version: versionMatch?.[1] ?? "",
|
|
1168
|
-
title:
|
|
1169
|
-
date:
|
|
1184
|
+
title: fm.title ?? `Release ${versionMatch?.[1]}`,
|
|
1185
|
+
date: fm.date ?? ""
|
|
1170
1186
|
};
|
|
1171
1187
|
}).filter((b) => b.version);
|
|
1172
1188
|
const ghReleases = releaseDocs.filter((d) => d.path.startsWith("releases/") && !d.path.endsWith("CHANGELOG.md")).map((d) => {
|
|
1173
|
-
const
|
|
1174
|
-
const
|
|
1175
|
-
const
|
|
1189
|
+
const fm = parseFrontmatter(d.content);
|
|
1190
|
+
const tag = fm.tag ?? "";
|
|
1191
|
+
const name = fm.name ?? tag;
|
|
1192
|
+
const published = fm.published ?? "";
|
|
1176
1193
|
return {
|
|
1177
1194
|
id: 0,
|
|
1178
1195
|
tag,
|