@skill-harness/cli 0.22.0 → 0.22.3
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/cli.js +11 -4
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -44,7 +44,7 @@ function parseArgs(argv) {
|
|
|
44
44
|
function assertNoRetiredFlags(command, args) {
|
|
45
45
|
const retired = command === "run"
|
|
46
46
|
? ["affected"]
|
|
47
|
-
: command === "grade"
|
|
47
|
+
: command === "grade" || command === "regrade"
|
|
48
48
|
? ["auto-rejudge", "secondary-judge", "tie-break-judge"]
|
|
49
49
|
: [];
|
|
50
50
|
const found = retired.find((flag) => Object.hasOwn(args.flags, flag));
|
|
@@ -253,7 +253,7 @@ export async function cmdRun(args, adapterOverride) {
|
|
|
253
253
|
export async function cmdGrade(args, adapterOverride) {
|
|
254
254
|
const runDir = args._[0];
|
|
255
255
|
if (!runDir)
|
|
256
|
-
throw new Error("usage: skill-harness grade <run-dir> [--judge prov:model] [--suspect-only]");
|
|
256
|
+
throw new Error("usage: skill-harness grade <run-dir> [--judge prov:model] [--suspect-only | --unparsed-only]");
|
|
257
257
|
if (!existsSync(runDir)) {
|
|
258
258
|
throw new Error(`run dir not found: ${resolve(runDir)} (relative paths resolve against the cwd)`);
|
|
259
259
|
}
|
|
@@ -266,8 +266,13 @@ export async function cmdGrade(args, adapterOverride) {
|
|
|
266
266
|
// an explicit --judge flag still wins; absent or retired recorded judges use
|
|
267
267
|
// the current Pi default.
|
|
268
268
|
const judgeFlag = flagStr(args, "judge");
|
|
269
|
+
const onlyUnparsed = flagBool(args, "unparsed-only");
|
|
270
|
+
if (onlyUnparsed && judgeFlag !== undefined)
|
|
271
|
+
throw new Error("--unparsed-only uses the recorded judge; --judge cannot be combined with it");
|
|
269
272
|
const resolvedRecordedJudge = judgeFlag ? undefined : recordedJudgeOrDefault(prev?.judge);
|
|
270
273
|
const judge = judgeFlag ? parseModelRef(judgeFlag) : resolvedRecordedJudge.judge;
|
|
274
|
+
if (onlyUnparsed && resolvedRecordedJudge?.migratedFrom)
|
|
275
|
+
throw new Error("--unparsed-only cannot use this retired recorded judge; use grade to migrate it explicitly");
|
|
271
276
|
if (resolvedRecordedJudge?.migratedFrom) {
|
|
272
277
|
console.error(`skill-harness: recorded judge ${resolvedRecordedJudge.migratedFrom.provider}:${resolvedRecordedJudge.migratedFrom.model} was removed; re-judging through Pi with ${judge.provider}:${judge.model}`);
|
|
273
278
|
}
|
|
@@ -287,7 +292,7 @@ export async function cmdGrade(args, adapterOverride) {
|
|
|
287
292
|
console.error(stale);
|
|
288
293
|
const results = await regradeRun({
|
|
289
294
|
runDir, spec, adapter, judge, specDir: testsDir, now: nowIso,
|
|
290
|
-
onlySuspect: flagBool(args, "suspect-only"),
|
|
295
|
+
onlySuspect: flagBool(args, "suspect-only"), onlyUnparsed,
|
|
291
296
|
});
|
|
292
297
|
for (const s of results.scenarios) {
|
|
293
298
|
console.log(` ${s.id} → ${s.judge_verdict}: ${s.judge_reason}`);
|
|
@@ -731,6 +736,7 @@ export function help() {
|
|
|
731
736
|
[--arm <name>] measure under a named arm from <skills-root>/tests/arms.yaml
|
|
732
737
|
(loads its extensions, seeds pi-daddy definitions, tags the run dir)
|
|
733
738
|
grade <run-dir> [--judge prov:model] [--suspect-only] re-grade saved transcripts (neutral judge)
|
|
739
|
+
regrade <run-dir> --unparsed-only re-judge ERROR criterion reps with recorded judge
|
|
734
740
|
rescore <run-dir>... re-score saved reps vs current spec thresholds (${free("rescore")})
|
|
735
741
|
regate <run-dir>... [--judge prov:model] re-evaluate saved gates (no subject call; judges fail→pass reps)
|
|
736
742
|
restamp <skill|all> --skills <root> [--from <git-ref>] record the model-visible skill digest on runs that still match (${free("restamp")}; one-time migration)
|
|
@@ -761,7 +767,8 @@ export async function main(argv) {
|
|
|
761
767
|
assertNoRetiredFlags(cmd, args);
|
|
762
768
|
switch (cmd) {
|
|
763
769
|
case "run": return cmdRun(args);
|
|
764
|
-
case "grade":
|
|
770
|
+
case "grade":
|
|
771
|
+
case "regrade": return cmdGrade(args);
|
|
765
772
|
case "rescore": return cmdRescore(args);
|
|
766
773
|
case "regate": return cmdRegate(args);
|
|
767
774
|
case "restamp": return cmdRestamp(args);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skill-harness/cli",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.3",
|
|
4
4
|
"description": "skill-harness CLI — run, grade, review, and lint agent-skill scenarios on the pi harness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"prepack": "node ../../scripts/release-pack.mjs --guard"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@skill-harness/core": "0.22.
|
|
48
|
-
"@skill-harness/adapters": "0.22.
|
|
47
|
+
"@skill-harness/core": "0.22.3",
|
|
48
|
+
"@skill-harness/adapters": "0.22.3"
|
|
49
49
|
}
|
|
50
50
|
}
|