@michaelrwalker/stagehand 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 (30) hide show
  1. package/README.md +22 -1
  2. package/dist/cache.d.ts +1 -1
  3. package/dist/cache.d.ts.map +1 -1
  4. package/dist/cache.js +2 -2
  5. package/dist/cache.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/script.d.ts +55 -18
  10. package/dist/script.d.ts.map +1 -1
  11. package/dist/script.js +38 -6
  12. package/dist/script.js.map +1 -1
  13. package/dist/types.d.ts +71 -14
  14. package/dist/types.d.ts.map +1 -1
  15. package/package.json +1 -1
  16. package/skills/building-scripts/branching-steps/SKILL.md +144 -0
  17. package/skills/building-scripts/command-line-flags/SKILL.md +115 -0
  18. package/skills/building-scripts/getting-started/SKILL.md +1 -1
  19. package/skills/building-scripts/prompting-the-user/SKILL.md +91 -0
  20. package/skills/building-scripts/structuring-phases-and-steps/SKILL.md +5 -1
  21. package/skills/building-scripts/typed-context-and-input/SKILL.md +1 -1
  22. package/skills/caching/caching-expensive-work/SKILL.md +3 -3
  23. package/skills/compensation-safety/adding-rollbacks/SKILL.md +3 -1
  24. package/skills/compensation-safety/cleaning-context/SKILL.md +1 -1
  25. package/skills/compensation-safety/conditional-steps/SKILL.md +19 -3
  26. package/skills/errors-results/handling-results-and-errors/SKILL.md +19 -4
  27. package/skills/observability/log-placement-and-rendering/SKILL.md +1 -1
  28. package/skills/observability/reporting-progress/SKILL.md +3 -1
  29. package/skills/reuse/reusable-routines-and-mounts/SKILL.md +3 -3
  30. package/skills/reuse/splitting-steps-across-files/SKILL.md +1 -1
package/dist/types.d.ts CHANGED
@@ -7,12 +7,34 @@ export type Prettify<T> = {
7
7
  /**
8
8
  * Context after a step contributes `Out`. A step that returns nothing leaves
9
9
  * the context untouched; later keys win over earlier ones.
10
+ *
11
+ * Written to stay *flat*. `Script`'s context parameter is rebuilt by every
12
+ * `addStep`, so whatever this produces is fed straight back in as the next
13
+ * call's `Ctx` — a hundred links deep in a long script. TypeScript re-walks
14
+ * that accumulated type on each link, and its instantiation depth limit (100)
15
+ * is reached after `depth-per-link × links` — so every layer this adds costs
16
+ * roughly a hundredth of the longest chain a script may have before
17
+ * `TS2589: Type instantiation is excessively deep` lands on the whole chain.
18
+ *
19
+ * A plain intersection is the one shape that costs nothing: TypeScript
20
+ * flattens `A & B & C` into a single list of leaves and stops. A mapped type —
21
+ * `Omit`, `Pick`, `Prettify` — does not flatten, so a chain of them has to be
22
+ * walked one level per link. Hence, the three-way split: shadowing a key needs
23
+ * `Omit` and pays for it, and the overwhelmingly common case of a step adding
24
+ * fresh keys does not.
25
+ *
26
+ * `Prettify` deliberately does *not* appear here. It is applied where the
27
+ * context is read — a handler's `ctx`, `RunResult.ctx` — which is where a
28
+ * tooltip is actually wanted, and which is a leaf rather than a link.
10
29
  */
11
- export type Merge<Ctx, Out> = [Out] extends [void] ? Ctx : [Out] extends [undefined] ? Ctx : Prettify<Omit<Ctx, keyof Out> & Out>;
30
+ export type Merge<Ctx, Out> = [Out] extends [void] ? Ctx : [Out] extends [undefined] ? Ctx : [Extract<keyof Ctx, keyof Out>] extends [never] ? Ctx & Out : Omit<Ctx, keyof Out> & Out;
12
31
  /**
13
32
  * Context with `Keys` dropped — what `clean` leaves behind for later steps.
33
+ *
34
+ * Identity when nothing is being cleaned, for the reason spelled out on
35
+ * {@link Merge}: the `Omit` is a chain link, and almost no step cleans.
14
36
  */
15
- export type Cleaned<Ctx, Keys extends PropertyKey> = Prettify<Omit<Ctx, Keys>>;
37
+ export type Cleaned<Ctx, Keys extends PropertyKey> = [Keys] extends [never] ? Ctx : Omit<Ctx, Keys>;
16
38
  /**
17
39
  * The slice of the context a `rollback` sees: exactly the keys it asked for
18
40
  * via `rollbackKeys`, and nothing else. With no keys declared it is `{}` — a
@@ -80,12 +102,14 @@ export interface CacheStore {
80
102
  clear(slot: string): Awaitable<void>;
81
103
  }
82
104
  /** What `stale` gets to decide on. */
83
- export interface StaleContext<In, Ctx> {
105
+ export interface StaleContext<In, Ctx, Flags = unknown> {
84
106
  /** The stored value — the phase's context delta, or the step's return value. */
85
107
  value: unknown;
86
108
  input: In;
87
109
  /** The live context as it stands right now, *before* the entry is applied. */
88
110
  ctx: Ctx;
111
+ /** Values parsed from every `defineFlag` this script declared. */
112
+ flags: Flags;
89
113
  /** Wall-clock ms at which the entry was written. */
90
114
  savedAt: number;
91
115
  /** How old the entry is, in ms. A TTL is `({ ageMs }) => ageMs > 3_600_000`. */
@@ -98,14 +122,14 @@ export interface StaleContext<In, Ctx> {
98
122
  * There is no key: the store *is* the identity. Whether an entry is still
99
123
  * usable is `stale`'s job, and nothing else's.
100
124
  */
101
- export interface CacheOptions<In = unknown, Ctx = unknown, Value = unknown> {
125
+ export interface CacheOptions<In = unknown, Ctx = unknown, Value = unknown, Flags = unknown> {
102
126
  store: CacheStore;
103
127
  /**
104
128
  * Return true to treat the stored entry as a miss — the work runs again and
105
129
  * the entry is overwritten. Given `value` as `unknown`; annotate the
106
130
  * parameter yourself, or hand over a `schema` and let it do the narrowing.
107
131
  */
108
- stale?: (context: StaleContext<In, Ctx>) => Awaitable<boolean>;
132
+ stale?: (context: StaleContext<In, Ctx, Flags>) => Awaitable<boolean>;
109
133
  /**
110
134
  * Checked against the stored value on every read. A stored value that no
111
135
  * longer fits is a **miss**, not an error — which is what keeps a cache
@@ -114,7 +138,7 @@ export interface CacheOptions<In = unknown, Ctx = unknown, Value = unknown> {
114
138
  */
115
139
  schema?: StandardSchemaV1<unknown, Value>;
116
140
  }
117
- export type CacheSource<In = unknown, Ctx = unknown, Value = unknown> = CacheStore | CacheOptions<In, Ctx, Value>;
141
+ export type CacheSource<In = unknown, Ctx = unknown, Value = unknown, Flags = unknown> = CacheStore | CacheOptions<In, Ctx, Value, Flags>;
118
142
  /**
119
143
  * The value type a slot reads back as.
120
144
  *
@@ -290,8 +314,14 @@ export interface PromptHandle {
290
314
  export interface StepContext<In, Ctx, Slots = UnknownSlots, Flags = UnknownFlags> {
291
315
  /** The input the script was run with. */
292
316
  readonly input: In;
293
- /** Data produced by every step that has already succeeded. */
294
- readonly ctx: Ctx;
317
+ /**
318
+ * Data produced by every step that has already succeeded.
319
+ *
320
+ * `Prettify` here rather than on {@link Merge}: this is a leaf — nothing is
321
+ * accumulated off it — so flattening for the tooltip costs one instantiation
322
+ * instead of one per step in the whole chain.
323
+ */
324
+ readonly ctx: Prettify<Ctx>;
295
325
  /** Aborts on timeout, on Ctrl-C, or when `run` is canceled. */
296
326
  readonly signal: AbortSignal;
297
327
  /** 1 on the first try, 2 on the first retry, and so on. */
@@ -403,6 +433,7 @@ export interface StepDef<In, Ctx, Out, RollbackKeys extends readonly PropertyKey
403
433
  when?: (context: {
404
434
  input: In;
405
435
  ctx: Ctx;
436
+ flags: Flags;
406
437
  }) => Awaitable<boolean>;
407
438
  /**
408
439
  * Reuse this step's return value from a previous run instead of running the
@@ -415,7 +446,30 @@ export interface StepDef<In, Ctx, Out, RollbackKeys extends readonly PropertyKey
415
446
  * cache: { store: fileStore("./cache.json"), stale: ({ ageMs }) => ageMs > 60_000 }
416
447
  * ```
417
448
  */
418
- cache?: CacheSource<In, Ctx>;
449
+ cache?: CacheSource<In, Ctx, unknown, Flags>;
450
+ retry?: RetryPolicy;
451
+ timeoutMs?: number;
452
+ }
453
+ /**
454
+ * A step that does one of two jobs and hands back the same shape either way.
455
+ *
456
+ * `onTrue` is the source of truth for `Out`; `onFalse` has to return something
457
+ * assignable to it, so every later step sees one `ctx` type whichever arm ran.
458
+ * That is the difference from `when`, which skips a step and leaves nothing
459
+ * behind for the steps that depended on it.
460
+ *
461
+ * Deliberately small: no `rollback`, no `cache`, no `clean`. Cache the phase
462
+ * the branch sits in, and `clean` in a later step.
463
+ */
464
+ export interface BranchDef<In, Ctx, Out, Slots = UnknownSlots, Flags = UnknownFlags> {
465
+ name: string;
466
+ description?: string;
467
+ /** Picks the arm. May be async; evaluated once per attempt. */
468
+ condition: (context: StepContext<In, Ctx, Slots, Flags>) => Awaitable<boolean>;
469
+ /** Runs when `condition` resolves truthy. Its return type fixes `Out`. */
470
+ onTrue: (context: StepContext<In, Ctx, Slots, Flags>) => Awaitable<Out>;
471
+ /** Runs otherwise. Must return the same shape as `onTrue`. */
472
+ onFalse: (context: StepContext<In, Ctx, Slots, Flags>) => Awaitable<NoInfer<Out>>;
419
473
  retry?: RetryPolicy;
420
474
  timeoutMs?: number;
421
475
  }
@@ -467,9 +521,10 @@ export interface InheritedKeyStepDef<In, Ctx, Out, RollbackKeys extends readonly
467
521
  when?: (context: {
468
522
  input: In;
469
523
  ctx: Ctx;
524
+ flags: Flags;
470
525
  }) => Awaitable<boolean>;
471
526
  /** See {@link StepDef.cache}. */
472
- cache?: CacheSource<In, Ctx>;
527
+ cache?: CacheSource<In, Ctx, unknown, Flags>;
473
528
  retry?: RetryPolicy;
474
529
  timeoutMs?: number;
475
530
  }
@@ -518,12 +573,13 @@ export type WithStepFor<Step extends {
518
573
  }, Rest extends object = {}> = Step extends {
519
574
  handler: (context: never) => infer Out;
520
575
  } ? Merge<Rest, Awaited<Out>> : never;
521
- export interface PhaseOptions<In = unknown, Ctx = unknown> {
576
+ export interface PhaseOptions<In = unknown, Ctx = unknown, Flags = unknown> {
522
577
  description?: string;
523
578
  /** Skip every step in the phase when this resolves falsy. */
524
579
  when?: (context: {
525
580
  input: In;
526
581
  ctx: Ctx;
582
+ flags: Flags;
527
583
  }) => Awaitable<boolean>;
528
584
  /**
529
585
  * Reuse this phase's work from a previous run. What gets stored is the
@@ -531,8 +587,9 @@ export interface PhaseOptions<In = unknown, Ctx = unknown> {
531
587
  * anything they cleaned — so a hit skips every step and merges that delta
532
588
  * over the live context, leaving keys from earlier phases alone.
533
589
  *
534
- * `stale` and `when` see the context as it stands when the phase is reached,
535
- * which is exactly `Ctx` here, so both are typed without any annotation.
590
+ * `stale` and `when` see the context (and `flags`) as they stand when the
591
+ * phase is reached, which is exactly `Ctx`/`Flags` here, so both are typed
592
+ * without any annotation.
536
593
  *
537
594
  * ```ts
538
595
  * .addPhase("Build", {
@@ -543,7 +600,7 @@ export interface PhaseOptions<In = unknown, Ctx = unknown> {
543
600
  * })
544
601
  * ```
545
602
  */
546
- cache?: CacheSource<In, Ctx>;
603
+ cache?: CacheSource<In, Ctx, unknown, Flags>;
547
604
  }
548
605
  export interface ScriptOptions {
549
606
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michaelrwalker/stagehand",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Fully typesafe saga-style script framework with modern terminal visuals",
5
5
  "homepage": "https://michaelrwalker.netlify.app/stagehand",
6
6
  "type": "module",
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: 'branching-steps'
3
+ description: >
4
+ Covers `addBranch` — a step that runs `onTrue` or `onFalse` depending on `condition`, with both
5
+ arms required to return the same shape so `ctx` stays accurately typed whichever one ran. Load this
6
+ for "an override flag changes how a value is produced but later steps need it either way," "do X or
7
+ Y and keep the context typed," or when `when` skipped a step and a later step crashed on a missing
8
+ `ctx` key.
9
+ metadata:
10
+ type: 'core'
11
+ library: 'stagehand'
12
+ library_version: '0.8.0'
13
+ sources:
14
+ - 'miaklwalker/stagehand:docs/guides/phases-and-steps.md'
15
+ - 'miaklwalker/stagehand:docs/reference/script.md'
16
+ - 'miaklwalker/stagehand:src/script.ts'
17
+ - 'miaklwalker/stagehand:test/branch.test.ts'
18
+ ---
19
+
20
+ # Stagehand — Branching Steps
21
+
22
+ `addBranch` is a step with an if/else inside it. `condition` picks the arm, `onTrue` / `onFalse` do the work, and both return the same shape — so every later step sees one `ctx` type, no matter which arm ran. Use it instead of `when` whenever later steps depend on what the step produces.
23
+
24
+ ## Setup
25
+
26
+ ```ts
27
+ import { Script } from "@michaelrwalker/stagehand";
28
+
29
+ const result = await new Script<{ service: string }>({ name: "deploy" })
30
+ .defineFlag({ name: "sha" })
31
+ .addPhase("Resolve")
32
+ .addBranch({
33
+ name: "resolve commit",
34
+ condition: ({ flags }) => Boolean(flags.sha),
35
+ onTrue: ({ flags }) => ({ sha: flags.sha as string }),
36
+ onFalse: async ({ input }) => ({ sha: await git.head(input.service) }),
37
+ })
38
+ .addStep({
39
+ name: "build",
40
+ handler: ({ ctx }) => ({ image: `app:${ctx.sha}` }), // ctx.sha: string
41
+ })
42
+ .run({ service: "checkout-api" }, { argv: ["--sha", "abc1234"] });
43
+ ```
44
+
45
+ ## Core Patterns
46
+
47
+ ### Everything a handler gets, in all three functions
48
+
49
+ `condition`, `onTrue` and `onFalse` each receive the normal step context — `input`, `ctx`, `flags`, `status`, `note`, `log`, `prompt`, `signal`. `condition` may be async and runs once per attempt; only the chosen arm executes.
50
+
51
+ ```ts
52
+ .addBranch({
53
+ name: "pick target",
54
+ condition: async ({ ctx }) => await isReachable(ctx.host),
55
+ onTrue: ({ ctx }) => ({ target: ctx.host }),
56
+ onFalse: async ({ prompt }) => ({ target: await prompt.text({ message: "fallback host?", default: "localhost" }) }),
57
+ })
58
+ ```
59
+
60
+ ### Retry and timeout cover the whole branch
61
+
62
+ ```ts
63
+ .addBranch({
64
+ name: "resolve commit",
65
+ retry: { attempts: 3, delayMs: 250 },
66
+ timeoutMs: 10_000,
67
+ condition: ({ flags }) => Boolean(flags.sha),
68
+ onTrue: ({ flags }) => ({ sha: flags.sha as string }),
69
+ onFalse: async ({ input }) => ({ sha: await git.head(input.service) }),
70
+ })
71
+ ```
72
+
73
+ A retry re-evaluates `condition` and re-runs the arm. Those two options, plus `name` and `description`, are the whole surface.
74
+
75
+ ### Caching a branch: cache the phase
76
+
77
+ ```ts
78
+ .addPhase("Resolve", { cache: store })
79
+ .addBranch({ name: "resolve commit", /* ... */ })
80
+ ```
81
+
82
+ A branch has no `cache` of its own. A cached phase stores the merged output of every step in it, branch included.
83
+
84
+ ## Common Mistakes
85
+
86
+ ### HIGH Using `when` where later steps need the output
87
+
88
+ Wrong:
89
+ ```ts
90
+ .addStep({ name: "head sha", when: ({ flags }) => !flags.sha, handler: async () => ({ sha: await git.head() }) })
91
+ .addStep({ name: "build", handler: ({ ctx }) => ctx.sha.slice(0, 7) }) // compiles; crashes with --sha set
92
+ ```
93
+
94
+ Correct:
95
+ ```ts
96
+ .addBranch({
97
+ name: "resolve commit",
98
+ condition: ({ flags }) => Boolean(flags.sha),
99
+ onTrue: ({ flags }) => ({ sha: flags.sha as string }),
100
+ onFalse: async () => ({ sha: await git.head() }),
101
+ })
102
+ ```
103
+
104
+ `when` skips the step but `ctx` is still typed as though it ran. A branch always produces the keys.
105
+
106
+ ### MEDIUM Arms returning different shapes
107
+
108
+ Wrong:
109
+ ```ts
110
+ onTrue: () => ({ sha: "abc" }),
111
+ onFalse: () => ({ commit: "abc" }), // compile error on onFalse
112
+ ```
113
+
114
+ Correct:
115
+ ```ts
116
+ onTrue: () => ({ sha: "abc" }),
117
+ onFalse: () => ({ sha: "abc" }),
118
+ ```
119
+
120
+ `onTrue`'s return type fixes `Out`; `onFalse` must be assignable to it. If one path has no value, return an explicit default (`{ sha: undefined }` on both arms, or `sha: string | undefined` in `onTrue`) rather than omitting the key.
121
+
122
+ ### MEDIUM Expecting `rollback`, `cache`, `clean` or `when` on a branch
123
+
124
+ Wrong:
125
+ ```ts
126
+ .addBranch({ name: "b", condition, onTrue, onFalse, rollback: async () => {} }) // not accepted
127
+ ```
128
+
129
+ Correct:
130
+ ```ts
131
+ // If the work needs compensation, make it a plain addStep with its own rollback
132
+ // and branch inside the handler; cache the enclosing phase; clean in a later step.
133
+ .addStep({
134
+ name: "provision",
135
+ handler: async ({ input }) => ({ id: input.existingId ?? (await create()) }),
136
+ rollback: async ({ output }) => destroy(output.id),
137
+ })
138
+ ```
139
+
140
+ A branch is intentionally minimal: no compensation, no step-level cache, no `clean`, no `when`.
141
+
142
+ Source: docs/guides/phases-and-steps.md; src/types.ts `BranchDef`
143
+
144
+ See also: skills/compensation-safety/conditional-steps/SKILL.md — `when` is for work that may simply not happen; `addBranch` is for work that always happens in one of two ways.
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: 'command-line-flags'
3
+ description: >
4
+ Covers `defineFlag` and `context.flags` — typed string and boolean flags parsed from argv once before
5
+ any phase runs, `long`/`short` aliases, defaults, `UnknownFlagError` / `MissingFlagValueError`,
6
+ `run(input, { argv })` for tests, and mapping a flag onto a mounted routine's input. Load this for
7
+ "add a --force or --env flag," "gate a step on a CLI flag," or "test a script with flags."
8
+ metadata:
9
+ type: 'core'
10
+ library: 'stagehand'
11
+ library_version: '0.8.0'
12
+ sources:
13
+ - 'miaklwalker/stagehand:docs/guides/flags.md'
14
+ - 'miaklwalker/stagehand:docs/reference/script.md'
15
+ - 'miaklwalker/stagehand:src/flags.ts'
16
+ - 'miaklwalker/stagehand:src/script.ts'
17
+ - 'miaklwalker/stagehand:test/flags.test.ts'
18
+ ---
19
+
20
+ # Stagehand — Command-Line Flags
21
+
22
+ `defineFlag` declares a flag. `run()` parses `process.argv` once, before any phase, and every step, `when`, `stale` and rollback receives the result as `flags`, typed from the declarations.
23
+
24
+ ## Setup
25
+
26
+ ```ts
27
+ import { Script } from "@michaelrwalker/stagehand";
28
+
29
+ await new Script({ name: "deploy" })
30
+ .defineFlag({ name: "environment", long: "env", short: "e", default: "staging" })
31
+ .defineFlag({ name: "force", short: "f", boolean: true })
32
+ .addStep({
33
+ name: "ship",
34
+ handler: ({ flags }) => {
35
+ // flags.environment: string flags.force: boolean
36
+ return { env: flags.environment };
37
+ },
38
+ })
39
+ .run();
40
+ // myScript --env production -f
41
+ ```
42
+
43
+ ## Core Patterns
44
+
45
+ ### String vs boolean
46
+
47
+ A string flag with a `default` is `string`; without one it is `string | undefined`. A boolean flag (`boolean: true`) is presence-based, never consumes the next token, and resolves to `default ?? false`. `--flag=value` and `--flag value` both work; `--force=false` is honoured.
48
+
49
+ ### Gate work on a flag
50
+
51
+ ```ts
52
+ .addPhase("Publish", { when: ({ flags }) => flags.production })
53
+ .addStep({ name: "notify", when: ({ flags }) => !flags.quiet, handler: async () => {} })
54
+ .addPhase("Build", { cache: { store, stale: ({ flags }) => flags.fresh } })
55
+ ```
56
+
57
+ When the flag changes *how* a value is produced rather than *whether* a step runs, use `addBranch` (see skills/building-scripts/branching-steps/SKILL.md).
58
+
59
+ ### Test with `argv`
60
+
61
+ ```ts
62
+ const result = await script.run({ service: "api" }, { argv: ["--env", "production"] });
63
+ ```
64
+
65
+ `argv` replaces `process.argv.slice(2)`; use it in tests and when the script is one subcommand of a bigger CLI.
66
+
67
+ ### Hand a flag to a routine
68
+
69
+ ```ts
70
+ new Script({ name: "sync" })
71
+ .defineFlag({ name: "environment", long: "env", default: "staging" })
72
+ .use(pullChannel, { input: ({ flags }) => ({ env: flags.environment }) })
73
+ ```
74
+
75
+ ## Common Mistakes
76
+
77
+ ### HIGH Declaring flags on a routine
78
+
79
+ Wrong:
80
+ ```ts
81
+ routineFor<{ env: string }>()("pull", (script) => script.defineFlag({ name: "env" })) // flags are top-level only
82
+ ```
83
+
84
+ Correct:
85
+ ```ts
86
+ // declare on the script you run; pass it down through use()'s input mapper
87
+ ```
88
+
89
+ `defineFlag` belongs to the entry script. A mounted script's flags are not merged into the host, and a routine's `flags` are typed loosely (`Record<string, unknown>`).
90
+
91
+ ### MEDIUM Expecting `run()` to return `{ ok: false }` for a bad flag
92
+
93
+ Wrong:
94
+ ```ts
95
+ const result = await script.run(undefined, { argv: ["--nope"] });
96
+ if (!result.ok) { /* never reached */ }
97
+ ```
98
+
99
+ Correct:
100
+ ```ts
101
+ try { await script.run(undefined, { argv }); }
102
+ catch (error) { if (error instanceof UnknownFlagError) console.error(error.flag); }
103
+ ```
104
+
105
+ `UnknownFlagError` and `MissingFlagValueError` are thrown directly, before any phase, and ignore `throwOnError`.
106
+
107
+ ### MEDIUM Assuming undeclared flags are always rejected
108
+
109
+ A script with **no** `defineFlag` call ignores argv entirely; the unknown-flag check starts at the first declaration. Adding a first flag can therefore break a script that read `process.argv` by hand.
110
+
111
+ ### LOW Duplicate names
112
+
113
+ `defineFlag` throws `DuplicateNameError` (`kind: "flag"`) if `name`, the resolved long form, or `short` is already used.
114
+
115
+ Source: docs/guides/flags.md; src/flags.ts
@@ -7,7 +7,7 @@ description: >
7
7
  metadata:
8
8
  type: 'lifecycle'
9
9
  library: 'stagehand'
10
- library_version: '0.5.3'
10
+ library_version: '0.8.0'
11
11
  sources:
12
12
  - 'miaklwalker/stagehand:README.md'
13
13
  - 'miaklwalker/stagehand:docs/quick-start.md'
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: 'prompting-the-user'
3
+ description: >
4
+ Covers `context.prompt` — `text`, `confirm`, `select` and `multiselect` asked mid-step, the
5
+ non-interactive `default` fallback, `PromptUnavailableError`, and Ctrl-C cancellation via
6
+ `PromptCancelledError`. Load this for "ask for confirmation before a destructive step," "let the
7
+ user pick an environment," or "make an interactive script runnable in CI."
8
+ metadata:
9
+ type: 'core'
10
+ library: 'stagehand'
11
+ library_version: '0.8.0'
12
+ sources:
13
+ - 'miaklwalker/stagehand:docs/guides/prompts.md'
14
+ - 'miaklwalker/stagehand:docs/reference/errors.md'
15
+ - 'miaklwalker/stagehand:src/ui/prompt.ts'
16
+ - 'miaklwalker/stagehand:test/prompt.test.ts'
17
+ ---
18
+
19
+ # Stagehand — Prompting the User
20
+
21
+ `prompt` is on a step handler's context. Calling it suspends the live frame, draws the question, and repaints once answered. It is hand-rolled on the renderer's ANSI primitives, so there is no extra dependency.
22
+
23
+ ## Setup
24
+
25
+ ```ts
26
+ .addStep({
27
+ name: "confirm production",
28
+ handler: async ({ flags, prompt }) => {
29
+ if (flags.environment === "production" && !flags.force) {
30
+ const ok = await prompt.confirm({ message: "Deploy to production?", default: false });
31
+ if (!ok) throw new Error("cancelled by user");
32
+ }
33
+ return {};
34
+ },
35
+ })
36
+ ```
37
+
38
+ ## Core Patterns
39
+
40
+ | method | resolves to |
41
+ | --- | --- |
42
+ | `prompt.text({ message, default?, placeholder?, validate?, mask? })` | `string` |
43
+ | `prompt.confirm({ message, default? })` | `boolean` |
44
+ | `prompt.select({ message, choices, default? })` | the chosen `value` |
45
+ | `prompt.multiselect({ message, choices, default?, min?, max? })` | `value[]` |
46
+
47
+ `choices` are `{ label, value, hint? }`. `validate` returns `true` or an error string, may be async. `mask: true` echoes `•`.
48
+
49
+ ### Always give a `default` if the script may run unattended
50
+
51
+ With no TTY (CI, a pipe) nothing is drawn: a `default` is returned immediately, and a missing one throws `PromptUnavailableError`.
52
+
53
+ ### Prefer a flag, prompt only as the fallback
54
+
55
+ ```ts
56
+ const environment = flags.environment ?? (await prompt.select({ message: "environment?", choices, default: "staging" }));
57
+ ```
58
+
59
+ ## Common Mistakes
60
+
61
+ ### HIGH Prompting without a `default` in a script CI runs
62
+
63
+ Wrong:
64
+ ```ts
65
+ const tag = await prompt.text({ message: "release tag?" }); // PromptUnavailableError under CI
66
+ ```
67
+
68
+ Correct:
69
+ ```ts
70
+ const tag = await prompt.text({ message: "release tag?", default: "latest" });
71
+ ```
72
+
73
+ ### MEDIUM Treating Ctrl-C at a prompt as a handler failure
74
+
75
+ Wrong:
76
+ ```ts
77
+ if (!result.ok) report(result.error); // reports a cancellation as a bug
78
+ ```
79
+
80
+ Correct:
81
+ ```ts
82
+ if (!result.ok && isAbort(result.error)) { /* result.status === "aborted"; rollback policy applied */ }
83
+ ```
84
+
85
+ `PromptCancelledError` is recognised by `isAbort`, so the run unwinds exactly like a SIGINT.
86
+
87
+ ### MEDIUM Prompting from a rollback
88
+
89
+ `prompt` exists only on `StepContext`. A rollback runs during an unwind and cannot stop to ask; decide inside the step and keep what the rollback needs in `rollbackKeys`.
90
+
91
+ Source: docs/guides/prompts.md; src/ui/prompt.ts
@@ -5,7 +5,7 @@ description: >
5
5
  metadata:
6
6
  type: 'core'
7
7
  library: 'stagehand'
8
- library_version: '0.5.3'
8
+ library_version: '0.8.0'
9
9
  sources:
10
10
  - 'miaklwalker/stagehand:docs/guides/phases-and-steps.md'
11
11
  - 'miaklwalker/stagehand:docs/guides/script-options-and-result.md'
@@ -60,6 +60,10 @@ new Script<{ n: number }>({ name: "t" })
60
60
 
61
61
  The callback form groups a phase's steps visually while preserving the same type flow as the flat form; the two are interchangeable.
62
62
 
63
+ ### Two ways to do one step: `addBranch`
64
+
65
+ `addBranch({ name, condition, onTrue, onFalse })` runs one of two arms that return the same shape, so the context stays typed either way. It takes `retry` and `timeoutMs` like any step, but no `rollback`, `cache` or `clean`. See skills/building-scripts/branching-steps/SKILL.md.
66
+
63
67
  ### Retry with backoff and veto specific errors
64
68
 
65
69
  ```ts
@@ -10,7 +10,7 @@ description: >
10
10
  metadata:
11
11
  type: 'core'
12
12
  library: 'stagehand'
13
- library_version: '0.5.3'
13
+ library_version: '0.8.0'
14
14
  sources:
15
15
  - 'miaklwalker/stagehand:docs/guides/typed-context.md'
16
16
  - 'miaklwalker/stagehand:docs/reference/errors.md'
@@ -10,7 +10,7 @@ description: >
10
10
  metadata:
11
11
  type: 'core'
12
12
  library: 'stagehand'
13
- library_version: '0.5.3'
13
+ library_version: '0.8.0'
14
14
  sources:
15
15
  - 'miaklwalker/stagehand:docs/guides/caching.md'
16
16
  - 'miaklwalker/stagehand:docs/reference/cache.md'
@@ -71,14 +71,14 @@ const BuildSchema = z.object({ artifact: z.string() });
71
71
  name: "compile",
72
72
  cache: {
73
73
  store: cache,
74
- stale: ({ value, ctx, ageMs }) => ageMs > 3_600_000,
74
+ stale: ({ value, ctx, flags, ageMs }) => flags.fresh || ageMs > 3_600_000,
75
75
  schema: BuildSchema,
76
76
  },
77
77
  handler: async ({ input }) => ({ artifact: `dist/${input.ref}.tgz` }),
78
78
  })
79
79
  ```
80
80
 
81
- `stale` and `schema` both see the live context as of that step; a stored
81
+ `stale` and `schema` both see the live context as of that step (`stale` also gets `flags`, so a `--fresh` flag can force a miss); a stored
82
82
  value that fails `schema` is treated as a miss, not an error.
83
83
 
84
84
  ### Controlling caching per run without touching the script