@vibe-agent-toolkit/agent-skills 0.2.0-rc.5 → 0.2.0-rc.7
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/content-type-routing.d.ts +32 -0
- package/dist/content-type-routing.d.ts.map +1 -1
- package/dist/content-type-routing.js +23 -0
- package/dist/content-type-routing.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/parsers/frontmatter-parser.d.ts.map +1 -1
- package/dist/parsers/frontmatter-parser.js +30 -6
- package/dist/parsers/frontmatter-parser.js.map +1 -1
- package/dist/plugin-distribution-layout.d.ts.map +1 -1
- package/dist/plugin-distribution-layout.js +13 -0
- package/dist/plugin-distribution-layout.js.map +1 -1
- package/dist/post-build-checks.d.ts +37 -0
- package/dist/post-build-checks.d.ts.map +1 -1
- package/dist/post-build-checks.js +40 -0
- package/dist/post-build-checks.js.map +1 -1
- package/dist/schemas/allowed-tools.d.ts +31 -0
- package/dist/schemas/allowed-tools.d.ts.map +1 -0
- package/dist/schemas/allowed-tools.js +88 -0
- package/dist/schemas/allowed-tools.js.map +1 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/marketplace-manifest.d.ts.map +1 -1
- package/dist/schemas/marketplace-manifest.js +17 -6
- package/dist/schemas/marketplace-manifest.js.map +1 -1
- package/dist/skill-identity.d.ts +10 -0
- package/dist/skill-identity.d.ts.map +1 -1
- package/dist/skill-identity.js +12 -0
- package/dist/skill-identity.js.map +1 -1
- package/dist/skill-packager.d.ts +85 -13
- package/dist/skill-packager.d.ts.map +1 -1
- package/dist/skill-packager.js +178 -32
- package/dist/skill-packager.js.map +1 -1
- package/dist/skill-test/eval-fragment.d.ts +31 -29
- package/dist/skill-test/eval-fragment.d.ts.map +1 -1
- package/dist/skill-test/eval-fragment.js +5 -3
- package/dist/skill-test/eval-fragment.js.map +1 -1
- package/dist/skill-test/eval-grader.d.ts +8 -2
- package/dist/skill-test/eval-grader.d.ts.map +1 -1
- package/dist/skill-test/eval-grader.js +3 -6
- package/dist/skill-test/eval-grader.js.map +1 -1
- package/dist/validators/agent-instruction-presence.d.ts.map +1 -1
- package/dist/validators/agent-instruction-presence.js +44 -1
- package/dist/validators/agent-instruction-presence.js.map +1 -1
- package/dist/validators/compat-detectors.d.ts +17 -0
- package/dist/validators/compat-detectors.d.ts.map +1 -1
- package/dist/validators/compat-detectors.js +46 -19
- package/dist/validators/compat-detectors.js.map +1 -1
- package/dist/validators/marketplace-validator.d.ts.map +1 -1
- package/dist/validators/marketplace-validator.js +6 -0
- package/dist/validators/marketplace-validator.js.map +1 -1
- package/dist/validators/mcp-tool-qualification.d.ts +158 -0
- package/dist/validators/mcp-tool-qualification.d.ts.map +1 -0
- package/dist/validators/mcp-tool-qualification.js +467 -0
- package/dist/validators/mcp-tool-qualification.js.map +1 -0
- package/dist/validators/packaged-size-limit.d.ts +296 -0
- package/dist/validators/packaged-size-limit.d.ts.map +1 -0
- package/dist/validators/packaged-size-limit.js +494 -0
- package/dist/validators/packaged-size-limit.js.map +1 -0
- package/dist/validators/packaging-validator.d.ts +41 -2
- package/dist/validators/packaging-validator.d.ts.map +1 -1
- package/dist/validators/packaging-validator.js +159 -15
- package/dist/validators/packaging-validator.js.map +1 -1
- package/dist/validators/referenced-path-missing.d.ts +211 -0
- package/dist/validators/referenced-path-missing.d.ts.map +1 -0
- package/dist/validators/referenced-path-missing.js +379 -0
- package/dist/validators/referenced-path-missing.js.map +1 -0
- package/dist/validators/skill-validator.d.ts.map +1 -1
- package/dist/validators/skill-validator.js +29 -0
- package/dist/validators/skill-validator.js.map +1 -1
- package/dist/validators/types.d.ts +14 -0
- package/dist/validators/types.d.ts.map +1 -1
- package/dist/walk-link-graph.js +26 -7
- package/dist/walk-link-graph.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PACKAGED_REFERENCED_PATH_MISSING — the inverse of PACKAGED_UNREFERENCED_FILE.
|
|
3
|
+
*
|
|
4
|
+
* `PACKAGED_UNREFERENCED_FILE` asks "is every shipped file mentioned somewhere?"
|
|
5
|
+
* and answers it by searching FROM a known filename INTO the text, which needs no
|
|
6
|
+
* parsing and is why it can be an error. This module asks the opposite question —
|
|
7
|
+
* "is every mentioned path actually shipped?" — which requires extracting path
|
|
8
|
+
* tokens from prose and code, and is therefore a warning.
|
|
9
|
+
*
|
|
10
|
+
* ## Why it is worth having anyway
|
|
11
|
+
*
|
|
12
|
+
* It is the only check that can see a BUILD DROP: a reference that is correct in
|
|
13
|
+
* the source repo and whose target did not survive into the packaged output. The
|
|
14
|
+
* source looks right, so neither human review nor an agent reading the source can
|
|
15
|
+
* catch it. Measured instance in a live adopter marketplace: a skill names
|
|
16
|
+
* `references/<setup-guide>.md` four times, that file is present at the matching
|
|
17
|
+
* path in the source repository, and it is absent from the published bundle.
|
|
18
|
+
*
|
|
19
|
+
* ## The two rules, and why each exists
|
|
20
|
+
*
|
|
21
|
+
* Fire rates measured over **684 skills across two corpora** (one of them a live
|
|
22
|
+
* marketplace). ⚠️ The heading and the prose here used to say "three rules" over
|
|
23
|
+
* "691 skills across three corpora" above a table listing two that sum to 684 —
|
|
24
|
+
* and to add that "dropping any one of them makes the check unusable" thirteen
|
|
25
|
+
* lines above the note that rule 3 has no production caller. Rule 3 IS dropped,
|
|
26
|
+
* the check ships anyway, and both of those sentences are gone rather than
|
|
27
|
+
* re-dated.
|
|
28
|
+
*
|
|
29
|
+
* | Rule | adopter A, 52 built skills | 632-skill install corpus |
|
|
30
|
+
* |---|---|---|
|
|
31
|
+
* | candidates only | 65.4% | 52.1% |
|
|
32
|
+
* | + literal (rule 1) | 46.2% | 47.5% |
|
|
33
|
+
* | + bundled-subdir prefix (rule 2) | **3.8%** | **10.4%** |
|
|
34
|
+
*
|
|
35
|
+
* Both rules ship, and the shipped rule pair is the bottom row: **3.8% on the
|
|
36
|
+
* 52-skill adopter marketplace and 10.4% on the 632-skill installed corpus**.
|
|
37
|
+
* ⚠️ QUOTE BOTH, ALWAYS. The headline here used to quote 3.8% alone — the lower
|
|
38
|
+
* of two numbers measured on the SAME shipped rule — which reads as a single
|
|
39
|
+
* measured misfire rate rather than as the flattering end of a 2.7x spread.
|
|
40
|
+
* Neither corpus is privileged: the marketplace is BUILT output (what this check
|
|
41
|
+
* actually runs on) and the install corpus is bigger and more varied, so a
|
|
42
|
+
* reader deciding whether to enable this needs the range, not the better half.
|
|
43
|
+
*
|
|
44
|
+
* 1. **Literal paths only.** A glob or a placeholder (`docs/**\/*.md`,
|
|
45
|
+
* `docs/product/<component>/prd.md`) is not a claim that a file exists.
|
|
46
|
+
* 2. **First segment must be a bundled subdirectory.** This is the rule that
|
|
47
|
+
* earns the precision — 17x on the marketplace corpus, 5x on the install
|
|
48
|
+
* corpus (65.4%→3.8% and 52.1%→10.4%) — and it is the only *semantic* one.
|
|
49
|
+
* The lexer deliberately refuses this judgement: it emits `docs/product/prd.md`
|
|
50
|
+
* and `dist/bin/arc-cli.mjs` as equal candidates because whether a token refers
|
|
51
|
+
* to the skill's own bundle or to the USER'S repository is a lens's property,
|
|
52
|
+
* not a lexical one. Until `edges`/`edge_resolutions` have producers, this
|
|
53
|
+
* prefix test IS that lens, and its measured precision is recorded above so a
|
|
54
|
+
* future lens can be held to it.
|
|
55
|
+
*
|
|
56
|
+
* A third rule — a plugin-wide **sibling search root**, measured at 1.9%
|
|
57
|
+
* (marketplace) and 8.9% (install corpus) — was built and then DELETED, because
|
|
58
|
+
* nothing could call it. The rejected
|
|
59
|
+
* wiring and why a dead seam is not a head start are on
|
|
60
|
+
* {@link detectMissingReferencedPaths}. The sibling population is real: one
|
|
61
|
+
* measured skill points at a sibling's `resources/*.md`, another at a plugin-root
|
|
62
|
+
* `scripts/cli.py`, and both are false positives here. A plugin-aware lens that
|
|
63
|
+
* wants them should measure its own rule.
|
|
64
|
+
*
|
|
65
|
+
* ## Why this runs at the BUILT phase only
|
|
66
|
+
*
|
|
67
|
+
* A `files:` config entry materializes `scripts/` at build time, so a VAT source
|
|
68
|
+
* skill directory legitimately lacks the subdirectory its body references —
|
|
69
|
+
* a measured skill ships no `scripts/` in source and gets `scripts/<cli>.mjs`
|
|
70
|
+
* injected. Running this at source phase fired on it; running it at built phase
|
|
71
|
+
* does not. Measured: 15.0% source vs 9.6% built for the same naive rule.
|
|
72
|
+
*
|
|
73
|
+
* ## A path VAT'S OWN PACKAGER moved is not a missing path
|
|
74
|
+
*
|
|
75
|
+
* Routing relocates a bundled file, so an authored `resources/setup.sh` ships as
|
|
76
|
+
* `scripts/setup.sh` under `claude-code` and as `references/setup.sh` under
|
|
77
|
+
* `claude-web`. Markdown links are rewritten to follow it; bare tokens in fences
|
|
78
|
+
* and code spans — this check's only input — are not. A candidate is therefore
|
|
79
|
+
* only missing if it is absent under BOTH its authored spelling and its routed
|
|
80
|
+
* one.
|
|
81
|
+
*
|
|
82
|
+
* ⛔ Routing is a function of the TARGET, not of the extension alone, so this
|
|
83
|
+
* check takes the target as a required argument and asks
|
|
84
|
+
* `getResourceSubdirForFile` — the same function the packager asks. It used to
|
|
85
|
+
* ask the extension-only half and answer for `claude-code` whatever it was
|
|
86
|
+
* packaging, which false-positived the entire `claude-web` target. See
|
|
87
|
+
* {@link routedSpelling}.
|
|
88
|
+
*
|
|
89
|
+
* ## Deliberately NOT handled here
|
|
90
|
+
*
|
|
91
|
+
* Markdown links. `LINK_BROKEN_FILE` / `PACKAGED_BROKEN_LINK` already cover a
|
|
92
|
+
* link whose target is missing, at error severity. Emitting here as well would
|
|
93
|
+
* double-report the same defect with a weaker severity.
|
|
94
|
+
*
|
|
95
|
+
* That exclusion is enforced UPSTREAM, in the lexer, and not by anything in this
|
|
96
|
+
* module: `codeContextRangesFrom` puts `inline-link`, `reference-link`,
|
|
97
|
+
* `link-definition` and `image` spans into `excluded`, and `emitToken` refuses to
|
|
98
|
+
* emit any token falling inside one. So an inline link, a `[text][label]`
|
|
99
|
+
* reference AND its `[label]: path` definition all produce zero candidates here —
|
|
100
|
+
* verified by the `does not double-report` cases in this module's unit test,
|
|
101
|
+
* which assert on `bundledPathCandidates` rather than on the issue list so that
|
|
102
|
+
* silence is attributed to the exclusion rather than to a missing candidate.
|
|
103
|
+
*
|
|
104
|
+
* The `syntacticForm !== 'bare-token'` guard below is NOT that exclusion and must
|
|
105
|
+
* not be read as it. What it does is drop `env-anchored` and `at-prefixed` tokens
|
|
106
|
+
* — and it is load-bearing for exactly one shape that would otherwise slip
|
|
107
|
+
* through the literal test: `scripts/$VAR/x.mjs`, whose first segment IS a
|
|
108
|
+
* bundled subdirectory and which carries no glob character.
|
|
109
|
+
*/
|
|
110
|
+
import { existsSync } from 'node:fs';
|
|
111
|
+
import { parseMarkdown } from '@vibe-agent-toolkit/resources';
|
|
112
|
+
import { CODE_REGISTRY } from '@vibe-agent-toolkit/schema';
|
|
113
|
+
import { safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
|
|
114
|
+
import { CLAUDE_WEB_REFERENCES_SUBDIR, getResourceSubdirForFile, TARGET_SUBDIR_CATEGORIES, } from '../content-type-routing.js';
|
|
115
|
+
/**
|
|
116
|
+
* Subdirectories a packaged skill may bundle resources into.
|
|
117
|
+
*
|
|
118
|
+
* Derived from the content-type routing categories rather than re-listed, for the
|
|
119
|
+
* same reason `bundled-resource-link-detection.ts` derives its copy: a hardcoded
|
|
120
|
+
* list drifts from the routing table, and a category missing from it makes this
|
|
121
|
+
* detector structurally unable to fire on that subdirectory.
|
|
122
|
+
*/
|
|
123
|
+
const BUNDLED_SUBDIRS = new Set([
|
|
124
|
+
...TARGET_SUBDIR_CATEGORIES,
|
|
125
|
+
CLAUDE_WEB_REFERENCES_SUBDIR,
|
|
126
|
+
]);
|
|
127
|
+
/** Glob and placeholder syntax — a token carrying any of it is not a literal path. */
|
|
128
|
+
const NON_LITERAL = /[*?<>{}[\]]/u;
|
|
129
|
+
/**
|
|
130
|
+
* `token` as bundle-relative segments, or `null` if it is not a bundle-relative
|
|
131
|
+
* literal path at all.
|
|
132
|
+
*
|
|
133
|
+
* Two spellings reach here and only one used to be recognized: `scripts/x.mjs`
|
|
134
|
+
* and `./scripts/x.mjs` (the lexer admits a leading `./` unconditionally).
|
|
135
|
+
* Reading the first segment off the RAW token gave `.` for the second, so it was
|
|
136
|
+
* dropped — and a build drop referenced as `./scripts/setup.mjs` is the very case
|
|
137
|
+
* this module exists for.
|
|
138
|
+
*
|
|
139
|
+
* ⚠️ The `toForwardSlash` call also normalizes `scripts\x.mjs`, and this comment
|
|
140
|
+
* used to claim that as a third recognized spelling. It is UNREACHABLE from the
|
|
141
|
+
* shipped lexer, which only emits a run containing one of `/ $ % @` — a
|
|
142
|
+
* backslash-only path never becomes a candidate, so no Windows-authored token
|
|
143
|
+
* arrives here in that form. The normalization stays because it costs nothing and
|
|
144
|
+
* a mixed `scripts/sub\x.mjs` does arrive; the CLAIM does not. The module's unit
|
|
145
|
+
* test is honest about this; the comment was not.
|
|
146
|
+
*
|
|
147
|
+
* `null` for anything that is not a relative path INSIDE the bundle: an absolute
|
|
148
|
+
* path, an empty segment (`scripts//x`), a `.` segment, or — the one that
|
|
149
|
+
* matters for what happens downstream — any `..`. A token carrying `..` is not a
|
|
150
|
+
* claim about the bundle's contents, and it is the segment that would otherwise
|
|
151
|
+
* turn verbatim markdown content into a traversal by the time it reaches
|
|
152
|
+
* `existsSync`.
|
|
153
|
+
*/
|
|
154
|
+
function bundleRelativeSegments(token) {
|
|
155
|
+
if (NON_LITERAL.test(token))
|
|
156
|
+
return null;
|
|
157
|
+
const segments = toForwardSlash(token).split('/');
|
|
158
|
+
if (segments[0] === '.')
|
|
159
|
+
segments.shift();
|
|
160
|
+
if (segments.length < 2)
|
|
161
|
+
return null;
|
|
162
|
+
if (segments.some(segment => segment === '' || segment === '.' || segment === '..'))
|
|
163
|
+
return null;
|
|
164
|
+
return segments;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Whether `token` is a literal path rooted at a bundled subdirectory.
|
|
168
|
+
*
|
|
169
|
+
* Exported for tests: these two predicates are the whole precision argument, and
|
|
170
|
+
* pinning them directly is cheaper than reconstructing a corpus to observe them.
|
|
171
|
+
*
|
|
172
|
+
* ⚠️ It is also the SHIPPED rule, and that is load-bearing rather than tidiness.
|
|
173
|
+
* `bundledPathCandidates` used to re-derive the same two steps inline — a
|
|
174
|
+
* `bundleRelativeSegments` call followed by its own `BUNDLED_SUBDIRS.has(…)` —
|
|
175
|
+
* so every assertion in this module's `isBundledSubdirPath` describe block
|
|
176
|
+
* pinned a COPY of the rule. Lower-casing the lookup in the production line left
|
|
177
|
+
* all eight of them green. This lane has already shipped that exact defect once
|
|
178
|
+
* (a filter whose only caller was a unit test ran at double its documented
|
|
179
|
+
* misfire rate), so there is ONE definition and production calls it.
|
|
180
|
+
*/
|
|
181
|
+
export function isBundledSubdirPath(token) {
|
|
182
|
+
const segments = bundleRelativeSegments(token);
|
|
183
|
+
return segments !== null && BUNDLED_SUBDIRS.has(segments[0] ?? '');
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Every bare-token path candidate in the document at `filePath` that is rooted at
|
|
187
|
+
* a bundled subdirectory, NORMALIZED to its bundle-relative spelling.
|
|
188
|
+
*
|
|
189
|
+
* Normalizing here rather than at each use is what makes `./scripts/x.mjs`,
|
|
190
|
+
* `scripts\x.mjs` and `scripts/x.mjs` one finding with one `link` anchor, so a
|
|
191
|
+
* single allow glob waives all three spellings of the same reference.
|
|
192
|
+
*
|
|
193
|
+
* Goes through `parseMarkdown` rather than reaching for the lexer directly, for
|
|
194
|
+
* two reasons. It keeps ONE definition of "path-shaped token" in the codebase —
|
|
195
|
+
* `isCandidate` in `reference-lexer.ts` already requires a slash and a file
|
|
196
|
+
* extension, which is this check's admission rule too, so re-deriving it here
|
|
197
|
+
* would be a second matcher to drift. And `parseMarkdown` is the package's lazy
|
|
198
|
+
* wrapper: a value import of the lexer would pull the remark stack into the eager
|
|
199
|
+
* module graph of every `@vibe-agent-toolkit/resources` consumer (~730ms on
|
|
200
|
+
* Windows), which `module-load-budget.integration.test.ts` exists to prevent.
|
|
201
|
+
*/
|
|
202
|
+
export async function bundledPathCandidates(filePath) {
|
|
203
|
+
const parsed = await parseMarkdown(filePath);
|
|
204
|
+
const out = new Set();
|
|
205
|
+
for (const ref of parsed.lexicalReferences ?? []) {
|
|
206
|
+
// NOT the markdown-link exclusion — see the module docstring. This drops
|
|
207
|
+
// `env-anchored` and `at-prefixed` tokens, and the shape it actually saves
|
|
208
|
+
// us from is `scripts/$VAR/x.mjs`, which passes the literal test.
|
|
209
|
+
if (ref.syntacticForm !== 'bare-token')
|
|
210
|
+
continue;
|
|
211
|
+
// `hasExtension` is the lexer's own fact and stays. Its `slashCount` does
|
|
212
|
+
// not: it counts FORWARD slashes only, and `bundleRelativeSegments` already
|
|
213
|
+
// refuses anything that does not split into at least two segments.
|
|
214
|
+
if (!ref.hasExtension)
|
|
215
|
+
continue;
|
|
216
|
+
// `bundleRelativeSegments` runs here for the NORMALIZATION it does
|
|
217
|
+
// (`./scripts/x.mjs` and `scripts\x.mjs` collapse onto one spelling, so one
|
|
218
|
+
// allow glob waives all of them). The bundled-subdir JUDGEMENT is
|
|
219
|
+
// `isBundledSubdirPath`'s and is CALLED, never re-derived — see that
|
|
220
|
+
// function for why re-deriving it made its whole test block vacuous.
|
|
221
|
+
const segments = bundleRelativeSegments(ref.raw);
|
|
222
|
+
if (segments === null || !isBundledSubdirPath(ref.raw))
|
|
223
|
+
continue;
|
|
224
|
+
out.add(segments.join('/'));
|
|
225
|
+
}
|
|
226
|
+
return [...out];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Existence-only probe for one bundle-relative path.
|
|
230
|
+
*
|
|
231
|
+
* `rel` IS document content — the least trusted input in this module — so it is
|
|
232
|
+
* constrained before it gets here rather than trusted: it reached this line only
|
|
233
|
+
* by passing `bundleRelativeSegments`, which admits a relative path with no
|
|
234
|
+
* empty, `.` or `..` segment and refuses every glob and placeholder character,
|
|
235
|
+
* and by being rooted at one of the five known bundled subdirectory names.
|
|
236
|
+
* `skillDir` is the caller's own directory. Nothing is read, nothing is written,
|
|
237
|
+
* and a `true` merely suppresses a warning.
|
|
238
|
+
*
|
|
239
|
+
* {@link routedSpelling}'s output is derived from the same constrained value —
|
|
240
|
+
* a basename of it, under a name from the routing table — so it inherits the
|
|
241
|
+
* argument rather than needing its own.
|
|
242
|
+
*/
|
|
243
|
+
function bundleHas(skillDir, rel) {
|
|
244
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- see above
|
|
245
|
+
return existsSync(safePath.join(skillDir, rel));
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Where the packager would actually put a file with this basename, FOR THIS
|
|
249
|
+
* TARGET.
|
|
250
|
+
*
|
|
251
|
+
* 🚨 **VAT's own packaging manufactures this finding, and this is the guard.**
|
|
252
|
+
* Content-type routing relocates an auto-discovered bundled file, discarding the
|
|
253
|
+
* subdirectory its author chose: under `claude-code` by EXTENSION, so source
|
|
254
|
+
* `resources/setup.sh` ships as `scripts/setup.sh`, `scripts/config.json` as
|
|
255
|
+
* `templates/config.json`, `assets/runtime.wasm` as `resources/runtime.wasm`;
|
|
256
|
+
* under `claude-web` by flattening every resource into `references/`. The
|
|
257
|
+
* packager rewrites markdown LINKS to the routed destination, so those stay
|
|
258
|
+
* correct — but a bare token in a code fence or code span is deliberately NOT
|
|
259
|
+
* rewritten, and bare tokens are precisely what {@link bundledPathCandidates}
|
|
260
|
+
* reads. So a skill that says ``bash resources/setup.sh`` in a fenced block, and
|
|
261
|
+
* links `resources/setup.sh` in prose, gets one rewritten reference that
|
|
262
|
+
* resolves and one unrewritten one that reports a file which DID ship.
|
|
263
|
+
*
|
|
264
|
+
* That misfire is unfixable by the author: the registered remedy ("Ship the
|
|
265
|
+
* file, correct the path…") names no action that resolves it, because writing
|
|
266
|
+
* the packaged spelling into the source breaks the source repo, where the file
|
|
267
|
+
* really is under the authored subdirectory.
|
|
268
|
+
*
|
|
269
|
+
* 🚩 The guard used to call `getTargetSubdir` — the EXTENSION half — while the
|
|
270
|
+
* packager routed through `getResourceSubdirForFile(file, target)`. Two routing
|
|
271
|
+
* answers for one question, and the half this file happened to hold was the
|
|
272
|
+
* `claude-code` one, so the whole `claude-web` target false-positived: the same
|
|
273
|
+
* fixture was clean under `--target claude-code` and raised
|
|
274
|
+
* `PACKAGED_REFERENCED_PATH_MISSING` under `--target claude-web`, on a file that
|
|
275
|
+
* did ship. Reachable from the shipped `vat skills package --target claude-web`.
|
|
276
|
+
* `target` is a REQUIRED parameter all the way up to `packageSkill` for that
|
|
277
|
+
* reason: a default here would let the next caller re-acquire the wrong answer
|
|
278
|
+
* by saying nothing.
|
|
279
|
+
*
|
|
280
|
+
* So a candidate is only missing if it is absent under BOTH its authored
|
|
281
|
+
* spelling and its routed one. The suppression is deliberately narrow — a
|
|
282
|
+
* basename-for-basename relocation, which is exactly the shape routing produces
|
|
283
|
+
* — and it costs one extra `existsSync` on a path that already failed one.
|
|
284
|
+
*/
|
|
285
|
+
function routedSpelling(rel, target) {
|
|
286
|
+
const basename = rel.slice(rel.lastIndexOf('/') + 1);
|
|
287
|
+
return `${getResourceSubdirForFile(basename, target)}/${basename}`;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Emit one `PACKAGED_REFERENCED_PATH_MISSING` per missing path.
|
|
291
|
+
*
|
|
292
|
+
* One issue PER MISSING PATH, not one per document — and each carries the missing
|
|
293
|
+
* path as `link`.
|
|
294
|
+
*
|
|
295
|
+
* This is what makes a single misfire waivable without disabling the rule for the
|
|
296
|
+
* file. `applyAllowFilter` matches an allow glob against `location` OR `link`, so
|
|
297
|
+
* an adopter can silence exactly one illustrative path:
|
|
298
|
+
*
|
|
299
|
+
* ```yaml
|
|
300
|
+
* validation:
|
|
301
|
+
* allow:
|
|
302
|
+
* PACKAGED_REFERENCED_PATH_MISSING:
|
|
303
|
+
* - paths: ["resources/gates.md"]
|
|
304
|
+
* reason: "Illustrative path in a skill that teaches link syntax."
|
|
305
|
+
* ```
|
|
306
|
+
*
|
|
307
|
+
* …while a DIFFERENT missing path in that same document still fires. Waiving by
|
|
308
|
+
* `location` (`**\/some-skill/SKILL.md`) remains available and is the coarser
|
|
309
|
+
* choice — it suppresses future real findings in that file, which is precisely
|
|
310
|
+
* what the per-path form avoids.
|
|
311
|
+
*
|
|
312
|
+
* The three anchors are three different things, the same split
|
|
313
|
+
* `REFERENCE_TARGET_MISSING` documents: `location` is the file you open, `field`
|
|
314
|
+
* is not used here, and `link` is the target that does not exist — emphatically
|
|
315
|
+
* NOT the location, since naming a nonexistent path as "where to look" is advice
|
|
316
|
+
* you cannot follow.
|
|
317
|
+
*
|
|
318
|
+
* ⚠️ ONE lane, not two. This code is emitted from `packageSkill` and nowhere
|
|
319
|
+
* else, so `vat skills validate` — which calls `validateSkillForPackaging(…,
|
|
320
|
+
* 'source')` and never `packageSkill` — cannot produce it. This note used to tell
|
|
321
|
+
* adopters to give a single allow entry BOTH the authored and packaged spellings
|
|
322
|
+
* "so a waiver survives both lanes", two bullets after the same file said "built
|
|
323
|
+
* phase only". Following it earns an `ALLOW_UNUSED` for the spelling that can
|
|
324
|
+
* never match. A `link` glob is still the better choice, for its own reason: the
|
|
325
|
+
* missing path is skill-relative, so it does not depend on where the bundle sits.
|
|
326
|
+
*
|
|
327
|
+
* @param docFiles Absolute paths of packaged markdown documents to scan
|
|
328
|
+
* (SKILL.md and any bundled reference files).
|
|
329
|
+
* @param skillDir Absolute path to the packaged skill output — the base every
|
|
330
|
+
* candidate resolves against, and the base issue locations are relative to.
|
|
331
|
+
*
|
|
332
|
+
* 🚨 **SKILL-LOCAL, and there is no wider root to pass.** This function used to
|
|
333
|
+
* take a `siblingSearchRoot` and a `searchBudget`, with a ~90-line breadth-first
|
|
334
|
+
* mount-point walk behind them and a caveat string for a truncated search. NO
|
|
335
|
+
* production caller ever passed either: the only caller is the packager, via
|
|
336
|
+
* `checkMissingReferencedPaths`, and it genuinely does not know the plugin root
|
|
337
|
+
* — it packages one skill into its own output directory before any plugin is
|
|
338
|
+
* assembled. `vat build`'s `validateShippedPluginSkillLinks` does walk a whole
|
|
339
|
+
* plugin tree, and wiring this there was considered and REJECTED: it runs only
|
|
340
|
+
* `checkBrokenPackagedLinks`, its documented stance is the opposite one (a skill
|
|
341
|
+
* is a self-contained portable unit, so an escape from its own directory is a
|
|
342
|
+
* defect rather than a resolution), and it would report every finding twice.
|
|
343
|
+
*
|
|
344
|
+
* So the subsystem was deleted rather than kept as a seam. `complete` was always
|
|
345
|
+
* `true`, the truncated-search caveat could never ship, and the tests that
|
|
346
|
+
* covered the walk covered a path production does not take — while attributing
|
|
347
|
+
* real coverage to it. The measured fire rates that ship are the skill-local
|
|
348
|
+
* **3.8% (marketplace) / 10.4% (install corpus)**; the 1.9% / 8.9% pair
|
|
349
|
+
* describes a check VAT does not run. If a plugin-aware lens is ever built, it
|
|
350
|
+
* can grow its own resolution rule with its own measurement; a dead parameter
|
|
351
|
+
* is not a head start.
|
|
352
|
+
*/
|
|
353
|
+
export async function detectMissingReferencedPaths(docFiles, skillDir, target) {
|
|
354
|
+
const registryEntry = CODE_REGISTRY.PACKAGED_REFERENCED_PATH_MISSING;
|
|
355
|
+
const issues = [];
|
|
356
|
+
for (const docFile of docFiles) {
|
|
357
|
+
const candidates = await bundledPathCandidates(docFile);
|
|
358
|
+
const missing = candidates.filter(rel => !bundleHas(skillDir, rel) && !bundleHas(skillDir, routedSpelling(rel, target)));
|
|
359
|
+
if (missing.length === 0)
|
|
360
|
+
continue;
|
|
361
|
+
const location = safePath.relative(skillDir, docFile);
|
|
362
|
+
for (const rel of missing) {
|
|
363
|
+
issues.push({
|
|
364
|
+
severity: registryEntry.defaultSeverity,
|
|
365
|
+
code: 'PACKAGED_REFERENCED_PATH_MISSING',
|
|
366
|
+
message: `References "${rel}", which is not in the packaged output`,
|
|
367
|
+
location,
|
|
368
|
+
// The missing path, so an allow glob can waive THIS reference without
|
|
369
|
+
// silencing the whole document. Never the location: a path that does not
|
|
370
|
+
// exist is not somewhere a reader can look.
|
|
371
|
+
link: rel,
|
|
372
|
+
fix: registryEntry.fix,
|
|
373
|
+
reference: registryEntry.reference,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return issues;
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=referenced-path-missing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-path-missing.js","sourceRoot":"","sources":["../../src/validators/referenced-path-missing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-validator.d.ts","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill-validator.d.ts","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAA8B,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2IvF;AAiTD,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAsID;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,iBAAiB,EAAE,CAarB"}
|
|
@@ -10,6 +10,7 @@ import { detectUndeclaredCrossSkillAuth } from './cross-skill-dependency-detecti
|
|
|
10
10
|
import { validateFrontmatterRules, validateFrontmatterSchema } from './frontmatter-validation.js';
|
|
11
11
|
import { detectNonImperativeBody } from './imperative-body-detection.js';
|
|
12
12
|
import { detectKebabCaseViolation } from './kebab-case-detection.js';
|
|
13
|
+
import { collectUnqualifiedMcpToolIssues } from './mcp-tool-qualification.js';
|
|
13
14
|
import { isNeverPackagedBasename } from './validation-rules.js';
|
|
14
15
|
/**
|
|
15
16
|
* Validate an Agent Skill (SKILL.md file)
|
|
@@ -90,6 +91,19 @@ export async function validateSkill(options) {
|
|
|
90
91
|
for (const obs of rootObservations) {
|
|
91
92
|
issues.push(observationToIssue(obs, skillLocation));
|
|
92
93
|
}
|
|
94
|
+
// Unqualified MCP tool names. This lane needs its OWN call: the detector is
|
|
95
|
+
// not one of `runCompatDetectors`, and until this line its only call sites
|
|
96
|
+
// were inside `validateSkillForPackaging`. That made the check structurally
|
|
97
|
+
// unreachable for every skill audited without a governing VAT config — which
|
|
98
|
+
// is every INSTALLED skill under `~/.claude/plugins/**`, the exact corpus the
|
|
99
|
+
// detector's precision table was measured on. `vat audit --user` before and
|
|
100
|
+
// after, over 851 installed skills: 0 occurrences -> 11 in 7 documents, with
|
|
101
|
+
// no other code's count moving — which is exactly the row
|
|
102
|
+
// docs/validation-codes.md already published from a DIRECT run of the
|
|
103
|
+
// detector. The command now reproduces the number the docs quote. See the
|
|
104
|
+
// sibling call in the linked-file walk below, and the two in
|
|
105
|
+
// packaging-validator.ts that this pair mirrors.
|
|
106
|
+
collectUnqualifiedMcpToolIssues(content, skillLocation, issues);
|
|
93
107
|
// Transitive link traversal (BFS)
|
|
94
108
|
const skillDir = options.rootDir ?? dirname(skillPath);
|
|
95
109
|
const linkedFiles = await traverseLinks(skillPath, skillDir, locationRoot, issues, allEvidence);
|
|
@@ -265,6 +279,21 @@ async function traverseLinks(skillPath, skillDir, locationRoot, issues, allEvide
|
|
|
265
279
|
const linkedCompatIssues = linkedObservations.map(obs => observationToIssue(obs, issueLocation(currentPath, locationRoot)));
|
|
266
280
|
processed.fileIssues.push(...linkedCompatIssues);
|
|
267
281
|
issues.push(...linkedCompatIssues);
|
|
282
|
+
// Same detector on each linked file, mirroring the per-bundled-file call
|
|
283
|
+
// in packaging-validator.ts. Without it the two lanes disagree about what
|
|
284
|
+
// they scan: a skill naming its tools bare in a referenced resource file
|
|
285
|
+
// is a finding when packaged and silence when audited. On the installed
|
|
286
|
+
// corpus it adds 4 occurrences in 1 document (11/7 -> 15/8).
|
|
287
|
+
// ⚠️ That is the ONLY linked-file sample the corpus offers, so this lane's
|
|
288
|
+
// precision rests on n=1 — and one of its four occurrences is a section
|
|
289
|
+
// HEADING naming the tool, a weaker shape than the step-an-agent-copies
|
|
290
|
+
// case the SKILL.md measurement was built from. Warning severity and the
|
|
291
|
+
// per-identifier `link` waiver are what make that acceptable to ship;
|
|
292
|
+
// re-measure here first if this code is ever proposed for `error`.
|
|
293
|
+
// Whole-file bytes, frontmatter included: the detector strips leading
|
|
294
|
+
// frontmatter itself, so an `allowed-tools:` list cannot seed the
|
|
295
|
+
// vocabulary it then fires against.
|
|
296
|
+
collectUnqualifiedMcpToolIssues(linkedContent, issueLocation(currentPath, locationRoot), issues);
|
|
268
297
|
}
|
|
269
298
|
// Record linked file result (skip SKILL.md itself — it's the root)
|
|
270
299
|
if (currentPath !== resolvedSkillPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-validator.js","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-validator.js","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,20 @@ export interface ValidationResult {
|
|
|
29
29
|
version?: string;
|
|
30
30
|
lineCount?: number;
|
|
31
31
|
referenceFiles?: number;
|
|
32
|
+
/** Marketplace only: every entry the manifest's `plugins` list declares. */
|
|
33
|
+
pluginEntries?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Marketplace only: the entries whose `source` is a relative path — plugins
|
|
36
|
+
* the marketplace ships itself, each as the manifest wrote it. Published so
|
|
37
|
+
* a consumer can resolve each one against the marketplace root and validate
|
|
38
|
+
* THAT directory: a count in its place let a walk of `plugins/*` satisfy the
|
|
39
|
+
* denominator by number while the declared plugin went unlooked-at, and
|
|
40
|
+
* refused the co-located `source: "./"` shape, which lives in no `plugins/`.
|
|
41
|
+
*/
|
|
42
|
+
localPluginSources?: Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
source: string;
|
|
45
|
+
}>;
|
|
32
46
|
};
|
|
33
47
|
/** Raw evidence records collected during validation. Rendered in --verbose. */
|
|
34
48
|
evidence?: EvidenceRecord[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7F;;;;;;;OAOG;IACH,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;;;;;;;OAOG;IACH,WAAW,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7F;;;;;;;OAOG;IACH,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;;;;;;;OAOG;IACH,WAAW,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,4EAA4E;QAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB;;;;;;;WAOG;QACH,kBAAkB,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9D,CAAC;IACF,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,0BAA0B,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAElB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oFAAoF;IACpF,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,4BAA4B,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,6BAA6B,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
package/dist/walk-link-graph.js
CHANGED
|
@@ -626,24 +626,43 @@ function walkLinkGraphBody(skillResourceId, registry, options) {
|
|
|
626
626
|
}
|
|
627
627
|
}
|
|
628
628
|
}
|
|
629
|
-
//
|
|
630
|
-
//
|
|
631
|
-
//
|
|
632
|
-
// `missing-target`.
|
|
629
|
+
// What actually SHIPPED, resolved once the walk is over. Deferred artifacts
|
|
630
|
+
// count as accounted-for: the target will exist once the build materializes
|
|
631
|
+
// it, which is the same reason they are not `missing-target`.
|
|
633
632
|
const bundledPaths = new Set([
|
|
634
633
|
...state.bundledAssetSet,
|
|
635
634
|
...state.deferredAssetSet,
|
|
636
635
|
...[...state.bundledResourceMap.values()].map(r => toForwardSlash(r.filePath)),
|
|
637
636
|
]);
|
|
637
|
+
const targetShipped = (r) => bundledPaths.has(toForwardSlash(r.path));
|
|
638
|
+
// 🔑 Two reasons ask ONE question — "did the target ship?" — and both can only
|
|
639
|
+
// answer it here, against the FINAL bundle, or the answer depends on queue
|
|
640
|
+
// order.
|
|
641
|
+
//
|
|
642
|
+
// `depth-exceeded` is recorded eagerly, at the moment an edge is refused, and
|
|
643
|
+
// that is correct: the refusal is a fact about the EDGE. It is not a fact
|
|
644
|
+
// about the TARGET, and `LINK_DROPPED_BY_DEPTH` claims the latter — "this link
|
|
645
|
+
// was not bundled". On any diamond the two diverge: the same reference cited
|
|
646
|
+
// from SKILL.md and again from a page one hop deeper ships via the shallow
|
|
647
|
+
// route and is refused on the deep one, and the finding used to fire anyway.
|
|
648
|
+
// Measured on `packages/vat-example-cat-agents`, whose
|
|
649
|
+
// `cat-breed-selection.md` is in the built bundle at depth 1 and was reported
|
|
650
|
+
// dropped for its depth-2 occurrence via `workflow-orchestration.md`. The
|
|
651
|
+
// remedy the message implies — raise `linkFollowDepth` — is a no-op for a link
|
|
652
|
+
// that already works.
|
|
653
|
+
//
|
|
654
|
+
// Filtered in place rather than held back and appended, so the surviving
|
|
655
|
+
// exclusions keep the order the walk found them in.
|
|
656
|
+
const excludedReferences = state.excludedReferences.filter((r) => r.excludeReason !== 'depth-exceeded' || !targetShipped(r));
|
|
638
657
|
for (const unfollowed of state.unfollowedFromNonRoutable) {
|
|
639
|
-
if (!
|
|
640
|
-
|
|
658
|
+
if (!targetShipped(unfollowed)) {
|
|
659
|
+
excludedReferences.push(unfollowed);
|
|
641
660
|
}
|
|
642
661
|
}
|
|
643
662
|
return {
|
|
644
663
|
bundledResources: [...state.bundledResourceMap.values()],
|
|
645
664
|
bundledAssets: [...state.bundledAssetSet],
|
|
646
|
-
excludedReferences
|
|
665
|
+
excludedReferences,
|
|
647
666
|
maxBundledDepth: state.maxBundledDepth,
|
|
648
667
|
deferredAssets: [...state.deferredAssetSet],
|
|
649
668
|
};
|