@vibe-agent-toolkit/agent-skills 0.1.41-rc.8 → 0.1.42-rc.1

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.
Files changed (55) hide show
  1. package/dist/files-config.d.ts +219 -29
  2. package/dist/files-config.d.ts.map +1 -1
  3. package/dist/files-config.js +434 -131
  4. package/dist/files-config.js.map +1 -1
  5. package/dist/index.d.ts +5 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +9 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/post-build-checks.d.ts +10 -1
  10. package/dist/post-build-checks.d.ts.map +1 -1
  11. package/dist/post-build-checks.js +55 -6
  12. package/dist/post-build-checks.js.map +1 -1
  13. package/dist/skill-packager.d.ts.map +1 -1
  14. package/dist/skill-packager.js +128 -20
  15. package/dist/skill-packager.js.map +1 -1
  16. package/dist/validators/agent-instruction-presence.d.ts +41 -0
  17. package/dist/validators/agent-instruction-presence.d.ts.map +1 -0
  18. package/dist/validators/agent-instruction-presence.js +79 -0
  19. package/dist/validators/agent-instruction-presence.js.map +1 -0
  20. package/dist/validators/index.d.ts +2 -0
  21. package/dist/validators/index.d.ts.map +1 -1
  22. package/dist/validators/index.js +2 -0
  23. package/dist/validators/index.js.map +1 -1
  24. package/dist/validators/packaging-validator.d.ts +1 -1
  25. package/dist/validators/packaging-validator.d.ts.map +1 -1
  26. package/dist/validators/packaging-validator.js +54 -8
  27. package/dist/validators/packaging-validator.js.map +1 -1
  28. package/dist/validators/plugin-hosted-shape.d.ts +46 -0
  29. package/dist/validators/plugin-hosted-shape.d.ts.map +1 -0
  30. package/dist/validators/plugin-hosted-shape.js +83 -0
  31. package/dist/validators/plugin-hosted-shape.js.map +1 -0
  32. package/dist/validators/rule-engine/rule-context.d.ts +4 -2
  33. package/dist/validators/rule-engine/rule-context.d.ts.map +1 -1
  34. package/dist/validators/rule-engine/rule-context.js.map +1 -1
  35. package/dist/validators/rule-engine/rule-engine.d.ts.map +1 -1
  36. package/dist/validators/rule-engine/rule-engine.js +15 -3
  37. package/dist/validators/rule-engine/rule-engine.js.map +1 -1
  38. package/dist/validators/skill-validator.d.ts.map +1 -1
  39. package/dist/validators/skill-validator.js +14 -8
  40. package/dist/validators/skill-validator.js.map +1 -1
  41. package/dist/validators/source-only-codes.d.ts.map +1 -1
  42. package/dist/validators/source-only-codes.js +1 -0
  43. package/dist/validators/source-only-codes.js.map +1 -1
  44. package/dist/validators/validation-rules.d.ts +93 -3
  45. package/dist/validators/validation-rules.d.ts.map +1 -1
  46. package/dist/validators/validation-rules.js +139 -17
  47. package/dist/validators/validation-rules.js.map +1 -1
  48. package/dist/validators/walker-to-issues.d.ts.map +1 -1
  49. package/dist/validators/walker-to-issues.js +2 -0
  50. package/dist/validators/walker-to-issues.js.map +1 -1
  51. package/dist/walk-link-graph.d.ts +1 -1
  52. package/dist/walk-link-graph.d.ts.map +1 -1
  53. package/dist/walk-link-graph.js +55 -6
  54. package/dist/walk-link-graph.js.map +1 -1
  55. package/package.json +9 -6
@@ -7,16 +7,78 @@
7
7
  * - Computing deferred paths for validation
8
8
  * - Copying declared build artifacts into a skill output dir (every build path)
9
9
  */
10
+ import { type ValidationIssue } from '@vibe-agent-toolkit/agent-schema';
10
11
  import type { SkillFileEntry } from '@vibe-agent-toolkit/resources';
11
12
  export type { SkillFileEntry } from '@vibe-agent-toolkit/resources';
12
- export declare function buildArtifactHint(source: string): string;
13
- /** Result of matching a link target against files config */
14
- export interface FilesMatchResult {
15
- /** Whether the link matched source or dest */
16
- match: 'source' | 'dest';
17
- /** The matching files entry */
18
- entry: SkillFileEntry;
13
+ /** One file a GLOB `files:` entry matched and the never-package list refused. */
14
+ export interface DroppedGlobMatch {
15
+ /** The glob `source:` whose net caught it. */
16
+ source: string;
17
+ /**
18
+ * ABSOLUTE path of the refused file, forward-slashed.
19
+ *
20
+ * The reported subject: this is the one path in this record a reader can
21
+ * actually open. `dest` names a path that, by definition, does NOT exist —
22
+ * nothing was written there — so a finding anchored at the dest cannot be
23
+ * traced back to anything. Kept absolute rather than pre-relativized because
24
+ * the run's anchor is the caller's to choose (`locationRoot` may not be the
25
+ * project root when one run spans several projects); every emitter passes it
26
+ * through {@link issueLocation} at emit time.
27
+ */
28
+ absFile: string;
29
+ /**
30
+ * Skill-output-relative dest the file WOULD have had, spelled exactly as a
31
+ * COPIED dest is (see {@link normalizeRelPath}) so consumers can compare the
32
+ * two populations without re-deriving either. `checkBrokenPackagedLinks` keys
33
+ * its never-package remediation on this exact set: a link is "broken because
34
+ * VAT refused to package it" only when its target is one of THESE paths.
35
+ *
36
+ * A SET KEY, not a location: it is the coordinate system the packaged link
37
+ * graph is expressed in, and mixing it into an issue's `location` — which is
38
+ * always a source path to open — is what made one issue list speak two
39
+ * coordinate systems at once.
40
+ */
41
+ dest: string;
42
+ }
43
+ /** What {@link applyFilesConfig} accounted for, and what it deliberately did not. */
44
+ export interface AppliedFilesConfig {
45
+ /**
46
+ * Every skill-output-relative dest this config accounts for, one per FILE
47
+ * (glob entries expanded). See {@link applyFilesConfig} for why the orphan
48
+ * check must be told this list.
49
+ */
50
+ dests: string[];
51
+ /**
52
+ * Files a GLOB matched that the never-package list dropped.
53
+ *
54
+ * Returned rather than written to a `warn` sink because a file vanishing from
55
+ * a bundle is a build FINDING, not a log line: it has to reach the structured
56
+ * report (`issueCounts`), or a CI consumer reads `warnings: 0` for a build
57
+ * that silently shipped less than the config asked for.
58
+ */
59
+ dropped: DroppedGlobMatch[];
19
60
  }
61
+ /**
62
+ * Turn never-package drops into reportable findings.
63
+ *
64
+ * Lives here rather than in the packager because this module owns the concept:
65
+ * the drop and the issue describing it must not be able to disagree.
66
+ *
67
+ * Anchored at the SOURCE file, in ONE coordinate system for both the location
68
+ * and the message. The finding used to name the would-be `dest` in both, which
69
+ * meant the only path it gave you was an output path nothing was ever written to
70
+ * — so the issue list mixed output coordinates (this code) with source
71
+ * coordinates (every other pre-build code) and an adopter could not open the
72
+ * thing that went missing. The glob pattern stays in the message because it
73
+ * answers the second question ("which entry caught this?"), but it is no longer
74
+ * the only identifiable thing in the finding.
75
+ *
76
+ * @param locationRoot The ONE base this run anchors locations at. Required, not
77
+ * defaulted to the project root: a defaulted anchor is how a multi-project run
78
+ * silently emits paths relative to the wrong tree.
79
+ */
80
+ export declare function droppedGlobMatchesToIssues(dropped: readonly DroppedGlobMatch[], locationRoot: string): ValidationIssue[];
81
+ export declare function buildArtifactHint(source: string): string;
20
82
  /**
21
83
  * Normalize a relative path for comparison: forward slashes, no leading `./`.
22
84
  * The path's ROOT is the caller's business; this only fixes the spelling.
@@ -29,6 +91,27 @@ export interface FilesMatchResult {
29
91
  * `files:` config" about a copy VAT performed itself.
30
92
  */
31
93
  export declare function normalizeRelPath(p: string): string;
94
+ /**
95
+ * The skill-output-relative dest a GLOB `files:` entry gives one absolute source
96
+ * path, or `undefined` when the entry's expansion would not include it.
97
+ *
98
+ * Answers, without running the glob, the question the packager must settle BEFORE
99
+ * anything is copied: "does the config already declare where this file goes?" A
100
+ * glob's expansion is late-bound to copy time ({@link copyGlobEntry}), so the path
101
+ * map used to have no entry for its matches — and a match that link traversal ALSO
102
+ * found was therefore dropped at its type-derived location while the glob copied
103
+ * it to the declared dest. Identical bytes shipped twice, the rewritten link
104
+ * pointed at traversal's copy, and the declared `dest:` was dead. One file, one
105
+ * dest: the declaration wins, and this is how the path map learns it.
106
+ *
107
+ * The three gates below are exactly {@link copyGlobEntry}'s own, restated as a
108
+ * predicate so the dest computed here is the dest the copy actually writes:
109
+ * under the static base, matching the magic remainder (`dot: true`, as the copy
110
+ * expands), and not refused by {@link partitionNeverPackaged}. A never-packaged
111
+ * match has NO dest — re-pointing the path map at one would rewrite a link to a
112
+ * file that never arrives.
113
+ */
114
+ export declare function globEntryDest(entry: SkillFileEntry, projectRoot: string, absSource: string): string | undefined;
32
115
  /**
33
116
  * Merge defaults and per-skill files entries.
34
117
  *
@@ -39,22 +122,22 @@ export declare function normalizeRelPath(p: string): string;
39
122
  */
40
123
  export declare function mergeFilesConfig(defaults: SkillFileEntry[] | undefined, perSkill: SkillFileEntry[] | undefined): SkillFileEntry[];
41
124
  /**
42
- * Match a link target path against files config entries.
43
- *
44
- * Returns the matching entry and whether it matched on source or dest.
45
- * Source matches take priority over dest matches.
46
- *
47
- * For GLOB entries (`isGlob(entry.source)`), matching is by directory prefix:
48
- * - source match: link is equal to or under the glob's static base
49
- * - dest match: link is equal to or under entry.dest
125
+ * The skill-output-relative dests named by EXPLICIT (non-glob) `files:` entries.
50
126
  *
51
- * Single-file entries still match EXACTLY (unchanged).
127
+ * THE definition of "the config declared this output path", shared by every lane
128
+ * that has to decide whether a file in a bundle is there on purpose. Naming a
129
+ * `source`/`dest` pair is an unambiguous instruction to ship that file; a GLOB
130
+ * never named the file it caught, so its expansion is deliberately absent from
131
+ * this list — a net is not a declaration. (`walk-link-graph.ts`'s
132
+ * `refusesAgentInstructionFile` draws the same line on the link side, and
133
+ * {@link partitionNeverPackaged} on the copy side; all three must agree or the
134
+ * mechanisms disagree about one bundle.)
52
135
  *
53
- * @param linkTarget - Resolved link target path (relative to project root)
54
- * @param files - Merged files config entries
55
- * @returns Match result or null if no match
136
+ * Spelled via {@link normalizeRelPath}, which is the spelling a packaged file's
137
+ * output-relative path is computed with — so membership can be tested by exact
138
+ * equality, never by a prefix test.
56
139
  */
57
- export declare function matchLinkToFiles(linkTarget: string, files: SkillFileEntry[]): FilesMatchResult | null;
140
+ export declare function explicitFilesConfigDests(files: readonly SkillFileEntry[]): string[];
58
141
  /** Options for {@link applyFilesConfig}. */
59
142
  export interface ApplyFilesConfigOptions {
60
143
  /** Merged `files:` entries to copy. */
@@ -97,19 +180,126 @@ export declare function verifyFilesIntegrity(pairs: {
97
180
  * diffing against the expected rel set is what catches a misrouted rebase, a
98
181
  * stale leftover, or a dropped file.
99
182
  *
100
- * SAFETY ASSUMPTION (why this can't false-positive): a glob entry OWNS its dest
101
- * directory (`skillOutputDir/<entry.dest>`) and the build wipes the skill output
102
- * dir before copying (skill-packager.ts removes `resolvedOutput` recursively
103
- * before any copy). Nothing else writes into this subtree, so any EXTRA file is a
104
- * genuine bug, not a co-tenant. This scoping is what makes the set check safe
105
- * here even though a project-wide "no extra files" check would not be.
183
+ * SAFETY ASSUMPTION (why this can't false-positive): a glob entry does NOT own
184
+ * its dest directory outright — another `files:` entry may legitimately declare a
185
+ * dest inside the same subtree, and that is exactly how the documented escape
186
+ * hatch works (an explicit `source: extras/README.md` re-ships a file the glob
187
+ * refused). So `expectedRel` is the union of what THIS entry copied and every
188
+ * other entry's declared dest under the same subtree, and the caller runs this
189
+ * only after ALL entries have copied — see {@link applyFilesConfig}. What is left
190
+ * over is a file no entry accounts for: a genuine bug, not a co-tenant. (The build
191
+ * wipes the skill output dir before copying — skill-packager.ts removes
192
+ * `resolvedOutput` recursively — so there are no stale files either.)
106
193
  *
107
194
  * @param destDir Absolute path to the glob entry's dest subtree.
108
- * @param expectedRel Forward-slash rel paths (relative to `destDir`) the copy
109
- * step wrote for THIS entry.
195
+ * @param expectedRel Forward-slash rel paths (relative to `destDir`) that the
196
+ * whole `files:` config accounts for inside this subtree.
110
197
  * @param source The entry's `source` (for error messages only).
111
198
  * @throws if the actual subtree omits an expected file or contains an extra one.
112
199
  */
113
200
  export declare function verifyDestSet(destDir: string, expectedRel: string[], source: string): Promise<void>;
114
- export declare function applyFilesConfig(opts: ApplyFilesConfigOptions): Promise<string[]>;
201
+ /** One GLOB `files:` entry that currently expands to nothing at all. */
202
+ export interface UnmatchedGlobEntry {
203
+ /** The glob `source:` that matched no files. */
204
+ source: string;
205
+ /**
206
+ * ABSOLUTE path of the directory it expanded under (the glob's static base),
207
+ * forward-slashed. Absolute for the same reason as
208
+ * {@link DroppedGlobMatch.absFile}: the run's anchor is the emitter's choice.
209
+ * The directory need not exist — "it isn't there yet" is the common case.
210
+ */
211
+ absBase: string;
212
+ }
213
+ /** One GLOB `files:` entry whose every match the never-package list refused. */
214
+ export interface AllRefusedGlobEntry {
215
+ /** The glob `source:` that netted only never-packaged files. */
216
+ source: string;
217
+ /** ABSOLUTE path of the directory it expanded under, forward-slashed. */
218
+ absBase: string;
219
+ /**
220
+ * ABSOLUTE paths of every match, all of them refused. Carried in full because
221
+ * this finding SUPERSEDES the per-file drops for its entry (see
222
+ * {@link collectPreBuildGlobFindings}), so it is the only place those file
223
+ * names are still reported.
224
+ */
225
+ absRefused: string[];
226
+ }
227
+ /**
228
+ * What the project's GLOB `files:` entries look like BEFORE anything is built.
229
+ *
230
+ * The three buckets are MUTUALLY EXCLUSIVE per entry, and they are three of the
231
+ * FOUR verdicts `copyGlobEntry` reaches at copy time — one entry cannot be both
232
+ * "matched nothing" and "matched only refused files", and an entry counted in
233
+ * `allRefused` contributes no `dropped` rows. Overlapping buckets would let one
234
+ * config produce two findings naming two different causes.
235
+ *
236
+ * The fourth verdict has NO bucket: a `..` segment in the glob's magic remainder
237
+ * makes the pattern unexpandable, `expandGlobEntry` throws, and
238
+ * {@link collectPreBuildGlobFindings} skips the entry rather than mislabelling it.
239
+ * So a config certain to fail the build produces no pre-build finding at all —
240
+ * see the skip in that function for why nothing here can honestly carry it.
241
+ */
242
+ export interface PreBuildGlobFindings {
243
+ /**
244
+ * Never-packaged files a glob would catch while still shipping something else.
245
+ * See {@link DroppedGlobMatch}.
246
+ */
247
+ dropped: DroppedGlobMatch[];
248
+ /** Globs that matched, but whose every match was refused — they ship nothing. */
249
+ allRefused: AllRefusedGlobEntry[];
250
+ /** Globs that currently match nothing — the other input the build dies on. */
251
+ unmatched: UnmatchedGlobEntry[];
252
+ }
253
+ /**
254
+ * What the project's GLOB `files:` entries would do, without copying anything.
255
+ *
256
+ * The pre-build half of {@link applyFilesConfig}: `vat skills validate` and
257
+ * `vat audit` can answer "what will this config fail to ship?" before a build
258
+ * exists, and they answer it by running THE expansion the copy runs
259
+ * ({@link expandGlobEntry}) — a second, independently written expansion would be
260
+ * free to disagree with the copy about what ships, which is the whole defect class
261
+ * this module exists to close.
262
+ *
263
+ * Non-throwing by construction, unlike {@link copyGlobEntry}: a pre-build gate runs
264
+ * before the artifact exists, so a glob over an unbuilt `dist/` matching nothing is
265
+ * the expected state, not a failure. `copyGlobEntry` still raises there, where the
266
+ * build HAS run and zero matches is real.
267
+ *
268
+ * That reasoning settles the SEVERITY of a failing expansion, not whether to
269
+ * mention it — and this used to return only `dropped`, so the gate reported the
270
+ * drop that is harmless by design (a glob is a net) and said nothing about either
271
+ * expansion outcome that is certain to fail the very next command. `unmatched`
272
+ * and `allRefused` end that silence, graded `info` and `warning` respectively (see
273
+ * FILES_GLOB_MATCHED_NOTHING / FILES_GLOB_MATCHED_ONLY_NEVER_PACKAGED).
274
+ *
275
+ * The three buckets partition the entries as two of `copyGlobEntry`'s three throws
276
+ * plus its success path do — same predicates, same order, one expansion. Its THIRD
277
+ * throw (`expandGlobEntry` refusing a `..` segment in the magic remainder) has no
278
+ * bucket, and the skip below explains why — but the consequence belongs here: this
279
+ * function's answer to "what will this config fail to ship?" is silent for that one
280
+ * malformed shape, which is the same class of silence `unmatched`/`allRefused` were
281
+ * added to end. Closing it needs a code of its own (a wrong-shaped PATTERN, not an
282
+ * unbuilt or unshippable artifact), or a `source` refine on `SkillFileEntrySchema`
283
+ * that rejects the pattern at config load and makes the skip unreachable.
284
+ *
285
+ * Drops re-shipped by an explicit entry are filtered out for the same reason
286
+ * {@link applyFilesConfig} filters them: reporting "it did not ship" about a file
287
+ * the documented escape hatch puts in the bundle tells an author their remediation
288
+ * failed when it worked. That filter is deliberately NOT applied to `allRefused`:
289
+ * `copyGlobEntry` throws on an entry whose own kept-set is empty no matter what
290
+ * any other entry ships, so filtering it would predict a green build that fails.
291
+ */
292
+ export declare function collectPreBuildGlobFindings(filesConfig: readonly SkillFileEntry[], projectRoot: string): Promise<PreBuildGlobFindings>;
293
+ /**
294
+ * Turn {@link collectPreBuildGlobFindings} into reportable pre-build issues.
295
+ *
296
+ * THE emitter for the pre-build gates, so a lane cannot pick up one half of the
297
+ * findings and quietly drop the other — which is how the zero-match went
298
+ * unreported for as long as it did.
299
+ *
300
+ * @param locationRoot The ONE base this run anchors locations at (see
301
+ * {@link droppedGlobMatchesToIssues}).
302
+ */
303
+ export declare function preBuildGlobFindingsToIssues(findings: PreBuildGlobFindings, locationRoot: string): ValidationIssue[];
304
+ export declare function applyFilesConfig(opts: ApplyFilesConfigOptions): Promise<AppliedFilesConfig>;
115
305
  //# sourceMappingURL=files-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files-config.d.ts","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAYpE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAapE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,+BAA+B;IAC/B,KAAK,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GACrC,cAAc,EAAE,CA6ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EAAE,GACtB,gBAAgB,GAAG,IAAI,CAiCzB;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,IAAI,CAgBN;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf;AAwMD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYvF"}
1
+ {"version":3,"file":"files-config.d.ts","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"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"}