@vibe-agent-toolkit/cli 0.1.41-rc.4 → 0.1.41-rc.6
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/bin.js +2 -4
- package/dist/bin.js.map +1 -1
- package/dist/commands/agent/help.d.ts.map +1 -1
- package/dist/commands/agent/help.js +2 -4
- package/dist/commands/agent/help.js.map +1 -1
- package/dist/commands/claude/org/skills.d.ts +13 -0
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +57 -30
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts +1 -1
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +239 -82
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/install.d.ts.map +1 -1
- package/dist/commands/claude/plugin/install.js +7 -2
- package/dist/commands/claude/plugin/install.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts +10 -3
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
- package/dist/commands/claude/plugin/uninstall.js +10 -2
- package/dist/commands/claude/plugin/uninstall.js.map +1 -1
- package/dist/commands/rag/help.d.ts.map +1 -1
- package/dist/commands/rag/help.js +2 -4
- package/dist/commands/rag/help.js.map +1 -1
- package/dist/commands/resources/help.d.ts.map +1 -1
- package/dist/commands/resources/help.js +2 -4
- package/dist/commands/resources/help.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +19 -0
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +51 -0
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/test/configure.d.ts.map +1 -1
- package/dist/commands/skill/test/configure.js +1 -1
- package/dist/commands/skill/test/configure.js.map +1 -1
- package/dist/commands/skill/test/run.d.ts +111 -24
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +328 -63
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +3 -32
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/install.d.ts.map +1 -1
- package/dist/commands/skills/install.js +79 -25
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +9 -5
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +7 -0
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +5 -3
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +7 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/skill-resolution/classify.d.ts +7 -2
- package/dist/skill-resolution/classify.d.ts.map +1 -1
- package/dist/skill-resolution/classify.js +7 -2
- package/dist/skill-resolution/classify.js.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.d.ts +10 -8
- package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.js +62 -23
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/skill-resolution/types.d.ts +3 -2
- package/dist/skill-resolution/types.d.ts.map +1 -1
- package/dist/utils/help-loader.d.ts +16 -0
- package/dist/utils/help-loader.d.ts.map +1 -1
- package/dist/utils/help-loader.js +31 -1
- package/dist/utils/help-loader.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +15 -6
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +23 -5
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/docs/index.md +39 -0
- package/docs/skill-test.md +213 -0
- package/docs/skills.md +29 -4
- package/package.json +13 -13
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { runSkillTestHarness, type SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
|
|
9
9
|
import type { SkillSourceDescriptor } from '@vibe-agent-toolkit/resources';
|
|
10
10
|
import { Command } from 'commander';
|
|
11
|
+
import { type BuildableReference } from '../../../skill-resolution/index.js';
|
|
11
12
|
export interface SkillTestRunOptions {
|
|
12
13
|
with?: string[];
|
|
13
14
|
withOptional?: string[];
|
|
@@ -33,6 +34,12 @@ export interface SkillTestRunOptions {
|
|
|
33
34
|
debug?: boolean;
|
|
34
35
|
env?: string[];
|
|
35
36
|
passEnv?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* Path (or npm bare specifier) to the evals.json this run grades against.
|
|
39
|
+
* Resolved against the process cwd, unlike `test.evals`, which is resolved
|
|
40
|
+
* against the skill source.
|
|
41
|
+
*/
|
|
42
|
+
evals?: string;
|
|
36
43
|
/** Skip building a declared subject and stage its existing dist instead. */
|
|
37
44
|
noBuild?: boolean;
|
|
38
45
|
/** Opt out of the fail-closed default: exit Ok (0) even when an eval fails. */
|
|
@@ -103,18 +110,95 @@ export interface ResolvedSubject {
|
|
|
103
110
|
*/
|
|
104
111
|
declaredExecutables?: DeclaredExecutable[];
|
|
105
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Build GATING for a declared skill: the flags that decide IF a build happens.
|
|
115
|
+
* Assembled once per run in {@link runSkillTestRun} and threaded, unchanged, through
|
|
116
|
+
* SUBJECT and COMPANION resolution so both arms share one gate.
|
|
117
|
+
*
|
|
118
|
+
* Deliberately carries NO `test.build` command. That hook is per-SKILL, not per-run:
|
|
119
|
+
* it is declared by one skill in one config and runs with THAT config's root as cwd,
|
|
120
|
+
* so it travels beside the ref being built (see {@link buildDeclaredSkill}'s
|
|
121
|
+
* `buildCommand`), never inside this shared gate. A subject's command riding in here
|
|
122
|
+
* would execute against every companion's config root.
|
|
123
|
+
*/
|
|
124
|
+
export interface BuildFlags {
|
|
125
|
+
/** Skip the build entirely and stage the existing dist (errors if absent). */
|
|
126
|
+
noBuild: boolean;
|
|
127
|
+
/** Assemble a preview only — never spawn. Builds ONLY when {@link explicitAck}. */
|
|
128
|
+
dryRun: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* The §12 security acknowledgment as the harness computes it — a dry run counts
|
|
131
|
+
* as acknowledged, because a preview that never builds and never spawns executes
|
|
132
|
+
* nothing. Gates SecurityAckError.
|
|
133
|
+
*/
|
|
134
|
+
acknowledged: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Whether `--i-understand-this-runs-skill-code` was ACTUALLY passed, distinct from
|
|
137
|
+
* {@link acknowledged}, which a dry run satisfies for free.
|
|
138
|
+
*
|
|
139
|
+
* A dry run now BUILDS, and building runs the repo's committed `test.build` hook —
|
|
140
|
+
* an arbitrary shell command. Gating that on {@link acknowledged} would be no gate
|
|
141
|
+
* at all, since dry runs synthesize it. So the build decision uses this raw flag,
|
|
142
|
+
* keeping an unacknowledged dry run safe to point at an untrusted clone.
|
|
143
|
+
*/
|
|
144
|
+
explicitAck: boolean;
|
|
145
|
+
}
|
|
106
146
|
/**
|
|
107
147
|
* Project-aware subject resolution for `vat skill test run`. Resolves the subject
|
|
108
148
|
* reference; for a declared skill, builds it (real entry points) and returns the
|
|
109
149
|
* dist dir to stage; everything else is staged as-is. Throws SkillBuildError
|
|
110
150
|
* (exit 2) for name-miss / not-found / --no-build-without-dist / build failure.
|
|
151
|
+
*
|
|
152
|
+
* `memo` is the per-run build memo (see {@link BuildMemo}) — pass the SAME map used
|
|
153
|
+
* for companion resolution so a skill that is both subject and companion builds once.
|
|
154
|
+
*
|
|
155
|
+
* `buildCommand` is the SUBJECT's own `test.build` hook, resolved by
|
|
156
|
+
* {@link loadTestConfig} (which carries a bare-name/basename fallback a raw config
|
|
157
|
+
* lookup lacks). It applies to the subject's build ONLY — companions resolve theirs
|
|
158
|
+
* from their own governing config.
|
|
111
159
|
*/
|
|
112
|
-
export declare function resolveSubjectForTest(ref: string, cwd: string, flags:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
160
|
+
export declare function resolveSubjectForTest(ref: string, cwd: string, flags: BuildFlags, memo: BuildMemo, buildCommand: string | undefined): Promise<ResolvedSubject>;
|
|
161
|
+
/** Result of {@link buildDeclaredSkill}: where the built (or reused) dist landed. */
|
|
162
|
+
export interface BuildDeclaredSkillResult {
|
|
163
|
+
distDir: string;
|
|
164
|
+
rebuilt: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Set only under --dry-run: true = an existing dist was staged WITHOUT
|
|
167
|
+
* rebuilding (may be stale); false = no dist existed yet so the preview fell
|
|
168
|
+
* back to the source dir. Absent for a real (non-dry-run) build.
|
|
169
|
+
*/
|
|
170
|
+
dryRunStagedExistingDist?: boolean;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Per-run memo of BUILD OPERATIONS, so one build operation never runs twice in a
|
|
174
|
+
* run. Two disjoint key namespaces share the set: the declared-skill build itself
|
|
175
|
+
* (`pool:` / `plugin:`, see {@link buildMemoKey}) and the `test.build` pre-stage
|
|
176
|
+
* shell hook (`hook:`, see {@link preStageHookMemoKey}) — the hook needs its own
|
|
177
|
+
* because two DIFFERENT skills in one config may declare the SAME command, which
|
|
178
|
+
* is one hook invocation but two distinct builds.
|
|
179
|
+
*
|
|
180
|
+
* A `Set` of operation keys, NOT a `Map` caching results: the key identifies an
|
|
181
|
+
* OPERATION, not a skill, and a
|
|
182
|
+
* `plugin-local` operation rebuilds the WHOLE marketplace, so two different skills
|
|
183
|
+
* in that marketplace deliberately share one key while having DIFFERENT
|
|
184
|
+
* `expectedDistDir`s. A result cached under that shared key would be valid only for
|
|
185
|
+
* the ref that recorded it — handing it to the other ref would stage the WRONG
|
|
186
|
+
* skill's dist. {@link verifyBuiltDist} is what a memo hit re-derives (always keyed
|
|
187
|
+
* off THIS ref, never a cached value) to avoid exactly that bug.
|
|
188
|
+
*/
|
|
189
|
+
export type BuildMemo = Set<string>;
|
|
190
|
+
/**
|
|
191
|
+
* Identity of the BUILD OPERATION a {@link BuildableReference} triggers — the memo key.
|
|
192
|
+
*
|
|
193
|
+
* A `pool` skill is built by `packageSkill` into its own `expectedDistDir`, so that
|
|
194
|
+
* dir IS the operation's identity. A `plugin-local` skill is built by
|
|
195
|
+
* `runClaudePluginBuild`, which `rm -rf`s and rebuilds EVERY plugin in the whole
|
|
196
|
+
* marketplace — so the operation's identity is the (configRoot, marketplace) pair,
|
|
197
|
+
* NOT the skill. Keying plugin-local per skill would make a second companion in the
|
|
198
|
+
* same marketplace trigger a full marketplace wipe-and-rebuild that reproduces work
|
|
199
|
+
* the first call already did.
|
|
200
|
+
*/
|
|
201
|
+
export declare function buildMemoKey(ref: BuildableReference): string;
|
|
118
202
|
/**
|
|
119
203
|
* Companion analog of {@link resolveBuildableSubject} (issue #158): resolve every
|
|
120
204
|
* `--with`/`--with-optional` companion whose spec is a `{ path }` pointing at a
|
|
@@ -123,26 +207,29 @@ export declare function resolveSubjectForTest(ref: string, cwd: string, flags: {
|
|
|
123
207
|
* url:/vendored specs, or a path outside this project's config — is "a different
|
|
124
208
|
* story" (per the issue's own framing): left untouched, staged as today.
|
|
125
209
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
210
|
+
* The `test.build` hook used is the COMPANION's own — read from the config that
|
|
211
|
+
* governs IT ({@link declaredSkillTestConfig}), not the subject's. The subject's hook
|
|
212
|
+
* is a different skill's command in a (possibly) different package, and running it
|
|
213
|
+
* here would execute it with the companion's config root as cwd.
|
|
214
|
+
*
|
|
215
|
+
* FAILURE HANDLING. A REQUIRED companion's failure ALWAYS propagates (the existing
|
|
216
|
+
* "--with fails if a source cannot be resolved" contract, extended to "cannot be
|
|
217
|
+
* built"), re-messaged to name the alias the user typed. An OPTIONAL companion
|
|
218
|
+
* degrades to the ORIGINAL (unbuilt) path spec — with a mandatory stderr note — only
|
|
219
|
+
* for the narrow, non-destructive case {@link isSurvivableCompanionFailure} allows;
|
|
220
|
+
* every other failure propagates for it too. Staging's existing skip-with-warning
|
|
221
|
+
* fallback still applies if the raw copy also fails to stage.
|
|
222
|
+
*
|
|
223
|
+
* DRY-RUN STALENESS: a `--dry-run` preview that staged an EXISTING
|
|
224
|
+
* companion dist WITHOUT rebuilding it warns on stderr, naming the companion +
|
|
225
|
+
* its declared skill, using {@link buildStaleDistWarningLines} — the SAME
|
|
226
|
+
* warning-construction the subject's own dry-run summary uses (never a copied
|
|
227
|
+
* string), so the identical fact ("this preview may be stale") warns for either
|
|
228
|
+
* role instead of only the subject.
|
|
132
229
|
*/
|
|
133
|
-
export declare function resolveCompanionSpec(name: string, spec: SkillSourceSpec, repoRoot: string, flags:
|
|
134
|
-
noBuild: boolean;
|
|
135
|
-
dryRun: boolean;
|
|
136
|
-
acknowledged: boolean;
|
|
137
|
-
build?: string;
|
|
138
|
-
}, optional: boolean): Promise<SkillSourceSpec>;
|
|
230
|
+
export declare function resolveCompanionSpec(name: string, spec: SkillSourceSpec, repoRoot: string, flags: BuildFlags, optional: boolean, memo: BuildMemo): Promise<SkillSourceSpec>;
|
|
139
231
|
/** Resolve every entry of a `--with`/`--with-optional` companion record (see {@link resolveCompanionSpec}). */
|
|
140
|
-
export declare function resolveCompanionSources(sources: Record<string, SkillSourceSpec> | undefined, repoRoot: string, flags:
|
|
141
|
-
noBuild: boolean;
|
|
142
|
-
dryRun: boolean;
|
|
143
|
-
acknowledged: boolean;
|
|
144
|
-
build?: string;
|
|
145
|
-
}, optional: boolean): Promise<Record<string, SkillSourceSpec> | undefined>;
|
|
232
|
+
export declare function resolveCompanionSources(sources: Record<string, SkillSourceSpec> | undefined, repoRoot: string, flags: BuildFlags, optional: boolean, memo: BuildMemo): Promise<Record<string, SkillSourceSpec> | undefined>;
|
|
146
233
|
/**
|
|
147
234
|
* True when the resolved subject is a CONFIG-BLIND path target: a `{ path }` source
|
|
148
235
|
* staged AS-IS (not built) that does NOT map back to a declared skill, so the project's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/commands/skill/test/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/commands/skill/test/run.ts"],"names":[],"mappings":"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"}
|