@skill-map/cli 0.71.0 → 0.73.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 +2 -2
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/shared/CLAUDE.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +16 -4
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +4 -1
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +46 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +7 -7
- package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +6 -3
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +22 -13
- package/dist/cli.js +242 -13
- package/dist/index.js +3 -3
- package/dist/kernel/index.js +3 -3
- package/dist/ui/chunk-GP2EM4DT.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-PEYHE35X.js +4 -0
- package/package.json +2 -2
- package/dist/ui/chunk-CK4C2IIP.js +0 -3
- package/dist/ui/main-GY4PAVQW.js +0 -4
- /package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/shared/{CLAUDE.md → README.md} +0 -0
- /package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/{shared → providers/claude/shared}/CLAUDE.md +0 -0
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]="b28a958b-1d55-5195-b54e-2998b22e5818")}catch(e){}}();
|
|
4
4
|
import { existsSync as existsSync34 } 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.
|
|
253
|
+
version: "0.73.0",
|
|
254
254
|
description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
|
|
255
255
|
license: "MIT",
|
|
256
256
|
type: "module",
|
|
@@ -584,6 +584,7 @@ var CLAUDE_PLUGIN_ID = "claude";
|
|
|
584
584
|
var CODEX_PLUGIN_ID = "codex";
|
|
585
585
|
var ANTIGRAVITY_PLUGIN_ID = "antigravity";
|
|
586
586
|
var AGENT_SKILLS_PLUGIN_ID = "agent-skills";
|
|
587
|
+
var OPENCODE_PLUGIN_ID = "opencode";
|
|
587
588
|
|
|
588
589
|
// plugins/claude/providers/claude/index.ts
|
|
589
590
|
var RESERVED_SLASH_NAMES = [
|
|
@@ -1185,15 +1186,17 @@ var agentSkillsProvider = {
|
|
|
1185
1186
|
// wins when no vendor marker is present. Provider-owned.
|
|
1186
1187
|
detect: { markers: [".agents"], fallback: true },
|
|
1187
1188
|
// Authoring target for `sm tutorial`: the open standard discovers skills
|
|
1188
|
-
// under `.agents/skills/<name>/SKILL.md`. `aka` lists Antigravity
|
|
1189
|
-
//
|
|
1190
|
-
// references), so a tester on
|
|
1189
|
+
// under `.agents/skills/<name>/SKILL.md`. `aka` lists Antigravity and
|
|
1190
|
+
// OpenCode, which share this territory AND the BASIC tutorial track (skill +
|
|
1191
|
+
// markdown, references), so a tester on either scaffolds here. OpenCode is
|
|
1192
|
+
// rich-capable (`agent` + `command` kinds) but is deliberately taught on the
|
|
1193
|
+
// basic track via the shared open standard. OpenAI Codex
|
|
1191
1194
|
// also reads `.agents/skills/`, but Codex is a RICH-track lens (it has the
|
|
1192
1195
|
// `agent` kind, plus `$`-skill invocation and `@`-file references), so
|
|
1193
1196
|
// advertising it under this basic row
|
|
1194
1197
|
// would hand it the wrong book; Codex is surfaced once a Codex rich
|
|
1195
1198
|
// scaffold target lands. `aka` is display-only, `--for` matches the id.
|
|
1196
|
-
scaffold: { skillDir: ".agents/skills", aka: ["Google's Antigravity"] },
|
|
1199
|
+
scaffold: { skillDir: ".agents/skills", aka: ["Google's Antigravity", "OpenCode"] },
|
|
1197
1200
|
read: COMMONS_READ,
|
|
1198
1201
|
kinds: COMMONS_KINDS,
|
|
1199
1202
|
resolution: COMMONS_RESOLUTION,
|
|
@@ -1559,6 +1562,186 @@ var dollarSkillExtractor = {
|
|
|
1559
1562
|
}
|
|
1560
1563
|
};
|
|
1561
1564
|
|
|
1565
|
+
// plugins/opencode/providers/opencode/schemas/agent.schema.json
|
|
1566
|
+
var agent_schema_default3 = {
|
|
1567
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
1568
|
+
$id: "https://skill-map.ai/providers/opencode/v1/frontmatter/agent.schema.json",
|
|
1569
|
+
title: "FrontmatterOpenCodeAgent",
|
|
1570
|
+
description: "Frontmatter shape for nodes classified as `agent` by the OpenCode Provider. OpenCode agents live as markdown files under `.opencode/agent/<name>.md` (https://opencode.ai/docs/agents); the markdown body is the agent prompt. There is NO `name` field, the filename stem is the handle. Field set mirrors OpenCode's documented agent frontmatter; `additionalProperties: true` lets any other inherited key flow through unchanged.",
|
|
1571
|
+
allOf: [
|
|
1572
|
+
{ $ref: "https://skill-map.ai/spec/v0/frontmatter/base.schema.json" }
|
|
1573
|
+
],
|
|
1574
|
+
type: "object",
|
|
1575
|
+
additionalProperties: true,
|
|
1576
|
+
required: ["description"],
|
|
1577
|
+
properties: {
|
|
1578
|
+
description: {
|
|
1579
|
+
type: "string",
|
|
1580
|
+
description: "What the agent does and when to use it. OpenCode surfaces this when selecting a subagent; skill-map mirrors it in the card. Required: a description-less agent cannot be meaningfully selected."
|
|
1581
|
+
},
|
|
1582
|
+
mode: {
|
|
1583
|
+
type: "string",
|
|
1584
|
+
enum: ["all", "primary", "subagent"],
|
|
1585
|
+
description: "How the agent runs: `primary` (a top-level agent the user can switch to), `subagent` (invoked by another agent via the `task` tool), or `all`. Inherits OpenCode's default when omitted."
|
|
1586
|
+
},
|
|
1587
|
+
model: {
|
|
1588
|
+
type: "string",
|
|
1589
|
+
description: "Model the agent runs against, in OpenCode's `provider/model` form (e.g. `anthropic/claude-opus-4-8`). Inherits the parent's model when omitted."
|
|
1590
|
+
},
|
|
1591
|
+
permission: {
|
|
1592
|
+
type: "object",
|
|
1593
|
+
additionalProperties: true,
|
|
1594
|
+
description: "Per-tool permission policy. Each documented tool key maps to `allow`, `ask`, or `deny`; `bash` may instead be a map of command globs to policies. Any tool omitted inherits OpenCode's default.",
|
|
1595
|
+
properties: {
|
|
1596
|
+
edit: { type: "string", enum: ["allow", "ask", "deny"] },
|
|
1597
|
+
bash: {
|
|
1598
|
+
description: "Either a blanket policy or a per-command-glob map.",
|
|
1599
|
+
oneOf: [
|
|
1600
|
+
{ type: "string", enum: ["allow", "ask", "deny"] },
|
|
1601
|
+
{
|
|
1602
|
+
type: "object",
|
|
1603
|
+
additionalProperties: { type: "string", enum: ["allow", "ask", "deny"] }
|
|
1604
|
+
}
|
|
1605
|
+
]
|
|
1606
|
+
},
|
|
1607
|
+
webfetch: { type: "string", enum: ["allow", "ask", "deny"] }
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
};
|
|
1612
|
+
|
|
1613
|
+
// plugins/opencode/providers/opencode/schemas/command.schema.json
|
|
1614
|
+
var command_schema_default2 = {
|
|
1615
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
1616
|
+
$id: "https://skill-map.ai/providers/opencode/v1/frontmatter/command.schema.json",
|
|
1617
|
+
title: "FrontmatterOpenCodeCommand",
|
|
1618
|
+
description: "Frontmatter shape for nodes classified as `command` by the OpenCode Provider. OpenCode custom commands live as markdown files under `.opencode/commands/<name>.md` (https://opencode.ai/docs/commands); the markdown body is the command template and the filename stem is the command name (invoked `/<name>`). No required fields beyond the base (OpenCode treats the frontmatter as optional metadata); `additionalProperties: true` lets inherited keys flow through unchanged.",
|
|
1619
|
+
allOf: [
|
|
1620
|
+
{ $ref: "https://skill-map.ai/spec/v0/frontmatter/base.schema.json" }
|
|
1621
|
+
],
|
|
1622
|
+
type: "object",
|
|
1623
|
+
additionalProperties: true,
|
|
1624
|
+
properties: {
|
|
1625
|
+
description: {
|
|
1626
|
+
type: "string",
|
|
1627
|
+
description: "Brief explanation of the command's purpose, shown in OpenCode's slash-command picker."
|
|
1628
|
+
},
|
|
1629
|
+
agent: {
|
|
1630
|
+
type: "string",
|
|
1631
|
+
description: "Optional agent this command runs under (matches an `.opencode/agent/<name>` handle)."
|
|
1632
|
+
},
|
|
1633
|
+
model: {
|
|
1634
|
+
type: "string",
|
|
1635
|
+
description: "Optional model override for this command, in OpenCode's `provider/model` form."
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1638
|
+
};
|
|
1639
|
+
|
|
1640
|
+
// plugins/opencode/providers/opencode/index.ts
|
|
1641
|
+
var OPENCODE_RESERVED_SLASH_VERBS = [
|
|
1642
|
+
// Inherited open-standard base (universal cross-agent slash commands).
|
|
1643
|
+
...COMMONS_RESERVED_NAMES["skill"] ?? [],
|
|
1644
|
+
// OpenCode-specific built-in verbs (`/help` already lives in the base).
|
|
1645
|
+
"init",
|
|
1646
|
+
"redo",
|
|
1647
|
+
"share",
|
|
1648
|
+
"undo"
|
|
1649
|
+
];
|
|
1650
|
+
var opencodeProvider = {
|
|
1651
|
+
id: "opencode",
|
|
1652
|
+
pluginId: OPENCODE_PLUGIN_ID,
|
|
1653
|
+
kind: "provider",
|
|
1654
|
+
description: "Classifies `.opencode/agent/*.md` as OpenCode agents and `.opencode/commands/*.md` as OpenCode commands (its own kinds), and skills under `.opencode/skills/`, `.claude/skills/`, and `.agents/skills/` (the project-level homes OpenCode reads).",
|
|
1655
|
+
// Provider identity for the active-lens dropdown, the topbar lens chip, and
|
|
1656
|
+
// the per-node provider chip. OpenCode has no strong model vendor (it is
|
|
1657
|
+
// model-agnostic), so the label is the bare product name, NOT a possessive
|
|
1658
|
+
// `<Vendor>'s <product>` like the other vendor lenses. Cyan, distinct from
|
|
1659
|
+
// codex green, antigravity violet, and the agent-skills slate.
|
|
1660
|
+
presentation: {
|
|
1661
|
+
label: "OpenCode",
|
|
1662
|
+
color: "#0891b2",
|
|
1663
|
+
colorDark: "#22d3ee",
|
|
1664
|
+
// OpenCode invokes its custom commands with `/<name>`; the palette paints
|
|
1665
|
+
// this as the `invokes` edge glyph under the opencode lens. (Skills are
|
|
1666
|
+
// loaded by OpenCode's native `skill` tool, not a body sigil.)
|
|
1667
|
+
invocationSigil: "/"
|
|
1668
|
+
},
|
|
1669
|
+
// Auto-detect marker: a `.opencode/` directory marks an OpenCode project.
|
|
1670
|
+
detect: { markers: [".opencode"] },
|
|
1671
|
+
// Vendor lens: gated to the active lens. OpenCode only resolves its own
|
|
1672
|
+
// territory (plus the Claude-compat / open-standard skill homes it reads).
|
|
1673
|
+
// Gating keeps the walker from claiming OpenCode territory under another
|
|
1674
|
+
// lens, where the OpenCode runtime would never resolve it anyway, and keeps
|
|
1675
|
+
// the `.claude/skills/` claim here from colliding with the claude lens.
|
|
1676
|
+
gatedByActiveLens: true,
|
|
1677
|
+
// Beta: ships enabled, auto-detects `.opencode/`, selectable as the active
|
|
1678
|
+
// lens, with a maturity badge. Same posture as codex / antigravity, since
|
|
1679
|
+
// the lens is freshly landed. Promote to `stable` (drop the field) once it
|
|
1680
|
+
// has real-world mileage.
|
|
1681
|
+
stability: "beta",
|
|
1682
|
+
// Single read rule: all three families are `.md` + YAML frontmatter, so one
|
|
1683
|
+
// `COMMONS_READ` pass suffices (no multi-rule `read` like codex, which mixes
|
|
1684
|
+
// `.toml`). `classify()` below routes each path to its kind.
|
|
1685
|
+
read: COMMONS_READ,
|
|
1686
|
+
kinds: {
|
|
1687
|
+
agent: {
|
|
1688
|
+
schema: "./schemas/agent.schema.json",
|
|
1689
|
+
schemaJson: agent_schema_default3,
|
|
1690
|
+
ui: {
|
|
1691
|
+
label: "Agents",
|
|
1692
|
+
// Cross-provider agent vocabulary: same blue as Claude's `agent` kind,
|
|
1693
|
+
// so an agent paints the same regardless of which lens sourced it.
|
|
1694
|
+
color: "#3b82f6",
|
|
1695
|
+
colorDark: "#60a5fa",
|
|
1696
|
+
icon: { kind: "pi", id: "pi-user" }
|
|
1697
|
+
},
|
|
1698
|
+
// No `name` frontmatter field: the filename stem
|
|
1699
|
+
// (`.opencode/agent/<name>.md`) is the handle.
|
|
1700
|
+
identifiers: ["filename-basename"]
|
|
1701
|
+
},
|
|
1702
|
+
command: {
|
|
1703
|
+
schema: "./schemas/command.schema.json",
|
|
1704
|
+
schemaJson: command_schema_default2,
|
|
1705
|
+
ui: {
|
|
1706
|
+
label: "Commands",
|
|
1707
|
+
// Cross-provider command vocabulary: same amber (and icon) as Claude's
|
|
1708
|
+
// `command` kind and Antigravity's `workflow` kind.
|
|
1709
|
+
color: "#f59e0b",
|
|
1710
|
+
colorDark: "#fbbf24",
|
|
1711
|
+
icon: { kind: "svg", path: "M4 17 L10 11 L4 5 M12 19 L20 19" }
|
|
1712
|
+
},
|
|
1713
|
+
// The filename stem is the command name (`/<name>`); no `name` field.
|
|
1714
|
+
identifiers: ["filename-basename"]
|
|
1715
|
+
},
|
|
1716
|
+
// Open-standard `skill` kind, inherited from `agent-skills` by manifest
|
|
1717
|
+
// composition (same schema + green visuals every adopter shares).
|
|
1718
|
+
// `classify()` routes the three skill homes OpenCode reads into this kind.
|
|
1719
|
+
...COMMONS_KINDS
|
|
1720
|
+
},
|
|
1721
|
+
// `/<name>` slash invocations resolve to commands ONLY: OpenCode reserves the
|
|
1722
|
+
// slash for its custom commands, and loads skills via its native `skill` tool
|
|
1723
|
+
// (no `/`-invocation), so `invokes` does NOT target `skill` here (unlike
|
|
1724
|
+
// claude). Overrides the open-standard default (`invokes: ['skill']`). The
|
|
1725
|
+
// `core/slash-command` extractor is authorised under the opencode lens (its
|
|
1726
|
+
// precondition lists `opencode`) so `/deploy` in a body emits the link.
|
|
1727
|
+
resolution: { invokes: ["command"] },
|
|
1728
|
+
// Reserved built-in slash commands, applied to the `command` kind (the only
|
|
1729
|
+
// `/`-invocable OpenCode kind: skills are tool-loaded, not slash-invoked, so
|
|
1730
|
+
// a skill named after a built-in cannot be shadowed through the slash
|
|
1731
|
+
// channel and is deliberately NOT reserved).
|
|
1732
|
+
reservedNames: {
|
|
1733
|
+
command: OPENCODE_RESERVED_SLASH_VERBS
|
|
1734
|
+
},
|
|
1735
|
+
classify(path) {
|
|
1736
|
+
const lower = path.toLowerCase();
|
|
1737
|
+
if (/^\.opencode\/agent\/[^/]+\.md$/.test(lower)) return "agent";
|
|
1738
|
+
if (/^\.opencode\/commands\/[^/]+\.md$/.test(lower)) return "command";
|
|
1739
|
+
if (/^\.opencode\/skills\/[^/]+\/skill\.md$/.test(lower)) return "skill";
|
|
1740
|
+
if (/^\.claude\/skills\/[^/]+\/skill\.md$/.test(lower)) return "skill";
|
|
1741
|
+
return classifyCommonsPath(path);
|
|
1742
|
+
}
|
|
1743
|
+
};
|
|
1744
|
+
|
|
1562
1745
|
// plugins/core/providers/core-markdown/schemas/markdown.schema.json
|
|
1563
1746
|
var markdown_schema_default = {
|
|
1564
1747
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
@@ -2009,7 +2192,7 @@ var slashCommandExtractor = {
|
|
|
2009
2192
|
id: ID9,
|
|
2010
2193
|
pluginId: CORE_PLUGIN_ID,
|
|
2011
2194
|
kind: "extractor",
|
|
2012
|
-
description: "Turns `/command` invocations in a node's body into arrows that point at the resolved slash command, skill, or workflow, using the `/`-grammar shared by Claude and
|
|
2195
|
+
description: "Turns `/command` invocations in a node's body into arrows that point at the resolved slash command, skill, or workflow, using the `/`-grammar shared by Claude, Antigravity, and OpenCode. Example: `/deploy` in the body draws an arrow to the `deploy` command.",
|
|
2013
2196
|
scope: "body",
|
|
2014
2197
|
// Also authorised under the antigravity lens, which shares the `/command`
|
|
2015
2198
|
// grammar: a workflow / skill / AGENTS.md body's `/name` tokens resolve to
|
|
@@ -2019,7 +2202,13 @@ var slashCommandExtractor = {
|
|
|
2019
2202
|
// `/init`, ...) and invokes user skills with `$` instead (parsed by the
|
|
2020
2203
|
// codex `dollar-skill` extractor). A lens that declares no `invokes`
|
|
2021
2204
|
// resolution leaves the signals unresolved (no spurious edges).
|
|
2022
|
-
|
|
2205
|
+
//
|
|
2206
|
+
// Also authorised under the opencode lens: OpenCode invokes its custom
|
|
2207
|
+
// `.opencode/commands/<name>.md` with `/<name>` (the opencode provider maps
|
|
2208
|
+
// `invokes: ['command']`, since OpenCode loads skills via its native `skill`
|
|
2209
|
+
// tool rather than the slash channel). Additive: claude / antigravity runs
|
|
2210
|
+
// are unchanged.
|
|
2211
|
+
precondition: { provider: ["claude", "antigravity", "opencode"] },
|
|
2023
2212
|
extract(ctx) {
|
|
2024
2213
|
const seen = /* @__PURE__ */ new Set();
|
|
2025
2214
|
const body = stripCodeAndHtml(ctx.body);
|
|
@@ -4650,6 +4839,7 @@ var toolsCounterExtractor2 = { ...toolsCounterExtractor, pluginId: "claude", ver
|
|
|
4650
4839
|
var antigravityProvider2 = { ...antigravityProvider, pluginId: "antigravity", version: VERSION };
|
|
4651
4840
|
var codexProvider2 = { ...codexProvider, pluginId: "codex", version: VERSION };
|
|
4652
4841
|
var dollarSkillExtractor2 = { ...dollarSkillExtractor, pluginId: "codex", version: VERSION };
|
|
4842
|
+
var opencodeProvider2 = { ...opencodeProvider, pluginId: "opencode", version: VERSION };
|
|
4653
4843
|
var agentSkillsProvider2 = { ...agentSkillsProvider, pluginId: "agent-skills", version: VERSION };
|
|
4654
4844
|
var coreMarkdownProvider2 = { ...coreMarkdownProvider, pluginId: "core", version: VERSION };
|
|
4655
4845
|
var atFileExtractor2 = { ...atFileExtractor, pluginId: "core", version: VERSION };
|
|
@@ -4691,7 +4881,7 @@ var builtInPlugins = [
|
|
|
4691
4881
|
},
|
|
4692
4882
|
{
|
|
4693
4883
|
id: "antigravity",
|
|
4694
|
-
description: "Google Antigravity CLI platform integration (replaces the retired Gemini CLI). Classifies
|
|
4884
|
+
description: "Google Antigravity CLI platform integration (replaces the retired Gemini CLI). Classifies workflows under `.agent/workflows/`, plus the open-standard `.agents/skills/` layout.",
|
|
4695
4885
|
extensions: [
|
|
4696
4886
|
antigravityProvider2
|
|
4697
4887
|
]
|
|
@@ -4704,6 +4894,13 @@ var builtInPlugins = [
|
|
|
4704
4894
|
dollarSkillExtractor2
|
|
4705
4895
|
]
|
|
4706
4896
|
},
|
|
4897
|
+
{
|
|
4898
|
+
id: "opencode",
|
|
4899
|
+
description: "OpenCode CLI platform integration (open-source, model-agnostic terminal coding agent). Classifies agents and commands under `.opencode/`, plus the skill homes it reads.",
|
|
4900
|
+
extensions: [
|
|
4901
|
+
opencodeProvider2
|
|
4902
|
+
]
|
|
4903
|
+
},
|
|
4707
4904
|
{
|
|
4708
4905
|
id: "agent-skills",
|
|
4709
4906
|
description: "Open-standard Agent Skills layout. Classifies skills under the vendor-neutral path `.agents/skills/<name>/SKILL.md` (adopted by Anthropic, OpenAI, Google). See agentskills.io.",
|
|
@@ -5442,6 +5639,7 @@ var BUILT_IN_PLUGIN_IDS = /* @__PURE__ */ new Set([
|
|
|
5442
5639
|
"claude",
|
|
5443
5640
|
"antigravity",
|
|
5444
5641
|
"codex",
|
|
5642
|
+
"opencode",
|
|
5445
5643
|
"agent-skills",
|
|
5446
5644
|
"core"
|
|
5447
5645
|
]);
|
|
@@ -5651,6 +5849,7 @@ var defaults_default = {
|
|
|
5651
5849
|
schemaVersion: 1,
|
|
5652
5850
|
allowEditSmFiles: false,
|
|
5653
5851
|
allowSidecarWriters: true,
|
|
5852
|
+
tutorialReminderDismissed: false,
|
|
5654
5853
|
tokenizer: "cl100k_base",
|
|
5655
5854
|
roots: [],
|
|
5656
5855
|
ignore: [],
|
|
@@ -5682,6 +5881,7 @@ var defaults_default = {
|
|
|
5682
5881
|
// kernel/config/loader.ts
|
|
5683
5882
|
var PROJECT_LOCAL_ONLY_KEYS = /* @__PURE__ */ new Set([
|
|
5684
5883
|
"allowEditSmFiles",
|
|
5884
|
+
"tutorialReminderDismissed",
|
|
5685
5885
|
"scan.referencePaths",
|
|
5686
5886
|
"pluginTrust.projectEnabled"
|
|
5687
5887
|
]);
|
|
@@ -22181,6 +22381,7 @@ var BUILT_IN_PLUGIN_PRESENTATION_ORDER = [
|
|
|
22181
22381
|
"claude",
|
|
22182
22382
|
"antigravity",
|
|
22183
22383
|
"codex",
|
|
22384
|
+
"opencode",
|
|
22184
22385
|
"agent-skills"
|
|
22185
22386
|
];
|
|
22186
22387
|
function sortPluginsForPresentation(plugins) {
|
|
@@ -26918,6 +27119,7 @@ var SERVER_TEXTS = {
|
|
|
26918
27119
|
projectPrefsBodyEmpty: "Request body must contain `allowSidecarWriters`, a `scan` block with `referencePaths`, and/or a `pluginTrust` block with `projectEnabled`.",
|
|
26919
27120
|
projectPrefsConfirmNotBoolean: "`confirm` must be a boolean.",
|
|
26920
27121
|
projectPrefsSidecarWritersNotBoolean: "`allowSidecarWriters` must be a boolean.",
|
|
27122
|
+
projectPrefsReminderNotBoolean: "`tutorialReminderDismissed` must be a boolean.",
|
|
26921
27123
|
projectPrefsTrustNotObject: '`pluginTrust` must be an object (e.g. `{"pluginTrust": {"projectEnabled": true}}`).',
|
|
26922
27124
|
projectPrefsTrustEnabledNotBoolean: "`pluginTrust.projectEnabled` must be a boolean.",
|
|
26923
27125
|
// Server-stderr advisory after `PATCH /api/project-preferences`
|
|
@@ -28971,7 +29173,11 @@ function buildEnvelope3(deps) {
|
|
|
28971
29173
|
cwd,
|
|
28972
29174
|
default: false
|
|
28973
29175
|
}) ?? false
|
|
28974
|
-
}
|
|
29176
|
+
},
|
|
29177
|
+
tutorialReminderDismissed: readConfigValue("tutorialReminderDismissed", {
|
|
29178
|
+
cwd,
|
|
29179
|
+
default: false
|
|
29180
|
+
}) ?? false
|
|
28975
29181
|
};
|
|
28976
29182
|
}
|
|
28977
29183
|
async function applyPatch3(deps, body) {
|
|
@@ -28979,8 +29185,11 @@ async function applyPatch3(deps, body) {
|
|
|
28979
29185
|
const policyChanged = typeof body.allowSidecarWriters === "boolean" && writeSidecarWritersPolicy(body.allowSidecarWriters, cwd);
|
|
28980
29186
|
const scan = applyScanWrites(body, cwd);
|
|
28981
29187
|
const trustChanged = applyTrustWrite(body, cwd);
|
|
29188
|
+
const reminderChanged = applyTutorialReminderWrite(body, cwd);
|
|
28982
29189
|
if (policyChanged || scan.mutated) await maybeRestartWatcher2(deps);
|
|
28983
|
-
if (policyChanged || scan.attempted || trustChanged)
|
|
29190
|
+
if (policyChanged || scan.attempted || trustChanged || reminderChanged) {
|
|
29191
|
+
deps.configService.reload();
|
|
29192
|
+
}
|
|
28984
29193
|
}
|
|
28985
29194
|
function applyTrustWrite(body, cwd) {
|
|
28986
29195
|
const next = body.pluginTrust?.projectEnabled;
|
|
@@ -29005,6 +29214,23 @@ function applyTrustWrite(body, cwd) {
|
|
|
29005
29214
|
log.warn(tx(SERVER_TEXTS.projectPrefsTrustSet, { value: String(next) }));
|
|
29006
29215
|
return true;
|
|
29007
29216
|
}
|
|
29217
|
+
function applyTutorialReminderWrite(body, cwd) {
|
|
29218
|
+
const next = body.tutorialReminderDismissed;
|
|
29219
|
+
if (next === void 0) return false;
|
|
29220
|
+
const before = readConfigValue("tutorialReminderDismissed", { cwd, default: false }) ?? false;
|
|
29221
|
+
if (before === next) return false;
|
|
29222
|
+
try {
|
|
29223
|
+
writeConfigValue("tutorialReminderDismissed", next, { target: "project-local", cwd });
|
|
29224
|
+
} catch (err) {
|
|
29225
|
+
throw new HTTPException13(400, {
|
|
29226
|
+
message: tx(SERVER_TEXTS.projectPrefsPersistFailed, {
|
|
29227
|
+
key: "tutorialReminderDismissed",
|
|
29228
|
+
message: formatErrorMessage(err)
|
|
29229
|
+
})
|
|
29230
|
+
});
|
|
29231
|
+
}
|
|
29232
|
+
return true;
|
|
29233
|
+
}
|
|
29008
29234
|
function applyScanWrites(body, cwd) {
|
|
29009
29235
|
const writes = collectWrites(body);
|
|
29010
29236
|
if (writes.length === 0) return { attempted: false, mutated: false };
|
|
@@ -29158,11 +29384,13 @@ var PATCH_BODY_SCHEMA3 = {
|
|
|
29158
29384
|
anyOf: [
|
|
29159
29385
|
{ required: ["allowSidecarWriters"] },
|
|
29160
29386
|
{ required: ["scan"] },
|
|
29161
|
-
{ required: ["pluginTrust"] }
|
|
29387
|
+
{ required: ["pluginTrust"] },
|
|
29388
|
+
{ required: ["tutorialReminderDismissed"] }
|
|
29162
29389
|
],
|
|
29163
29390
|
properties: {
|
|
29164
29391
|
confirm: { type: "boolean" },
|
|
29165
29392
|
allowSidecarWriters: { type: "boolean" },
|
|
29393
|
+
tutorialReminderDismissed: { type: "boolean" },
|
|
29166
29394
|
scan: {
|
|
29167
29395
|
type: "object",
|
|
29168
29396
|
additionalProperties: false,
|
|
@@ -29197,6 +29425,7 @@ var parsePatchBody4 = makeBodyValidator(PATCH_BODY_SCHEMA3, {
|
|
|
29197
29425
|
"/pluginTrust/projectEnabled:type:boolean": SERVER_TEXTS.projectPrefsTrustEnabledNotBoolean,
|
|
29198
29426
|
"/confirm:type:boolean": SERVER_TEXTS.projectPrefsConfirmNotBoolean,
|
|
29199
29427
|
"/allowSidecarWriters:type:boolean": SERVER_TEXTS.projectPrefsSidecarWritersNotBoolean,
|
|
29428
|
+
"/tutorialReminderDismissed:type:boolean": SERVER_TEXTS.projectPrefsReminderNotBoolean,
|
|
29200
29429
|
"/scan/referencePaths:type:array": tx(SERVER_TEXTS.projectPrefsListNotArray, { key: "scan.referencePaths" }),
|
|
29201
29430
|
"/scan/referencePaths/*:type:string": tx(SERVER_TEXTS.projectPrefsListEntryNotString, { key: "scan.referencePaths" }),
|
|
29202
29431
|
"/scan/referencePaths/*:pattern": SERVER_TEXTS.projectPrefsEntryHasComma
|
|
@@ -33161,4 +33390,4 @@ function resolveBareDefault() {
|
|
|
33161
33390
|
process.exit(ExitCode.Error);
|
|
33162
33391
|
}
|
|
33163
33392
|
//# sourceMappingURL=cli.js.map
|
|
33164
|
-
//# debugId=
|
|
33393
|
+
//# debugId=b28a958b-1d55-5195-b54e-2998b22e5818
|
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]="302a8177-c654-50bd-828f-f658a568e578")}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.
|
|
105
|
+
version: "0.73.0",
|
|
106
106
|
description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
|
|
107
107
|
license: "MIT",
|
|
108
108
|
type: "module",
|
|
@@ -4261,4 +4261,4 @@ export {
|
|
|
4261
4261
|
runScanWithRenames
|
|
4262
4262
|
};
|
|
4263
4263
|
//# sourceMappingURL=index.js.map
|
|
4264
|
-
//# debugId=
|
|
4264
|
+
//# debugId=302a8177-c654-50bd-828f-f658a568e578
|
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]="4dbe72ce-1485-5a29-adf0-bfb088a9bad4")}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.
|
|
105
|
+
version: "0.73.0",
|
|
106
106
|
description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
|
|
107
107
|
license: "MIT",
|
|
108
108
|
type: "module",
|
|
@@ -4261,4 +4261,4 @@ export {
|
|
|
4261
4261
|
runScanWithRenames
|
|
4262
4262
|
};
|
|
4263
4263
|
//# sourceMappingURL=index.js.map
|
|
4264
|
-
//# debugId=
|
|
4264
|
+
//# debugId=4dbe72ce-1485-5a29-adf0-bfb088a9bad4
|