@michaelrwalker/stagehand 0.3.0 → 0.4.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/dist/script.d.ts CHANGED
@@ -1,8 +1,60 @@
1
1
  import type { StandardSchemaV1 } from "@standard-schema/spec";
2
- import type { CleanField, Cleaned, Merge, PhaseOptions, RunResult, ScriptOptions, StepDef } from "./types.js";
2
+ import type { Awaitable, CacheMode, CleanField, Cleaned, Merge, PhaseOptions, RunResult, ScriptOptions, StepDef } from "./types.js";
3
+ /**
4
+ * Keys for the phantom markers on {@link Script} and {@link Routine}. Exported
5
+ * only because declaration emit has to name them; there is no runtime value
6
+ * behind either and nothing should import them.
7
+ */
8
+ export declare const REQUIRES: unique symbol;
9
+ export declare const PRODUCES: unique symbol;
10
+ /**
11
+ * Phases and steps recorded away from any particular script, ready to be
12
+ * spliced into one with {@link Script.use}.
13
+ *
14
+ * All four parameters are inferred — `In` and `Ctx` from the `routineFor<In,
15
+ * Ctx>()` call that declared the routine, `Out` and `Reserved` from the steps
16
+ * it went on to add.
17
+ */
18
+ export interface Routine<In, Ctx extends object, Out extends object, Reserved extends PropertyKey> {
19
+ /**
20
+ * Phantom. `In` and `Ctx` sit in contravariant position here, which is what
21
+ * makes a mount site prove it already offers at least this much input and
22
+ * context. Erased at compile time.
23
+ */
24
+ readonly [REQUIRES]: (context: {
25
+ input: In;
26
+ ctx: Ctx;
27
+ }) => void;
28
+ /** Phantom. Carries what the routine contributes so `use` can infer it. */
29
+ readonly [PRODUCES]: Out;
30
+ readonly name: string;
31
+ }
32
+ export interface MountOptions {
33
+ /**
34
+ * Prefix for the routine's phase names — `"Amazon"` turns `Fetch` into
35
+ * `Amazon / Fetch`. Required whenever the same routine is mounted twice,
36
+ * since phase names have to stay unique.
37
+ */
38
+ as?: string;
39
+ }
40
+ /**
41
+ * What a mount feeds its fragment instead of the host's own input — either a
42
+ * fixed value or a function of the host's input and context, resolved once
43
+ * when the mount is reached.
44
+ */
45
+ export type MountInput<In, Ctx, SubIn> = SubIn | ((context: {
46
+ input: In;
47
+ ctx: Ctx;
48
+ }) => Awaitable<SubIn>);
3
49
  export interface RunOptions {
4
50
  /** Cancel the run from the outside. */
5
51
  signal?: AbortSignal;
52
+ /**
53
+ * What this run may do with the caches the script declares. Default `"on"`.
54
+ * Wire it to a flag — `cache: argv.includes("--no-cache") ? "off" : "on"` —
55
+ * to control caching without touching the script.
56
+ */
57
+ cache?: CacheMode;
6
58
  }
7
59
  /**
8
60
  * A saga-style script: phases of steps, each step optionally compensating when
@@ -32,9 +84,20 @@ export interface RunOptions {
32
84
  * through `rollbackKeys`, which is how `clean` knows what it may not remove.
33
85
  */
34
86
  export declare class Script<In = void, Ctx extends object = {}, Reserved extends PropertyKey = never> {
87
+ /**
88
+ * Phantom, erased at compile time. `run` is a *method*, so its parameter
89
+ * compares bivariantly and `In` would otherwise carry no safety across two
90
+ * `Script` types — a script needing `{ a, b }` would mount into a host
91
+ * offering only `{ a }`. A property-position function makes `In`
92
+ * contravariant, which is what `use()` relies on.
93
+ */
94
+ readonly [REQUIRES]: (input: In) => void;
35
95
  private readonly options;
36
96
  private readonly definition;
37
97
  private readonly reserved;
98
+ private readonly phaseNames;
99
+ /** False right after `use()`, so a bare `addStep` cannot land in a fragment. */
100
+ private openPhase;
38
101
  private _schema;
39
102
  constructor(options?: ScriptOptions | string);
40
103
  /**
@@ -74,12 +137,53 @@ export declare class Script<In = void, Ctx extends object = {}, Reserved extends
74
137
  * step's `rollbackKeys`.
75
138
  */
76
139
  addStep<Out extends object | void, const RollbackKeys extends readonly PropertyKey[] = readonly [], const CleanKeys extends readonly PropertyKey[] = readonly []>(def: StepDef<In, Ctx, Out, RollbackKeys> & CleanField<Ctx, Reserved, CleanKeys>): Script<In, Cleaned<Merge<Ctx, Out>, CleanKeys[number]>, Reserved | RollbackKeys[number]>;
140
+ /**
141
+ * Splice a reusable fragment into this script. Its phases land here in
142
+ * order, and everything it produced is merged into the context — so the
143
+ * steps that follow see it, typed, exactly as if they had been written
144
+ * inline.
145
+ *
146
+ * The fragment states what it needs and TypeScript checks it at the mount
147
+ * site: a routine declared `routineFor<{ name: string }, { hash: string }>()`
148
+ * refuses to mount into a script whose input lacks `name`, or which has not
149
+ * produced `hash` yet.
150
+ *
151
+ * ```ts
152
+ * new Script<Input>({ name: "monthly report" })
153
+ * .use(fetchChannel)
154
+ * .addPhase("Report")
155
+ * .addStep({ name: "aggregate", handler: ({ ctx }) => summarise(ctx.orders) });
156
+ * ```
157
+ *
158
+ * A plain {@link Script} mounts too, which is what keeps a reusable pipeline
159
+ * runnable on its own. Its own {@link ScriptOptions} — rollback mode,
160
+ * `logPlacement`, `silent` — are ignored in favour of the host's; only its
161
+ * phases and steps come across.
162
+ *
163
+ * @throws {DuplicateNameError} if a phase it brings is already defined here.
164
+ * Mount the same routine twice by naming each mount with `as`.
165
+ */
166
+ use<SubIn, Out extends object, R extends PropertyKey>(routine: Routine<SubIn, Ctx, Out, R>, options: MountOptions & {
167
+ input: MountInput<In, Ctx, SubIn>;
168
+ }): Script<In, Merge<Ctx, Out>, Reserved | R>;
169
+ use<SubIn, Out extends object, R extends PropertyKey>(script: Script<SubIn, Out, R>, options: MountOptions & {
170
+ input: MountInput<In, Ctx, SubIn>;
171
+ }): Script<In, Merge<Ctx, Out>, Reserved | R>;
172
+ use<Out extends object, R extends PropertyKey>(script: Script<In, Out, R>, options?: MountOptions): Script<In, Merge<Ctx, Out>, Reserved | R>;
173
+ use<Out extends object, R extends PropertyKey>(routine: Routine<In, Ctx, Out, R>, options?: MountOptions): Script<In, Merge<Ctx, Out>, Reserved | R>;
77
174
  /** Every step name, in execution order — handy for tests and docs. */
78
175
  outline(): Array<{
79
176
  phase: string;
80
177
  steps: string[];
81
178
  }>;
82
179
  private currentPhase;
180
+ /**
181
+ * Phase names have to be unique: they are what the frame labels, what
182
+ * `outline()` reports, and — since the cache landed — what identifies a
183
+ * phase's stored entry. Two phases sharing a name share a cache slot, which
184
+ * reads as wrong data rather than as an error.
185
+ */
186
+ private claimPhaseName;
83
187
  run(input: In, runOptions?: RunOptions): Promise<RunResult<Ctx>>;
84
188
  /** Retry + timeout wrapper around a single handler invocation. */
85
189
  private executeStep;
@@ -106,6 +210,31 @@ export declare class Script<In = void, Ctx extends object = {}, Reserved extends
106
210
  * the step is handed to `addStep`.
107
211
  */
108
212
  export declare function stepFor<In, Ctx extends object = {}>(): <Out extends object | void, const RollbackKeys extends readonly PropertyKey[] = readonly []>(def: StepDef<In, Ctx, Out, RollbackKeys>) => StepDef<In, Ctx, Out, RollbackKeys>;
213
+ /**
214
+ * Declare phases and steps away from any particular script, then mount them
215
+ * with {@link Script.use}.
216
+ *
217
+ * The two parameters are the *minimum* the fragment needs — the input it
218
+ * reads, and the context it expects to already exist — exactly as they are for
219
+ * {@link stepFor}. Whatever it produces flows on into whichever script mounts
220
+ * it, and any script that cannot satisfy the requirement is a compile error at
221
+ * the `use()` call, not an `undefined` at run time.
222
+ *
223
+ * ```ts
224
+ * export const fetchChannel = routineFor<{ channel: string }>()("fetch channel", (s) =>
225
+ * s
226
+ * .addPhase("Fetch")
227
+ * .addStep({ name: "authenticate", handler: … })
228
+ * .addStep({ name: "pull orders", handler: … })
229
+ * .addPhase("Normalize")
230
+ * .addStep({ name: "dedupe", handler: … }),
231
+ * );
232
+ * ```
233
+ *
234
+ * A routine owns whole phases, so phase-level options — `when`, `cache` —
235
+ * travel with it.
236
+ */
237
+ export declare function routineFor<In, Ctx extends object = {}>(): <Out extends object, R extends PropertyKey>(name: string, build: (script: Script<In, Ctx, never>) => Script<In, Out, R>) => Routine<In, Ctx, Out, R>;
109
238
  /** Convenience factory so callers can skip `new`. */
110
239
  export declare function script<In = void>(options?: ScriptOptions | string): Script<In, {}>;
111
240
  //# sourceMappingURL=script.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
package/dist/script.js CHANGED
@@ -1,6 +1,13 @@
1
+ import { normalizeCache, phaseSlot, readCache, stepSlot, writeCache } from "./cache.js";
1
2
  import { createRollbackContext, createStepContext } from "./context.js";
2
- import { ScriptAbortedError, SchemaValidationError, StepDefinitionError, StepTimeoutError, isAbort, } from "./errors.js";
3
+ import { DuplicateNameError, ScriptAbortedError, SchemaValidationError, StepDefinitionError, StepTimeoutError, isAbort, } from "./errors.js";
4
+ import { errorMessage } from "./state.js";
3
5
  import { createRenderer } from "./ui/renderer.js";
6
+ /**
7
+ * What `use()` reads. Holds live references, and every `Script` registers
8
+ * itself on construction, so a script and a routine mount through one path.
9
+ */
10
+ const bodies = new WeakMap();
4
11
  /* -------------------------------------------------------------------------- */
5
12
  /* Builder */
6
13
  /* -------------------------------------------------------------------------- */
@@ -35,9 +42,17 @@ export class Script {
35
42
  options;
36
43
  definition = [];
37
44
  reserved = new Set();
45
+ phaseNames = new Set();
46
+ /** False right after `use()`, so a bare `addStep` cannot land in a fragment. */
47
+ openPhase = false;
38
48
  _schema;
39
49
  constructor(options = {}) {
40
50
  this.options = typeof options === "string" ? { name: options } : options;
51
+ bodies.set(this, {
52
+ name: this.options.name ?? "script",
53
+ phases: this.definition,
54
+ reserved: this.reserved,
55
+ });
41
56
  }
42
57
  /**
43
58
  * Provide a [Standard Schema](https://standardschema.dev) describing the run
@@ -75,6 +90,8 @@ export class Script {
75
90
  addPhase(name, optionsOrBuild, maybeBuild) {
76
91
  const build = typeof optionsOrBuild === "function" ? optionsOrBuild : maybeBuild;
77
92
  const options = typeof optionsOrBuild === "function" ? {} : (optionsOrBuild ?? {});
93
+ this.claimPhaseName(name);
94
+ this.openPhase = true;
78
95
  this.definition.push({
79
96
  name,
80
97
  options: options,
@@ -104,7 +121,42 @@ export class Script {
104
121
  }
105
122
  for (const key of rollbackKeys)
106
123
  this.reserved.add(key);
107
- this.currentPhase().steps.push(step);
124
+ const phase = this.currentPhase();
125
+ // Same reasoning as phase names: a step's cache slot is its phase and its
126
+ // own name, and the frame has no other way to tell two of them apart.
127
+ if (phase.steps.some((existing) => existing.name === step.name)) {
128
+ throw new DuplicateNameError("step", step.name, `Step "${step.name}" is already defined in phase "${phase.name}".`);
129
+ }
130
+ phase.steps.push(step);
131
+ return this;
132
+ }
133
+ use(source, options = {}) {
134
+ const body = bodies.get(source);
135
+ if (!body) {
136
+ throw new StepDefinitionError("use", "use() expects a routine from routineFor() or a Script; got something else");
137
+ }
138
+ // One binding for the whole mount, so two mounts of the same routine stay
139
+ // independent while the phases within one mount share an input.
140
+ const mount = "input" in options ? { source: options.input } : undefined;
141
+ for (const phase of body.phases) {
142
+ const name = options.as ? `${options.as} / ${phase.name}` : phase.name;
143
+ this.claimPhaseName(name, body.name);
144
+ // Copied, so prefixing one mount cannot rename the routine itself and
145
+ // the host can never mutate a fragment other scripts are sharing.
146
+ this.definition.push({
147
+ name,
148
+ options: phase.options,
149
+ steps: [...phase.steps],
150
+ ...(mount ? { mount } : {}),
151
+ });
152
+ }
153
+ // The keys its rollbacks depend on stay reserved here too, or a later
154
+ // `clean` in the host could delete something a spliced rollback needs.
155
+ for (const key of body.reserved)
156
+ this.reserved.add(key);
157
+ // The last phase spliced in belongs to the fragment; a bare addStep after
158
+ // this would quietly append to it.
159
+ this.openPhase = false;
108
160
  return this;
109
161
  }
110
162
  /** Every step name, in execution order — handy for tests and docs. */
@@ -116,12 +168,34 @@ export class Script {
116
168
  }
117
169
  currentPhase() {
118
170
  const last = this.definition.at(-1);
119
- if (last)
171
+ if (last && this.openPhase)
120
172
  return last;
173
+ if (last && !this.openPhase) {
174
+ throw new StepDefinitionError("addStep", `Cannot add a step after use(): "${last.name}" belongs to a mounted fragment. ` +
175
+ `Open a phase of your own with addPhase() first.`);
176
+ }
121
177
  const implicit = { name: "Main", options: {}, steps: [] };
122
178
  this.definition.push(implicit);
179
+ this.phaseNames.add("Main");
180
+ this.openPhase = true;
123
181
  return implicit;
124
182
  }
183
+ /**
184
+ * Phase names have to be unique: they are what the frame labels, what
185
+ * `outline()` reports, and — since the cache landed — what identifies a
186
+ * phase's stored entry. Two phases sharing a name share a cache slot, which
187
+ * reads as wrong data rather than as an error.
188
+ */
189
+ claimPhaseName(name, from) {
190
+ if (!this.phaseNames.has(name)) {
191
+ this.phaseNames.add(name);
192
+ return;
193
+ }
194
+ throw new DuplicateNameError("phase", name, from
195
+ ? `Phase "${name}" from "${from}" is already defined in this script. ` +
196
+ `Name the mount with use(routine, { as: "..." }) to keep them apart.`
197
+ : `Phase "${name}" is already defined in this script.`);
198
+ }
125
199
  /* ------------------------------------------------------------------------ */
126
200
  /* Runner */
127
201
  /* ------------------------------------------------------------------------ */
@@ -170,12 +244,17 @@ export class Script {
170
244
  const rollbackController = new AbortController();
171
245
  const detach = this.attachCancellation(runController, rollbackController, runOptions.signal);
172
246
  const ctx = {};
247
+ // A mounted fragment sees whatever its mount resolved to, not the host's
248
+ // input — including in its rollbacks, which is why it travels with the
249
+ // completed entry.
173
250
  const completed = [];
251
+ const mountInputs = new Map();
174
252
  const rollbacks = [];
175
253
  let failure = null;
176
254
  renderer.start(state);
177
255
  try {
178
256
  let cursor = 0;
257
+ const cacheMode = runOptions.cache ?? "on";
179
258
  phaseLoop: for (const [phaseIndex, phase] of this.definition.entries()) {
180
259
  const phaseState = phases[phaseIndex];
181
260
  const phaseSteps = runtime.slice(cursor, cursor + phase.steps.length);
@@ -183,7 +262,19 @@ export class Script {
183
262
  if (!phaseState)
184
263
  continue;
185
264
  renderer.onPhaseStart(phaseState);
186
- if (phase.options.when && !(await phase.options.when({ input, ctx }))) {
265
+ // Resolved before `when`, so a mounted phase's own condition is asked
266
+ // about the input the fragment will actually run with.
267
+ let phaseInput = input;
268
+ if (phase.mount) {
269
+ if (!mountInputs.has(phase.mount)) {
270
+ const source = phase.mount.source;
271
+ mountInputs.set(phase.mount, (typeof source === "function"
272
+ ? await source({ input, ctx })
273
+ : source));
274
+ }
275
+ phaseInput = mountInputs.get(phase.mount);
276
+ }
277
+ if (phase.options.when && !(await phase.options.when({ input: phaseInput, ctx }))) {
187
278
  for (const item of phaseSteps) {
188
279
  item.state.status = "skipped";
189
280
  drop(ctx, item.def.clean);
@@ -192,6 +283,31 @@ export class Script {
192
283
  renderer.refresh();
193
284
  continue;
194
285
  }
286
+ const phaseCache = normalizeCache(phase.options.cache);
287
+ const slot = phaseSlot(phase.name);
288
+ if (phaseCache) {
289
+ const hit = await safely(() => readCache(phaseCache, slot, phaseInput, ctx, cacheMode), { hit: false }, `read for phase "${phase.name}"`, renderer);
290
+ if (hit.hit) {
291
+ // The delta was recorded *after* this phase's own cleans, so
292
+ // applying it and then replaying those cleans reproduces exactly
293
+ // the context the phase left behind the first time — including the
294
+ // upstream keys its steps removed.
295
+ merge(ctx, hit.value);
296
+ phaseState.cacheAgeMs = hit.ageMs;
297
+ for (const item of phaseSteps) {
298
+ // Age lives on the phase line here; repeating it per step would
299
+ // just be the same number N times.
300
+ item.state.status = "cached";
301
+ drop(ctx, item.def.clean);
302
+ renderer.onStepEnd(item.state);
303
+ }
304
+ renderer.refresh();
305
+ continue;
306
+ }
307
+ }
308
+ // What this phase contributes to the context, tracked only when there
309
+ // is somewhere to store it.
310
+ const delta = phaseCache ? {} : null;
195
311
  for (const item of phaseSteps) {
196
312
  if (runController.signal.aborted) {
197
313
  failure = {
@@ -201,30 +317,51 @@ export class Script {
201
317
  };
202
318
  break phaseLoop;
203
319
  }
204
- if (item.def.when && !(await item.def.when({ input, ctx }))) {
320
+ if (item.def.when && !(await item.def.when({ input: phaseInput, ctx }))) {
205
321
  item.state.status = "skipped";
206
322
  drop(ctx, item.def.clean);
323
+ drop(delta, item.def.clean);
207
324
  renderer.onStepEnd(item.state);
208
325
  renderer.refresh();
209
326
  continue;
210
327
  }
328
+ const stepCache = normalizeCache(item.def.cache);
329
+ const stepKey = stepSlot(phase.name, item.state.name);
330
+ if (stepCache) {
331
+ const hit = await safely(() => readCache(stepCache, stepKey, phaseInput, ctx, cacheMode), { hit: false }, `read for step "${item.state.name}"`, renderer);
332
+ if (hit.hit) {
333
+ // Never entered `completed`, so this step's rollback cannot fire
334
+ // during a later unwind — the side effect belongs to the run that
335
+ // wrote the entry, and was never undone.
336
+ item.state.status = "cached";
337
+ item.state.cacheAgeMs = hit.ageMs;
338
+ merge(ctx, hit.value);
339
+ merge(delta, hit.value);
340
+ drop(ctx, item.def.clean);
341
+ drop(delta, item.def.clean);
342
+ renderer.onStepEnd(item.state);
343
+ renderer.refresh();
344
+ continue;
345
+ }
346
+ }
211
347
  item.state.status = "running";
212
348
  item.state.startedAt = performance.now();
213
349
  renderer.onStepStart(item.state);
214
350
  renderer.refresh();
351
+ let output;
215
352
  try {
216
- const output = await this.executeStep(item, input, ctx, runController.signal, renderer);
353
+ output = await this.executeStep(item, phaseInput, ctx, runController.signal, renderer);
217
354
  item.state.status = "success";
218
355
  item.state.endedAt = performance.now();
219
356
  delete item.state.statusText;
220
- if (output !== null && typeof output === "object") {
221
- Object.assign(ctx, output);
222
- }
357
+ merge(ctx, output);
358
+ merge(delta, output);
223
359
  // The step said it is done with these; later steps neither see
224
360
  // them at runtime nor have them in their context type. `output`
225
361
  // keeps its own copy, so this step's rollback is unaffected.
226
362
  drop(ctx, item.def.clean);
227
- completed.push({ runtime: item, output });
363
+ drop(delta, item.def.clean);
364
+ completed.push({ runtime: item, output, input: phaseInput });
228
365
  renderer.onStepEnd(item.state);
229
366
  renderer.refresh();
230
367
  }
@@ -238,12 +375,22 @@ export class Script {
238
375
  renderer.refresh();
239
376
  break phaseLoop;
240
377
  }
378
+ // Only reached when the step succeeded — a `break phaseLoop` skips
379
+ // it. Kept outside the try so a store that cannot write never gets
380
+ // mistaken for a handler that threw.
381
+ if (stepCache) {
382
+ await safely(() => writeCache(stepCache, stepKey, output, cacheMode), undefined, `write for step "${item.state.name}"`, renderer);
383
+ }
384
+ }
385
+ // Every step settled without failing, so the delta is complete.
386
+ if (phaseCache && delta) {
387
+ await safely(() => writeCache(phaseCache, slot, delta, cacheMode), undefined, `write for phase "${phase.name}"`, renderer);
241
388
  }
242
389
  }
243
390
  if (failure) {
244
391
  state.status = isAbort(failure.error) ? "aborted" : "failed";
245
392
  state.failure = failure;
246
- await this.unwind(completed, failure, input, ctx, state, rollbacks, rollbackController.signal, renderer);
393
+ await this.unwind(completed, failure, ctx, state, rollbacks, rollbackController.signal, renderer);
247
394
  }
248
395
  else {
249
396
  state.status = "success";
@@ -340,7 +487,7 @@ export class Script {
340
487
  throw lastError;
341
488
  }
342
489
  /** Compensate completed steps in reverse order. */
343
- async unwind(completed, failure, input, ctx, state, rollbacks, signal, renderer) {
490
+ async unwind(completed, failure, ctx, state, rollbacks, signal, renderer) {
344
491
  const mode = this.options.rollback ?? "all";
345
492
  if (mode === "none")
346
493
  return;
@@ -356,7 +503,10 @@ export class Script {
356
503
  entry.runtime.state.status = "rolling-back";
357
504
  renderer.refresh();
358
505
  try {
359
- const context = createRollbackContext({ renderer, step: entry.runtime.state, phaseName: entry.runtime.phaseName }, input,
506
+ const context = createRollbackContext({ renderer, step: entry.runtime.state, phaseName: entry.runtime.phaseName },
507
+ // The input this step actually ran with — a mounted fragment's
508
+ // rollback sees its mount's input, not the host's.
509
+ entry.input,
360
510
  // Only what the step asked for — nothing by default. Reserved keys
361
511
  // can never be cleaned, so they are all still here.
362
512
  pick(ctx, entry.runtime.def.rollbackKeys), entry.output, failure.error, signal);
@@ -419,11 +569,33 @@ export class Script {
419
569
  /* -------------------------------------------------------------------------- */
420
570
  /** Delete a step's `clean` keys from the live context, in place. */
421
571
  function drop(ctx, keys) {
422
- if (!keys)
572
+ if (!ctx || !keys)
423
573
  return;
424
574
  for (const key of keys)
425
575
  delete ctx[key];
426
576
  }
577
+ /** Fold a handler's return value — or a cache hit — into a target object. */
578
+ function merge(target, value) {
579
+ if (!target || value === null || typeof value !== "object")
580
+ return;
581
+ Object.assign(target, value);
582
+ }
583
+ /**
584
+ * Run a cache operation without letting it decide the fate of the run.
585
+ *
586
+ * A store that cannot be read, a `stale` predicate that throws, a disk that is
587
+ * full — none of those mean the work failed. Each is reported as a warning and
588
+ * falls back to doing the work, which is always the safe direction.
589
+ */
590
+ async function safely(action, fallback, what, renderer) {
591
+ try {
592
+ return await action();
593
+ }
594
+ catch (error) {
595
+ renderer.log({ level: "warn", message: `cache ${what} failed: ${errorMessage(error)}` });
596
+ return fallback;
597
+ }
598
+ }
427
599
  /** The `rollbackKeys` slice of the context — `{}` when none were declared. */
428
600
  function pick(ctx, keys) {
429
601
  const picked = {};
@@ -490,6 +662,41 @@ function abortRejection(signal) {
490
662
  export function stepFor() {
491
663
  return (def) => def;
492
664
  }
665
+ /**
666
+ * Declare phases and steps away from any particular script, then mount them
667
+ * with {@link Script.use}.
668
+ *
669
+ * The two parameters are the *minimum* the fragment needs — the input it
670
+ * reads, and the context it expects to already exist — exactly as they are for
671
+ * {@link stepFor}. Whatever it produces flows on into whichever script mounts
672
+ * it, and any script that cannot satisfy the requirement is a compile error at
673
+ * the `use()` call, not an `undefined` at run time.
674
+ *
675
+ * ```ts
676
+ * export const fetchChannel = routineFor<{ channel: string }>()("fetch channel", (s) =>
677
+ * s
678
+ * .addPhase("Fetch")
679
+ * .addStep({ name: "authenticate", handler: … })
680
+ * .addStep({ name: "pull orders", handler: … })
681
+ * .addPhase("Normalize")
682
+ * .addStep({ name: "dedupe", handler: … }),
683
+ * );
684
+ * ```
685
+ *
686
+ * A routine owns whole phases, so phase-level options — `when`, `cache` —
687
+ * travel with it.
688
+ */
689
+ export function routineFor() {
690
+ return (name, build) => {
691
+ const built = build(new Script(name));
692
+ const body = bodies.get(built);
693
+ if (!body)
694
+ throw new StepDefinitionError(name, `routineFor("${name}") must return the script it was given`);
695
+ const routine = { name };
696
+ bodies.set(routine, { ...body, name });
697
+ return routine;
698
+ };
699
+ }
493
700
  /** Convenience factory so callers can skip `new`. */
494
701
  export function script(options) {
495
702
  return new Script(options);
@@ -1 +1 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}