@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.
Files changed (115) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +83 -182
  3. package/dist/adapters/app-lifecycle.d.ts.map +1 -1
  4. package/dist/adapters/app-lifecycle.js +5 -0
  5. package/dist/adapters/app-lifecycle.js.map +1 -1
  6. package/dist/adapters/core.d.ts.map +1 -1
  7. package/dist/adapters/core.js +25 -46
  8. package/dist/adapters/core.js.map +1 -1
  9. package/dist/adapters/ui.d.ts +0 -2
  10. package/dist/adapters/ui.d.ts.map +1 -1
  11. package/dist/adapters/ui.js +5 -2
  12. package/dist/adapters/ui.js.map +1 -1
  13. package/dist/cli/index.d.ts.map +1 -1
  14. package/dist/cli/index.js +0 -2
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/run-command.d.ts.map +1 -1
  17. package/dist/cli/run-command.js +197 -32
  18. package/dist/cli/run-command.js.map +1 -1
  19. package/dist/cli/support.d.ts +5 -2
  20. package/dist/cli/support.d.ts.map +1 -1
  21. package/dist/cli/support.js +131 -25
  22. package/dist/cli/support.js.map +1 -1
  23. package/dist/cli/validate-command.d.ts.map +1 -1
  24. package/dist/cli/validate-command.js +4 -1
  25. package/dist/cli/validate-command.js.map +1 -1
  26. package/dist/core/compose.d.ts +21 -31
  27. package/dist/core/compose.d.ts.map +1 -1
  28. package/dist/core/compose.js +93 -125
  29. package/dist/core/compose.js.map +1 -1
  30. package/dist/core/execution.d.ts +40 -0
  31. package/dist/core/execution.d.ts.map +1 -0
  32. package/dist/core/execution.js +263 -0
  33. package/dist/core/execution.js.map +1 -0
  34. package/dist/core/graph.d.ts +4 -5
  35. package/dist/core/graph.d.ts.map +1 -1
  36. package/dist/core/graph.js +51 -103
  37. package/dist/core/graph.js.map +1 -1
  38. package/dist/core/hud.d.ts.map +1 -1
  39. package/dist/core/hud.js +2 -6
  40. package/dist/core/hud.js.map +1 -1
  41. package/dist/core/library.d.ts +17 -51
  42. package/dist/core/library.d.ts.map +1 -1
  43. package/dist/core/library.js +144 -155
  44. package/dist/core/library.js.map +1 -1
  45. package/dist/core/parameters.d.ts +5 -0
  46. package/dist/core/parameters.d.ts.map +1 -0
  47. package/dist/core/parameters.js +57 -0
  48. package/dist/core/parameters.js.map +1 -0
  49. package/dist/core/passive-observations.d.ts +2 -5
  50. package/dist/core/passive-observations.d.ts.map +1 -1
  51. package/dist/core/passive-observations.js +6 -40
  52. package/dist/core/passive-observations.js.map +1 -1
  53. package/dist/core/path.d.ts +6 -0
  54. package/dist/core/path.d.ts.map +1 -0
  55. package/dist/core/path.js +126 -0
  56. package/dist/core/path.js.map +1 -0
  57. package/dist/core/recording-cleanup.d.ts +1 -0
  58. package/dist/core/recording-cleanup.d.ts.map +1 -1
  59. package/dist/core/recording-cleanup.js +8 -0
  60. package/dist/core/recording-cleanup.js.map +1 -1
  61. package/dist/core/resolution-error.d.ts +7 -0
  62. package/dist/core/resolution-error.d.ts.map +1 -0
  63. package/dist/core/resolution-error.js +9 -0
  64. package/dist/core/resolution-error.js.map +1 -0
  65. package/dist/core/runner.d.ts.map +1 -1
  66. package/dist/core/runner.js +178 -373
  67. package/dist/core/runner.js.map +1 -1
  68. package/dist/core/trace.d.ts +3 -4
  69. package/dist/core/trace.d.ts.map +1 -1
  70. package/dist/core/trace.js +3 -4
  71. package/dist/core/trace.js.map +1 -1
  72. package/dist/core/trust-error.d.ts +9 -0
  73. package/dist/core/trust-error.d.ts.map +1 -0
  74. package/dist/core/trust-error.js +18 -0
  75. package/dist/core/trust-error.js.map +1 -0
  76. package/dist/core/trust-input.d.ts +20 -0
  77. package/dist/core/trust-input.d.ts.map +1 -0
  78. package/dist/core/trust-input.js +68 -0
  79. package/dist/core/trust-input.js.map +1 -0
  80. package/dist/core/trust.d.ts +20 -0
  81. package/dist/core/trust.d.ts.map +1 -0
  82. package/dist/core/trust.js +231 -0
  83. package/dist/core/trust.js.map +1 -0
  84. package/dist/core/types.d.ts +41 -47
  85. package/dist/core/types.d.ts.map +1 -1
  86. package/dist/index.d.ts +8 -5
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +6 -3
  89. package/dist/index.js.map +1 -1
  90. package/dist/node/writers.d.ts +3 -8
  91. package/dist/node/writers.d.ts.map +1 -1
  92. package/dist/node/writers.js +27 -26
  93. package/dist/node/writers.js.map +1 -1
  94. package/dist/recording/cdp-video-recorder.js +2 -3
  95. package/dist/recording/cdp-video-recorder.js.map +1 -1
  96. package/dist/runtime/cdp.d.ts.map +1 -1
  97. package/dist/runtime/cdp.js +3 -7
  98. package/dist/runtime/cdp.js.map +1 -1
  99. package/package.json +2 -2
  100. package/dist/cli/flows-command.d.ts +0 -3
  101. package/dist/cli/flows-command.d.ts.map +0 -1
  102. package/dist/cli/flows-command.js +0 -313
  103. package/dist/cli/flows-command.js.map +0 -1
  104. package/dist/core/flows.d.ts +0 -45
  105. package/dist/core/flows.d.ts.map +0 -1
  106. package/dist/core/flows.js +0 -359
  107. package/dist/core/flows.js.map +0 -1
  108. package/dist/core/predicates.d.ts +0 -7
  109. package/dist/core/predicates.d.ts.map +0 -1
  110. package/dist/core/predicates.js +0 -102
  111. package/dist/core/predicates.js.map +0 -1
  112. package/dist/core/promote.d.ts +0 -41
  113. package/dist/core/promote.d.ts.map +0 -1
  114. package/dist/core/promote.js +0 -249
  115. package/dist/core/promote.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hud.js","sourceRoot":"","sources":["../../src/core/hud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hud.js","sourceRoot":"","sources":["../../src/core/hud.ts"],"names":[],"mappings":"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"}
@@ -1,72 +1,38 @@
1
- import { type InlineFlow } from './flows.js';
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 ResolvedLibraryFlow {
4
+ export interface ResolvedLibraryRecipe {
9
5
  ref: string;
10
- flow: InlineFlow;
11
- raw: Record<string, unknown>;
6
+ document: Record<string, unknown>;
12
7
  source: string;
13
- /** Catalog file path relative to the library root. */
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
- flows: ReadonlyMap<string, ResolvedLibraryFlow>;
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 and merge ordered library sources into one flow resolution. Shadowing
49
- * across sources is recorded and logged; duplicate refs within one source are
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 createEffectiveFlowCatalog(recipeFlows: ReadonlyMap<string, InlineFlow>, resolution: RecipeLibraryResolution | undefined, usedLibraryFlows: Map<string, ResolvedLibraryFlow>, logger?: RecipeLogger): EffectiveFlowCatalog;
70
- /** Catalog file names (relative to `<root>/flows/`) of a library, sorted. */
71
- export declare function listFlowCatalogFiles(root: string): Promise<string[]>;
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":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/F;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAe3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,gBAA8B,GAAG,MAAM,CAErF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,GAAE,gBAA8B,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAQhC;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAQjC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,uBAAuB,CAAC,CAgDlC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,sEAAsE;IACtE,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAC5C,UAAU,EAAE,uBAAuB,GAAG,SAAS,EAC/C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAClD,MAAM,CAAC,EAAE,YAAY,GACpB,oBAAoB,CAuBtB;AA8DD,6EAA6E;AAC7E,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB1E"}
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"}
@@ -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 LIBRARY_FLOWS_DIR = 'flows';
9
- const LIBRARY_FLOW_CATALOG_SUFFIX = '.flows.json';
10
- const LAST_VERIFIED_WARN_AFTER_DAYS = 30;
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
- return [];
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
- if (explicit.length > 0)
65
- return explicit;
66
- return defaultRecipeLibrarySources(env);
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 and merge ordered library sources into one flow resolution. Shadowing
70
- * across sources is recorded and logged; duplicate refs within one source are
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, logger) {
91
+ export async function loadRecipeLibraries(sources, options) {
74
92
  const loadedSources = [];
75
- const flows = new Map();
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 Error(`Recipe library source ${name} is configured more than once.`);
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 sourceFlows = new Map();
86
- for (const file of await listFlowCatalogFiles(root)) {
87
- const catalogPath = path.join(root, LIBRARY_FLOWS_DIR, file);
88
- const catalog = await readJsonFile(catalogPath);
89
- assertFlowCatalogKind(catalog, catalogPath);
90
- for (const entry of readCatalogFlows(catalog, catalogPath)) {
91
- if (sourceFlows.has(entry.ref)) {
92
- throw new Error(`Flow ${entry.ref} is declared more than once in library ${name}.`);
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
- loadedSources.push({ name, root, flowCount: sourceFlows.size });
106
- for (const [ref, resolved] of sourceFlows) {
107
- const winner = flows.get(ref);
108
- if (winner) {
109
- winner.shadows.push(name);
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
- else {
112
- flows.set(ref, resolved);
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
- if (logger)
117
- logResolution(logger, { sources: loadedSources, flows });
118
- return { sources: loadedSources, flows };
119
- }
120
- /**
121
- * Merge recipe-local flows over library flows. Recipe-local declarations
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
- return { catalog: merged, overrides };
156
+ const resolution = { sources: loadedSources, recipes };
157
+ if (options?.logger)
158
+ logResolution(options.logger, resolution);
159
+ return resolution;
149
160
  }
150
- class TrackingFlowCatalog extends Map {
151
- #fromLibrary;
152
- #used;
153
- constructor(fromLibrary, used) {
154
- super();
155
- this.#fromLibrary = fromLibrary;
156
- this.#used = used;
157
- }
158
- get(ref) {
159
- const flow = super.get(ref);
160
- if (flow) {
161
- const resolved = this.#fromLibrary.get(ref);
162
- if (resolved)
163
- this.#used.set(ref, resolved);
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.flowCount} flows)`)
202
+ .map((source) => `${source.name}=${source.root} (${source.recipeCount} recipes)`)
171
203
  .join(', ');
172
204
  logger.info(`Recipe libraries: ${summary || 'none'}`);
173
- for (const flow of resolution.flows.values()) {
174
- if (flow.shadows.length > 0) {
175
- logger.warn(`Flow ${flow.ref} resolves from ${flow.source} and shadows ${flow.shadows.join(', ')}.`);
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
- /** Catalog file names (relative to `<root>/flows/`) of a library, sorted. */
199
- export async function listFlowCatalogFiles(root) {
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
@@ -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 declaredObserverRefsFromManifest(manifest: RecipeActionManifestDocument): readonly UiObserverRef[];
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({ nodeId, node, result, observationResult, observeRefs, }: {
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[];