@farmslot/recipe-runner 0.36.2 → 0.37.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/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/dist/adapters/app-lifecycle.d.ts +3 -3
- package/dist/adapters/app-lifecycle.d.ts.map +1 -1
- package/dist/adapters/core.d.ts +2 -2
- package/dist/adapters/core.d.ts.map +1 -1
- package/dist/adapters/ui.d.ts +2 -2
- package/dist/adapters/ui.d.ts.map +1 -1
- package/dist/core/execution.d.ts +2 -2
- package/dist/core/execution.d.ts.map +1 -1
- package/dist/core/passive-observations.d.ts +3 -3
- package/dist/core/runner.d.ts +2 -2
- package/dist/core/runner.js +1 -1
- package/dist/core/trust.d.ts +3 -3
- package/dist/core/types.d.ts +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ All notable changes to `@farmslot/recipe-runner` (published as `@farmslot/recipe
|
|
|
6
6
|
|
|
7
7
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
8
8
|
|
|
9
|
+
## 0.37.1 - 2026-10-15
|
|
10
|
+
|
|
11
|
+
- Use the operator-wait runtime and protocol dependency set.
|
|
12
|
+
|
|
13
|
+
## 0.37.0 - 2026-10-15
|
|
14
|
+
|
|
15
|
+
- Replace `ActionAdapter` with `ActionHandler` and `defineActionAdapter` with `defineActionHandler`.
|
|
16
|
+
|
|
9
17
|
## 0.36.2 - 2026-10-15
|
|
10
18
|
|
|
11
19
|
- Align the published dependency set with protocol 0.47.0 initial resource proof modes.
|
package/README.md
CHANGED
|
@@ -178,9 +178,9 @@ const suite = await finalizeRecipeSuite({
|
|
|
178
178
|
## Custom action
|
|
179
179
|
|
|
180
180
|
```ts
|
|
181
|
-
import {
|
|
181
|
+
import { defineActionHandler } from '@farmslot/recipe-runner';
|
|
182
182
|
|
|
183
|
-
export const echoAdapter =
|
|
183
|
+
export const echoAdapter = defineActionHandler({
|
|
184
184
|
action: 'example.echo',
|
|
185
185
|
async execute(node, context) {
|
|
186
186
|
const message = String(node.message ?? '');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ActionExecutionContext, ActionHandler } from '../core/types.js';
|
|
2
2
|
export type AppLifecyclePlatform = 'android' | 'ios-simulator';
|
|
3
3
|
export type AppLifecycleCommand = 'launch' | 'foreground' | 'background' | 'terminate' | 'restart';
|
|
4
4
|
export interface AppLifecycleTarget {
|
|
@@ -36,6 +36,6 @@ export interface CreateAppLifecycleAdapterOptions {
|
|
|
36
36
|
targetProvider: AppLifecycleTargetProvider;
|
|
37
37
|
commandRunner?: AppLifecycleCommandRunner;
|
|
38
38
|
}
|
|
39
|
-
export declare function createAppLifecycleAdapters(options: CreateAppLifecycleAdapterOptions):
|
|
40
|
-
export declare function createAppLifecycleAdapter(options: CreateAppLifecycleAdapterOptions):
|
|
39
|
+
export declare function createAppLifecycleAdapters(options: CreateAppLifecycleAdapterOptions): ActionHandler[];
|
|
40
|
+
export declare function createAppLifecycleAdapter(options: CreateAppLifecycleAdapterOptions): ActionHandler;
|
|
41
41
|
//# sourceMappingURL=app-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-lifecycle.d.ts","sourceRoot":"","sources":["../../src/adapters/app-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"app-lifecycle.d.ts","sourceRoot":"","sources":["../../src/adapters/app-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI9E,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,eAAe,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+BAA+B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;CACrD;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,EAAE,0BAA0B,CAAC;IAC3C,aAAa,CAAC,EAAE,yBAAyB,CAAC;CAC3C;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gCAAgC,GACxC,aAAa,EAAE,CAGjB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,aAAa,CAiDf"}
|
package/dist/adapters/core.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ActionExecutionContext, ActionHandler } from '../core/types.js';
|
|
2
2
|
export { recipeExecutionSignal, withRecipeExecutionSignal } from '../core/execution-signal.js';
|
|
3
3
|
export { assertRecipeActive } from '../core/failure.js';
|
|
4
4
|
export declare const RECIPE_PROCESS_SIGNALS: readonly ["SIGINT", "SIGTERM", "SIGHUP", "SIGQUIT"];
|
|
5
5
|
export declare function createStandardCoreAdapters(options?: {
|
|
6
6
|
actions?: Iterable<string>;
|
|
7
|
-
}):
|
|
7
|
+
}): ActionHandler[];
|
|
8
8
|
interface CommandOutput {
|
|
9
9
|
exitCode: number;
|
|
10
10
|
stdout: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/adapters/core.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/adapters/core.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,eAAO,MAAM,sBAAsB,qDAAsD,CAAC;AAE1F,wBAAgB,0BAA0B,CACxC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAAO,GAC3C,aAAa,EAAE,CAyBjB;AA+SD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IAChE,YAAY,CAAC,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC/C,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAmB,SAAQ,KAAK;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,uGAAuG;AACvG,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA0H9B"}
|
package/dist/adapters/ui.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { UiObserverRef } from '@farmslot/protocol';
|
|
2
2
|
import { type UiScrollSession, type UiScrollToRequest } from '../core/scroll-to.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ActionExecutionContext, ActionHandler, ActionResult, RecipeActionPhase, RecipeObservationResult } from '../core/types.js';
|
|
4
4
|
export declare const STANDARD_UI_ACTIONS: readonly ["ui.navigate", "ui.press", "ui.key_press", "ui.set_input", "ui.scroll", "ui.scroll_to", "ui.swipe", "ui.pan", "ui.drag", "ui.long_press", "ui.wait_for", "ui.screenshot", "ui.capture_surface", "app.status", "app.lifecycle", "app.hud", "app.trace"];
|
|
5
5
|
export type StandardUiAction = (typeof STANDARD_UI_ACTIONS)[number];
|
|
6
6
|
export interface UiTransportControl {
|
|
@@ -30,6 +30,6 @@ export interface CreateStandardUiAdaptersOptions {
|
|
|
30
30
|
/** Live conformance records rendered HUD observations around capture. */
|
|
31
31
|
captureHudEvidence?: boolean;
|
|
32
32
|
}
|
|
33
|
-
export declare function createStandardUiAdapters(options: CreateStandardUiAdaptersOptions):
|
|
33
|
+
export declare function createStandardUiAdapters(options: CreateStandardUiAdaptersOptions): ActionHandler[];
|
|
34
34
|
export declare function normalizeUiTransportResult(result: unknown): ActionResult;
|
|
35
35
|
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/adapters/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAGL,KAAK,eAAe,EAEpB,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/adapters/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAGL,KAAK,eAAe,EAEpB,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,mBAAmB,kQAkBtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CACL,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,OAAO,GAAG,iBAAiB,CAAC,CAAC;IACxC,OAAO,CAAC,CACN,IAAI,EAAE,SAAS,aAAa,EAAE,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,aAAa,EAAE,CA+GjB;AAyDD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAkBxE"}
|
package/dist/core/execution.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type RecipeActionManifestDocument, type RecipeFailureCause } from '@farmslot/protocol';
|
|
2
2
|
import type { ResolvedLibraryRecipe } from './library.js';
|
|
3
3
|
import { type DefaultObserverRefs } from './passive-observations.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ActionExecutionContext, ActionHandler, ActionResult, RecipeLogger, RecipeRunStatus, TraceWriter } from './types.js';
|
|
5
5
|
export declare const DEFAULT_MAX_RECIPE_CALL_DEPTH = 8;
|
|
6
6
|
type HudPublisher = (status: 'running' | 'pass' | 'fail', event: {
|
|
7
7
|
nodeId: string;
|
|
@@ -24,7 +24,7 @@ export interface ExecuteRecipeOptions {
|
|
|
24
24
|
maxCallDepth?: number;
|
|
25
25
|
recipes: ReadonlyMap<string, ResolvedLibraryRecipe>;
|
|
26
26
|
actionManifest: RecipeActionManifestDocument;
|
|
27
|
-
adapters: ReadonlyMap<string,
|
|
27
|
+
adapters: ReadonlyMap<string, ActionHandler>;
|
|
28
28
|
traceWriter: TraceWriter;
|
|
29
29
|
claimProjections?: ReadonlyMap<string, {
|
|
30
30
|
proves?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAY5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACL,KAAK,mBAAmB,EAIzB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EACV,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RecipeActionManifestDocument, UiObserverRef } from '@farmslot/protocol';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ActionHandler, 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
5
|
export declare function resolveObserveRefs(action: string, defaultObserverRefs: DefaultObserverRefs): UiObserverRef[];
|
|
@@ -17,8 +17,8 @@ export declare function mergeObservations(first: RecipeObservationResult['observ
|
|
|
17
17
|
export declare function runPassiveObservers({ action, node, adapter, context, logger, refs, }: {
|
|
18
18
|
action: string;
|
|
19
19
|
node: Record<string, unknown>;
|
|
20
|
-
adapter:
|
|
21
|
-
context: Parameters<
|
|
20
|
+
adapter: ActionHandler;
|
|
21
|
+
context: Parameters<ActionHandler['execute']>[1];
|
|
22
22
|
logger: RecipeLogger;
|
|
23
23
|
refs: readonly UiObserverRef[];
|
|
24
24
|
}): Promise<RecipeObservationResult>;
|
package/dist/core/runner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function
|
|
1
|
+
import type { ActionHandler, CreateRecipeRunnerOptions, RecipeRunner } from './types.js';
|
|
2
|
+
export declare function defineActionHandler(adapter: ActionHandler): ActionHandler;
|
|
3
3
|
export declare function createRecipeRunner(options: CreateRecipeRunnerOptions): RecipeRunner;
|
|
4
4
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/core/runner.js
CHANGED
|
@@ -40,7 +40,7 @@ const noopLogger = {
|
|
|
40
40
|
warn() { },
|
|
41
41
|
error() { },
|
|
42
42
|
};
|
|
43
|
-
export function
|
|
43
|
+
export function defineActionHandler(adapter) {
|
|
44
44
|
if (!adapter.action.trim())
|
|
45
45
|
throw new Error('Action adapter action must be a non-empty string.');
|
|
46
46
|
return adapter;
|
package/dist/core/trust.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { type RecipeActionManifestDocument, type RecipeExecutionCapability, type RecipeExecutionPlan, type RecipeSourceProvenance } from '@farmslot/protocol';
|
|
2
2
|
import type { ResolvedLibraryRecipe } from './library.js';
|
|
3
3
|
import type { DefaultObserverRefs } from './passive-observations.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ActionHandler, RecipeHudOptions, RecipeRunRequest } from './types.js';
|
|
5
5
|
export declare function recipeSourceForRequest(request: RecipeRunRequest, recipe: unknown, sourceRecipePath?: string, defaultSource?: RecipeSourceProvenance): RecipeSourceProvenance;
|
|
6
6
|
export declare function buildRecipeExecutionPlan({ recipe, params, source, recipes, adapters, actionManifest, defaultObserverRefs, projectRoot, artifactsDir, env, hud, recordVideo, }: {
|
|
7
7
|
recipe: Record<string, unknown>;
|
|
8
8
|
params: Record<string, unknown>;
|
|
9
9
|
source: RecipeSourceProvenance;
|
|
10
10
|
recipes: ReadonlyMap<string, ResolvedLibraryRecipe>;
|
|
11
|
-
adapters: ReadonlyMap<string,
|
|
11
|
+
adapters: ReadonlyMap<string, ActionHandler>;
|
|
12
12
|
actionManifest: RecipeActionManifestDocument;
|
|
13
13
|
defaultObserverRefs: DefaultObserverRefs;
|
|
14
14
|
projectRoot: string;
|
|
@@ -18,7 +18,7 @@ export declare function buildRecipeExecutionPlan({ recipe, params, source, recip
|
|
|
18
18
|
recordVideo?: RecipeRunRequest['recordVideo'];
|
|
19
19
|
}): RecipeExecutionPlan;
|
|
20
20
|
export declare function enforceRecipeExecutionPlan(plan: RecipeExecutionPlan, request: Pick<RecipeRunRequest, 'approval'>, blockedCapabilities?: readonly RecipeExecutionCapability[]): void;
|
|
21
|
-
export declare function verifyExecutableSource(executable: Pick<
|
|
21
|
+
export declare function verifyExecutableSource(executable: Pick<ActionHandler, 'source' | 'resolveSourceDigest'>, label: string): Promise<void>;
|
|
22
22
|
/**
|
|
23
23
|
* Approval binds substantive environment inputs, excluding package-manager invocation metadata
|
|
24
24
|
* and the lifecycle owner PID. The provider validates ownership separately from plan approval.
|
package/dist/core/types.d.ts
CHANGED
|
@@ -132,7 +132,7 @@ export interface RecipeRunnerProvenance {
|
|
|
132
132
|
}
|
|
133
133
|
export interface CreateRecipeRunnerOptions {
|
|
134
134
|
actionManifest: RecipeActionManifestDocument;
|
|
135
|
-
adapters:
|
|
135
|
+
adapters: ActionHandler[];
|
|
136
136
|
/** Caller-owned default provenance. Omit to fail closed with unknown trust. */
|
|
137
137
|
defaultSource?: RecipeSourceProvenance;
|
|
138
138
|
logger?: RecipeLogger;
|
|
@@ -270,7 +270,7 @@ export interface ActionExecutionContext {
|
|
|
270
270
|
captureRecordingSnapshot?(relativePath: string): Promise<Record<string, unknown>>;
|
|
271
271
|
logger: RecipeLogger;
|
|
272
272
|
}
|
|
273
|
-
export interface
|
|
273
|
+
export interface ActionHandler {
|
|
274
274
|
action: string;
|
|
275
275
|
testOnly?: boolean;
|
|
276
276
|
capabilities?: RecipeExecutionCapability[];
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { applyTaskLocalInvocationTrust, BUILT_IN_RECIPE_PLATFORMS, defaultRecipe
|
|
|
13
13
|
export { checkRecipeLibraryRequirements, digestLibraryAdapter, digestRecipeLibrary, libraryAdapterFiles, listLibraryFiles, MAX_LIBRARY_ADAPTER_FILES, readRecipeLibraryManifest, RECIPE_LIBRARY_DIRECTORIES, RECIPE_LIBRARY_MANIFEST_FILE, type RecipeLibraryAdapterDeclaration, type RecipeLibraryAdapterDetect, type RecipeLibraryManifest, type RecipeLibraryRequirement, type RecipePackageVersions, SHARED_RECIPE_SCOPE, } from './core/library-manifest.js';
|
|
14
14
|
export { resolveRecipeParams, resolveRecipeValue } from './core/parameters.js';
|
|
15
15
|
export { RecipeResolutionError } from './core/resolution-error.js';
|
|
16
|
-
export { createRecipeRunner,
|
|
16
|
+
export { createRecipeRunner, defineActionHandler } from './core/runner.js';
|
|
17
17
|
export { isVisibleWithin, parseUiScrollToRequest, runUiScrollTo, safeViewportFor, UI_SCROLL_TO_ERROR_CODES, type UiRect, type UiScrollGeometry, type UiScrollOffset, type UiScrollSession, type UiScrollSettlement, type UiScrollSnapshot, UiScrollToError, type UiScrollToErrorCode, type UiScrollToObservation, type UiScrollToRequest, } from './core/scroll-to.js';
|
|
18
18
|
export { finalizeRecipeSuite, type FinalizeRecipeSuiteRequest, freezeRecipeSuiteScope, type RecipeSuiteFinalizeResult, type RecipeSuiteResolutionInput, type RecipeSuiteScopeSnapshot, type RecipeSuiteVerdictInput, } from './core/suite.js';
|
|
19
19
|
export { buildRecipeExecutionPlan, enforceRecipeExecutionPlan, recipeSourceForRequest, } from './core/trust.js';
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ export { applyTaskLocalInvocationTrust, BUILT_IN_RECIPE_PLATFORMS, defaultRecipe
|
|
|
10
10
|
export { checkRecipeLibraryRequirements, digestLibraryAdapter, digestRecipeLibrary, libraryAdapterFiles, listLibraryFiles, MAX_LIBRARY_ADAPTER_FILES, readRecipeLibraryManifest, RECIPE_LIBRARY_DIRECTORIES, RECIPE_LIBRARY_MANIFEST_FILE, SHARED_RECIPE_SCOPE, } from './core/library-manifest.js';
|
|
11
11
|
export { resolveRecipeParams, resolveRecipeValue } from './core/parameters.js';
|
|
12
12
|
export { RecipeResolutionError } from './core/resolution-error.js';
|
|
13
|
-
export { createRecipeRunner,
|
|
13
|
+
export { createRecipeRunner, defineActionHandler } from './core/runner.js';
|
|
14
14
|
export { isVisibleWithin, parseUiScrollToRequest, runUiScrollTo, safeViewportFor, UI_SCROLL_TO_ERROR_CODES, UiScrollToError, } from './core/scroll-to.js';
|
|
15
15
|
export { finalizeRecipeSuite, freezeRecipeSuiteScope, } from './core/suite.js';
|
|
16
16
|
export { buildRecipeExecutionPlan, enforceRecipeExecutionPlan, recipeSourceForRequest, } from './core/trust.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farmslot/recipe-runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"prepublishOnly": "node ../../scripts/quality/check-farmslot-package-readiness.mjs --publish --packages @farmslot/recipe-runner"
|
|
130
130
|
},
|
|
131
131
|
"dependencies": {
|
|
132
|
-
"@farmslot/protocol": "0.
|
|
132
|
+
"@farmslot/protocol": "0.48.0",
|
|
133
133
|
"commander": "^12.0.0",
|
|
134
134
|
"semver": "^7.7.3",
|
|
135
135
|
"ws": "^8.18.0"
|