@skill-map/cli 0.53.5 → 0.54.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]="47677efe-5ea6-5c32-bc68-24254a2513dd")}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]="f476faaa-267b-52a2-84d7-7b8859286768")}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.53.5",
105
+ version: "0.54.0",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -1027,8 +1027,9 @@ function buildVirtualNode(extractor, emitted, emitter) {
1027
1027
  if (emitted.frontmatter) node.frontmatter = emitted.frontmatter;
1028
1028
  return node;
1029
1029
  }
1030
+ var KNOWN_LINK_KINDS = ["invokes", "references", "mentions", "supersedes", "points"];
1030
1031
  function validateLink(extractor, link, emitter) {
1031
- const knownKinds = ["invokes", "references", "mentions", "supersedes"];
1032
+ const knownKinds = KNOWN_LINK_KINDS;
1032
1033
  if (!knownKinds.includes(link.kind)) {
1033
1034
  const qualifiedId = `${extractor.pluginId}/${extractor.id}`;
1034
1035
  emitter.emit(
@@ -1063,7 +1064,6 @@ function validateLink(extractor, link, emitter) {
1063
1064
  const confidence = c ?? ConfidenceTier.MEDIUM;
1064
1065
  return { ...link, confidence };
1065
1066
  }
1066
- var KNOWN_LINK_KINDS = ["invokes", "references", "mentions", "supersedes"];
1067
1067
  function validateSignal(extractor, signal, emitter) {
1068
1068
  const qualifiedId = qualifiedExtensionId(extractor.pluginId, extractor.id);
1069
1069
  if (!Array.isArray(signal.candidates) || signal.candidates.length === 0) {
@@ -3632,4 +3632,4 @@ export {
3632
3632
  runScanWithRenames
3633
3633
  };
3634
3634
  //# sourceMappingURL=index.js.map
3635
- //# debugId=47677efe-5ea6-5c32-bc68-24254a2513dd
3635
+ //# debugId=f476faaa-267b-52a2-84d7-7b8859286768
@@ -553,6 +553,19 @@ type TSettingValue = string | string[] | boolean | number | ISetting_KeyValueLis
553
553
  * folder name and is injected at load time.
554
554
  */
555
555
 
556
+ /**
557
+ * Lifecycle label an extension manifest MAY declare. Presentation-only
558
+ * metadata: the non-default values render as a badge next to the
559
+ * extension in `sm plugins list` / `sm plugins show` and the Settings
560
+ * plugins panel, and the kernel never gates behaviour on it (a
561
+ * `deprecated` extension still runs). Default: missing == `stable`,
562
+ * and `stable` (declared or defaulted) renders no badge. Mirrors
563
+ * `spec/schemas/extensions/base.schema.json#/properties/stability`.
564
+ * Deliberately a superset of the node-level annotations enum (which has
565
+ * no `beta`): this describes the maturity of the extension itself, not
566
+ * of a scanned node.
567
+ */
568
+ type TExtensionStability = 'experimental' | 'beta' | 'stable' | 'deprecated';
556
569
  /**
557
570
  * Single declaration of an extension's optional sidecar annotation
558
571
  * contribution. The annotation key is the extension's id (the leaf folder
@@ -605,6 +618,12 @@ interface IExtensionBase {
605
618
  version: string;
606
619
  /** Required short description shown by `sm <kind>s list` / UI. */
607
620
  description: string;
621
+ /**
622
+ * Optional lifecycle label (`experimental` / `beta` / `stable` /
623
+ * `deprecated`). Missing == `stable`, no badge rendered. See
624
+ * `TExtensionStability` for the full semantics.
625
+ */
626
+ stability?: TExtensionStability;
608
627
  /**
609
628
  * Optional inspector-only ordering hint (default 100). Inside the
610
629
  * owning plugin's inspector section, orders this extension's
@@ -748,7 +767,7 @@ interface IExtensionBase {
748
767
  * `NodeKind` when the code is intentionally claude-catalog-specific.
749
768
  */
750
769
  type NodeKind = 'skill' | 'agent' | 'command' | 'markdown';
751
- type LinkKind = 'invokes' | 'references' | 'mentions' | 'supersedes';
770
+ type LinkKind = 'invokes' | 'references' | 'mentions' | 'supersedes' | 'points';
752
771
  /**
753
772
  * Extractor's self-assessed confidence, normalized to `[0..1]`. Drives
754
773
  * UI edge opacity in the graph view (more confident = more opaque edge).
@@ -1441,6 +1460,14 @@ interface ILoadedExtension {
1441
1460
  */
1442
1461
  pluginId: string;
1443
1462
  version: string;
1463
+ /**
1464
+ * Optional lifecycle label copied verbatim from the validated
1465
+ * manifest (`IExtensionBase.stability`). Stamped here by the loader
1466
+ * so consumers (CLI list/show, BFF projection) read a typed field
1467
+ * instead of shape-checking `instance`. Absent when the manifest
1468
+ * does not declare it.
1469
+ */
1470
+ stability?: TExtensionStability;
1444
1471
  entryPath: string;
1445
1472
  /** Raw module namespace as returned by the dynamic `import()`. */
1446
1473
  module: unknown;
@@ -2736,8 +2763,8 @@ interface IEmittedNode {
2736
2763
  interface IExtractorCallbacks {
2737
2764
  /**
2738
2765
  * Emit a single Link. Validated against the global closed enum of
2739
- * link kinds (`invokes`, `references`, `mentions`, `supersedes`)
2740
- * before insertion; off-enum kinds drop silently with an
2766
+ * link kinds (`invokes`, `references`, `mentions`, `supersedes`,
2767
+ * `points`) before insertion; off-enum kinds drop silently with an
2741
2768
  * `extension.error` event.
2742
2769
  */
2743
2770
  emitLink(link: Link): void;
@@ -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]="e395a3a8-34ff-5d90-ae21-95ad61f53649")}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]="6e48fcae-efdb-598f-b908-26a9d46853cc")}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.53.5",
105
+ version: "0.54.0",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -1027,8 +1027,9 @@ function buildVirtualNode(extractor, emitted, emitter) {
1027
1027
  if (emitted.frontmatter) node.frontmatter = emitted.frontmatter;
1028
1028
  return node;
1029
1029
  }
1030
+ var KNOWN_LINK_KINDS = ["invokes", "references", "mentions", "supersedes", "points"];
1030
1031
  function validateLink(extractor, link, emitter) {
1031
- const knownKinds = ["invokes", "references", "mentions", "supersedes"];
1032
+ const knownKinds = KNOWN_LINK_KINDS;
1032
1033
  if (!knownKinds.includes(link.kind)) {
1033
1034
  const qualifiedId = `${extractor.pluginId}/${extractor.id}`;
1034
1035
  emitter.emit(
@@ -1063,7 +1064,6 @@ function validateLink(extractor, link, emitter) {
1063
1064
  const confidence = c ?? ConfidenceTier.MEDIUM;
1064
1065
  return { ...link, confidence };
1065
1066
  }
1066
- var KNOWN_LINK_KINDS = ["invokes", "references", "mentions", "supersedes"];
1067
1067
  function validateSignal(extractor, signal, emitter) {
1068
1068
  const qualifiedId = qualifiedExtensionId(extractor.pluginId, extractor.id);
1069
1069
  if (!Array.isArray(signal.candidates) || signal.candidates.length === 0) {
@@ -3632,4 +3632,4 @@ export {
3632
3632
  runScanWithRenames
3633
3633
  };
3634
3634
  //# sourceMappingURL=index.js.map
3635
- //# debugId=e395a3a8-34ff-5d90-ae21-95ad61f53649
3635
+ //# debugId=6e48fcae-efdb-598f-b908-26a9d46853cc
@@ -99,7 +99,7 @@ CREATE TABLE scan_links (
99
99
  -- `.claude/agents/real-agent.md`.
100
100
  resolved_target TEXT,
101
101
  raw TEXT,
102
- CONSTRAINT ck_scan_links_kind CHECK (kind IN ('invokes','references','mentions','supersedes')),
102
+ CONSTRAINT ck_scan_links_kind CHECK (kind IN ('invokes','references','mentions','supersedes','points')),
103
103
  CONSTRAINT ck_scan_links_confidence CHECK (confidence >= 0.0 AND confidence <= 1.0)
104
104
  );
105
105
  CREATE INDEX ix_scan_links_source_path ON scan_links(source_path);