@skill-map/cli 0.40.1 → 0.42.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/cli/tutorial/sm-tutorial/SKILL.md +10 -1
- package/dist/cli.js +429 -95
- package/dist/cli.js.map +1 -1
- package/dist/index.js +39 -29
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +101 -0
- package/dist/kernel/index.js +39 -29
- package/dist/kernel/index.js.map +1 -1
- package/dist/migrations/001_initial.sql +8 -0
- package/dist/ui/chunk-5GD2GBPS.js +2190 -0
- package/dist/ui/{chunk-4HTOYDCM.js → chunk-5WJRN3LD.js} +1 -1
- package/dist/ui/{chunk-3SI3TVER.js → chunk-C2YUQODZ.js} +2 -2
- package/dist/ui/{chunk-NGIFGXW7.js → chunk-CFJBTDAA.js} +1 -1
- package/dist/ui/{chunk-YWWD62BR.js → chunk-HEJCH7BA.js} +1 -1
- package/dist/ui/chunk-HFPA56IM.js +1 -0
- package/dist/ui/chunk-HHPSCDLM.js +315 -0
- package/dist/ui/chunk-HP375T2O.js +2 -0
- package/dist/ui/chunk-HWP3HM55.js +123 -0
- package/dist/ui/{chunk-ZAEGBMF7.js → chunk-IUDL3NDH.js} +1 -1
- package/dist/ui/{chunk-Z3C2OSRL.js → chunk-JPYAASHN.js} +1 -1
- package/dist/ui/chunk-PZ6Q5AOT.js +1 -0
- package/dist/ui/chunk-XJL4DZ4M.js +1 -0
- package/dist/ui/{chunk-W2JMLJCF.js → chunk-XOHD5XWA.js} +1 -1
- package/dist/ui/chunk-YL6SWAFJ.js +1024 -0
- package/dist/ui/index.html +2 -2
- package/dist/ui/main-7VYTTJP7.js +3 -0
- package/dist/ui/{styles-6H4GSOHY.css → styles-HI4A6IWA.css} +1 -1
- package/migrations/001_initial.sql +8 -0
- package/package.json +2 -2
- package/dist/ui/chunk-4X4GYACU.js +0 -123
- package/dist/ui/chunk-7Q3IO77R.js +0 -317
- package/dist/ui/chunk-FL6RV2IG.js +0 -2
- package/dist/ui/chunk-HGNE4UVQ.js +0 -1
- package/dist/ui/chunk-IS5ULQSF.js +0 -1
- package/dist/ui/chunk-KVWYVO6I.js +0 -1
- package/dist/ui/chunk-N4XX4WPE.js +0 -2190
- package/dist/ui/chunk-P7TXZKUX.js +0 -2
- package/dist/ui/chunk-UVVXMEZT.js +0 -1025
- package/dist/ui/main-F7N5RV4Y.js +0 -3
package/dist/index.js
CHANGED
|
@@ -101,7 +101,7 @@ import cl100k_base from "js-tiktoken/ranks/cl100k_base";
|
|
|
101
101
|
// package.json
|
|
102
102
|
var package_default = {
|
|
103
103
|
name: "@skill-map/cli",
|
|
104
|
-
version: "0.
|
|
104
|
+
version: "0.42.0",
|
|
105
105
|
description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
|
|
106
106
|
license: "MIT",
|
|
107
107
|
type: "module",
|
|
@@ -775,6 +775,7 @@ var defaults_default = {
|
|
|
775
775
|
strict: false,
|
|
776
776
|
followSymlinks: false,
|
|
777
777
|
maxFileSizeBytes: 1048576,
|
|
778
|
+
maxNodes: 256,
|
|
778
779
|
watch: {
|
|
779
780
|
debounceMs: 300
|
|
780
781
|
},
|
|
@@ -1049,21 +1050,8 @@ function loadConfigForScope(opts) {
|
|
|
1049
1050
|
}
|
|
1050
1051
|
|
|
1051
1052
|
// core/config/active-provider.ts
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
// `gemini` retired 2026-05-22: Google replaced the Gemini CLI with the
|
|
1055
|
-
// Antigravity CLI (released 2026-05-19; Gemini CLI sunsets 2026-06-18).
|
|
1056
|
-
// Antigravity adopted the open-standard `.agents/` instead of a
|
|
1057
|
-
// vendor-specific directory, so detection of a Google CLI project
|
|
1058
|
-
// falls through to the universal `agent-skills` lens (`.agents/`
|
|
1059
|
-
// already classifies via that neutral provider). The lens can still
|
|
1060
|
-
// be set manually via `sm config set activeProvider antigravity`.
|
|
1061
|
-
{ providerId: "openai", marker: ".codex" },
|
|
1062
|
-
{ providerId: "openai", marker: "AGENTS.md" },
|
|
1063
|
-
{ providerId: "cursor", marker: ".cursor" }
|
|
1064
|
-
];
|
|
1065
|
-
function resolveActiveProvider(cwd) {
|
|
1066
|
-
const detected = detectProvidersFromFilesystem(cwd);
|
|
1053
|
+
function resolveActiveProvider(cwd, providers = []) {
|
|
1054
|
+
const detected = detectProvidersFromFilesystem(cwd, providers);
|
|
1067
1055
|
const fromConfig = readConfigValue("activeProvider", { cwd });
|
|
1068
1056
|
if (typeof fromConfig === "string" && fromConfig.length > 0) {
|
|
1069
1057
|
return { resolved: fromConfig, source: "config", detected };
|
|
@@ -1073,14 +1061,16 @@ function resolveActiveProvider(cwd) {
|
|
|
1073
1061
|
}
|
|
1074
1062
|
return { resolved: null, source: "none", detected };
|
|
1075
1063
|
}
|
|
1076
|
-
function detectProvidersFromFilesystem(cwd) {
|
|
1064
|
+
function detectProvidersFromFilesystem(cwd, providers) {
|
|
1077
1065
|
const seen = /* @__PURE__ */ new Set();
|
|
1078
1066
|
const out = [];
|
|
1079
|
-
for (const
|
|
1080
|
-
if (seen.has(
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1067
|
+
for (const provider of providers) {
|
|
1068
|
+
if (seen.has(provider.id)) continue;
|
|
1069
|
+
const markers = provider.detect?.markers;
|
|
1070
|
+
if (!markers || markers.length === 0) continue;
|
|
1071
|
+
if (!markers.some((marker) => existsSync5(join6(cwd, marker)))) continue;
|
|
1072
|
+
seen.add(provider.id);
|
|
1073
|
+
out.push(provider.id);
|
|
1084
1074
|
}
|
|
1085
1075
|
return out;
|
|
1086
1076
|
}
|
|
@@ -2855,17 +2845,26 @@ async function walkAndExtract(opts) {
|
|
|
2855
2845
|
const walkOptions = opts.ignoreFilter ? { ignoreFilter: opts.ignoreFilter } : {};
|
|
2856
2846
|
let filesWalked = 0;
|
|
2857
2847
|
let index = 0;
|
|
2848
|
+
const effectiveMaxNodes = opts.overrideMaxNodes ?? opts.recommendedNodeLimit;
|
|
2849
|
+
let capReached = false;
|
|
2858
2850
|
const activeProviders = opts.providers.filter((provider) => {
|
|
2859
2851
|
if (!provider.gatedByActiveLens) return true;
|
|
2860
2852
|
if (opts.activeProvider === null) return true;
|
|
2861
2853
|
return provider.id === opts.activeProvider;
|
|
2862
2854
|
});
|
|
2863
|
-
|
|
2855
|
+
const advance = async (raw, provider) => {
|
|
2856
|
+
const advanced = await processRawNode(raw, provider, wctx, accum, claimedPaths, index + 1);
|
|
2857
|
+
if (advanced) index += 1;
|
|
2858
|
+
};
|
|
2859
|
+
outer: for (const provider of activeProviders) {
|
|
2864
2860
|
for await (const raw of resolveProviderWalk(provider)(opts.roots, walkOptions)) {
|
|
2865
2861
|
filesWalked += 1;
|
|
2866
2862
|
if (claimedPaths.has(raw.path)) continue;
|
|
2867
|
-
|
|
2868
|
-
|
|
2863
|
+
if (accum.nodes.length >= effectiveMaxNodes) {
|
|
2864
|
+
capReached = true;
|
|
2865
|
+
break outer;
|
|
2866
|
+
}
|
|
2867
|
+
await advance(raw, provider);
|
|
2869
2868
|
}
|
|
2870
2869
|
}
|
|
2871
2870
|
const orphanSidecars = discoverOrphanSidecars(opts.roots);
|
|
@@ -2876,6 +2875,9 @@ async function walkAndExtract(opts) {
|
|
|
2876
2875
|
cachedPaths: accum.cachedPaths,
|
|
2877
2876
|
frontmatterIssues: accum.frontmatterIssues,
|
|
2878
2877
|
filesWalked,
|
|
2878
|
+
recommendedNodeLimit: opts.recommendedNodeLimit,
|
|
2879
|
+
overrideMaxNodes: opts.overrideMaxNodes,
|
|
2880
|
+
capReached,
|
|
2879
2881
|
enrichments: [...accum.enrichmentBuffer.values()],
|
|
2880
2882
|
extractorRuns: accum.extractorRuns,
|
|
2881
2883
|
contributions: accum.contributionsBuffer,
|
|
@@ -3139,7 +3141,11 @@ async function runScanInternal(_kernel, options) {
|
|
|
3139
3141
|
const scanStartedEvent = makeEvent("scan.started", { roots: options.roots });
|
|
3140
3142
|
emitter.emit(scanStartedEvent);
|
|
3141
3143
|
await hookDispatcher.dispatch("scan.started", scanStartedEvent);
|
|
3142
|
-
const activeProviderId = resolveActiveProviderOption(
|
|
3144
|
+
const activeProviderId = resolveActiveProviderOption(
|
|
3145
|
+
options.activeProvider,
|
|
3146
|
+
options.roots,
|
|
3147
|
+
exts.providers
|
|
3148
|
+
);
|
|
3143
3149
|
const walked = await walkAndExtract({
|
|
3144
3150
|
providers: exts.providers,
|
|
3145
3151
|
extractors: exts.extractors,
|
|
@@ -3154,7 +3160,9 @@ async function runScanInternal(_kernel, options) {
|
|
|
3154
3160
|
priorExtractorRuns: setup.priorExtractorRuns,
|
|
3155
3161
|
providerFrontmatter: setup.providerFrontmatter,
|
|
3156
3162
|
pluginStores: options.pluginStores,
|
|
3157
|
-
activeProvider: activeProviderId
|
|
3163
|
+
activeProvider: activeProviderId,
|
|
3164
|
+
recommendedNodeLimit: options.recommendedNodeLimit ?? 256,
|
|
3165
|
+
overrideMaxNodes: options.overrideMaxNodes ?? null
|
|
3158
3166
|
});
|
|
3159
3167
|
const activeProvider = activeProviderId ? exts.providers.find((p) => p.id === activeProviderId) ?? null : null;
|
|
3160
3168
|
const resolved = resolveSignals({
|
|
@@ -3322,6 +3330,8 @@ function buildScanReturn(walked, issues, renameOps, stats, options, setup) {
|
|
|
3322
3330
|
roots: options.roots,
|
|
3323
3331
|
providers: setup.exts.providers.map((a) => a.id),
|
|
3324
3332
|
scannedBy: SCANNED_BY,
|
|
3333
|
+
recommendedNodeLimit: walked.recommendedNodeLimit,
|
|
3334
|
+
overrideMaxNodes: walked.overrideMaxNodes,
|
|
3325
3335
|
nodes: walked.nodes,
|
|
3326
3336
|
links: walked.internalLinks,
|
|
3327
3337
|
issues,
|
|
@@ -3344,12 +3354,12 @@ function validateRoots(roots) {
|
|
|
3344
3354
|
}
|
|
3345
3355
|
}
|
|
3346
3356
|
}
|
|
3347
|
-
function resolveActiveProviderOption(optionValue, roots) {
|
|
3357
|
+
function resolveActiveProviderOption(optionValue, roots, providers) {
|
|
3348
3358
|
if (optionValue !== void 0) return optionValue;
|
|
3349
3359
|
for (const root of roots) {
|
|
3350
3360
|
const absRoot = isAbsolute4(root) ? root : resolve11(root);
|
|
3351
3361
|
if (!existsSync11(absRoot)) continue;
|
|
3352
|
-
const detected = resolveActiveProvider(absRoot).resolved;
|
|
3362
|
+
const detected = resolveActiveProvider(absRoot, providers).resolved;
|
|
3353
3363
|
if (detected !== null) return detected;
|
|
3354
3364
|
}
|
|
3355
3365
|
return null;
|