@farmslot/recipe-harness 0.1.0 → 0.2.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/LICENSE +21 -0
- package/README.md +35 -12
- package/bin/farmslot-recipe.mjs +1 -1
- package/dist/adapters/core.d.ts +1 -1
- package/dist/adapters/core.d.ts.map +1 -1
- package/dist/adapters/core.js +1 -1
- package/dist/adapters/core.js.map +1 -1
- package/dist/adapters/ui.d.ts +1 -1
- package/dist/adapters/ui.d.ts.map +1 -1
- package/dist/{cli.d.ts → cli/index.d.ts} +1 -1
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/{cli.js → cli/index.js} +3 -3
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/run-command.d.ts.map +1 -1
- package/dist/cli/run-command.js +30 -2
- package/dist/cli/run-command.js.map +1 -1
- package/dist/cli/support.d.ts +23 -0
- package/dist/cli/support.d.ts.map +1 -0
- package/dist/{cli-support.js → cli/support.js} +27 -3
- package/dist/cli/support.js.map +1 -0
- package/dist/cli/validate-command.js +2 -2
- package/dist/cli/validate-command.js.map +1 -1
- package/dist/core/flows.d.ts +34 -0
- package/dist/core/flows.d.ts.map +1 -0
- package/dist/core/flows.js +325 -0
- package/dist/core/flows.js.map +1 -0
- package/dist/core/graph.d.ts +12 -0
- package/dist/core/graph.d.ts.map +1 -0
- package/dist/core/graph.js +116 -0
- package/dist/core/graph.js.map +1 -0
- package/dist/core/hud.d.ts +11 -0
- package/dist/core/hud.d.ts.map +1 -0
- package/dist/core/hud.js +124 -0
- package/dist/core/hud.js.map +1 -0
- package/dist/core/json.d.ts.map +1 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/predicates.d.ts +7 -0
- package/dist/core/predicates.d.ts.map +1 -0
- package/dist/core/predicates.js +102 -0
- package/dist/core/predicates.js.map +1 -0
- package/dist/core/recording-cleanup.d.ts +9 -0
- package/dist/core/recording-cleanup.d.ts.map +1 -0
- package/dist/core/recording-cleanup.js +24 -0
- package/dist/core/recording-cleanup.js.map +1 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +691 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/trace.d.ts +5 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +25 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/{types.d.ts → core/types.d.ts} +65 -2
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validation.d.ts +4 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +18 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/index.d.ts +4 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -7
- package/dist/index.js.map +1 -1
- package/dist/{writers.d.ts → node/writers.d.ts} +1 -1
- package/dist/node/writers.d.ts.map +1 -0
- package/dist/{writers.js → node/writers.js} +1 -1
- package/dist/node/writers.js.map +1 -0
- package/dist/recording/capture-helper.d.ts +10 -0
- package/dist/recording/capture-helper.d.ts.map +1 -0
- package/dist/recording/capture-helper.js +194 -0
- package/dist/recording/capture-helper.js.map +1 -0
- package/dist/runtime/cdp.d.ts +2 -1
- package/dist/runtime/cdp.d.ts.map +1 -1
- package/dist/runtime/cdp.js +64 -11
- package/dist/runtime/cdp.js.map +1 -1
- package/dist/runtime/react-native-bridge.d.ts +1 -1
- package/dist/runtime/react-native-bridge.d.ts.map +1 -1
- package/package.json +58 -16
- package/CHANGELOG.md +0 -7
- package/dist/cli-support.d.ts +0 -14
- package/dist/cli-support.d.ts.map +0 -1
- package/dist/cli-support.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/json.d.ts.map +0 -1
- package/dist/json.js.map +0 -1
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -1172
- package/dist/runner.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/writers.d.ts.map +0 -1
- package/dist/writers.js.map +0 -1
- /package/dist/{json.d.ts → core/json.d.ts} +0 -0
- /package/dist/{json.js → core/json.js} +0 -0
- /package/dist/{runner.d.ts → core/runner.d.ts} +0 -0
- /package/dist/{types.js → core/types.js} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function evaluateNodeGate(node: Record<string, unknown>, outputs: ReadonlyMap<string, unknown>): {
|
|
2
|
+
run: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function evaluatePredicate(root: unknown, predicate: unknown): boolean;
|
|
6
|
+
export declare function getPathValue(root: unknown, dottedPath: string): unknown;
|
|
7
|
+
//# sourceMappingURL=predicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.d.ts","sourceRoot":"","sources":["../../src/core/predicates.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASnC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAmD5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CASvE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
2
|
+
import { isRecord } from './json.js';
|
|
3
|
+
export function evaluateNodeGate(node, outputs) {
|
|
4
|
+
const root = Object.fromEntries(outputs);
|
|
5
|
+
if (node.when != null && !evaluatePredicate(root, node.when)) {
|
|
6
|
+
return { run: false, reason: 'when predicate was false' };
|
|
7
|
+
}
|
|
8
|
+
if (node.unless != null && evaluatePredicate(root, node.unless)) {
|
|
9
|
+
return { run: false, reason: 'unless predicate was true' };
|
|
10
|
+
}
|
|
11
|
+
return { run: true };
|
|
12
|
+
}
|
|
13
|
+
export function evaluatePredicate(root, predicate) {
|
|
14
|
+
if (!isRecord(predicate))
|
|
15
|
+
throw new Error('Predicate must be an assertion object.');
|
|
16
|
+
if (Array.isArray(predicate.all))
|
|
17
|
+
return predicate.all.every((entry) => evaluatePredicate(root, entry));
|
|
18
|
+
if (Array.isArray(predicate.any))
|
|
19
|
+
return predicate.any.some((entry) => evaluatePredicate(root, entry));
|
|
20
|
+
if (Array.isArray(predicate.none))
|
|
21
|
+
return !predicate.none.some((entry) => evaluatePredicate(root, entry));
|
|
22
|
+
const pathValue = typeof predicate.path === 'string' ? predicate.path : '$';
|
|
23
|
+
const actual = pathValue === '$' ? root : getPathValue(root, pathValue.replace(/^\$\./, ''));
|
|
24
|
+
const operator = typeof predicate.operator === 'string' ? predicate.operator : 'truthy';
|
|
25
|
+
const expected = predicate.value;
|
|
26
|
+
switch (operator) {
|
|
27
|
+
case 'exists':
|
|
28
|
+
return actual !== undefined;
|
|
29
|
+
case 'not_null':
|
|
30
|
+
return actual != null;
|
|
31
|
+
case 'truthy':
|
|
32
|
+
return Boolean(actual);
|
|
33
|
+
case 'falsy':
|
|
34
|
+
return !actual;
|
|
35
|
+
case 'eq':
|
|
36
|
+
return actual === expected;
|
|
37
|
+
case 'ne':
|
|
38
|
+
case 'neq':
|
|
39
|
+
return actual !== expected;
|
|
40
|
+
case 'deep_eq':
|
|
41
|
+
return isDeepStrictEqual(actual, expected);
|
|
42
|
+
case 'contains':
|
|
43
|
+
return containsValue(actual, expected);
|
|
44
|
+
case 'not_contains':
|
|
45
|
+
return !containsValue(actual, expected);
|
|
46
|
+
case 'matches':
|
|
47
|
+
return typeof expected === 'string' && new RegExp(expected).test(String(actual ?? ''));
|
|
48
|
+
case 'one_of':
|
|
49
|
+
return Array.isArray(expected) && expected.some((entry) => isDeepStrictEqual(entry, actual));
|
|
50
|
+
case 'gt':
|
|
51
|
+
case 'gte':
|
|
52
|
+
case 'lt':
|
|
53
|
+
case 'lte':
|
|
54
|
+
return compareNumbers(actual, expected, operator);
|
|
55
|
+
case 'length_eq':
|
|
56
|
+
case 'length_gt':
|
|
57
|
+
case 'length_gte':
|
|
58
|
+
case 'length_lt':
|
|
59
|
+
case 'length_lte':
|
|
60
|
+
return compareNumbers(lengthOf(actual), expected, operator.replace('length_', ''));
|
|
61
|
+
default:
|
|
62
|
+
throw new Error(`Unsupported predicate operator ${operator}.`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function getPathValue(root, dottedPath) {
|
|
66
|
+
return dottedPath
|
|
67
|
+
.split('.')
|
|
68
|
+
.filter(Boolean)
|
|
69
|
+
.reduce((current, segment) => {
|
|
70
|
+
if (!isRecord(current) && !Array.isArray(current))
|
|
71
|
+
return undefined;
|
|
72
|
+
if (Array.isArray(current))
|
|
73
|
+
return current[Number(segment)];
|
|
74
|
+
return current[segment];
|
|
75
|
+
}, root);
|
|
76
|
+
}
|
|
77
|
+
function containsValue(actual, expected) {
|
|
78
|
+
if (typeof actual === 'string')
|
|
79
|
+
return actual.includes(String(expected));
|
|
80
|
+
if (Array.isArray(actual))
|
|
81
|
+
return actual.some((entry) => isDeepStrictEqual(entry, expected));
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
function lengthOf(actual) {
|
|
85
|
+
if (typeof actual === 'string' || Array.isArray(actual))
|
|
86
|
+
return actual.length;
|
|
87
|
+
if (isRecord(actual))
|
|
88
|
+
return Object.keys(actual).length;
|
|
89
|
+
return Number.NaN;
|
|
90
|
+
}
|
|
91
|
+
function compareNumbers(actual, expected, operator) {
|
|
92
|
+
if (typeof actual !== 'number' || typeof expected !== 'number')
|
|
93
|
+
return false;
|
|
94
|
+
if (operator === 'gt')
|
|
95
|
+
return actual > expected;
|
|
96
|
+
if (operator === 'gte')
|
|
97
|
+
return actual >= expected;
|
|
98
|
+
if (operator === 'lt')
|
|
99
|
+
return actual < expected;
|
|
100
|
+
return actual <= expected;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=predicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.js","sourceRoot":"","sources":["../../src/core/predicates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ActiveVideoRecording, RecipeLogger } from './types.js';
|
|
2
|
+
interface AbortedRunVideoRecording {
|
|
3
|
+
recording: ActiveVideoRecording;
|
|
4
|
+
outputPath: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function cleanupAbortedRunVideoRecording(runRecording: AbortedRunVideoRecording, logger: RecipeLogger): Promise<void>;
|
|
7
|
+
export declare function removePartialRunVideoOutput(outputPath: string, logger: RecipeLogger): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=recording-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-cleanup.d.ts","sourceRoot":"","sources":["../../src/core/recording-cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErE,UAAU,wBAAwB;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,wBAAwB,EACtC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { rm } from 'node:fs/promises';
|
|
2
|
+
function cleanupErrorMessage(error) {
|
|
3
|
+
return error instanceof Error ? error.message : String(error);
|
|
4
|
+
}
|
|
5
|
+
export async function cleanupAbortedRunVideoRecording(runRecording, logger) {
|
|
6
|
+
try {
|
|
7
|
+
await runRecording.recording.stop();
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
// Preserve the original run error while still surfacing cleanup failure evidence.
|
|
11
|
+
logger.error(`record.video cleanup failed after run abort: ${cleanupErrorMessage(error)}`);
|
|
12
|
+
}
|
|
13
|
+
await removePartialRunVideoOutput(runRecording.outputPath, logger);
|
|
14
|
+
}
|
|
15
|
+
export async function removePartialRunVideoOutput(outputPath, logger) {
|
|
16
|
+
try {
|
|
17
|
+
await rm(outputPath, { force: true });
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
// Preserve the original run error while still surfacing cleanup failure evidence.
|
|
21
|
+
logger.error(`record.video cleanup could not remove partial video: ${cleanupErrorMessage(error)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=recording-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-cleanup.js","sourceRoot":"","sources":["../../src/core/recording-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAStC,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,YAAsC,EACtC,MAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kFAAkF;QAClF,MAAM,CAAC,KAAK,CAAC,gDAAgD,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,2BAA2B,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB,EAClB,MAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kFAAkF;QAClF,MAAM,CAAC,KAAK,CACV,wDAAwD,mBAAmB,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACV,aAAa,EAEb,yBAAyB,EAKzB,YAAY,EAOb,MAAM,YAAY,CAAC;AAapB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CA+CnF"}
|