@skill-map/cli 0.61.1 → 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.
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +5 -6
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +35 -33
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +11 -13
- package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +12 -42
- package/dist/cli.js +25 -9
- package/dist/index.js +10 -6
- package/dist/kernel/index.d.ts +11 -0
- package/dist/kernel/index.js +10 -6
- package/dist/ui/chunk-66JAVSK5.js +3 -0
- package/dist/ui/chunk-I52OQIZQ.js +1 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-32BO6UKY.js → main-CDGL35UC.js} +2 -2
- package/package.json +2 -2
- package/dist/ui/chunk-DG3EAGXB.js +0 -3
- package/dist/ui/chunk-OGXBHDY4.js +0 -1
|
@@ -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
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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:
|
|
@@ -131,14 +131,16 @@ element. Decide with §Provider detection:
|
|
|
131
131
|
|
|
132
132
|
- `provider == claude` (Claude Code, blockquotes render as a styled
|
|
133
133
|
left bar): emit tester-facing messages with `> ` on every line,
|
|
134
|
-
including blank lines inside a multi-paragraph block.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
including blank lines inside a multi-paragraph block. This is the
|
|
135
|
+
only active path today.
|
|
136
|
+
- `provider != claude` (coming soon: Antigravity CLI, agent-skills,
|
|
137
|
+
any other host where most non-Claude renderers show `>` as a
|
|
138
|
+
literal character): emit **plain prose**, NO `> ` prefix anywhere.
|
|
139
|
+
Kept as the wiring for the coming-soon providers; not exercised
|
|
140
|
+
while the tutorial demos `claude` only.
|
|
138
141
|
|
|
139
142
|
Sample messages throughout the part files are written in the Claude
|
|
140
|
-
variant (with `> `)
|
|
141
|
-
the wording is unchanged.
|
|
143
|
+
variant (with `> `).
|
|
142
144
|
|
|
143
145
|
**The rule, in one line**: every tester-facing line of prose carries
|
|
144
146
|
the `> ` bar in the Claude variant, context sentences, intros, tips,
|
|
@@ -257,41 +259,41 @@ on-disk convention:
|
|
|
257
259
|
| Provider | Base dir | Kinds it claims | Detect via env var(s) |
|
|
258
260
|
|----------------|-------------------|-----------------------------|--------------------------------------------------------|
|
|
259
261
|
| `claude` | `.claude/` | `agent`, `command`, `skill` | `CLAUDECODE=1` OR `AI_AGENT` starts with `claude-code` |
|
|
260
|
-
| `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral; also the on-disk home for Google's Antigravity CLI, which replaced the Gemini CLI on 2026-05-19 and adopted this open standard) |
|
|
261
|
-
| `openai` | `.codex/` | `agent` (`.codex/agents/*.toml`) |
|
|
262
|
-
|
|
263
|
-
**Decision logic, applied silently during pre-flight**:
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
`
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
they
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
>
|
|
277
|
-
>
|
|
278
|
-
>
|
|
262
|
+
| `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral; also the on-disk home for Google's Antigravity CLI, which replaced the Gemini CLI on 2026-05-19 and adopted this open standard) | coming soon (not selectable in the tutorial yet) |
|
|
263
|
+
| `openai` | `.codex/` | `agent` (`.codex/agents/*.toml`) | coming soon (not selectable in the tutorial yet) |
|
|
264
|
+
|
|
265
|
+
**Decision logic, applied silently during pre-flight**: the tutorial
|
|
266
|
+
demonstrates the `claude` provider only. `agent-skills` and `openai`
|
|
267
|
+
are **coming soon** and are not selectable here, so there is no
|
|
268
|
+
runtime to detect or opt into.
|
|
269
|
+
|
|
270
|
+
1. `provider = claude`, `<provider_dir> = .claude`, kinds =
|
|
271
|
+
`{agent, command, skill}`. Always.
|
|
272
|
+
2. Do NOT offer Antigravity / agent-skills / openai as an alternative,
|
|
273
|
+
and do NOT ask the tester which runtime hosts them. If a tester
|
|
274
|
+
says they use another runtime, acknowledge it briefly and explain
|
|
275
|
+
that those providers are coming soon, the tutorial demos `claude`
|
|
276
|
+
(`.claude/`) today:
|
|
277
|
+
|
|
278
|
+
> Heads up: skill-map also reads Antigravity, agent-skills and
|
|
279
|
+
> Codex projects, but those providers are coming soon in this
|
|
280
|
+
> tutorial. We'll demo skill-map's Claude provider (`.claude/`)
|
|
281
|
+
> today.
|
|
279
282
|
|
|
280
283
|
Persist `provider` into the state file (`tutorial.provider`) so a
|
|
281
|
-
resumed session does not re-detect.
|
|
284
|
+
resumed session does not re-detect. (It is always `claude` for now.)
|
|
282
285
|
|
|
283
286
|
**Global substitution rule**: the fixture scripts do the file-level
|
|
284
287
|
work. You pass `--provider <p>` (the value persisted in
|
|
285
288
|
`tutorial.provider`) and `--lang <l>`, and they resolve the
|
|
286
289
|
`__PROVIDER__` path token, skip files whose kind the provider does
|
|
287
290
|
not claim, and report the adjusted `nodeCount` plus the `skipped`
|
|
288
|
-
list in their summary.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
the reality check below).
|
|
291
|
+
list in their summary. Today `provider` is always `claude`, so the
|
|
292
|
+
narration uses `.claude/` throughout; the `--provider` plumbing stays
|
|
293
|
+
wired so the coming-soon providers (`agent-skills` / Antigravity,
|
|
294
|
+
`openai`) drop in later without a narrative rewrite. The campaign
|
|
295
|
+
cross-link chapters target `claude` today (see the reality check
|
|
296
|
+
below).
|
|
295
297
|
|
|
296
298
|
**Reality check (don't mention to the tester)**: this skill ships
|
|
297
299
|
at `.claude/skills/sm-tutorial/`, so Claude Code is the only host
|
|
@@ -28,16 +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
|
|
32
|
-
|
|
33
|
-
`claude`
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
prompt is expected, blessed behaviour; the tester just needs to know
|
|
40
|
-
which 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.
|
|
41
39
|
|
|
42
40
|
```bash
|
|
43
41
|
sm init
|
|
@@ -51,9 +49,9 @@ Tell the tester:
|
|
|
51
49
|
> `.claude/` folder is the **harness** (the helpers that maintain the
|
|
52
50
|
> site). skill-map maps that harness.
|
|
53
51
|
>
|
|
54
|
-
> Run `sm init
|
|
55
|
-
>
|
|
56
|
-
>
|
|
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.
|
|
57
55
|
>
|
|
58
56
|
> Open the URL `sm` printed. You'll see **one node**: `AGENTS.md`,
|
|
59
57
|
> the project's handbook (the operating manual for the site).
|
|
@@ -122,24 +122,20 @@ catalog is closed.)
|
|
|
122
122
|
|
|
123
123
|
Mark `settings-2-resolve: done`.
|
|
124
124
|
|
|
125
|
-
## Step `settings-3-lens` - the active provider lens (~
|
|
125
|
+
## Step `settings-3-lens` - the active provider lens (~2 min)
|
|
126
126
|
|
|
127
127
|
**Context**: the single most consequential setting, the lens that
|
|
128
|
-
decides which provider types the project's files. It
|
|
129
|
-
|
|
128
|
+
decides which provider types the project's files. It auto-detects and
|
|
129
|
+
never touches your `.md` files, only the scan cache.
|
|
130
130
|
|
|
131
131
|
> One setting earns its own step: the **active provider lens**. A
|
|
132
132
|
> skill-map project sees its filesystem through exactly **one**
|
|
133
133
|
> provider at a time, and that lens decides how each file is read.
|
|
134
134
|
> Under the `claude` lens a `.claude/agents/*.md` is an agent and
|
|
135
|
-
> `@`-mentions / `/`-commands become links
|
|
136
|
-
> `openai` and the same tree is read against Codex's layout instead.
|
|
137
|
-
> Same files, different reading.
|
|
135
|
+
> `@`-mentions / `/`-commands become links. Same files, one reading.
|
|
138
136
|
|
|
139
137
|
> The lens auto-detects on the first scan from the markers in your
|
|
140
|
-
> project (`.claude/` → claude
|
|
141
|
-
> openai, `.agents/` → agent-skills). Scan once and check where it
|
|
142
|
-
> landed:
|
|
138
|
+
> project (`.claude/` → claude). Scan once and check where it landed:
|
|
143
139
|
|
|
144
140
|
```bash
|
|
145
141
|
sm scan
|
|
@@ -151,39 +147,13 @@ Expected: the scan prints a line like `Auto-detected activeProvider
|
|
|
151
147
|
.skill-map/settings.json`, and `get` then reports `claude`. The lens
|
|
152
148
|
is just a key in `settings.json`, persisted like any other setting.
|
|
153
149
|
|
|
154
|
-
>
|
|
155
|
-
> `
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
Expected: alongside the usual `✓ activeProvider = openai (wrote
|
|
162
|
-
.skill-map/settings.json)`, the CLI warns `Lens switched. Cleared 7
|
|
163
|
-
scan table(s) ... Run sm scan to repopulate the graph under the new
|
|
164
|
-
lens`. The important part: it cleared the **scan cache only**, your
|
|
165
|
-
`.md` files are untouched. The graph is derived data; the source is
|
|
166
|
-
always your filesystem.
|
|
167
|
-
|
|
168
|
-
> Re-scan under the new lens, then put it back the way you found it:
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
sm scan
|
|
172
|
-
sm config reset activeProvider
|
|
173
|
-
sm scan
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
Expected: the first scan repopulates under `openai`; `reset` removes
|
|
177
|
-
the key (`Removed activeProvider from .skill-map/settings.json`); the
|
|
178
|
-
last scan auto-detects `claude` again from your `.claude/` marker.
|
|
179
|
-
Back where you started, nothing lost.
|
|
180
|
-
|
|
181
|
-
> That's the whole idea of the lens: one project, one active
|
|
182
|
-
> provider at a time, chosen by `activeProvider` and backed by the
|
|
183
|
-
> built-in provider plugins (`claude`, `openai`, `agent-skills`,
|
|
184
|
-
> `antigravity`). Switching it is cheap and reversible because the
|
|
185
|
-
> graph is always rebuilt from your files, never the other way
|
|
186
|
-
> around.
|
|
150
|
+
> Other lenses exist in the engine (`openai` for Codex,
|
|
151
|
+
> `agent-skills`, `antigravity`), but they are **coming soon** in the
|
|
152
|
+
> tutorial: today we demo the `claude` lens only. The idea to keep is
|
|
153
|
+
> the one above, one project reads through exactly one provider at a
|
|
154
|
+
> time, chosen by `activeProvider`. The lens is cheap to change later
|
|
155
|
+
> because the graph is always rebuilt from your files, never the
|
|
156
|
+
> other way around.
|
|
187
157
|
|
|
188
158
|
Mark `settings-3-lens: done`.
|
|
189
159
|
|
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]="
|
|
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.
|
|
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
|
-
|
|
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=
|
|
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]="
|
|
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.
|
|
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
|
-
|
|
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=
|
|
3854
|
+
//# debugId=f3e27769-f4cb-5526-a022-5ef018a37ef8
|
package/dist/kernel/index.d.ts
CHANGED
|
@@ -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
|
package/dist/kernel/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]="
|
|
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.
|
|
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
|
-
|
|
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=
|
|
3854
|
+
//# debugId=efabc578-2328-5428-97bc-6c89a870170a
|