@farmslot/recipe-cli 0.22.5 → 0.23.0
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/CHANGELOG.md +9 -0
- package/dist/harness/acceptance-ledger.d.ts +1 -0
- package/dist/harness/acceptance-ledger.d.ts.map +1 -1
- package/dist/harness/acceptance-ledger.js +2 -1
- package/dist/harness/acceptance-ledger.js.map +1 -1
- package/dist/harness/artifact-validation.d.ts +23 -0
- package/dist/harness/artifact-validation.d.ts.map +1 -0
- package/dist/harness/artifact-validation.js +134 -0
- package/dist/harness/artifact-validation.js.map +1 -0
- package/dist/harness/commands/artifacts-markdown.d.ts +28 -0
- package/dist/harness/commands/artifacts-markdown.d.ts.map +1 -1
- package/dist/harness/commands/artifacts-markdown.js +125 -1
- package/dist/harness/commands/artifacts-markdown.js.map +1 -1
- package/dist/harness/commands/doctor.js +1 -1
- package/dist/harness/commands/doctor.js.map +1 -1
- package/dist/harness/commands/logs.d.ts +6 -0
- package/dist/harness/commands/logs.d.ts.map +1 -1
- package/dist/harness/commands/logs.js +28 -14
- package/dist/harness/commands/logs.js.map +1 -1
- package/dist/harness/commands/review.d.ts +48 -0
- package/dist/harness/commands/review.d.ts.map +1 -1
- package/dist/harness/commands/review.js +70 -34
- package/dist/harness/commands/review.js.map +1 -1
- package/dist/harness/commands/run.d.ts.map +1 -1
- package/dist/harness/commands/run.js +5 -0
- package/dist/harness/commands/run.js.map +1 -1
- package/dist/harness/commands/status.d.ts.map +1 -1
- package/dist/harness/commands/status.js +16 -15
- package/dist/harness/commands/status.js.map +1 -1
- package/dist/harness/index.d.ts +3 -2
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +2 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/parse-args.d.ts +9 -0
- package/dist/harness/parse-args.d.ts.map +1 -1
- package/dist/harness/parse-args.js +22 -20
- package/dist/harness/parse-args.js.map +1 -1
- package/dist/harness/readiness.d.ts +1 -0
- package/dist/harness/readiness.d.ts.map +1 -1
- package/dist/harness/readiness.js.map +1 -1
- package/dist/harness/repair-scope.d.ts +12 -0
- package/dist/harness/repair-scope.d.ts.map +1 -0
- package/dist/harness/repair-scope.js +41 -0
- package/dist/harness/repair-scope.js.map +1 -0
- package/dist/harness/run-engine.d.ts +2 -0
- package/dist/harness/run-engine.d.ts.map +1 -1
- package/dist/harness/run-engine.js +1 -0
- package/dist/harness/run-engine.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,15 @@ All notable changes to `@farmslot/recipe-cli` are tracked here.
|
|
|
6
6
|
|
|
7
7
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
8
8
|
|
|
9
|
+
## 0.23.0 - 2026-10-17
|
|
10
|
+
|
|
11
|
+
- Pass the task's active repair scope to the engine only for its separate repair recipe; the main task recipe ignores it.
|
|
12
|
+
- Export `renderRetainedArtifactsMarkdown` and `validateRecipeArtifactDirectory` from `./harness` so other host CLIs render and validate retained task Markdown with the root CLI's selection and refusals.
|
|
13
|
+
- Add `ReviewCommandOptions` hooks (`libraries`, `resolveLibrary`, `defaultDomain`, `domainCommand`, `usage`, `runtime`, `header`, `verdictRule`) and export `ReviewLibrary`, so host CLIs built with `createHarnessCli` route review and domain to the shared handler. A project binding ignores the hooks.
|
|
14
|
+
- Review resolves the domain before the runtime, prints one "Domain patterns" heading, names the domain source on stderr in human mode, words setup step 2 through the domain command, and refuses an owned-paths file with an empty domain.
|
|
15
|
+
- Add `LogsCommandOptions.announce`, called before a live follow outside `--json`. Logs now report an undetected or unknown adapter and a non-numeric `--events` through the usage envelope, check `--events` before the log file, and word the invalid-source, missing-file, headless and missing-console refusals generically.
|
|
16
|
+
- Doctor prints a failing recorder's detail on stderr; `ReadinessViewOptions.journal: false` leaves the command journal out of status.
|
|
17
|
+
|
|
9
18
|
## 0.22.5 - 2026-10-16
|
|
10
19
|
|
|
11
20
|
- Align the worker dependency set with parent acceptance inheritance and Protocol 0.53.0.
|
|
@@ -12,5 +12,6 @@ export declare function recordRecipeAcceptance(taskDir: string, _target: string,
|
|
|
12
12
|
tracePath: string;
|
|
13
13
|
recipePath: string;
|
|
14
14
|
claimsPath?: string;
|
|
15
|
+
selectedClaims?: RecipeClaimEvidence[];
|
|
15
16
|
}): RecipeAcceptanceRecord;
|
|
16
17
|
//# sourceMappingURL=acceptance-ledger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance-ledger.d.ts","sourceRoot":"","sources":["../../src/harness/acceptance-ledger.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,MAAM,GAAG,IAAI,CAgB/E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAI9F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"acceptance-ledger.d.ts","sourceRoot":"","sources":["../../src/harness/acceptance-ledger.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,MAAM,GAAG,IAAI,CAgB/E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAI9F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACxC,GACA,sBAAsB,CAgBxB"}
|
|
@@ -40,7 +40,8 @@ export function recordRecipeAcceptance(taskDir, _target, result) {
|
|
|
40
40
|
const claims = JSON.parse(fs.readFileSync(result.claimsPath, 'utf8'));
|
|
41
41
|
const root = path.dirname(result.claimsPath);
|
|
42
42
|
const realTask = fs.realpathSync(taskDir);
|
|
43
|
-
|
|
43
|
+
// A repair transports the engine selection; retained rows keep their original verdicts.
|
|
44
|
+
const criteria = (result.selectedClaims ?? claims.criteria).map((claim) => ({
|
|
44
45
|
...claim,
|
|
45
46
|
evidence: [
|
|
46
47
|
...new Set([result.tracePath, ...claim.evidence.map((file) => path.resolve(root, file))]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance-ledger.js","sourceRoot":"","sources":["../../src/harness/acceptance-ledger.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,GACV,OAAO,CAAC,uDAAuD,CAA2B,CAAC;AAQ7F,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,MAAM,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,aAAa,GAAG,KAAK;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAChF,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,2EAA2E;IAC3E,MAAM,YAAY,GAChB,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC;IACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,aAAa;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,sDAAsD,UAAU,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,OAAO,IAAI;QACT,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAAe,EACf,
|
|
1
|
+
{"version":3,"file":"acceptance-ledger.js","sourceRoot":"","sources":["../../src/harness/acceptance-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type RecipeConformanceLiveEvidence, type RecipeValidationResult } from '@farmslot/protocol';
|
|
2
|
+
import { type RecordedEvidencePackageReadResult } from '@farmslot/recipe-runner';
|
|
3
|
+
export interface RecipeArtifactsValidateOptions {
|
|
4
|
+
recipe?: string;
|
|
5
|
+
requireRunnerProvenance?: boolean;
|
|
6
|
+
liveProof?: Pick<RecipeConformanceLiveEvidence, 'smokeTarget' | 'teardownTarget' | 'captureRequired' | 'hudRequired'>;
|
|
7
|
+
}
|
|
8
|
+
export interface ArtifactValidationCheck {
|
|
9
|
+
id: string;
|
|
10
|
+
status: 'pass' | 'fail';
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ArtifactValidationResult {
|
|
14
|
+
status: 'pass' | 'fail';
|
|
15
|
+
artifactDir: string;
|
|
16
|
+
checks: ArtifactValidationCheck[];
|
|
17
|
+
recipe: RecipeValidationResult;
|
|
18
|
+
liveEvidence?: RecipeConformanceLiveEvidence;
|
|
19
|
+
warnings?: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function validateRecipeArtifactDirectory(artifactDirInput: string, opts: RecipeArtifactsValidateOptions): Promise<ArtifactValidationResult>;
|
|
22
|
+
export declare function validateRecipeArtifactRead(artifactDir: string, opts: RecipeArtifactsValidateOptions, loaded: RecordedEvidencePackageReadResult): Promise<ArtifactValidationResult>;
|
|
23
|
+
//# sourceMappingURL=artifact-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-validation.d.ts","sourceRoot":"","sources":["../../src/harness/artifact-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,iCAAiC,EAEvC,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,IAAI,CACd,6BAA6B,EAC7B,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,aAAa,CACrE,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,CAAC,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AA2DD,wBAAsB,+BAA+B,CACnD,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAOnC;AAED,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,8BAA8B,EACpC,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,wBAAwB,CAAC,CA6InC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { digestRecipeDocument, isRecord, } from '@farmslot/protocol';
|
|
2
|
+
import { readRecordedEvidencePackage, validateRecordedEvidencePackage, } from '@farmslot/recipe-runner';
|
|
3
|
+
import { readRecipeCliJsonFile, resolveRecipeCliPath } from '@farmslot/recipe-runner/cli/support';
|
|
4
|
+
import { runnerRevision } from './artifact-files.js';
|
|
5
|
+
import { validateRuntimeProof } from './runtime-proof.js';
|
|
6
|
+
const TERMINAL_RECIPE_STATUSES = new Set(['pass', 'fail', 'unknown']);
|
|
7
|
+
function addArtifactCheck(checks, id, status, message) {
|
|
8
|
+
checks.push({ id, status, message });
|
|
9
|
+
}
|
|
10
|
+
function hasSummaryRunnerProvenance(summary) {
|
|
11
|
+
return readRunnerProvenance(summary, 'runner') !== null;
|
|
12
|
+
}
|
|
13
|
+
function hasTraceRunnerProvenance(trace) {
|
|
14
|
+
return isRecord(trace) && readRunnerProvenance(trace.metadata, 'runner') !== null;
|
|
15
|
+
}
|
|
16
|
+
function hasManifestRunnerProvenance(manifest) {
|
|
17
|
+
return isRecord(manifest) && readRunnerProvenance(manifest.provenance, 'runner') !== null;
|
|
18
|
+
}
|
|
19
|
+
function readRunnerProvenance(parent, field) {
|
|
20
|
+
if (!isRecord(parent))
|
|
21
|
+
return null;
|
|
22
|
+
const runner = parent[field];
|
|
23
|
+
if (!isRecord(runner))
|
|
24
|
+
return null;
|
|
25
|
+
const source = runner.source;
|
|
26
|
+
const ref = runnerRevision(runner);
|
|
27
|
+
if (typeof source !== 'string' || source.trim() === '')
|
|
28
|
+
return null;
|
|
29
|
+
if (typeof ref !== 'string' || ref.trim() === '')
|
|
30
|
+
return null;
|
|
31
|
+
return runner;
|
|
32
|
+
}
|
|
33
|
+
function canonicalRunnerIdentity(runner) {
|
|
34
|
+
const source = runner.source;
|
|
35
|
+
const ref = runnerRevision(runner);
|
|
36
|
+
if (typeof source !== 'string' || source.trim() === '')
|
|
37
|
+
return null;
|
|
38
|
+
if (typeof ref !== 'string' || ref.trim() === '')
|
|
39
|
+
return null;
|
|
40
|
+
return JSON.stringify({ source: source.trim(), ref: ref.trim() });
|
|
41
|
+
}
|
|
42
|
+
function runnerProvenanceMatches(summary, trace, manifest) {
|
|
43
|
+
const summaryRunner = readRunnerProvenance(summary, 'runner');
|
|
44
|
+
const traceRunner = isRecord(trace) ? readRunnerProvenance(trace.metadata, 'runner') : null;
|
|
45
|
+
const manifestRunner = isRecord(manifest)
|
|
46
|
+
? readRunnerProvenance(manifest.provenance, 'runner')
|
|
47
|
+
: null;
|
|
48
|
+
if (!summaryRunner || !traceRunner || !manifestRunner)
|
|
49
|
+
return false;
|
|
50
|
+
const canonical = canonicalRunnerIdentity(summaryRunner);
|
|
51
|
+
return (canonical !== null &&
|
|
52
|
+
canonicalRunnerIdentity(traceRunner) === canonical &&
|
|
53
|
+
canonicalRunnerIdentity(manifestRunner) === canonical);
|
|
54
|
+
}
|
|
55
|
+
export async function validateRecipeArtifactDirectory(artifactDirInput, opts) {
|
|
56
|
+
const artifactDir = resolveRecipeCliPath(artifactDirInput);
|
|
57
|
+
return validateRecipeArtifactRead(artifactDir, opts, await readRecordedEvidencePackage(artifactDir));
|
|
58
|
+
}
|
|
59
|
+
export async function validateRecipeArtifactRead(artifactDir, opts, loaded) {
|
|
60
|
+
const checks = loaded.checks;
|
|
61
|
+
const retained = loaded.input;
|
|
62
|
+
const { summary, trace, manifest, artifactDigests } = retained;
|
|
63
|
+
const artifactPaths = retained.artifactPaths ?? [];
|
|
64
|
+
// --recipe cross-checks the retained root; it cannot replace a recorded package's root.
|
|
65
|
+
const recipe = opts.recipe ? await readRecipeCliJsonFile(opts.recipe) : retained.recipe;
|
|
66
|
+
const bundle = { ...retained, recipe };
|
|
67
|
+
if (opts.recipe && retained.recipe !== undefined) {
|
|
68
|
+
addArtifactCheck(checks, 'recipe.matches_retained', digestRecipeDocument(recipe) === digestRecipeDocument(retained.recipe) ? 'pass' : 'fail', 'The supplied recipe must match the retained root recipe.');
|
|
69
|
+
}
|
|
70
|
+
const recorded = (isRecord(summary) && typeof summary.recipeRunId === 'string') ||
|
|
71
|
+
artifactPaths.includes('acceptance-status.json');
|
|
72
|
+
const recipeValidation = validateRecordedEvidencePackage({
|
|
73
|
+
...bundle,
|
|
74
|
+
recipe: recorded ? retained.recipe : recipe,
|
|
75
|
+
});
|
|
76
|
+
let captures = [];
|
|
77
|
+
const warnings = [];
|
|
78
|
+
if (opts.liveProof) {
|
|
79
|
+
try {
|
|
80
|
+
captures = validateRuntimeProof(bundle, opts.liveProof.smokeTarget, opts.liveProof.teardownTarget, { ...opts.liveProof, hudRequired: false });
|
|
81
|
+
addArtifactCheck(checks, 'runtime.proof', 'pass', 'Runtime effect and authored teardown assertions passed.');
|
|
82
|
+
if (opts.liveProof.hudRequired) {
|
|
83
|
+
// The same immutable bundle already passed state, capture and cleanup checks.
|
|
84
|
+
// HUD observations are advisory; their absence cannot invalidate that proof.
|
|
85
|
+
try {
|
|
86
|
+
validateRuntimeProof(bundle, opts.liveProof.smokeTarget, opts.liveProof.teardownTarget, opts.liveProof);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
warnings.push(error instanceof Error ? error.message : String(error));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
addArtifactCheck(checks, 'runtime.proof', 'fail', error instanceof Error ? error.message : String(error));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const summaryStatus = isRecord(summary) ? summary.status : undefined;
|
|
98
|
+
addArtifactCheck(checks, 'summary.status', typeof summaryStatus === 'string' && TERMINAL_RECIPE_STATUSES.has(summaryStatus)
|
|
99
|
+
? 'pass'
|
|
100
|
+
: 'fail', 'summary.json must include terminal status pass, fail, or unknown.');
|
|
101
|
+
addArtifactCheck(checks, 'trace.shape', Array.isArray(trace) || (isRecord(trace) && Array.isArray(trace.entries)) ? 'pass' : 'fail', 'trace.json must be an array or an object with entries[].');
|
|
102
|
+
const manifestStatus = isRecord(manifest) ? manifest.runStatus : undefined;
|
|
103
|
+
addArtifactCheck(checks, 'manifest.status_matches_summary', typeof summaryStatus === 'string' && manifestStatus === summaryStatus ? 'pass' : 'fail', 'artifact-manifest.json runStatus must match summary.json status.');
|
|
104
|
+
if (opts.requireRunnerProvenance) {
|
|
105
|
+
addArtifactCheck(checks, 'runner.provenance.summary', hasSummaryRunnerProvenance(summary) ? 'pass' : 'fail', 'summary.json must include runner provenance at summary.runner.');
|
|
106
|
+
addArtifactCheck(checks, 'runner.provenance.trace', hasTraceRunnerProvenance(trace) ? 'pass' : 'fail', 'trace.json must include runner provenance at trace.metadata.runner.');
|
|
107
|
+
addArtifactCheck(checks, 'runner.provenance.manifest', hasManifestRunnerProvenance(manifest) ? 'pass' : 'fail', 'artifact-manifest.json must include runner provenance at provenance.runner.');
|
|
108
|
+
addArtifactCheck(checks, 'runner.provenance.matches', runnerProvenanceMatches(summary, trace, manifest) ? 'pass' : 'fail', 'Runner provenance must identify the same source/ref in summary, trace metadata, and artifact manifest.');
|
|
109
|
+
}
|
|
110
|
+
const status = checks.some((check) => check.status === 'fail') || recipeValidation.status === 'invalid'
|
|
111
|
+
? 'fail'
|
|
112
|
+
: 'pass';
|
|
113
|
+
const liveEvidence = status === 'pass' && opts.liveProof
|
|
114
|
+
? {
|
|
115
|
+
...opts.liveProof,
|
|
116
|
+
hudRequired: false,
|
|
117
|
+
...(opts.liveProof.captureRequired || opts.liveProof.hudRequired ? { captures } : {}),
|
|
118
|
+
artifactDir,
|
|
119
|
+
artifacts: await Promise.all([...artifactPaths].sort().map(async (file) => ({
|
|
120
|
+
path: file,
|
|
121
|
+
digest: artifactDigests[file],
|
|
122
|
+
}))),
|
|
123
|
+
}
|
|
124
|
+
: undefined;
|
|
125
|
+
return {
|
|
126
|
+
status,
|
|
127
|
+
artifactDir,
|
|
128
|
+
checks,
|
|
129
|
+
recipe: recipeValidation,
|
|
130
|
+
...(liveEvidence ? { liveEvidence } : {}),
|
|
131
|
+
...(warnings.length ? { warnings } : {}),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=artifact-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-validation.js","sourceRoot":"","sources":["../../src/harness/artifact-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ArtifactValidationResult } from '../artifact-validation.js';
|
|
1
2
|
export interface TaskArtifactsMarkdownInput {
|
|
2
3
|
taskDir: string;
|
|
3
4
|
/** Exact package already selected by the caller; never reselect an attempt here. */
|
|
@@ -18,7 +19,34 @@ export interface TaskArtifactsMarkdownResult {
|
|
|
18
19
|
run: MarkdownArtifact | null;
|
|
19
20
|
workflow: MarkdownArtifact | null;
|
|
20
21
|
}
|
|
22
|
+
export interface RetainedArtifactsMarkdownInput {
|
|
23
|
+
/** Task or artifact package directory; without one, `candidates` are searched. */
|
|
24
|
+
directory?: string;
|
|
25
|
+
/** Evidence paths searched for a package when no directory is given. */
|
|
26
|
+
candidates?: readonly string[];
|
|
27
|
+
command?: string;
|
|
28
|
+
/** Refuses to overwrite authored inputs or retained evidence. */
|
|
29
|
+
out?: string;
|
|
30
|
+
validate?: boolean;
|
|
31
|
+
/** `text` selects and validates the package without rendering authored task Markdown. */
|
|
32
|
+
format?: 'markdown' | 'text';
|
|
33
|
+
}
|
|
34
|
+
export interface RetainedArtifactsMarkdownResult extends Partial<TaskArtifactsMarkdownResult> {
|
|
35
|
+
artifactDir?: string;
|
|
36
|
+
summary?: unknown;
|
|
37
|
+
manifest?: unknown;
|
|
38
|
+
validation?: ArtifactValidationResult;
|
|
39
|
+
out?: string;
|
|
40
|
+
}
|
|
21
41
|
/** Render authored PR prose and existing evidence without executing or publishing it. */
|
|
22
42
|
export declare function renderTaskArtifactsMarkdown(input: TaskArtifactsMarkdownInput): Promise<TaskArtifactsMarkdownResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Select, validate and render a task's or artifact package's Markdown, writing it only to a
|
|
45
|
+
* safe `out`. `result` is the `recipe artifacts --json` document; `body` is the Markdown.
|
|
46
|
+
*/
|
|
47
|
+
export declare function renderRetainedArtifactsMarkdown(input: RetainedArtifactsMarkdownInput): Promise<{
|
|
48
|
+
result: RetainedArtifactsMarkdownResult;
|
|
49
|
+
body: string;
|
|
50
|
+
}>;
|
|
23
51
|
export {};
|
|
24
52
|
//# sourceMappingURL=artifacts-markdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-markdown.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/artifacts-markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"artifacts-markdown.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/artifacts-markdown.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,2BAA2B,CAAC;AAInC,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,sBAAuB,SAAQ,gBAAgB;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,8BAA8B;IAC7C,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,+BAAgC,SAAQ,OAAO,CAAC,2BAA2B,CAAC;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA6CD,yFAAyF;AACzF,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC,CA8ItC;AAkED;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC;IAAE,MAAM,EAAE,+BAA+B,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiFpE"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { existsSync, statSync } from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
3
|
+
import { readRecipeAttemptSelection } from '@farmslot/agent-runtime/scripts/retained-recipe-attempt.cjs';
|
|
2
4
|
import { isRecord } from '@farmslot/protocol';
|
|
3
|
-
import {
|
|
5
|
+
import { readRecordedEvidencePackage } from '@farmslot/recipe-runner';
|
|
6
|
+
import { readRecipeCliJsonFileWithinRoot } from '@farmslot/recipe-runner/cli/support';
|
|
7
|
+
import { readContainedJsonArtifact, readContainedTextArtifact, runnerRevision, writeContainedArtifact, } from '../artifact-files.js';
|
|
8
|
+
import { validateRecipeArtifactRead, } from '../artifact-validation.js';
|
|
9
|
+
import { isPathWithin } from '../paths.js';
|
|
4
10
|
import { countRecipeNodes } from '../run-engine.js';
|
|
5
11
|
const RECIPE_HEADING = '## **Validation Recipe**';
|
|
6
12
|
const LOGS_HEADING = '## **Validation Logs**';
|
|
@@ -171,4 +177,122 @@ export async function renderTaskArtifactsMarkdown(input) {
|
|
|
171
177
|
workflow: workflow === undefined ? null : { path: 'artifacts/workflow.mmd' },
|
|
172
178
|
};
|
|
173
179
|
}
|
|
180
|
+
function artifactManifestPaths(manifest) {
|
|
181
|
+
const entries = isRecord(manifest) && Array.isArray(manifest.artifacts) ? manifest.artifacts : [];
|
|
182
|
+
return entries.flatMap((entry) => isRecord(entry) && typeof entry.path === 'string' ? [entry.path] : []);
|
|
183
|
+
}
|
|
184
|
+
function evidenceMarkdown(artifactDir, summary, artifactPaths) {
|
|
185
|
+
const literal = (value) => `<code>${escapeHtml(value)}</code>`;
|
|
186
|
+
return [
|
|
187
|
+
`Recipe evidence: ${literal(artifactDir)}`,
|
|
188
|
+
'',
|
|
189
|
+
`Result: ${literal(isRecord(summary) ? String(summary.status) : 'unknown')}`,
|
|
190
|
+
'',
|
|
191
|
+
...artifactPaths.map((file) => `- ${literal(file)}`),
|
|
192
|
+
'',
|
|
193
|
+
].join('\n');
|
|
194
|
+
}
|
|
195
|
+
async function writeArtifactsMarkdown(out, body, taskDir, artifactDir, artifactPaths) {
|
|
196
|
+
let parent = path.dirname(out);
|
|
197
|
+
while (!existsSync(parent))
|
|
198
|
+
parent = path.dirname(parent);
|
|
199
|
+
const destination = existsSync(out) ? statSync(out, { bigint: true }) : undefined;
|
|
200
|
+
const protectedPaths = [
|
|
201
|
+
...(artifactDir
|
|
202
|
+
? [...artifactPaths, 'report.md'].map((file) => path.resolve(artifactDir, file))
|
|
203
|
+
: []),
|
|
204
|
+
...(taskDir
|
|
205
|
+
? [
|
|
206
|
+
'recipe-runs',
|
|
207
|
+
'recipe-run',
|
|
208
|
+
'recipe',
|
|
209
|
+
'recipe.json',
|
|
210
|
+
'workflow.mmd',
|
|
211
|
+
'pr-description.md',
|
|
212
|
+
'latest-valid-recipe-run.json',
|
|
213
|
+
].map((file) => path.join(taskDir, 'artifacts', file))
|
|
214
|
+
: []),
|
|
215
|
+
];
|
|
216
|
+
if (protectedPaths.some((file) => {
|
|
217
|
+
const input = destination && existsSync(file) ? statSync(file, { bigint: true }) : undefined;
|
|
218
|
+
return (out === path.resolve(file) ||
|
|
219
|
+
(input && destination && input.dev === destination.dev && input.ino === destination.ino) ||
|
|
220
|
+
isPathWithin(file, parent) ||
|
|
221
|
+
isPathWithin(file, out));
|
|
222
|
+
}))
|
|
223
|
+
throw new Error('--out must not overwrite authored inputs or retained recipe evidence.');
|
|
224
|
+
await writeContainedArtifact(path.dirname(out), path.basename(out), body, 'Markdown output');
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Select, validate and render a task's or artifact package's Markdown, writing it only to a
|
|
228
|
+
* safe `out`. `result` is the `recipe artifacts --json` document; `body` is the Markdown.
|
|
229
|
+
*/
|
|
230
|
+
export async function renderRetainedArtifactsMarkdown(input) {
|
|
231
|
+
const taskDir = input.directory ? path.resolve(input.directory) : undefined;
|
|
232
|
+
const selection = taskDir && !existsSync(path.join(taskDir, 'artifact-manifest.json'))
|
|
233
|
+
? readRecipeAttemptSelection(taskDir)
|
|
234
|
+
: null;
|
|
235
|
+
const selectedDir = taskDir && selection
|
|
236
|
+
? path.join(taskDir, 'artifacts', selection.relativeArtifactRoot)
|
|
237
|
+
: undefined;
|
|
238
|
+
if (taskDir && selectedDir && !isPathWithin(path.join(taskDir, 'artifacts'), selectedDir))
|
|
239
|
+
throw new Error('Selected recipe attempt is missing or resolves outside its root.');
|
|
240
|
+
const candidates = taskDir ? [taskDir] : (input.candidates ?? []);
|
|
241
|
+
const packages = selectedDir
|
|
242
|
+
? [selectedDir]
|
|
243
|
+
: candidates
|
|
244
|
+
.flatMap((candidate) => [
|
|
245
|
+
candidate,
|
|
246
|
+
path.join(candidate, 'artifacts'),
|
|
247
|
+
path.join(candidate, 'artifacts/recipe'),
|
|
248
|
+
])
|
|
249
|
+
.filter((candidate) => existsSync(path.join(candidate, 'artifact-manifest.json')));
|
|
250
|
+
const distinct = [...new Set(packages)];
|
|
251
|
+
const authoredTask = taskDir &&
|
|
252
|
+
input.format !== 'text' &&
|
|
253
|
+
!existsSync(path.join(taskDir, 'artifact-manifest.json')) &&
|
|
254
|
+
existsSync(path.join(taskDir, 'artifacts'));
|
|
255
|
+
if (distinct.length > 1 || (distinct.length === 0 && (!authoredTask || input.validate)))
|
|
256
|
+
throw new Error(distinct.length
|
|
257
|
+
? `More than one artifact package matches; select a directory: ${distinct.join(', ')}`
|
|
258
|
+
: 'No retained artifact package found; pass its directory explicitly.');
|
|
259
|
+
const artifactDir = distinct[0];
|
|
260
|
+
const summary = artifactDir
|
|
261
|
+
? await readRecipeCliJsonFileWithinRoot(artifactDir, 'summary.json')
|
|
262
|
+
: undefined;
|
|
263
|
+
const manifest = artifactDir
|
|
264
|
+
? await readRecipeCliJsonFileWithinRoot(artifactDir, 'artifact-manifest.json')
|
|
265
|
+
: undefined;
|
|
266
|
+
const artifactPaths = artifactManifestPaths(manifest);
|
|
267
|
+
const retained = artifactDir && (input.validate || authoredTask || input.out)
|
|
268
|
+
? await readRecordedEvidencePackage(artifactDir)
|
|
269
|
+
: undefined;
|
|
270
|
+
const checked = artifactDir && retained && (input.validate || authoredTask)
|
|
271
|
+
? await validateRecipeArtifactRead(artifactDir, { requireRunnerProvenance: true }, retained)
|
|
272
|
+
: undefined;
|
|
273
|
+
if (authoredTask && checked?.status === 'fail')
|
|
274
|
+
throw new Error('Artifact validation failed; Markdown was not rendered or written.');
|
|
275
|
+
const validation = input.validate ? checked : undefined;
|
|
276
|
+
const markdown = authoredTask
|
|
277
|
+
? await renderTaskArtifactsMarkdown({ taskDir, artifactDir, command: input.command })
|
|
278
|
+
: undefined;
|
|
279
|
+
const body = markdown?.body ?? (artifactDir ? evidenceMarkdown(artifactDir, summary, artifactPaths) : '');
|
|
280
|
+
const out = input.out ? path.resolve(input.out) : undefined;
|
|
281
|
+
if (out) {
|
|
282
|
+
if (validation?.status === 'fail' || retained?.checks.some((check) => check.status === 'fail'))
|
|
283
|
+
throw new Error('Artifact validation failed; Markdown was not written.');
|
|
284
|
+
await writeArtifactsMarkdown(out, body, authoredTask ? taskDir : undefined, artifactDir, retained?.input.artifactPaths ?? []);
|
|
285
|
+
}
|
|
286
|
+
return {
|
|
287
|
+
result: {
|
|
288
|
+
artifactDir,
|
|
289
|
+
summary,
|
|
290
|
+
manifest,
|
|
291
|
+
...(validation ? { validation } : {}),
|
|
292
|
+
...(markdown ? { ...markdown, ...(out ? { body: undefined } : {}) } : {}),
|
|
293
|
+
...(out ? { out } : {}),
|
|
294
|
+
},
|
|
295
|
+
body,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
174
298
|
//# sourceMappingURL=artifacts-markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-markdown.js","sourceRoot":"","sources":["../../../src/harness/commands/artifacts-markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifacts-markdown.js","sourceRoot":"","sources":["../../../src/harness/commands/artifacts-markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -484,7 +484,7 @@ function emitExpectLiveVerdict(adapter, target, runtime, verdict, recorder) {
|
|
|
484
484
|
for (const reason of runtime?.reasons ?? [])
|
|
485
485
|
console.error(` ${out('dim', reason)}`);
|
|
486
486
|
if (recorder?.status === 'fail') {
|
|
487
|
-
console.error(` ${out('err', 'recorder:')} ${recorder.message}`);
|
|
487
|
+
console.error(` ${out('err', 'recorder:')} ${recorder.message}${recorder.detail ? ` ${out('dim', recorder.detail)}` : ''}`);
|
|
488
488
|
if (recorder.userAction)
|
|
489
489
|
console.error(` Next: ${recorder.userAction}`);
|
|
490
490
|
return;
|