@skill-map/cli 0.61.2 → 0.61.3

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.
@@ -304,12 +304,11 @@ the `__PROVIDER__` token and skip kinds the provider does not claim.
304
304
  2. Seed: `fixtures.js seed <harness-built|harness-connected> --provider <provider> --lang <lang>`
305
305
  (`harness-built` for `connect-harness`, `harness-connected` for
306
306
  `daily-loop`).
307
- 3. Provision with the **non-interactive lens recipe**: the seeded
308
- portfolio has BOTH a root `AGENTS.md` (an `openai` marker) and
309
- `.claude/` (a `claude` marker), so a plain `sm init` would stop on
310
- `⚠ Multiple provider markers detected`. Run `sm init --no-scan`,
311
- then `sm config set activeProvider claude`, then `sm scan`. (If
312
- `.skill-map/` already exists, just `sm scan`.)
307
+ 3. Provision the lens: the seeded portfolio has a root `AGENTS.md`
308
+ (the `openai`/Codex marker) next to `.claude/`, but `openai` is
309
+ coming soon, so auto-detect ignores it and a plain `sm init`
310
+ resolves the `claude` lens with no prompt. Run `sm init`, then
311
+ `sm scan`. (If `.skill-map/` already exists, just `sm scan`.)
313
312
  4. Mark the skipped predecessors: `state.js set-part <predecessor> skipped`
314
313
  for each (they stay in the menu). Then emit exactly ONE
315
314
  tester-facing line:
@@ -28,18 +28,14 @@ disk. The orchestrator's `portfolio-init` already cleared it during
28
28
  pre-flight, so the tester sees only the portfolio. If anything demo
29
29
  lingers, mention it once and move on.
30
30
 
31
- **Context (agent, do not narrate the plumbing): the lens prompt.**
32
- Unlike the prologue (a pure `.claude/` project that auto-detected
33
- `claude` silently), this project has a root `AGENTS.md` (a filesystem
34
- marker for the `openai` lens) sitting next to the `.claude/` folder
35
- (the `claude` marker, where the tutorial skill itself lives). With two
36
- markers present, `sm init`'s first scan can NOT auto-pick a lens and
37
- asks the tester to choose (`⚠ Multiple provider markers detected`).
38
- The portfolio is a Claude project, so the answer is always `claude`,
39
- the other options the prompt lists (`openai`/Codex and friends) are
40
- coming soon in the tutorial and we do not walk them. The prompt is
41
- expected, blessed behaviour; the tester just needs to know which
42
- option to pick, so the message below previews it.
31
+ **Context (agent, do not narrate the plumbing): the lens.** This
32
+ project has a root `AGENTS.md` (the `openai`/Codex marker) sitting next
33
+ to the `.claude/` folder (the `claude` marker, where the tutorial skill
34
+ itself lives). `openai` is **coming soon**, though, so auto-detect
35
+ ignores its marker and `sm init` resolves the lens to `claude`
36
+ silently, exactly like the prologue: only `claude` is selectable today,
37
+ so there is no ambiguity and no prompt. Do not promise the tester a
38
+ lens prompt here.
43
39
 
44
40
  ```bash
45
41
  sm init
@@ -53,9 +49,9 @@ Tell the tester:
53
49
  > `.claude/` folder is the **harness** (the helpers that maintain the
54
50
  > site). skill-map maps that harness.
55
51
  >
56
- > Run `sm init`. If it asks you to pick a lens (`⚠ Multiple provider
57
- > markers detected`), choose `claude`, this is a Claude project (the
58
- > other lenses are coming soon). Then run `sm` to boot the live UI.
52
+ > Run `sm init`, it auto-detects the `claude` lens (this is a Claude
53
+ > project; the other lenses are coming soon). Then run `sm` to boot the
54
+ > live UI.
59
55
  >
60
56
  > Open the URL `sm` printed. You'll see **one node**: `AGENTS.md`,
61
57
  > the project's handbook (the operating manual for the site).
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // cli/entry.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]="e231edcd-bd03-5552-a0d2-b977373884d8")}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]="ce13dce1-d18b-5abf-b6a8-1ef997ccaf99")}catch(e){}}();
4
4
  import { existsSync as existsSync33 } from "fs";
5
5
  import { Builtins, Cli as Cli2 } from "clipanion";
6
6
 
@@ -250,7 +250,7 @@ function bucketByKind(kind, instance, bag) {
250
250
  // package.json
251
251
  var package_default = {
252
252
  name: "@skill-map/cli",
253
- version: "0.61.2",
253
+ version: "0.61.3",
254
254
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
255
255
  license: "MIT",
256
256
  type: "module",
@@ -1071,7 +1071,10 @@ var antigravityProvider = {
1071
1071
  presentation: {
1072
1072
  label: "Antigravity",
1073
1073
  color: "#7c3aed",
1074
- colorDark: "#a78bfa"
1074
+ colorDark: "#a78bfa",
1075
+ // Registered but not yet selectable as the active lens; the UI greys
1076
+ // it with a `(coming soon)` suffix.
1077
+ comingSoon: true
1075
1078
  },
1076
1079
  // No `detect` block: Antigravity has no vendor-specific workspace marker
1077
1080
  // (it adopted the open-standard `.agents/`, owned by `agent-skills`), so
@@ -1233,7 +1236,10 @@ var openaiProvider = {
1233
1236
  presentation: {
1234
1237
  label: "OpenAI Codex",
1235
1238
  color: "#22c55e",
1236
- colorDark: "#4ade80"
1239
+ colorDark: "#4ade80",
1240
+ // Registered but not yet selectable as the active lens; auto-detect
1241
+ // skips its markers and the UI greys it with a `(coming soon)` suffix.
1242
+ comingSoon: true
1237
1243
  },
1238
1244
  // Auto-detect markers: a `.codex/` directory or a root `AGENTS.md` marks
1239
1245
  // a Codex CLI project. Provider-owned (replaces the old central
@@ -1322,7 +1328,11 @@ var agentSkillsProvider = {
1322
1328
  presentation: {
1323
1329
  label: "Open Skills",
1324
1330
  color: "#64748b",
1325
- colorDark: "#94a3b8"
1331
+ colorDark: "#94a3b8",
1332
+ // Registered but not yet selectable as the active lens; auto-detect
1333
+ // skips its `.agents/` marker and the UI greys it with a
1334
+ // `(coming soon)` suffix.
1335
+ comingSoon: true
1326
1336
  },
1327
1337
  // Auto-detect marker: a `.agents/` directory marks an open-standard
1328
1338
  // project. This is also the marker a Google/Antigravity project carries
@@ -11559,14 +11569,18 @@ function detectProvidersFromFilesystem(cwd, providers) {
11559
11569
  const out = [];
11560
11570
  for (const provider of providers) {
11561
11571
  if (seen.has(provider.id)) continue;
11562
- const markers = provider.detect?.markers;
11563
- if (!markers || markers.length === 0) continue;
11564
- if (!markers.some((marker) => existsSync15(join10(cwd, marker)))) continue;
11572
+ if (!isDetectableUnderCwd(cwd, provider)) continue;
11565
11573
  seen.add(provider.id);
11566
11574
  out.push(provider.id);
11567
11575
  }
11568
11576
  return out;
11569
11577
  }
11578
+ function isDetectableUnderCwd(cwd, provider) {
11579
+ if (provider.presentation?.comingSoon === true) return false;
11580
+ const markers = provider.detect?.markers;
11581
+ if (!markers || markers.length === 0) return false;
11582
+ return markers.some((marker) => existsSync15(join10(cwd, marker)));
11583
+ }
11570
11584
 
11571
11585
  // core/config/active-provider.ts
11572
11586
  function resolveActiveProvider(cwd, providers = []) {
@@ -27232,6 +27246,7 @@ async function resolveSelectableProviders(deps) {
27232
27246
  });
27233
27247
  const selectable = /* @__PURE__ */ new Set();
27234
27248
  for (const provider of deps.providers) {
27249
+ if (provider.presentation?.comingSoon === true) continue;
27235
27250
  if (isPluginExtensionEnabled(provider, resolveEnabled)) {
27236
27251
  selectable.add(provider.id);
27237
27252
  }
@@ -28442,6 +28457,7 @@ function buildProviderRegistry(providers) {
28442
28457
  if (ui.emoji !== void 0) entry.emoji = ui.emoji;
28443
28458
  if (ui.icon !== void 0) entry.icon = ui.icon;
28444
28459
  if (ui.hideChip !== void 0) entry.hideChip = ui.hideChip;
28460
+ if (ui.comingSoon !== void 0) entry.comingSoon = ui.comingSoon;
28445
28461
  registry[provider.id] = entry;
28446
28462
  }
28447
28463
  return registry;
@@ -31057,4 +31073,4 @@ function resolveBareDefault() {
31057
31073
  process.exit(ExitCode.Error);
31058
31074
  }
31059
31075
  //# sourceMappingURL=cli.js.map
31060
- //# debugId=e231edcd-bd03-5552-a0d2-b977373884d8
31076
+ //# debugId=ce13dce1-d18b-5abf-b6a8-1ef997ccaf99
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]="2ededba2-1ecd-5a1b-a725-23567a98a0b7")}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]="f3e27769-f4cb-5526-a022-5ef018a37ef8")}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.61.2",
105
+ version: "0.61.3",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -792,14 +792,18 @@ function detectProvidersFromFilesystem(cwd, providers) {
792
792
  const out = [];
793
793
  for (const provider of providers) {
794
794
  if (seen.has(provider.id)) continue;
795
- const markers = provider.detect?.markers;
796
- if (!markers || markers.length === 0) continue;
797
- if (!markers.some((marker) => existsSync3(join3(cwd, marker)))) continue;
795
+ if (!isDetectableUnderCwd(cwd, provider)) continue;
798
796
  seen.add(provider.id);
799
797
  out.push(provider.id);
800
798
  }
801
799
  return out;
802
800
  }
801
+ function isDetectableUnderCwd(cwd, provider) {
802
+ if (provider.presentation?.comingSoon === true) return false;
803
+ const markers = provider.detect?.markers;
804
+ if (!markers || markers.length === 0) return false;
805
+ return markers.some((marker) => existsSync3(join3(cwd, marker)));
806
+ }
803
807
 
804
808
  // kernel/types.ts
805
809
  var ConfidenceTier = Object.freeze({
@@ -3847,4 +3851,4 @@ export {
3847
3851
  runScanWithRenames
3848
3852
  };
3849
3853
  //# sourceMappingURL=index.js.map
3850
- //# debugId=2ededba2-1ecd-5a1b-a725-23567a98a0b7
3854
+ //# debugId=f3e27769-f4cb-5526-a022-5ef018a37ef8
@@ -2471,6 +2471,17 @@ interface IProviderUi {
2471
2471
  * topbar lens chip; only the per-card badge is suppressed.
2472
2472
  */
2473
2473
  hideChip?: boolean;
2474
+ /**
2475
+ * When `true`, this Provider is registered but NOT yet selectable as
2476
+ * the active lens. Auto-detect skips it (`detectProvidersFromFilesystem`),
2477
+ * the BFF drops it from the `selectable` set, and the UI greys it with
2478
+ * a `(coming soon)` suffix. It still ships in `providerRegistry` so
2479
+ * node chips render. Mirrors
2480
+ * `spec/schemas/extensions/provider.schema.json#/properties/presentation/properties/comingSoon`.
2481
+ * Distinct from `hideChip` and from the operator toggle
2482
+ * `plugins[<id>].enabled = false`. Defaults to `false` (selectable).
2483
+ */
2484
+ comingSoon?: boolean;
2474
2485
  }
2475
2486
  /**
2476
2487
  * Auto-detection markers for the active-provider lens. The lens resolver
@@ -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]="8f7ca4a9-1a8e-5b21-a436-9a4500fd710f")}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]="efabc578-2328-5428-97bc-6c89a870170a")}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.61.2",
105
+ version: "0.61.3",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -792,14 +792,18 @@ function detectProvidersFromFilesystem(cwd, providers) {
792
792
  const out = [];
793
793
  for (const provider of providers) {
794
794
  if (seen.has(provider.id)) continue;
795
- const markers = provider.detect?.markers;
796
- if (!markers || markers.length === 0) continue;
797
- if (!markers.some((marker) => existsSync3(join3(cwd, marker)))) continue;
795
+ if (!isDetectableUnderCwd(cwd, provider)) continue;
798
796
  seen.add(provider.id);
799
797
  out.push(provider.id);
800
798
  }
801
799
  return out;
802
800
  }
801
+ function isDetectableUnderCwd(cwd, provider) {
802
+ if (provider.presentation?.comingSoon === true) return false;
803
+ const markers = provider.detect?.markers;
804
+ if (!markers || markers.length === 0) return false;
805
+ return markers.some((marker) => existsSync3(join3(cwd, marker)));
806
+ }
803
807
 
804
808
  // kernel/types.ts
805
809
  var ConfidenceTier = Object.freeze({
@@ -3847,4 +3851,4 @@ export {
3847
3851
  runScanWithRenames
3848
3852
  };
3849
3853
  //# sourceMappingURL=index.js.map
3850
- //# debugId=8f7ca4a9-1a8e-5b21-a436-9a4500fd710f
3854
+ //# debugId=efabc578-2328-5428-97bc-6c89a870170a