@skill-map/cli 0.62.2 → 0.63.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/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="145cc42a-bdff-59be-a8f8-41d55ce65692")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33aa5dcf-6bc0-53c8-8982-afd24237bdae")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.62.2",
105
+ version: "0.63.0",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -787,6 +787,17 @@ var ORCHESTRATOR_TEXTS = {
787
787
  // kernel/scan/detect-providers.ts
788
788
  import { existsSync as existsSync3 } from "fs";
789
789
  import { join as join3 } from "path";
790
+
791
+ // kernel/config/plugin-resolver.ts
792
+ var SHIPS_DISABLED = /* @__PURE__ */ new Set([
793
+ "experimental",
794
+ "deprecated"
795
+ ]);
796
+ function installedDefaultEnabled(stability) {
797
+ return stability === void 0 || !SHIPS_DISABLED.has(stability);
798
+ }
799
+
800
+ // kernel/scan/detect-providers.ts
790
801
  function detectProvidersFromFilesystem(cwd, providers) {
791
802
  const seen = /* @__PURE__ */ new Set();
792
803
  const out = [];
@@ -799,7 +810,7 @@ function detectProvidersFromFilesystem(cwd, providers) {
799
810
  return out;
800
811
  }
801
812
  function isDetectableUnderCwd(cwd, provider) {
802
- if (provider.presentation?.comingSoon === true) return false;
813
+ if (!installedDefaultEnabled(provider.stability)) return false;
803
814
  const markers = provider.detect?.markers;
804
815
  if (!markers || markers.length === 0) return false;
805
816
  return markers.some((marker) => existsSync3(join3(cwd, marker)));
@@ -1548,8 +1559,7 @@ function matchesKindPrecondition(ex, kind) {
1548
1559
  function matchesProviderPrecondition(ex, activeProvider) {
1549
1560
  const providers = ex.precondition?.provider;
1550
1561
  if (!providers || providers.length === 0) return true;
1551
- if (activeProvider === null) return false;
1552
- return providers.includes(activeProvider);
1562
+ return activeProvider !== null && providers.includes(activeProvider);
1553
1563
  }
1554
1564
  function splitLegacy(applicableExtractors, applicableQualifiedIds, nodeHashCacheEligible) {
1555
1565
  const cachedQualifiedIds = /* @__PURE__ */ new Set();
@@ -3127,7 +3137,6 @@ function buildPriorMtimes(opts) {
3127
3137
  }
3128
3138
  function providerParticipates(provider, activeProvider) {
3129
3139
  if (!provider.gatedByActiveLens) return true;
3130
- if (activeProvider === null) return true;
3131
3140
  return provider.id === activeProvider;
3132
3141
  }
3133
3142
  function createWalkAccumulators() {
@@ -3549,8 +3558,7 @@ function buildPostWalkTransformCtx(providers, nodes, activeProvider) {
3549
3558
  const reservedNodePaths = buildReservedNodePaths(
3550
3559
  nodes,
3551
3560
  kindRegistry,
3552
- reservedNamesByProviderKind,
3553
- activeProvider
3561
+ reservedNamesByProviderKind
3554
3562
  );
3555
3563
  return { kindRegistry, providerResolution, activeProvider, reservedNodePaths };
3556
3564
  }
@@ -3581,15 +3589,14 @@ function indexReservedNames(provider, out) {
3581
3589
  }
3582
3590
  }
3583
3591
  }
3584
- function buildReservedNodePaths(nodes, kindRegistry, reservedNamesByProviderKind, activeProvider) {
3592
+ function buildReservedNodePaths(nodes, kindRegistry, reservedNamesByProviderKind) {
3585
3593
  const out = /* @__PURE__ */ new Set();
3586
3594
  for (const node of nodes) {
3587
3595
  const selfKey = `${node.provider}/${node.kind}`;
3588
3596
  const selfReserved = reservedNamesByProviderKind.get(selfKey);
3589
- const lensReserved = activeProvider && activeProvider !== node.provider ? reservedNamesByProviderKind.get(`${activeProvider}/${node.kind}`) : void 0;
3590
- if (!hasEntries(selfReserved) && !hasEntries(lensReserved)) continue;
3597
+ if (!hasEntries(selfReserved)) continue;
3591
3598
  const ids = deriveNodeIdentifiers(node, kindRegistry.get(selfKey));
3592
- if (ids.some((id) => selfReserved?.has(id) === true || lensReserved?.has(id) === true)) {
3599
+ if (ids.some((id) => selfReserved?.has(id) === true)) {
3593
3600
  out.add(node.path);
3594
3601
  }
3595
3602
  }
@@ -4123,4 +4130,4 @@ export {
4123
4130
  runScanWithRenames
4124
4131
  };
4125
4132
  //# sourceMappingURL=index.js.map
4126
- //# debugId=145cc42a-bdff-59be-a8f8-41d55ce65692
4133
+ //# debugId=33aa5dcf-6bc0-53c8-8982-afd24237bdae
@@ -2561,17 +2561,6 @@ interface IProviderUi {
2561
2561
  * topbar lens chip; only the per-card badge is suppressed.
2562
2562
  */
2563
2563
  hideChip?: boolean;
2564
- /**
2565
- * When `true`, this Provider is registered but NOT yet selectable as
2566
- * the active lens. Auto-detect skips it (`detectProvidersFromFilesystem`),
2567
- * the BFF drops it from the `selectable` set, and the UI greys it with
2568
- * a `(coming soon)` suffix. It still ships in `providerRegistry` so
2569
- * node chips render. Mirrors
2570
- * `spec/schemas/extensions/provider.schema.json#/properties/presentation/properties/comingSoon`.
2571
- * Distinct from `hideChip` and from the operator toggle
2572
- * `plugins[<id>].enabled = false`. Defaults to `false` (selectable).
2573
- */
2574
- comingSoon?: boolean;
2575
2564
  }
2576
2565
  /**
2577
2566
  * Auto-detection markers for the active-provider lens. The lens resolver
@@ -2794,10 +2783,10 @@ interface IProvider extends IExtensionBase {
2794
2783
  * this `false`: their territory is consumed by every vendor and they
2795
2784
  * MUST run on every scan, regardless of the active lens.
2796
2785
  *
2797
- * When `activeProvider === null` (no lens resolved, e.g. a project
2798
- * with no provider markers), the walker bypasses the gate entirely
2799
- * and every gated Provider runs, mirroring the permissive
2800
- * extractor-side fallback for unlensed projects.
2786
+ * There is no unlensed state: a project with no provider markers
2787
+ * resolves to the universal `core/markdown` lens (id `markdown`),
2788
+ * under which every gated Provider stays off (only the universal
2789
+ * Providers run). The resolver never yields a null lens.
2801
2790
  *
2802
2791
  * Default `undefined` ≡ `false` ≡ universal. The field affects
2803
2792
  * classification ONLY; extractors continue to filter via their own
@@ -4184,14 +4173,17 @@ interface RunScanOptions {
4184
4173
  * - `string`: explicit lens. Provider-specific extractors run only
4185
4174
  * when their declared `precondition.provider` includes BOTH this
4186
4175
  * value AND the node's provider.
4187
- * - `null`: explicit "no lens". Provider-specific extractors are
4188
- * unconditionally skipped (spec-strict).
4176
+ * - `null`: "no lens" for bare callers. Provider-specific extractors
4177
+ * are unconditionally skipped, the same shape as the universal
4178
+ * markdown lens. Production never reaches this: the resolver in
4179
+ * `core/runtime` always yields a concrete lens (a vendor id, or
4180
+ * the markdown id when no marker is present).
4189
4181
  * - `undefined`: kernel auto-detects from `options.roots[0]` using
4190
4182
  * filesystem markers (`.claude/`, `.codex/`, `AGENTS.md`).
4191
4183
  * Convenient default for out-of-band callers
4192
4184
  * (integration tests, embedders) that don't thread a settings
4193
4185
  * reader. Production callers (scan-runner) resolve upstream and
4194
- * pass `string | null` explicitly, never `undefined`.
4186
+ * pass a concrete lens string explicitly, never `undefined`.
4195
4187
  */
4196
4188
  activeProvider?: string | null;
4197
4189
  /**
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b561ff6c-6645-5169-a761-7134cacd137d")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1cbc1ad0-b202-5d2a-a4b2-7498564c5261")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.62.2",
105
+ version: "0.63.0",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -787,6 +787,17 @@ var ORCHESTRATOR_TEXTS = {
787
787
  // kernel/scan/detect-providers.ts
788
788
  import { existsSync as existsSync3 } from "fs";
789
789
  import { join as join3 } from "path";
790
+
791
+ // kernel/config/plugin-resolver.ts
792
+ var SHIPS_DISABLED = /* @__PURE__ */ new Set([
793
+ "experimental",
794
+ "deprecated"
795
+ ]);
796
+ function installedDefaultEnabled(stability) {
797
+ return stability === void 0 || !SHIPS_DISABLED.has(stability);
798
+ }
799
+
800
+ // kernel/scan/detect-providers.ts
790
801
  function detectProvidersFromFilesystem(cwd, providers) {
791
802
  const seen = /* @__PURE__ */ new Set();
792
803
  const out = [];
@@ -799,7 +810,7 @@ function detectProvidersFromFilesystem(cwd, providers) {
799
810
  return out;
800
811
  }
801
812
  function isDetectableUnderCwd(cwd, provider) {
802
- if (provider.presentation?.comingSoon === true) return false;
813
+ if (!installedDefaultEnabled(provider.stability)) return false;
803
814
  const markers = provider.detect?.markers;
804
815
  if (!markers || markers.length === 0) return false;
805
816
  return markers.some((marker) => existsSync3(join3(cwd, marker)));
@@ -1548,8 +1559,7 @@ function matchesKindPrecondition(ex, kind) {
1548
1559
  function matchesProviderPrecondition(ex, activeProvider) {
1549
1560
  const providers = ex.precondition?.provider;
1550
1561
  if (!providers || providers.length === 0) return true;
1551
- if (activeProvider === null) return false;
1552
- return providers.includes(activeProvider);
1562
+ return activeProvider !== null && providers.includes(activeProvider);
1553
1563
  }
1554
1564
  function splitLegacy(applicableExtractors, applicableQualifiedIds, nodeHashCacheEligible) {
1555
1565
  const cachedQualifiedIds = /* @__PURE__ */ new Set();
@@ -3127,7 +3137,6 @@ function buildPriorMtimes(opts) {
3127
3137
  }
3128
3138
  function providerParticipates(provider, activeProvider) {
3129
3139
  if (!provider.gatedByActiveLens) return true;
3130
- if (activeProvider === null) return true;
3131
3140
  return provider.id === activeProvider;
3132
3141
  }
3133
3142
  function createWalkAccumulators() {
@@ -3549,8 +3558,7 @@ function buildPostWalkTransformCtx(providers, nodes, activeProvider) {
3549
3558
  const reservedNodePaths = buildReservedNodePaths(
3550
3559
  nodes,
3551
3560
  kindRegistry,
3552
- reservedNamesByProviderKind,
3553
- activeProvider
3561
+ reservedNamesByProviderKind
3554
3562
  );
3555
3563
  return { kindRegistry, providerResolution, activeProvider, reservedNodePaths };
3556
3564
  }
@@ -3581,15 +3589,14 @@ function indexReservedNames(provider, out) {
3581
3589
  }
3582
3590
  }
3583
3591
  }
3584
- function buildReservedNodePaths(nodes, kindRegistry, reservedNamesByProviderKind, activeProvider) {
3592
+ function buildReservedNodePaths(nodes, kindRegistry, reservedNamesByProviderKind) {
3585
3593
  const out = /* @__PURE__ */ new Set();
3586
3594
  for (const node of nodes) {
3587
3595
  const selfKey = `${node.provider}/${node.kind}`;
3588
3596
  const selfReserved = reservedNamesByProviderKind.get(selfKey);
3589
- const lensReserved = activeProvider && activeProvider !== node.provider ? reservedNamesByProviderKind.get(`${activeProvider}/${node.kind}`) : void 0;
3590
- if (!hasEntries(selfReserved) && !hasEntries(lensReserved)) continue;
3597
+ if (!hasEntries(selfReserved)) continue;
3591
3598
  const ids = deriveNodeIdentifiers(node, kindRegistry.get(selfKey));
3592
- if (ids.some((id) => selfReserved?.has(id) === true || lensReserved?.has(id) === true)) {
3599
+ if (ids.some((id) => selfReserved?.has(id) === true)) {
3593
3600
  out.add(node.path);
3594
3601
  }
3595
3602
  }
@@ -4123,4 +4130,4 @@ export {
4123
4130
  runScanWithRenames
4124
4131
  };
4125
4132
  //# sourceMappingURL=index.js.map
4126
- //# debugId=b561ff6c-6645-5169-a761-7134cacd137d
4133
+ //# debugId=1cbc1ad0-b202-5d2a-a4b2-7498564c5261