@farmslot/recipe-harness 0.7.0 → 0.9.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 +17 -0
- package/README.md +83 -182
- package/dist/adapters/app-lifecycle.d.ts.map +1 -1
- package/dist/adapters/app-lifecycle.js +5 -0
- package/dist/adapters/app-lifecycle.js.map +1 -1
- package/dist/adapters/core.d.ts.map +1 -1
- package/dist/adapters/core.js +25 -46
- package/dist/adapters/core.js.map +1 -1
- package/dist/adapters/ui.d.ts +0 -2
- package/dist/adapters/ui.d.ts.map +1 -1
- package/dist/adapters/ui.js +5 -2
- package/dist/adapters/ui.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +0 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-command.d.ts.map +1 -1
- package/dist/cli/run-command.js +197 -32
- package/dist/cli/run-command.js.map +1 -1
- package/dist/cli/support.d.ts +5 -2
- package/dist/cli/support.d.ts.map +1 -1
- package/dist/cli/support.js +131 -25
- package/dist/cli/support.js.map +1 -1
- package/dist/cli/validate-command.d.ts.map +1 -1
- package/dist/cli/validate-command.js +4 -1
- package/dist/cli/validate-command.js.map +1 -1
- package/dist/core/compose.d.ts +21 -31
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +93 -125
- package/dist/core/compose.js.map +1 -1
- package/dist/core/execution.d.ts +40 -0
- package/dist/core/execution.d.ts.map +1 -0
- package/dist/core/execution.js +263 -0
- package/dist/core/execution.js.map +1 -0
- package/dist/core/graph.d.ts +4 -5
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +51 -103
- package/dist/core/graph.js.map +1 -1
- package/dist/core/hud.d.ts.map +1 -1
- package/dist/core/hud.js +2 -6
- package/dist/core/hud.js.map +1 -1
- package/dist/core/library.d.ts +17 -51
- package/dist/core/library.d.ts.map +1 -1
- package/dist/core/library.js +144 -155
- package/dist/core/library.js.map +1 -1
- package/dist/core/parameters.d.ts +5 -0
- package/dist/core/parameters.d.ts.map +1 -0
- package/dist/core/parameters.js +57 -0
- package/dist/core/parameters.js.map +1 -0
- package/dist/core/passive-observations.d.ts +2 -5
- package/dist/core/passive-observations.d.ts.map +1 -1
- package/dist/core/passive-observations.js +6 -40
- package/dist/core/passive-observations.js.map +1 -1
- package/dist/core/path.d.ts +6 -0
- package/dist/core/path.d.ts.map +1 -0
- package/dist/core/path.js +126 -0
- package/dist/core/path.js.map +1 -0
- package/dist/core/recording-cleanup.d.ts +1 -0
- package/dist/core/recording-cleanup.d.ts.map +1 -1
- package/dist/core/recording-cleanup.js +8 -0
- package/dist/core/recording-cleanup.js.map +1 -1
- package/dist/core/resolution-error.d.ts +7 -0
- package/dist/core/resolution-error.d.ts.map +1 -0
- package/dist/core/resolution-error.js +9 -0
- package/dist/core/resolution-error.js.map +1 -0
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +178 -373
- package/dist/core/runner.js.map +1 -1
- package/dist/core/trace.d.ts +3 -4
- package/dist/core/trace.d.ts.map +1 -1
- package/dist/core/trace.js +3 -4
- package/dist/core/trace.js.map +1 -1
- package/dist/core/trust-error.d.ts +9 -0
- package/dist/core/trust-error.d.ts.map +1 -0
- package/dist/core/trust-error.js +18 -0
- package/dist/core/trust-error.js.map +1 -0
- package/dist/core/trust-input.d.ts +20 -0
- package/dist/core/trust-input.d.ts.map +1 -0
- package/dist/core/trust-input.js +68 -0
- package/dist/core/trust-input.js.map +1 -0
- package/dist/core/trust.d.ts +20 -0
- package/dist/core/trust.d.ts.map +1 -0
- package/dist/core/trust.js +231 -0
- package/dist/core/trust.js.map +1 -0
- package/dist/core/types.d.ts +41 -47
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/node/writers.d.ts +3 -8
- package/dist/node/writers.d.ts.map +1 -1
- package/dist/node/writers.js +27 -26
- package/dist/node/writers.js.map +1 -1
- package/dist/recording/cdp-video-recorder.js +2 -3
- package/dist/recording/cdp-video-recorder.js.map +1 -1
- package/dist/runtime/cdp.d.ts.map +1 -1
- package/dist/runtime/cdp.js +3 -7
- package/dist/runtime/cdp.js.map +1 -1
- package/package.json +2 -2
- package/dist/cli/flows-command.d.ts +0 -3
- package/dist/cli/flows-command.d.ts.map +0 -1
- package/dist/cli/flows-command.js +0 -313
- package/dist/cli/flows-command.js.map +0 -1
- package/dist/core/flows.d.ts +0 -45
- package/dist/core/flows.d.ts.map +0 -1
- package/dist/core/flows.js +0 -359
- package/dist/core/flows.js.map +0 -1
- package/dist/core/predicates.d.ts +0 -7
- package/dist/core/predicates.d.ts.map +0 -1
- package/dist/core/predicates.js +0 -102
- package/dist/core/predicates.js.map +0 -1
- package/dist/core/promote.d.ts +0 -41
- package/dist/core/promote.d.ts.map +0 -1
- package/dist/core/promote.js +0 -249
- package/dist/core/promote.js.map +0 -1
package/dist/core/hud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hud.js","sourceRoot":"","sources":["../../src/core/hud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,MAAM,UAAU,YAAY,CAC1B,MAAmC,EACnC,KAQC,EACD,OAA6C;IAE7C,MAAM,KAAK,GACT,OAAO,IAAI,OAAO,CAAC,KAAK;QACtB,CAAC,CAAC,OAAO,CAAC,KAAK;QACf,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;YACpB,CAAC,CAAC,YAAY,CAAC;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,
|
|
1
|
+
{"version":3,"file":"hud.js","sourceRoot":"","sources":["../../src/core/hud.ts"],"names":[],"mappings":"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"}
|
package/dist/core/library.d.ts
CHANGED
|
@@ -1,72 +1,38 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type RecipeSourceProvenance } from '@farmslot/protocol';
|
|
2
2
|
import type { LoadedRecipeLibrarySource, RecipeLibrarySource, RecipeLogger } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Structural stand-in for `NodeJS.ProcessEnv` so the public API typechecks for
|
|
5
|
-
* consumers without `@types/node`.
|
|
6
|
-
*/
|
|
7
3
|
export type RecipeLibraryEnv = Record<string, string | undefined>;
|
|
8
|
-
export interface
|
|
4
|
+
export interface ResolvedLibraryRecipe {
|
|
9
5
|
ref: string;
|
|
10
|
-
|
|
11
|
-
raw: Record<string, unknown>;
|
|
6
|
+
document: Record<string, unknown>;
|
|
12
7
|
source: string;
|
|
13
|
-
/**
|
|
8
|
+
/** Recipe file path relative to the library root. */
|
|
14
9
|
file: string;
|
|
10
|
+
path: string;
|
|
11
|
+
adapter?: string;
|
|
12
|
+
provenance: RecipeSourceProvenance;
|
|
15
13
|
/** Source names that also declare this ref at lower precedence. */
|
|
16
14
|
shadows: string[];
|
|
17
|
-
lastVerified?: string;
|
|
18
15
|
}
|
|
19
16
|
export interface RecipeLibraryResolution {
|
|
20
17
|
sources: LoadedRecipeLibrarySource[];
|
|
21
|
-
|
|
18
|
+
recipes: ReadonlyMap<string, ResolvedLibraryRecipe>;
|
|
22
19
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Parse a `RECIPE_LIBRARY_PATH`-style value: ordered, colon-separated
|
|
25
|
-
* `name=path` or bare-path entries. Order is precedence (first wins).
|
|
26
|
-
*/
|
|
27
20
|
export declare function parseRecipeLibraryPath(value: string): RecipeLibrarySource[];
|
|
28
|
-
/**
|
|
29
|
-
* The personal library location: `<farmslot home>/recipe-library`
|
|
30
|
-
* (FARMSLOT_HOME env, default ~/.farmslot). The directory may not exist yet.
|
|
31
|
-
*/
|
|
32
21
|
export declare function personalRecipeLibraryRoot(env?: RecipeLibraryEnv): string;
|
|
33
|
-
/**
|
|
34
|
-
* Default sources when nothing is configured: the personal library when it
|
|
35
|
-
* exists.
|
|
36
|
-
*/
|
|
37
22
|
export declare function defaultRecipeLibrarySources(env?: RecipeLibraryEnv): Promise<RecipeLibrarySource[]>;
|
|
38
|
-
/**
|
|
39
|
-
* Resolve the ordered library sources for a run: explicit entries (CLI flags
|
|
40
|
-
* first, then RECIPE_LIBRARY_PATH) replace the defaults entirely so a run's
|
|
41
|
-
* precedence is always fully spelled out by whoever configured it.
|
|
42
|
-
*/
|
|
43
23
|
export declare function resolveRecipeLibrarySources(options?: {
|
|
44
24
|
cliEntries?: string[];
|
|
45
25
|
env?: RecipeLibraryEnv;
|
|
26
|
+
recipePath?: string;
|
|
46
27
|
}): Promise<RecipeLibrarySource[]>;
|
|
28
|
+
export declare function applyTaskLocalInvocationTrust(sources: readonly RecipeLibrarySource[], invocationTrust: RecipeSourceProvenance['trust']): RecipeLibrarySource[];
|
|
47
29
|
/**
|
|
48
|
-
* Load
|
|
49
|
-
*
|
|
50
|
-
* an error, matching recipe-local catalog behavior.
|
|
51
|
-
*/
|
|
52
|
-
export declare function loadRecipeLibraries(sources: readonly RecipeLibrarySource[], logger?: RecipeLogger): Promise<RecipeLibraryResolution>;
|
|
53
|
-
export interface EffectiveFlowCatalog {
|
|
54
|
-
catalog: ReadonlyMap<string, InlineFlow>;
|
|
55
|
-
/** Recipe-local declarations that overrode a library-provided ref. */
|
|
56
|
-
overrides: Array<{
|
|
57
|
-
ref: string;
|
|
58
|
-
source: string;
|
|
59
|
-
}>;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Merge recipe-local flows over library flows. Recipe-local declarations
|
|
63
|
-
* (inline `flows` and explicit `uses` catalogs) always win — the recipe author
|
|
64
|
-
* spelled them out — and any library refs they override are returned (and
|
|
65
|
-
* logged) so runs can report them even for programmatic consumers without a
|
|
66
|
-
* logger. Library flow lookups are recorded into `usedLibraryFlows` so runs
|
|
67
|
-
* can report exactly which library flows produced the proof.
|
|
30
|
+
* Load ordered library sources into one recipe index. The first source wins;
|
|
31
|
+
* within one source an exact adapter variant wins over the generic recipe.
|
|
68
32
|
*/
|
|
69
|
-
export declare function
|
|
70
|
-
|
|
71
|
-
|
|
33
|
+
export declare function loadRecipeLibraries(sources: readonly RecipeLibrarySource[], options?: {
|
|
34
|
+
adapter?: string;
|
|
35
|
+
logger?: RecipeLogger;
|
|
36
|
+
}): Promise<RecipeLibraryResolution>;
|
|
37
|
+
export declare function listRecipeFiles(root: string): Promise<string[]>;
|
|
72
38
|
//# sourceMappingURL=library.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,oBAAoB,CAAC;AAO5B,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/F,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,sBAAsB,CAAC;IACnC,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACrD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAe3E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,gBAA8B,GAAG,MAAM,CAErF;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,GAAE,gBAA8B,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAWhC;AAED,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA8BjC;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,eAAe,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAC/C,mBAAmB,EAAE,CASvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GACpD,OAAO,CAAC,uBAAuB,CAAC,CAkFlC;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBrE"}
|
package/dist/core/library.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { readdir, readFile } from 'node:fs/promises';
|
|
1
|
+
import { readdir, readFile, realpath } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { digestRecipeDocument, validateRecipeDocument, } from '@farmslot/protocol';
|
|
4
5
|
import { farmslotHome } from '@farmslot/protocol/node/farmslot-home';
|
|
5
|
-
import { readCatalogFlows } from './flows.js';
|
|
6
6
|
import { isRecord, readJsonFile } from './json.js';
|
|
7
|
+
import { isPathWithin } from './path.js';
|
|
8
|
+
import { RecipeResolutionError } from './resolution-error.js';
|
|
9
|
+
import { invalidRecipeSource } from './trust-error.js';
|
|
7
10
|
const LIBRARY_MANIFEST_FILE = 'library.json';
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
/**
|
|
12
|
-
* Parse a `RECIPE_LIBRARY_PATH`-style value: ordered, colon-separated
|
|
13
|
-
* `name=path` or bare-path entries. Order is precedence (first wins).
|
|
14
|
-
*/
|
|
11
|
+
const LIBRARY_RECIPES_DIR = 'recipes';
|
|
12
|
+
const RECIPE_FILE_SUFFIX = '.recipe.json';
|
|
13
|
+
const RECIPE_ADAPTER_SUFFIXES = new Set(['core', 'extension', 'mobile']);
|
|
15
14
|
export function parseRecipeLibraryPath(value) {
|
|
16
15
|
return value
|
|
17
16
|
.split(':')
|
|
@@ -29,154 +28,183 @@ export function parseRecipeLibraryPath(value) {
|
|
|
29
28
|
return { name, root: expandTilde(root) };
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
|
-
/**
|
|
33
|
-
* The personal library location: `<farmslot home>/recipe-library`
|
|
34
|
-
* (FARMSLOT_HOME env, default ~/.farmslot). The directory may not exist yet.
|
|
35
|
-
*/
|
|
36
31
|
export function personalRecipeLibraryRoot(env = process.env) {
|
|
37
32
|
return path.join(farmslotHome(env), 'recipe-library');
|
|
38
33
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Default sources when nothing is configured: the personal library when it
|
|
41
|
-
* exists.
|
|
42
|
-
*/
|
|
43
34
|
export async function defaultRecipeLibrarySources(env = process.env) {
|
|
44
35
|
const personalRoot = personalRecipeLibraryRoot(env);
|
|
45
36
|
try {
|
|
46
37
|
await readFile(path.join(personalRoot, LIBRARY_MANIFEST_FILE), 'utf-8');
|
|
47
38
|
}
|
|
48
|
-
catch {
|
|
49
|
-
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
throw error;
|
|
50
44
|
}
|
|
51
45
|
return [{ name: 'personal', root: personalRoot }];
|
|
52
46
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve the ordered library sources for a run: explicit entries (CLI flags
|
|
55
|
-
* first, then RECIPE_LIBRARY_PATH) replace the defaults entirely so a run's
|
|
56
|
-
* precedence is always fully spelled out by whoever configured it.
|
|
57
|
-
*/
|
|
58
47
|
export async function resolveRecipeLibrarySources(options) {
|
|
59
48
|
const env = options?.env ?? process.env;
|
|
60
49
|
const explicit = [
|
|
61
50
|
...(options?.cliEntries ?? []).flatMap((entry) => parseRecipeLibraryPath(entry)),
|
|
62
51
|
...(env.RECIPE_LIBRARY_PATH ? parseRecipeLibraryPath(env.RECIPE_LIBRARY_PATH) : []),
|
|
63
52
|
];
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
const configured = explicit.length > 0 ? explicit : await defaultRecipeLibrarySources(env);
|
|
54
|
+
if (!options?.recipePath)
|
|
55
|
+
return configured;
|
|
56
|
+
const recipeDir = path.dirname(path.resolve(options.recipePath));
|
|
57
|
+
const taskDir = path.basename(recipeDir) === 'resolved-recipes' ? path.dirname(recipeDir) : recipeDir;
|
|
58
|
+
const taskRoot = path.join(taskDir, 'recipe-library');
|
|
59
|
+
try {
|
|
60
|
+
await readFile(path.join(taskRoot, LIBRARY_MANIFEST_FILE), 'utf-8');
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
64
|
+
return configured;
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
if (configured.some((source) => path.resolve(source.root) === taskRoot))
|
|
69
|
+
return configured;
|
|
70
|
+
return [
|
|
71
|
+
{
|
|
72
|
+
name: 'task-local',
|
|
73
|
+
root: taskRoot,
|
|
74
|
+
provenance: { kind: 'task', trust: 'unknown', name: 'task-local' },
|
|
75
|
+
},
|
|
76
|
+
...configured,
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
export function applyTaskLocalInvocationTrust(sources, invocationTrust) {
|
|
80
|
+
return sources.map((source) => source.name === 'task-local'
|
|
81
|
+
? {
|
|
82
|
+
...source,
|
|
83
|
+
provenance: { ...source.provenance, kind: 'task', trust: invocationTrust },
|
|
84
|
+
}
|
|
85
|
+
: source);
|
|
67
86
|
}
|
|
68
87
|
/**
|
|
69
|
-
* Load
|
|
70
|
-
*
|
|
71
|
-
* an error, matching recipe-local catalog behavior.
|
|
88
|
+
* Load ordered library sources into one recipe index. The first source wins;
|
|
89
|
+
* within one source an exact adapter variant wins over the generic recipe.
|
|
72
90
|
*/
|
|
73
|
-
export async function loadRecipeLibraries(sources,
|
|
91
|
+
export async function loadRecipeLibraries(sources, options) {
|
|
74
92
|
const loadedSources = [];
|
|
75
|
-
const
|
|
93
|
+
const recipes = new Map();
|
|
76
94
|
const seenNames = new Set();
|
|
77
95
|
for (const source of sources) {
|
|
78
96
|
const root = path.resolve(expandTilde(source.root));
|
|
97
|
+
const rootReal = await realpath(root);
|
|
79
98
|
const manifest = await readLibraryManifest(root);
|
|
80
99
|
const name = source.name ?? manifest.name ?? path.basename(root);
|
|
100
|
+
const sourceProvenance = source.provenance ?? {
|
|
101
|
+
kind: 'library',
|
|
102
|
+
trust: 'unknown',
|
|
103
|
+
name,
|
|
104
|
+
path: root,
|
|
105
|
+
};
|
|
81
106
|
if (seenNames.has(name)) {
|
|
82
|
-
throw new
|
|
107
|
+
throw new RecipeResolutionError('RECIPE_LIBRARY_DUPLICATE_SOURCE', `Recipe library source ${name} is configured more than once.`, `remove one ${name} library source from the configured search path`);
|
|
83
108
|
}
|
|
84
109
|
seenNames.add(name);
|
|
85
|
-
const
|
|
86
|
-
for (const
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
sourceFlows.set(entry.ref, {
|
|
95
|
-
ref: entry.ref,
|
|
96
|
-
flow: entry.flow,
|
|
97
|
-
raw: entry.raw,
|
|
98
|
-
source: name,
|
|
99
|
-
file: path.join(LIBRARY_FLOWS_DIR, file),
|
|
100
|
-
shadows: [],
|
|
101
|
-
...(lastVerifiedDate(entry.raw) ? { lastVerified: lastVerifiedDate(entry.raw) } : {}),
|
|
102
|
-
});
|
|
110
|
+
const selected = new Map();
|
|
111
|
+
for (const relativeFile of await listRecipeFiles(root)) {
|
|
112
|
+
const identity = recipeIdentity(relativeFile, options?.adapter);
|
|
113
|
+
if (!identity)
|
|
114
|
+
continue;
|
|
115
|
+
const absolutePath = path.join(root, LIBRARY_RECIPES_DIR, relativeFile);
|
|
116
|
+
const fileReal = await realpath(absolutePath);
|
|
117
|
+
if (!isPathWithin(rootReal, fileReal)) {
|
|
118
|
+
throw invalidRecipeSource(`Library recipe ${path.join(LIBRARY_RECIPES_DIR, relativeFile)} resolves outside its library root.`, 'move the recipe inside the library root or remove the escaping symlink');
|
|
103
119
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
if (
|
|
109
|
-
|
|
120
|
+
const document = await readJsonFile(fileReal);
|
|
121
|
+
if (!isRecord(document))
|
|
122
|
+
throw new Error(`${fileReal} must contain a recipe object.`);
|
|
123
|
+
const validation = validateRecipeDocument(document, { skipRecipeCallResolution: true });
|
|
124
|
+
if (validation.status === 'invalid') {
|
|
125
|
+
throw new RecipeResolutionError('RECIPE_LIBRARY_RECIPE_INVALID', `Library recipe ${fileReal} is invalid: ${validation.findings
|
|
126
|
+
.map((finding) => `${finding.code} ${finding.path}`)
|
|
127
|
+
.join(', ')}.`, `fix ${fileReal} so it validates as Recipe v1`);
|
|
110
128
|
}
|
|
111
|
-
|
|
112
|
-
|
|
129
|
+
const previous = selected.get(identity.ref);
|
|
130
|
+
if (previous && previous.adapter === identity.adapter) {
|
|
131
|
+
throw new RecipeResolutionError('RECIPE_LIBRARY_DUPLICATE_RECIPE', `Recipe ${identity.ref} is declared more than once in library ${name}.`, `keep one ${identity.ref} recipe per adapter in library ${name}`);
|
|
113
132
|
}
|
|
133
|
+
if (previous && previous.adapter && !identity.adapter)
|
|
134
|
+
continue;
|
|
135
|
+
const digest = digestRecipeDocument(document);
|
|
136
|
+
selected.set(identity.ref, {
|
|
137
|
+
ref: identity.ref,
|
|
138
|
+
document,
|
|
139
|
+
source: name,
|
|
140
|
+
file: path.join(LIBRARY_RECIPES_DIR, relativeFile).split(path.sep).join('/'),
|
|
141
|
+
path: fileReal,
|
|
142
|
+
...(identity.adapter ? { adapter: identity.adapter } : {}),
|
|
143
|
+
provenance: { ...sourceProvenance, path: fileReal, digest },
|
|
144
|
+
shadows: [],
|
|
145
|
+
});
|
|
114
146
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
* (inline `flows` and explicit `uses` catalogs) always win — the recipe author
|
|
123
|
-
* spelled them out — and any library refs they override are returned (and
|
|
124
|
-
* logged) so runs can report them even for programmatic consumers without a
|
|
125
|
-
* logger. Library flow lookups are recorded into `usedLibraryFlows` so runs
|
|
126
|
-
* can report exactly which library flows produced the proof.
|
|
127
|
-
*/
|
|
128
|
-
export function createEffectiveFlowCatalog(recipeFlows, resolution, usedLibraryFlows, logger) {
|
|
129
|
-
if (!resolution || resolution.flows.size === 0) {
|
|
130
|
-
return { catalog: recipeFlows, overrides: [] };
|
|
131
|
-
}
|
|
132
|
-
const fromLibrary = new Map();
|
|
133
|
-
const merged = new TrackingFlowCatalog(fromLibrary, usedLibraryFlows);
|
|
134
|
-
const overrides = [];
|
|
135
|
-
for (const [ref, resolved] of resolution.flows) {
|
|
136
|
-
merged.set(ref, resolved.flow);
|
|
137
|
-
fromLibrary.set(ref, resolved);
|
|
138
|
-
}
|
|
139
|
-
for (const [ref, flow] of recipeFlows) {
|
|
140
|
-
const overridden = fromLibrary.get(ref);
|
|
141
|
-
if (overridden) {
|
|
142
|
-
fromLibrary.delete(ref);
|
|
143
|
-
overrides.push({ ref, source: overridden.source });
|
|
144
|
-
logger?.warn(`Flow ${ref} is declared by the recipe and overrides the ${overridden.source} library declaration.`);
|
|
147
|
+
loadedSources.push({ name, root, recipeCount: selected.size, provenance: sourceProvenance });
|
|
148
|
+
for (const [ref, resolved] of selected) {
|
|
149
|
+
const winner = recipes.get(ref);
|
|
150
|
+
if (winner)
|
|
151
|
+
winner.shadows.push(name);
|
|
152
|
+
else
|
|
153
|
+
recipes.set(ref, resolved);
|
|
145
154
|
}
|
|
146
|
-
merged.set(ref, flow);
|
|
147
155
|
}
|
|
148
|
-
|
|
156
|
+
const resolution = { sources: loadedSources, recipes };
|
|
157
|
+
if (options?.logger)
|
|
158
|
+
logResolution(options.logger, resolution);
|
|
159
|
+
return resolution;
|
|
149
160
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
export async function listRecipeFiles(root) {
|
|
162
|
+
const recipesRoot = path.join(root, LIBRARY_RECIPES_DIR);
|
|
163
|
+
const files = [];
|
|
164
|
+
async function visit(relativeDir) {
|
|
165
|
+
let entries;
|
|
166
|
+
try {
|
|
167
|
+
entries = await readdir(path.join(recipesRoot, relativeDir), { withFileTypes: true });
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (error?.code === 'ENOENT' && relativeDir === '')
|
|
171
|
+
return;
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
for (const entry of entries) {
|
|
175
|
+
const relativePath = path.join(relativeDir, entry.name);
|
|
176
|
+
if (entry.isDirectory())
|
|
177
|
+
await visit(relativePath);
|
|
178
|
+
else if ((entry.isFile() || entry.isSymbolicLink()) &&
|
|
179
|
+
entry.name.endsWith(RECIPE_FILE_SUFFIX)) {
|
|
180
|
+
files.push(relativePath);
|
|
181
|
+
}
|
|
164
182
|
}
|
|
165
|
-
return flow;
|
|
166
183
|
}
|
|
184
|
+
await visit('');
|
|
185
|
+
return files.sort();
|
|
186
|
+
}
|
|
187
|
+
function recipeIdentity(relativeFile, adapter) {
|
|
188
|
+
const portable = relativeFile.split(path.sep).join('/');
|
|
189
|
+
if (!portable.endsWith(RECIPE_FILE_SUFFIX))
|
|
190
|
+
return undefined;
|
|
191
|
+
const base = portable.slice(0, -RECIPE_FILE_SUFFIX.length);
|
|
192
|
+
const suffix = base.slice(base.lastIndexOf('.') + 1);
|
|
193
|
+
const declaredAdapter = RECIPE_ADAPTER_SUFFIXES.has(suffix) ? suffix : undefined;
|
|
194
|
+
if (declaredAdapter && declaredAdapter !== adapter)
|
|
195
|
+
return undefined;
|
|
196
|
+
const idPath = declaredAdapter ? base.slice(0, -(declaredAdapter.length + 1)) : base;
|
|
197
|
+
const ref = idPath.replaceAll('/', '.').trim();
|
|
198
|
+
return ref ? { ref, ...(declaredAdapter ? { adapter: declaredAdapter } : {}) } : undefined;
|
|
167
199
|
}
|
|
168
200
|
function logResolution(logger, resolution) {
|
|
169
201
|
const summary = resolution.sources
|
|
170
|
-
.map((source) => `${source.name}=${source.root} (${source.
|
|
202
|
+
.map((source) => `${source.name}=${source.root} (${source.recipeCount} recipes)`)
|
|
171
203
|
.join(', ');
|
|
172
204
|
logger.info(`Recipe libraries: ${summary || 'none'}`);
|
|
173
|
-
for (const
|
|
174
|
-
if (
|
|
175
|
-
logger.warn(`
|
|
176
|
-
}
|
|
177
|
-
const staleDays = daysSince(flow.lastVerified);
|
|
178
|
-
if (staleDays != null && staleDays > LAST_VERIFIED_WARN_AFTER_DAYS) {
|
|
179
|
-
logger.warn(`Flow ${flow.ref} (${flow.source}) was last verified ${staleDays} days ago; re-verify before trusting it as proof setup.`);
|
|
205
|
+
for (const recipe of resolution.recipes.values()) {
|
|
206
|
+
if (recipe.shadows.length > 0) {
|
|
207
|
+
logger.warn(`Recipe ${recipe.ref} resolves from ${recipe.source} and shadows ${recipe.shadows.join(', ')}.`);
|
|
180
208
|
}
|
|
181
209
|
}
|
|
182
210
|
}
|
|
@@ -195,46 +223,7 @@ async function readLibraryManifest(root) {
|
|
|
195
223
|
}
|
|
196
224
|
return { ...(typeof manifest.name === 'string' && manifest.name ? { name: manifest.name } : {}) };
|
|
197
225
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
let entries;
|
|
201
|
-
try {
|
|
202
|
-
entries = await readdir(path.join(root, LIBRARY_FLOWS_DIR), { withFileTypes: true });
|
|
203
|
-
}
|
|
204
|
-
catch (error) {
|
|
205
|
-
if (error?.code === 'ENOENT')
|
|
206
|
-
return [];
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
return entries
|
|
210
|
-
.filter((entry) => (entry.isFile() || entry.isSymbolicLink()) &&
|
|
211
|
-
entry.name.endsWith(LIBRARY_FLOW_CATALOG_SUFFIX))
|
|
212
|
-
.map((entry) => entry.name)
|
|
213
|
-
.sort();
|
|
214
|
-
}
|
|
215
|
-
function assertFlowCatalogKind(catalog, catalogPath) {
|
|
216
|
-
if (!isRecord(catalog) || catalog.kind !== 'recipe-flow-catalog') {
|
|
217
|
-
throw new Error(`${catalogPath} must declare kind "recipe-flow-catalog".`);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
function lastVerifiedDate(raw) {
|
|
221
|
-
const provenance = raw.provenance;
|
|
222
|
-
if (!isRecord(provenance))
|
|
223
|
-
return undefined;
|
|
224
|
-
const lastVerified = provenance.lastVerified;
|
|
225
|
-
if (isRecord(lastVerified) && typeof lastVerified.date === 'string')
|
|
226
|
-
return lastVerified.date;
|
|
227
|
-
return undefined;
|
|
228
|
-
}
|
|
229
|
-
function daysSince(date) {
|
|
230
|
-
if (!date)
|
|
231
|
-
return undefined;
|
|
232
|
-
const timestamp = Date.parse(date);
|
|
233
|
-
if (Number.isNaN(timestamp))
|
|
234
|
-
return undefined;
|
|
235
|
-
return Math.floor((Date.now() - timestamp) / (24 * 60 * 60 * 1000));
|
|
236
|
-
}
|
|
237
|
-
function expandTilde(p) {
|
|
238
|
-
return p === '~' || p.startsWith('~/') ? path.join(homedir(), p.slice(1)) : p;
|
|
226
|
+
function expandTilde(value) {
|
|
227
|
+
return value === '~' || value.startsWith('~/') ? path.join(homedir(), value.slice(1)) : value;
|
|
239
228
|
}
|
|
240
229
|
//# sourceMappingURL=library.js.map
|
package/dist/core/library.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function resolveRecipeParams(ref: string, recipe: Record<string, unknown>, input: Record<string, unknown>, options?: {
|
|
2
|
+
allowTemplates?: boolean;
|
|
3
|
+
}): Record<string, unknown>;
|
|
4
|
+
export declare function resolveRecipeValue(value: unknown, params: Record<string, unknown>, outputs?: ReadonlyMap<string, unknown>): unknown;
|
|
5
|
+
//# sourceMappingURL=parameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/core/parameters.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAoBT"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { applyRecipeParamDefaults, validateRecipeParams } from '@farmslot/protocol';
|
|
2
|
+
import { isRecord } from './json.js';
|
|
3
|
+
import { RecipeResolutionError } from './resolution-error.js';
|
|
4
|
+
export function resolveRecipeParams(ref, recipe, input, options) {
|
|
5
|
+
const params = applyRecipeParamDefaults(input, recipe.paramsSchema);
|
|
6
|
+
const validation = validateRecipeParams(params, recipe.paramsSchema, options);
|
|
7
|
+
if (validation.status === 'invalid') {
|
|
8
|
+
throw new RecipeResolutionError('RECIPE_PARAMS_INVALID', `Recipe ${ref} parameters are invalid: ${validation.findings
|
|
9
|
+
.map((finding) => `${finding.code} ${finding.path}: ${finding.message}`)
|
|
10
|
+
.join('; ')}`, `inspect ${ref} with run --describe, then provide the required key=value parameters`);
|
|
11
|
+
}
|
|
12
|
+
return params;
|
|
13
|
+
}
|
|
14
|
+
export function resolveRecipeValue(value, params, outputs) {
|
|
15
|
+
if (typeof value === 'string') {
|
|
16
|
+
const exact = /^\{\{(params|outputs)\.([A-Za-z0-9_.-]+)\}\}$/u.exec(value);
|
|
17
|
+
if (exact) {
|
|
18
|
+
if (exact[1] === 'outputs' && !outputs)
|
|
19
|
+
return value;
|
|
20
|
+
return getRecipeReference(exact[1], exact[2], params, outputs);
|
|
21
|
+
}
|
|
22
|
+
return value.replace(/\{\{(params|outputs)\.([A-Za-z0-9_.-]+)\}\}/gu, (_match, source, key) => source === 'outputs' && !outputs
|
|
23
|
+
? _match
|
|
24
|
+
: String(getRecipeReference(source, key, params, outputs)));
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(value))
|
|
27
|
+
return value.map((entry) => resolveRecipeValue(entry, params, outputs));
|
|
28
|
+
if (!isRecord(value))
|
|
29
|
+
return value;
|
|
30
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, resolveRecipeValue(entry, params, outputs)]));
|
|
31
|
+
}
|
|
32
|
+
function getRecipeReference(source, path, params, outputs) {
|
|
33
|
+
if (source === 'params')
|
|
34
|
+
return getNestedValue(params, path, 'parameter');
|
|
35
|
+
if (!outputs)
|
|
36
|
+
return `{{outputs.${path}}}`;
|
|
37
|
+
const [nodeId, ...segments] = path.split('.');
|
|
38
|
+
if (!nodeId || !outputs.has(nodeId)) {
|
|
39
|
+
throw new RecipeResolutionError('RECIPE_PARAMS_INVALID', `Recipe output ${path} is not defined.`, `run the producing node before referencing outputs.${path}`);
|
|
40
|
+
}
|
|
41
|
+
return getNestedValue(outputs.get(nodeId), segments.join('.'), 'output');
|
|
42
|
+
}
|
|
43
|
+
function getNestedValue(value, path, kind) {
|
|
44
|
+
if (!path)
|
|
45
|
+
return value;
|
|
46
|
+
let current = value;
|
|
47
|
+
for (const segment of path.split('.')) {
|
|
48
|
+
if (!isRecord(current) || !Object.hasOwn(current, segment)) {
|
|
49
|
+
throw new RecipeResolutionError('RECIPE_PARAMS_INVALID', `Recipe ${kind} ${path} is not defined.`, kind === 'parameter'
|
|
50
|
+
? `declare ${path} in paramsSchema or provide it before running the recipe`
|
|
51
|
+
: `inspect the producing node output before referencing ${path}`);
|
|
52
|
+
}
|
|
53
|
+
current = current[segment];
|
|
54
|
+
}
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=parameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/core/parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,9 @@ import type { RecipeActionManifestDocument, UiObserverRef } from '@farmslot/prot
|
|
|
2
2
|
import type { ActionAdapter, ActionResult, RecipeLogger, RecipeObservationResult, RecipeObservationWarning } from './types.js';
|
|
3
3
|
export type DefaultObserverRefs = ReadonlyMap<string, readonly UiObserverRef[]>;
|
|
4
4
|
export declare function defaultObserverRefsFromManifest(manifest: RecipeActionManifestDocument): DefaultObserverRefs;
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function resolveObserveRefs(action: string, node: Record<string, unknown>, defaultObserverRefs: DefaultObserverRefs, declaredObserverRefs: readonly UiObserverRef[]): UiObserverRef[];
|
|
5
|
+
export declare function resolveObserveRefs(action: string, defaultObserverRefs: DefaultObserverRefs): UiObserverRef[];
|
|
7
6
|
export declare function filterObservationWarnings(warnings: RecipeObservationResult['warnings'], refs: readonly UiObserverRef[]): RecipeObservationResult['warnings'] | undefined;
|
|
8
|
-
export declare function finalizeNodeObservations({
|
|
9
|
-
nodeId: string;
|
|
10
|
-
node: Record<string, unknown>;
|
|
7
|
+
export declare function finalizeNodeObservations({ result, observationResult, observeRefs, }: {
|
|
11
8
|
result: ActionResult;
|
|
12
9
|
observationResult: RecipeObservationResult;
|
|
13
10
|
observeRefs: readonly UiObserverRef[];
|