wicked-crew 0.7.28 → 0.7.30
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/README.md +12 -1
- package/dist/api/chat-scope.d.ts +210 -0
- package/dist/api/chat-scope.d.ts.map +1 -0
- package/dist/api/chat-scope.js +728 -0
- package/dist/api/chat-scope.js.map +1 -0
- package/dist/api/diagnostics.d.ts +30 -2
- package/dist/api/diagnostics.d.ts.map +1 -1
- package/dist/api/diagnostics.js +73 -5
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/governance-health.d.ts +171 -0
- package/dist/api/governance-health.d.ts.map +1 -0
- package/dist/api/governance-health.js +379 -0
- package/dist/api/governance-health.js.map +1 -0
- package/dist/api/open-path.d.ts.map +1 -1
- package/dist/api/open-path.js +2 -1
- package/dist/api/open-path.js.map +1 -1
- package/dist/api/post-hoc-deliver.d.ts +9 -5
- package/dist/api/post-hoc-deliver.d.ts.map +1 -1
- package/dist/api/post-hoc-deliver.js +21 -7
- package/dist/api/post-hoc-deliver.js.map +1 -1
- package/dist/api/routes.d.ts +70 -12
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +375 -60
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-health.d.ts +38 -0
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +88 -5
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-signin.d.ts.map +1 -1
- package/dist/api/seat-signin.js +49 -23
- package/dist/api/seat-signin.js.map +1 -1
- package/dist/api/seat-standing.d.ts +101 -0
- package/dist/api/seat-standing.d.ts.map +1 -0
- package/dist/api/seat-standing.js +138 -0
- package/dist/api/seat-standing.js.map +1 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +37 -0
- package/dist/api/server.js.map +1 -1
- package/dist/campaigns/routes.d.ts +4 -4
- package/dist/cli/governance.d.ts +131 -0
- package/dist/cli/governance.d.ts.map +1 -0
- package/dist/cli/governance.js +354 -0
- package/dist/cli/governance.js.map +1 -0
- package/dist/cli/index.js +102 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +99 -1
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +149 -8
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-path.d.ts +21 -0
- package/dist/core/bridge-path.d.ts.map +1 -1
- package/dist/core/bridge-path.js +37 -0
- package/dist/core/bridge-path.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +11 -4
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/deliver-text.d.ts +184 -0
- package/dist/core/deliver-text.d.ts.map +1 -0
- package/dist/core/deliver-text.js +434 -0
- package/dist/core/deliver-text.js.map +1 -0
- package/dist/core/deliver-triage.d.ts +90 -0
- package/dist/core/deliver-triage.d.ts.map +1 -0
- package/dist/core/deliver-triage.js +106 -0
- package/dist/core/deliver-triage.js.map +1 -0
- package/dist/core/deliver.d.ts +103 -9
- package/dist/core/deliver.d.ts.map +1 -1
- package/dist/core/deliver.js +244 -46
- package/dist/core/deliver.js.map +1 -1
- package/dist/core/estate-mcp-client.d.ts.map +1 -1
- package/dist/core/estate-mcp-client.js +7 -2
- package/dist/core/estate-mcp-client.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +11 -1
- package/dist/core/exec.js.map +1 -1
- package/dist/core/governance-store.d.ts +219 -0
- package/dist/core/governance-store.d.ts.map +1 -0
- package/dist/core/governance-store.js +290 -0
- package/dist/core/governance-store.js.map +1 -0
- package/dist/core/repoPaths.d.ts +36 -5
- package/dist/core/repoPaths.d.ts.map +1 -1
- package/dist/core/repoPaths.js +46 -4
- package/dist/core/repoPaths.js.map +1 -1
- package/dist/interactive/bridge-pool.d.ts +29 -24
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +74 -7
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/chat-events.d.ts.map +1 -1
- package/dist/interactive/chat-events.js +5 -2
- package/dist/interactive/chat-events.js.map +1 -1
- package/dist/interactive/council-outcome.d.ts +28 -0
- package/dist/interactive/council-outcome.d.ts.map +1 -0
- package/dist/interactive/council-outcome.js +57 -0
- package/dist/interactive/council-outcome.js.map +1 -0
- package/dist/interactive/demo-events.d.ts.map +1 -1
- package/dist/interactive/demo-events.js +5 -2
- package/dist/interactive/demo-events.js.map +1 -1
- package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
- package/dist/interactive/doc-delete-routes.js +3 -2
- package/dist/interactive/doc-delete-routes.js.map +1 -1
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +5 -2
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +5 -2
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/projects/auto-refresh.d.ts +54 -0
- package/dist/projects/auto-refresh.d.ts.map +1 -0
- package/dist/projects/auto-refresh.js +76 -0
- package/dist/projects/auto-refresh.js.map +1 -0
- package/dist/projects/graph-paths.d.ts +4 -2
- package/dist/projects/graph-paths.d.ts.map +1 -1
- package/dist/projects/graph-paths.js +4 -2
- package/dist/projects/graph-paths.js.map +1 -1
- package/dist/projects/graph.d.ts +20 -6
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +40 -13
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts.map +1 -1
- package/dist/projects/routes.js +30 -11
- package/dist/projects/routes.js.map +1 -1
- package/dist/projects/state-home.d.ts +6 -0
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +9 -1
- package/dist/projects/state-home.js.map +1 -1
- package/dist/skills/guards.d.ts +17 -6
- package/dist/skills/guards.d.ts.map +1 -1
- package/dist/skills/guards.js +42 -15
- package/dist/skills/guards.js.map +1 -1
- package/dist/skills/plugin-source.d.ts.map +1 -1
- package/dist/skills/plugin-source.js +3 -0
- package/dist/skills/plugin-source.js.map +1 -1
- package/dist/skills/refs.d.ts +181 -17
- package/dist/skills/refs.d.ts.map +1 -1
- package/dist/skills/refs.js +345 -26
- package/dist/skills/refs.js.map +1 -1
- package/dist/skills/store.d.ts +22 -1
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +161 -23
- package/dist/skills/store.js.map +1 -1
- package/dist/studio/assets/index-CWUS9Ump.js +542 -0
- package/dist/studio/assets/{index-CK1uJWs2.css → index-_ydd-jKd.css} +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +567 -6
- package/endpoint-manifest.json +67 -14
- package/package.json +4 -4
- package/dist/studio/assets/index-CdmCMh2f.js +0 -539
package/dist/skills/refs.js
CHANGED
|
@@ -1,22 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reference extraction over skill text (design v3 §4/§5)
|
|
3
|
-
* to reach files outside their own directory,
|
|
4
|
-
* skill Claude
|
|
2
|
+
* Reference extraction over skill text (design v3 §4/§5) and the PORTABILITY VALIDATOR (F-079,
|
|
3
|
+
* wicked-crew#531): the shapes garden skills use to reach files outside their own directory, and
|
|
4
|
+
* the reasons a skill's text cannot be followed on a non-Claude CLI.
|
|
5
5
|
*
|
|
6
|
-
* - `${CLAUDE_PLUGIN_ROOT}/<p>` — the plugin-root form
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* - `${CLAUDE_PLUGIN_ROOT}/<p>` — the plugin-root form: resolved against the SNAPSHOT root at
|
|
7
|
+
* publish, so a reference into a disabled skill or a file the bundle does not carry is a
|
|
8
|
+
* finding naming file:line. Only Claude Code substitutes the variable; every other CLI passes
|
|
9
|
+
* it through literally.
|
|
9
10
|
* - `../<p>` — sibling links (`repo-learn/SKILL.md` → `../search/refs/hotspots.md`): resolved
|
|
10
11
|
* from the referencing file's directory, must land inside the snapshot.
|
|
11
|
-
* - `python3 scripts/…` / `
|
|
12
|
-
*
|
|
13
|
-
* to resolve, but a portability marker. ANY interpreter followed by a cwd-relative path (after
|
|
14
|
-
* optional flags) counts, not only one literally followed by `scripts/` (codex round 2).
|
|
12
|
+
* - `python3 scripts/…` / `node scripts/x/run.mjs` / `uv run scripts/x.py` — a plugin script
|
|
13
|
+
* invoked relative to the WORKTREE cwd (`domain-extractor/SKILL.md:44`): a portability marker.
|
|
15
14
|
*
|
|
16
|
-
* `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* `portabilityIssuesOf` reports EVERY reason (not the first) with the 1-based line of each hit —
|
|
16
|
+
* the manifest's `portability {portable, reasons[], evidence[]}` and the per-reason `non-portable`
|
|
17
|
+
* findings are derived from it (design W4 §5.1). The tokens:
|
|
18
|
+
*
|
|
19
|
+
* plugin-root text contains `${CLAUDE_PLUGIN_ROOT}`
|
|
20
|
+
* skill-dir-var text contains `${CLAUDE_SKILL_DIR}` (a Claude-only substitution)
|
|
21
|
+
* cwd-script an interpreter followed by a relative path that EXISTS at the plugin
|
|
22
|
+
* root (`scripts/**`) — the worktree-cwd reading — and is not written
|
|
23
|
+
* through the `wicked-garden run|python|path` launcher. A relative path
|
|
24
|
+
* that exists only inside the skill's OWN directory is the base-directory
|
|
25
|
+
* idiom every CLI shares and is portable; one that exists nowhere in the
|
|
26
|
+
* bundle (`go test ./...`, `npx @axe-core/cli`, `python3 tests/x.py`) is
|
|
27
|
+
* not a plugin file. Matches inside fenced code blocks whose language is
|
|
28
|
+
* not a shell (`ts`, `js`, `python`, `yaml`, …) are ignored.
|
|
29
|
+
* relative-link a `../` token whose resolved target EXISTS in the bundle (an
|
|
30
|
+
* unresolvable `../requirements.md` inside a template is not a link the
|
|
31
|
+
* flat layout could break)
|
|
32
|
+
* cross-skill-path a plugin-root or resolved `../` target that lands in ANOTHER skill's
|
|
33
|
+
* directory — the installer lays skills out flat by name, so a
|
|
34
|
+
* filesystem relation between two skills never survives; the portable
|
|
35
|
+
* form names the other skill (`wicked-garden-<x>`)
|
|
36
|
+
* requires-harness:claude frontmatter `metadata.requires-harness: claude`, declared by the author
|
|
37
|
+
*
|
|
38
|
+
* The rule table (markers, regex sources, fence languages) is exported as `PORTABILITY_RULES` and
|
|
39
|
+
* vendored VERBATIM by wicked-garden's own lint (`tests/portability_rules.json` there,
|
|
40
|
+
* `packages/crew/tests/fixtures/portability_rules.json` here) — `tests/skills-refs.test.ts` fails
|
|
41
|
+
* when the two drift. Every regex is spelled so Python's `re` accepts it too: fixed-width
|
|
42
|
+
* lookbehinds only, no named groups.
|
|
20
43
|
*
|
|
21
44
|
* Path tokens keep every ORDINARY filename character (`+`, `@`, `~`, `%`, `=`, `,`, `:` …): a
|
|
22
45
|
* reference truncated at the first unusual character would validate a PREFIX of the file it names
|
|
@@ -26,8 +49,12 @@
|
|
|
26
49
|
* punctuation is then trimmed.
|
|
27
50
|
*/
|
|
28
51
|
import { posix } from 'node:path';
|
|
52
|
+
import { owningSkillDir } from './bundle.js';
|
|
53
|
+
import { parseFrontmatter } from './frontmatter.js';
|
|
29
54
|
/** The literal every plugin-root reference starts with. */
|
|
30
55
|
export const PLUGIN_ROOT_MARKER = '${CLAUDE_PLUGIN_ROOT}';
|
|
56
|
+
/** The per-skill directory variable only Claude Code substitutes (W4 §5.1 `skill-dir-var`). */
|
|
57
|
+
export const SKILL_DIR_MARKER = '${CLAUDE_SKILL_DIR}';
|
|
31
58
|
/** A path token: everything up to whitespace, a quote/backtick, a bracket/paren/brace, a shell separator, or a glob metacharacter (`*`, `?`). */
|
|
32
59
|
const PATH_CHARS = '[^\\s"\'`()\\[\\]{}<>|;&*?]';
|
|
33
60
|
const PLUGIN_ROOT_RE = new RegExp(`\\$\\{CLAUDE_PLUGIN_ROOT\\}(\\/${PATH_CHARS}*)?`, 'g');
|
|
@@ -43,7 +70,14 @@ const RELATIVE_RE = new RegExp(`(?<![A-Za-z0-9_./-])((?:\\.\\.\\/)+${PATH_CHARS}
|
|
|
43
70
|
// which is consumed WITH its value so the script path after it is still seen (`python3 -W ignore
|
|
44
71
|
// scripts/foo.py`, `node --require foo scripts/x.js` used to read as portable). A value-taking
|
|
45
72
|
// option with no path after it (`python3 -m pytest`, `python3 -c "print(1)"`) is not an invocation.
|
|
46
|
-
|
|
73
|
+
// The bare `./seg` alternative of the earlier rule is GONE (W4 §5.1): `./dist`, `./out.png`,
|
|
74
|
+
// `import x from './y'` are not invocations of a plugin script — a `./`-prefixed path still counts
|
|
75
|
+
// when an interpreter precedes it and the file exists at the plugin root.
|
|
76
|
+
// The interpreter may be written as a PATH (`/usr/bin/python3`, `.venv/bin/python`,
|
|
77
|
+
// `./node_modules/.bin/tsx`, `~/bin/node`) — review of #532, F-4: an optional absolute / dot /
|
|
78
|
+
// home prefix and any number of `seg/` before the bare interpreter name.
|
|
79
|
+
const INTERPRETER_PREFIX = '(?:\\/|\\.{1,2}\\/)?(?:[A-Za-z0-9_.+@%=,:~-]+\\/)*';
|
|
80
|
+
const INTERPRETER = `${INTERPRETER_PREFIX}(?:python3?|uv\\s+run|bash|sh|zsh|node|npx|tsx|deno\\s+run)`;
|
|
47
81
|
const VALUED_OPTION = '(?:-[WXmcQrepCo]|--(?:require|loader|experimental-loader|import|eval|print|env-file|conditions|input-type|python|with|directory|project|config|import-map))';
|
|
48
82
|
// The bare-flag alternative must NOT be able to match a value-taking option that has a value (the
|
|
49
83
|
// negative lookahead): otherwise backtracking would read `-W` as a bare flag and its value
|
|
@@ -51,8 +85,117 @@ const VALUED_OPTION = '(?:-[WXmcQrepCo]|--(?:require|loader|experimental-loader|
|
|
|
51
85
|
const FLAG = `(?:\\s+(?:${VALUED_OPTION}\\s+\\S+|(?!${VALUED_OPTION}\\s)-{1,2}[A-Za-z0-9_-]+(?:=\\S+)?))*`;
|
|
52
86
|
const SEG = '[A-Za-z0-9_.+@%=,:~-]+';
|
|
53
87
|
const RELATIVE_SCRIPT = `(?:\\.{1,2}\\/)?(?:${SEG}\\/)*${SEG}(?:\\/|\\.(?:py|sh|bash|zsh|mjs|cjs|js|ts))`;
|
|
54
|
-
|
|
55
|
-
|
|
88
|
+
// Group 1 is the relative path token — what the existence check resolves.
|
|
89
|
+
const CWD_SCRIPT_RE = new RegExp(`(?<![A-Za-z0-9_./-])${INTERPRETER}${FLAG}\\s+(?![/$~])(${RELATIVE_SCRIPT}|(?:${SEG}\\/)+${SEG})(?![A-Za-z0-9_])`, 'g');
|
|
90
|
+
// The portable launcher forms (W4 §4.2): `wicked-garden run <p>`, `wicked-garden python <p>`,
|
|
91
|
+
// `$(wicked-garden path <dir>)`, optionally `npx wicked-garden@12 run …`. Masked out of a line
|
|
92
|
+
// BEFORE the cwd-script rule runs, so `wicked-garden python scripts/x.py` is never read as
|
|
93
|
+
// `python scripts/x.py`.
|
|
94
|
+
const LAUNCHER_RE = new RegExp(`(?<![A-Za-z0-9_./-])wicked-garden(?:@[A-Za-z0-9_.^~<>=-]+)?\\s+(?:run|python|path)\\s+${PATH_CHARS}+`, 'g');
|
|
95
|
+
// A fence line (CommonMark §4.5): at line start, three or more backticks or tildes, then the info
|
|
96
|
+
// string — its first word is the language. A BACKTICK fence's info string may not contain a
|
|
97
|
+
// backtick, so a one-line span like ```` ```ts const x = 1 ``` ```` is a code span, not an opener
|
|
98
|
+
// (review of #532, F-2: it used to open a fence that swallowed the rest of the file). Tilde fences
|
|
99
|
+
// have no such restriction. Group 1 = the marker run, group 2 = the language word.
|
|
100
|
+
const FENCE_RE = /^\s*(?:(`{3,})(?![^`]*`)|(~{3,}))\s*([^\s`{]*)/;
|
|
101
|
+
/** The marker run and language word of a fence line, or `null` when `line` is not a fence line. */
|
|
102
|
+
function fenceLine(line) {
|
|
103
|
+
const m = FENCE_RE.exec(line);
|
|
104
|
+
if (m === null)
|
|
105
|
+
return null;
|
|
106
|
+
return { marker: m[1] ?? m[2] ?? '', lang: (m[3] ?? '').toLowerCase() };
|
|
107
|
+
}
|
|
108
|
+
/** Fence languages the cwd-script rule DOES scan — shells and prose; anything else (`ts`, `js`, `python`, `yaml`, …) is code the rule ignores. */
|
|
109
|
+
export const SCANNED_FENCE_LANGUAGES = ['', 'sh', 'bash', 'zsh', 'shell', 'console', 'text'];
|
|
110
|
+
/**
|
|
111
|
+
* The NORMATIVE rule table both lints share (design W4 §5.3; review of #532 addendum): every regex
|
|
112
|
+
* SOURCE string, the markers, the interpreter list, the option-skipping rule, the interpreter
|
|
113
|
+
* path-prefix rule, the fence walk, the existence and `../` resolution semantics and the
|
|
114
|
+
* frontmatter key — spelled once here, vendored BYTE-FOR-BYTE by garden as
|
|
115
|
+
* `tests/portability_rules.json` (crew keeps the canonical copy at
|
|
116
|
+
* `packages/crew/tests/fixtures/portability_rules.json`, which adds `cases[]` and a
|
|
117
|
+
* `sha256_of_rules` over exactly this object). `tests/skills-refs.test.ts` asserts the committed
|
|
118
|
+
* fixture equals this object and re-derives every case — a drift between the two lints is a
|
|
119
|
+
* failing test, not a surprise at publish. Every regex is valid in BOTH ECMAScript and Python
|
|
120
|
+
* `re`: fixed-width lookbehinds only, no named groups, no `\h`.
|
|
121
|
+
*/
|
|
122
|
+
export const PORTABILITY_RULES = {
|
|
123
|
+
markers: { 'plugin-root': PLUGIN_ROOT_MARKER, 'skill-dir-var': SKILL_DIR_MARKER },
|
|
124
|
+
path_chars: PATH_CHARS,
|
|
125
|
+
regex: {
|
|
126
|
+
plugin_root_ref: PLUGIN_ROOT_RE.source,
|
|
127
|
+
relative_ref: RELATIVE_RE.source,
|
|
128
|
+
cwd_script: CWD_SCRIPT_RE.source,
|
|
129
|
+
launcher_call: LAUNCHER_RE.source,
|
|
130
|
+
fence_line: FENCE_RE.source,
|
|
131
|
+
},
|
|
132
|
+
/** The rules, one per token: what fires it and which regex source(s) it uses. */
|
|
133
|
+
rules: [
|
|
134
|
+
{
|
|
135
|
+
token: 'plugin-root',
|
|
136
|
+
description: 'the text contains the marker `${CLAUDE_PLUGIN_ROOT}` (only Claude Code substitutes it); every occurrence is a hit — fences included; regex.plugin_root_ref extracts the path after it',
|
|
137
|
+
regex: [PLUGIN_ROOT_RE.source],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
token: 'skill-dir-var',
|
|
141
|
+
description: 'the text contains `${CLAUDE_SKILL_DIR}` (a Claude-only substitution); every occurrence is a hit — fences included',
|
|
142
|
+
regex: [],
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
token: 'cwd-script',
|
|
146
|
+
description: 'an interpreter (bare, or written as a path — see interpreters + interpreter_path_prefix), then options per the option rule, then a relative path token (regex.cwd_script group 1) that, normalized against the PLUGIN ROOT (the worktree cwd), names a file or directory the bundle carries. NOT a hit: a target that exists nowhere in the bundle; a target that exists only inside the skill\'s own directory (base-directory relative — portable); any span matched by regex.launcher_call (masked first); a line inside a fenced code block whose language is not in fences.shell_langs',
|
|
147
|
+
regex: [LAUNCHER_RE.source, CWD_SCRIPT_RE.source],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
token: 'relative-link',
|
|
151
|
+
description: 'a `../` token (regex.relative_ref) resolved from the referencing file\'s directory that lands INSIDE the plugin root on a path the bundle carries AND whose deepest owning skill directory is not the referencing skill\'s own (a link that stays inside the skill\'s tree survives every layout). An escaping or non-existent target is not a hit',
|
|
152
|
+
regex: [RELATIVE_RE.source],
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
token: 'cross-skill-path',
|
|
156
|
+
description: 'a plugin-root target (regex.plugin_root_ref, resolved against the plugin root) or a resolved `../` target (regex.relative_ref) that exists in the bundle and whose deepest owning skill directory is ANOTHER skill (a nested module\'s parent counts). Reported in addition to plugin-root / relative-link',
|
|
157
|
+
regex: [PLUGIN_ROOT_RE.source, RELATIVE_RE.source],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
token: 'requires-harness:claude',
|
|
161
|
+
description: 'the skill-root SKILL.md (file == skill_dir + "/SKILL.md") has YAML frontmatter with `metadata.requires-harness` whose value, trimmed and lowercased, is `claude`. Only the skill-root SKILL.md counts (a nested skill\'s own SKILL.md is its skill root)',
|
|
162
|
+
regex: [],
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
interpreters: ['python', 'python3', 'uv run', 'bash', 'sh', 'zsh', 'node', 'npx', 'tsx', 'deno run'],
|
|
166
|
+
interpreter_path_prefix: {
|
|
167
|
+
regex: INTERPRETER_PREFIX,
|
|
168
|
+
rule: 'the interpreter may be written as a path: an optional leading `/`, `./` or `../`, then any number of `segment/`; the whole token must not be glued to a preceding path character (regex.cwd_script starts with the fixed-width lookbehind)',
|
|
169
|
+
},
|
|
170
|
+
options: {
|
|
171
|
+
valued: ['-W', '-X', '-m', '-c', '-Q', '-r', '-e', '-p', '-C', '-o', '--require', '--loader', '--experimental-loader', '--import', '--eval', '--print', '--env-file', '--conditions', '--input-type', '--python', '--with', '--directory', '--project', '--config', '--import-map'],
|
|
172
|
+
rule: 'between the interpreter and the path token any number of options is skipped: a bare flag (`-u`, `--frozen`, `--require=x`), or a VALUED option consumed together with its next token (`-W ignore`, `--loader ts-node/esm`); a valued option with no path after it is not an invocation, and its value is never read as the path',
|
|
173
|
+
},
|
|
174
|
+
fences: {
|
|
175
|
+
open: FENCE_RE.source,
|
|
176
|
+
open_rule: 'a fence opens only at a line start matching fences.open: >= 3 backticks or tildes; the language is the trimmed, lowercased first word of the info string (group 3)',
|
|
177
|
+
inline_span_is_not_fence: true,
|
|
178
|
+
inline_span_rule: 'a backtick opener whose remainder contains another backtick (```` ```ts x = 1 ``` ````) is a one-line code span, not a fence — fences.open refuses it with a lookahead; tilde fences have no such restriction',
|
|
179
|
+
close_rule: 'the fence closes at the next line-start fence of the SAME character whose run is at least as long as the opener and is followed by nothing but whitespace; a shorter run, or a run followed by text, is content',
|
|
180
|
+
shell_langs: [...SCANNED_FENCE_LANGUAGES],
|
|
181
|
+
skip_non_shell: true,
|
|
182
|
+
boundary_lines_scanned: true,
|
|
183
|
+
unclosed_runs_to_eof: true,
|
|
184
|
+
applies_to: ['cwd-script'],
|
|
185
|
+
},
|
|
186
|
+
existence: {
|
|
187
|
+
exists: 'a normalized plugin-relative path exists when it is a file the bundle carries, or a directory some carried file sits under; the empty path (the bare root) exists',
|
|
188
|
+
bundle_universe: 'the files the next publish carries: support files inside the bundle closure OUTSIDE skills/ (`.claude-plugin/**`, `scripts/**` minus ci/ and wg/, `schemas/**`, `docs/examples/**`, `pyproject.toml`, `uv.lock`) plus ENABLED skills\' own files; an owner-less file under skills/ (a `skills/README.md`) is never in it; the judged skill\'s own files are always visible to it',
|
|
189
|
+
cwd_script_target: 'the path token normalized as if the cwd were the plugin root (`./scripts/x.py` → `scripts/x.py`); one that climbs out (`../x`) is not a plugin file. It is a hit only when it exists AT THE PLUGIN ROOT; existing only inside the skill directory (`<skill_dir>/<token>`) is the base-directory idiom and portable; existing at both is ambiguous and a hit',
|
|
190
|
+
skill_dirs: 'every directory holding a SKILL.md under skills/; a path\'s owner is the DEEPEST such directory that prefixes it (or none)',
|
|
191
|
+
},
|
|
192
|
+
relative_resolution: {
|
|
193
|
+
plugin_root_ref: 'the path after `${CLAUDE_PLUGIN_ROOT}/`, trailing sentence punctuation (`.`, `,`, `:`) trimmed, posix-normalized, trailing `/` dropped; `..` at the top escapes (never the root); the bare marker is the root',
|
|
194
|
+
relative_ref: 'the `../…` token, trailing sentence punctuation trimmed, joined onto the referencing file\'s directory and posix-normalized; a result that climbs out of the plugin root escapes (not a link the bundle can carry)',
|
|
195
|
+
},
|
|
196
|
+
frontmatter: { requires_harness_key: 'metadata.requires-harness', requires_harness_value: 'claude' },
|
|
197
|
+
evidence: { reasons_sorted_unique: true, anchor_format: '<plugin-relative file>:<line>', cap: 5, portable: 'reasons.length === 0' },
|
|
198
|
+
};
|
|
56
199
|
/**
|
|
57
200
|
* Trailing sentence punctuation a prose reference picks up (`…/foo.` at the end of a sentence,
|
|
58
201
|
* `…/foo,` before a clause). A dot-DOT segment is never punctuation: `${CLAUDE_PLUGIN_ROOT}/..`
|
|
@@ -115,15 +258,191 @@ export function resolveRelativeRef(fileRel, ref) {
|
|
|
115
258
|
return null;
|
|
116
259
|
return resolved === '.' ? '' : resolved.replace(/\/$/, '');
|
|
117
260
|
}
|
|
118
|
-
/**
|
|
119
|
-
export
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
261
|
+
/** Every reason token, for validating persisted `portability.reasons` (a manifest or snapshot row). */
|
|
262
|
+
export const PORTABILITY_REASONS = new Set([
|
|
263
|
+
'plugin-root',
|
|
264
|
+
'skill-dir-var',
|
|
265
|
+
'cwd-script',
|
|
266
|
+
'relative-link',
|
|
267
|
+
'cross-skill-path',
|
|
268
|
+
'requires-harness:claude',
|
|
269
|
+
]);
|
|
270
|
+
/** The cap on `portability.evidence` anchors a row carries (design W4 §5.2). */
|
|
271
|
+
export const PORTABILITY_EVIDENCE_CAP = 5;
|
|
272
|
+
/**
|
|
273
|
+
* `file:line` anchors for a skill's hits — sorted by file then line, unique, capped — the
|
|
274
|
+
* `portability.evidence` of its manifest entry and snapshot row.
|
|
275
|
+
*/
|
|
276
|
+
export function portabilityEvidenceOf(hits) {
|
|
277
|
+
const sorted = [...hits].sort((a, b) => (a.fileRel < b.fileRel ? -1 : a.fileRel > b.fileRel ? 1 : a.line - b.line));
|
|
278
|
+
const out = [];
|
|
279
|
+
for (const h of sorted) {
|
|
280
|
+
const anchor = `${h.fileRel}:${h.line}`;
|
|
281
|
+
if (out.includes(anchor))
|
|
282
|
+
continue;
|
|
283
|
+
out.push(anchor);
|
|
284
|
+
if (out.length >= PORTABILITY_EVIDENCE_CAP)
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
return out;
|
|
288
|
+
}
|
|
289
|
+
/** A context for text judged WITHOUT a bundle (unit tests, ad-hoc checks): nothing exists, one skill. */
|
|
290
|
+
export function bareContext(fileRel = 'skills/x/SKILL.md', existing = []) {
|
|
291
|
+
const set = new Set(existing);
|
|
292
|
+
const skillDir = fileRel.split('/').slice(0, 2).join('/');
|
|
293
|
+
return { fileRel, skillDir, skillDirs: new Set([skillDir]), exists: (p) => existsIn(set, p) };
|
|
294
|
+
}
|
|
295
|
+
/** `exists` over a plain set of file paths: the path itself, or a directory some file sits under. */
|
|
296
|
+
export function existsIn(files, pluginRel) {
|
|
297
|
+
if (pluginRel === '')
|
|
298
|
+
return true;
|
|
299
|
+
if (files.has(pluginRel))
|
|
300
|
+
return true;
|
|
301
|
+
const prefix = `${pluginRel}/`;
|
|
302
|
+
for (const f of files)
|
|
303
|
+
if (f.startsWith(prefix))
|
|
304
|
+
return true;
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Per line: `true` when the line sits inside a fenced code block whose language the cwd-script
|
|
309
|
+
* rule does NOT scan. The fence algorithm is spelled as DATA in the parity fixture's `fences`
|
|
310
|
+
* block (`PORTABILITY_RULES.fences` → `tests/fixtures/portability_rules.json`, vendored by
|
|
311
|
+
* garden's lint so both walk the same way) — this is the prose of that block:
|
|
312
|
+
*
|
|
313
|
+
* - `open` / `open_rule`: a fence OPENS only at a line start (`FENCE_RE`): ≥ 3 backticks or
|
|
314
|
+
* tildes, the language is the trimmed, lowercased first word of the info string;
|
|
315
|
+
* - `inline_span_rule`: a backtick opener whose remainder contains another backtick is a
|
|
316
|
+
* one-line code span, not a fence (tilde fences have no such restriction);
|
|
317
|
+
* - `close_rule`: it CLOSES at the next line-start fence of the SAME character, at least as
|
|
318
|
+
* long, with nothing but whitespace after the run; a shorter run, or one with text after it,
|
|
319
|
+
* is content;
|
|
320
|
+
* - `shell_langs` / `skip_non_shell`: only a fence whose language is outside the shell set is
|
|
321
|
+
* skipped (`applies_to: cwd-script` — the marker rules scan fences too);
|
|
322
|
+
* - `boundary_lines_scanned`: the opening and closing lines themselves are scanned;
|
|
323
|
+
* - `unclosed_runs_to_eof`: an unclosed fence runs to the end of the text.
|
|
324
|
+
*/
|
|
325
|
+
function skippedFenceMask(lines) {
|
|
326
|
+
const mask = new Array(lines.length).fill(false);
|
|
327
|
+
let open = null;
|
|
328
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
329
|
+
const line = lines[i] ?? '';
|
|
330
|
+
const fence = fenceLine(line);
|
|
331
|
+
if (open === null) {
|
|
332
|
+
if (fence !== null)
|
|
333
|
+
open = { marker: fence.marker, skipped: !SCANNED_FENCE_LANGUAGES.includes(fence.lang) };
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
if (fence !== null && fence.marker.charAt(0) === open.marker.charAt(0) && fence.marker.length >= open.marker.length && /^\s*(`{3,}|~{3,})\s*$/.test(line)) {
|
|
337
|
+
open = null;
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
mask[i] = open.skipped;
|
|
341
|
+
}
|
|
342
|
+
return mask;
|
|
343
|
+
}
|
|
344
|
+
/** The plugin-relative path a cwd-relative script token names when the cwd is the plugin root, or `null` when it climbs out. */
|
|
345
|
+
function rootRelativeTarget(token) {
|
|
346
|
+
const normalized = posix.normalize(token).replace(/\/+$/, '');
|
|
347
|
+
if (normalized === '' || normalized === '.' || normalized === '..' || normalized.startsWith('../'))
|
|
348
|
+
return null;
|
|
349
|
+
return normalized;
|
|
350
|
+
}
|
|
351
|
+
/** `metadata.requires-harness: claude` in a SKILL.md frontmatter → the hit at the key's line, else `null`. */
|
|
352
|
+
function requiresHarnessHit(text) {
|
|
353
|
+
const fm = parseFrontmatter(text);
|
|
354
|
+
if (!fm.ok)
|
|
355
|
+
return null;
|
|
356
|
+
const raw = fm.fields['metadata'];
|
|
357
|
+
if (raw === undefined)
|
|
358
|
+
return null;
|
|
359
|
+
let meta;
|
|
360
|
+
try {
|
|
361
|
+
meta = JSON.parse(raw);
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
if (typeof meta !== 'object' || meta === null || Array.isArray(meta))
|
|
367
|
+
return null;
|
|
368
|
+
const value = meta['requires-harness'];
|
|
369
|
+
if (typeof value !== 'string' || value.trim().toLowerCase() !== PORTABILITY_RULES.frontmatter.requires_harness_value)
|
|
370
|
+
return null;
|
|
371
|
+
const lines = text.replace(/\r\n/g, '\n').split('\n');
|
|
372
|
+
let line = 1;
|
|
373
|
+
for (let i = 1; i < lines.length; i += 1) {
|
|
374
|
+
if (lines[i] === '---')
|
|
375
|
+
break;
|
|
376
|
+
if (/^\s*["']?requires-harness["']?\s*:/.test(lines[i] ?? '')) {
|
|
377
|
+
line = i + 1;
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return { reason: 'requires-harness:claude', line, evidence: `metadata.requires-harness: ${value.trim()}` };
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* EVERY reason `text` (the file at `ctx.fileRel`) is not portable to a non-Claude CLI, in file
|
|
385
|
+
* order — empty when it is portable. One hit per token occurrence; the caller folds them into the
|
|
386
|
+
* sorted-unique `reasons` and the `file:line` evidence.
|
|
387
|
+
*/
|
|
388
|
+
export function portabilityIssuesOf(text, ctx) {
|
|
389
|
+
const hits = [];
|
|
390
|
+
const lines = text.split('\n');
|
|
391
|
+
const skipped = skippedFenceMask(lines);
|
|
392
|
+
const otherSkill = (target) => {
|
|
393
|
+
if (!ctx.exists(target))
|
|
394
|
+
return false;
|
|
395
|
+
const owner = owningSkillDir(target, ctx.skillDirs);
|
|
396
|
+
return owner !== null && owner !== ctx.skillDir;
|
|
397
|
+
};
|
|
398
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
399
|
+
const line = lines[i] ?? '';
|
|
400
|
+
const lineNo = i + 1;
|
|
401
|
+
if (line.includes(SKILL_DIR_MARKER))
|
|
402
|
+
hits.push({ reason: 'skill-dir-var', line: lineNo, evidence: SKILL_DIR_MARKER });
|
|
403
|
+
for (const m of line.matchAll(PLUGIN_ROOT_RE)) {
|
|
404
|
+
const path = trimPunctuation((m[1] ?? '').replace(/^\//, ''));
|
|
405
|
+
hits.push({ reason: 'plugin-root', line: lineNo, evidence: `${PLUGIN_ROOT_MARKER}${path === '' ? '' : `/${path}`}` });
|
|
406
|
+
const target = resolvePluginRootRef(path);
|
|
407
|
+
if (target !== null && target !== '' && otherSkill(target)) {
|
|
408
|
+
hits.push({ reason: 'cross-skill-path', line: lineNo, evidence: `${PLUGIN_ROOT_MARKER}/${path} → ${target}` });
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
for (const m of line.matchAll(RELATIVE_RE)) {
|
|
412
|
+
const ref = trimPunctuation(m[1] ?? '');
|
|
413
|
+
const target = resolveRelativeRef(ctx.fileRel, ref);
|
|
414
|
+
if (target === null || !ctx.exists(target))
|
|
415
|
+
continue;
|
|
416
|
+
// A link that stays inside the skill's OWN tree (`refs/a.md` → `../SKILL.md`) survives every
|
|
417
|
+
// layout — the skill is copied whole. Only a link that leaves it is one the flat layout breaks.
|
|
418
|
+
const owner = owningSkillDir(target, ctx.skillDirs);
|
|
419
|
+
if (owner === ctx.skillDir)
|
|
420
|
+
continue;
|
|
421
|
+
hits.push({ reason: 'relative-link', line: lineNo, evidence: `${ref} → ${target}` });
|
|
422
|
+
if (owner !== null)
|
|
423
|
+
hits.push({ reason: 'cross-skill-path', line: lineNo, evidence: `${ref} → ${target}` });
|
|
424
|
+
}
|
|
425
|
+
if (skipped[i] === true)
|
|
426
|
+
continue;
|
|
427
|
+
const masked = line.replace(LAUNCHER_RE, (s) => ' '.repeat(s.length));
|
|
428
|
+
for (const m of masked.matchAll(CWD_SCRIPT_RE)) {
|
|
429
|
+
const token = m[1] ?? '';
|
|
430
|
+
const target = rootRelativeTarget(token);
|
|
431
|
+
if (target === null || !ctx.exists(target))
|
|
432
|
+
continue;
|
|
433
|
+
hits.push({ reason: 'cwd-script', line: lineNo, evidence: m[0].trim() });
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
if (ctx.fileRel === `${ctx.skillDir}/SKILL.md`) {
|
|
437
|
+
const rh = requiresHarnessHit(text);
|
|
438
|
+
if (rh !== null)
|
|
439
|
+
hits.push(rh);
|
|
440
|
+
}
|
|
441
|
+
return hits;
|
|
442
|
+
}
|
|
443
|
+
/** The sorted, unique reason set of a list of hits (the manifest's `portability.reasons`). */
|
|
444
|
+
export function portabilityReasonsOf(hits) {
|
|
445
|
+
return [...new Set(hits.map((h) => h.reason))].sort();
|
|
127
446
|
}
|
|
128
447
|
/** Binary sniff for reference scanning: a NUL in the first 8 KB means "not text, do not scan". */
|
|
129
448
|
const SNIFF_BYTES = 8 * 1024;
|
package/dist/skills/refs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/skills/refs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/skills/refs.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/store.d.ts
CHANGED
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
* snapshot modified under a running daemon is refused by the same store instance). Any failure is
|
|
120
120
|
* `SkillsCurrentInvalidError` — a loud config error, never a silent "not published".
|
|
121
121
|
*/
|
|
122
|
-
import type { CoreEvent, SkillAnalyzeResult, SkillEntry, SkillFileTree, SkillKind, SkillManifest, SkillMutationResult, SkillPublishResult, SkillReadResult, SkillRefreshResult, SkillSourceKind, SkillVenvState } from '../core/types.js';
|
|
122
|
+
import type { CoreEvent, SkillAnalyzeResult, SkillEntry, SkillFileTree, SkillKind, SkillManifest, SkillMutationResult, SkillPortability, SkillPublishResult, SkillReadResult, SkillRefreshResult, SkillSourceKind, SkillVenvState } from '../core/types.js';
|
|
123
123
|
import { NotAPluginRootError } from './bundle.js';
|
|
124
124
|
import { LiveGenerations } from './live-generations.js';
|
|
125
125
|
import { type PluginSource } from './plugin-source.js';
|
|
@@ -239,6 +239,10 @@ export interface SnapshotSkillRow {
|
|
|
239
239
|
core: boolean;
|
|
240
240
|
/** REQUIRED boolean: non-Claude seats may only invoke portable skills. */
|
|
241
241
|
portable: boolean;
|
|
242
|
+
/** Per-reason portability (F-079): `portable` again, the sorted unique reasons, up to five
|
|
243
|
+
* `file:line` anchors. Written by every publish since 0.7.30; absent on older generations
|
|
244
|
+
* (verify then re-derives `portable` alone). Core ignores it (`portable` is its admission key). */
|
|
245
|
+
portability?: SkillPortability;
|
|
242
246
|
/** `true` when the dir is not directly under `skills/` — Claude Code discovers top-level skill dirs
|
|
243
247
|
* only, so a nested skill is not invocable for a Claude seat (core enforces; crew just says so). */
|
|
244
248
|
nested: boolean;
|
|
@@ -622,6 +626,17 @@ export declare class SkillsStore {
|
|
|
622
626
|
* blocking; a mutation on ANOTHER skill carries it as a warning (that mutation did land).
|
|
623
627
|
*/
|
|
624
628
|
private recomputeDerived;
|
|
629
|
+
/**
|
|
630
|
+
* The portability validator's view of the bundle (F-079): what the NEXT publish would carry —
|
|
631
|
+
* support files inside the closure and ENABLED skills' own files. A disabled skill's files, a
|
|
632
|
+
* file outside the closure, a vanished record: not there. Judging against this universe (rather
|
|
633
|
+
* than everything under `effective/`) is what lets `snapshotRowsProblem` re-derive the SAME
|
|
634
|
+
* reasons from the generation alone — a `../` link into a disabled skill is a broken link
|
|
635
|
+
* (`unresolved-ref` at publish), not a portability fact about a file the snapshot omits. The
|
|
636
|
+
* judged skill's own files are always visible to it (own-directory links stay portable anyway),
|
|
637
|
+
* and `extra` lets a write guard see the files it is about to land.
|
|
638
|
+
*/
|
|
639
|
+
private publishedBundleView;
|
|
625
640
|
/** The recompute's refusals as WARNINGS — for a mutation that landed on another skill (the blocking form is publish's). */
|
|
626
641
|
private recomputeWarnings;
|
|
627
642
|
/**
|
|
@@ -783,6 +798,12 @@ export declare class SkillsStore {
|
|
|
783
798
|
*/
|
|
784
799
|
replace(name: string, files: Readonly<Record<string, string>>, expectedRevision: number): SkillMutationResult;
|
|
785
800
|
private putGuards;
|
|
801
|
+
/**
|
|
802
|
+
* The portability validator's context for a write of `files` (skill-relative keys) into
|
|
803
|
+
* `skillDir`: the would-be bundle plus the files about to land, keyed by the skill-relative
|
|
804
|
+
* path the guard iterates.
|
|
805
|
+
*/
|
|
806
|
+
private writeContext;
|
|
786
807
|
private filesGuards;
|
|
787
808
|
private addGuards;
|
|
788
809
|
private replaceGuards;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwHG;AAqBH,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAGlB,UAAU,EAEV,aAAa,EACb,SAAS,EACT,aAAa,EACb,mBAAmB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"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"}
|