@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.
- package/dist/files-config.d.ts +219 -29
- package/dist/files-config.d.ts.map +1 -1
- package/dist/files-config.js +434 -131
- package/dist/files-config.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/post-build-checks.d.ts +10 -1
- package/dist/post-build-checks.d.ts.map +1 -1
- package/dist/post-build-checks.js +55 -6
- package/dist/post-build-checks.js.map +1 -1
- package/dist/skill-packager.d.ts.map +1 -1
- package/dist/skill-packager.js +128 -20
- package/dist/skill-packager.js.map +1 -1
- package/dist/validators/agent-instruction-presence.d.ts +41 -0
- package/dist/validators/agent-instruction-presence.d.ts.map +1 -0
- package/dist/validators/agent-instruction-presence.js +79 -0
- package/dist/validators/agent-instruction-presence.js.map +1 -0
- package/dist/validators/index.d.ts +2 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +2 -0
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/packaging-validator.d.ts +1 -1
- package/dist/validators/packaging-validator.d.ts.map +1 -1
- package/dist/validators/packaging-validator.js +54 -8
- package/dist/validators/packaging-validator.js.map +1 -1
- package/dist/validators/plugin-hosted-shape.d.ts +46 -0
- package/dist/validators/plugin-hosted-shape.d.ts.map +1 -0
- package/dist/validators/plugin-hosted-shape.js +83 -0
- package/dist/validators/plugin-hosted-shape.js.map +1 -0
- package/dist/validators/rule-engine/rule-context.d.ts +4 -2
- package/dist/validators/rule-engine/rule-context.d.ts.map +1 -1
- package/dist/validators/rule-engine/rule-context.js.map +1 -1
- package/dist/validators/rule-engine/rule-engine.d.ts.map +1 -1
- package/dist/validators/rule-engine/rule-engine.js +15 -3
- package/dist/validators/rule-engine/rule-engine.js.map +1 -1
- package/dist/validators/skill-validator.d.ts.map +1 -1
- package/dist/validators/skill-validator.js +14 -8
- package/dist/validators/skill-validator.js.map +1 -1
- package/dist/validators/source-only-codes.d.ts.map +1 -1
- package/dist/validators/source-only-codes.js +1 -0
- package/dist/validators/source-only-codes.js.map +1 -1
- package/dist/validators/validation-rules.d.ts +93 -3
- package/dist/validators/validation-rules.d.ts.map +1 -1
- package/dist/validators/validation-rules.js +139 -17
- package/dist/validators/validation-rules.js.map +1 -1
- package/dist/validators/walker-to-issues.d.ts.map +1 -1
- package/dist/validators/walker-to-issues.js +2 -0
- package/dist/validators/walker-to-issues.js.map +1 -1
- package/dist/walk-link-graph.d.ts +1 -1
- package/dist/walk-link-graph.d.ts.map +1 -1
- package/dist/walk-link-graph.js +55 -6
- package/dist/walk-link-graph.js.map +1 -1
- package/package.json +9 -6
package/dist/files-config.d.ts
CHANGED
|
@@ -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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
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
|
|
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
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
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
|
|
109
|
-
*
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"files-config.d.ts","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"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"}
|