@michaelrwalker/stagehand 0.5.3 → 0.6.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.
Files changed (37) hide show
  1. package/README.md +8 -2
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/script.d.ts +40 -20
  6. package/dist/script.d.ts.map +1 -1
  7. package/dist/script.js +4 -1
  8. package/dist/script.js.map +1 -1
  9. package/dist/types.d.ts +54 -0
  10. package/dist/types.d.ts.map +1 -1
  11. package/dist/ui/ansi.d.ts +12 -2
  12. package/dist/ui/ansi.d.ts.map +1 -1
  13. package/dist/ui/ansi.js +14 -2
  14. package/dist/ui/ansi.js.map +1 -1
  15. package/dist/ui/frame.d.ts +22 -2
  16. package/dist/ui/frame.d.ts.map +1 -1
  17. package/dist/ui/frame.js +38 -15
  18. package/dist/ui/frame.js.map +1 -1
  19. package/dist/ui/renderer.d.ts +6 -4
  20. package/dist/ui/renderer.d.ts.map +1 -1
  21. package/dist/ui/renderer.js +17 -9
  22. package/dist/ui/renderer.js.map +1 -1
  23. package/package.json +10 -5
  24. package/skills/building-scripts/getting-started/SKILL.md +210 -0
  25. package/skills/building-scripts/structuring-phases-and-steps/SKILL.md +197 -0
  26. package/skills/building-scripts/typed-context-and-input/SKILL.md +188 -0
  27. package/skills/building-scripts/typed-context-and-input/references/context-type-utilities.md +121 -0
  28. package/skills/caching/caching-expensive-work/SKILL.md +285 -0
  29. package/skills/caching/caching-expensive-work/references/cache-api.md +278 -0
  30. package/skills/compensation-safety/adding-rollbacks/SKILL.md +400 -0
  31. package/skills/compensation-safety/cleaning-context/SKILL.md +165 -0
  32. package/skills/compensation-safety/conditional-steps/SKILL.md +199 -0
  33. package/skills/errors-results/handling-results-and-errors/SKILL.md +281 -0
  34. package/skills/observability/log-placement-and-rendering/SKILL.md +167 -0
  35. package/skills/observability/reporting-progress/SKILL.md +203 -0
  36. package/skills/reuse/reusable-routines-and-mounts/SKILL.md +243 -0
  37. package/skills/reuse/splitting-steps-across-files/SKILL.md +226 -0
package/dist/ui/frame.js CHANGED
@@ -224,14 +224,27 @@ export function bodyBudget() {
224
224
  return Math.max(6, (process.stdout.rows ?? 40) - 3);
225
225
  }
226
226
  /**
227
- * The live body, guaranteed to fit `bodyBudget()`.
227
+ * The live body, guaranteed to fit `bodyBudget()`, plus the tier it took to
228
+ * get there.
228
229
  *
229
230
  * This guarantee is load-bearing, not cosmetic: the renderer repaints by moving
230
231
  * the cursor up N lines, so a frame taller than the viewport scrolls its own
231
232
  * top off screen and every repaint appends a copy instead of overwriting. Four
232
233
  * progressively stronger reductions are tried, and the result is clamped.
234
+ *
235
+ * `minTier` exists so a caller that repaints repeatedly can pin the tier once
236
+ * it has had to compress: an active step's own detail (its progress bar, its
237
+ * task list) and a `"bottom"`-placed log tail both change height every tick on
238
+ * their own, with nothing about *other*, already-finished phases changing at
239
+ * all. Re-deciding "does everything fit?" from scratch on every frame means
240
+ * that harmless wobble alone repeatedly drags the whole body across the fit
241
+ * threshold — every finished phase flips between full and one-line collapsed
242
+ * along with it, which reads as the frame randomly changing its mind rather
243
+ * than reacting to anything the user did. Once a tier has been needed, holding
244
+ * it keeps already-settled phases settled even while the active step's own
245
+ * footprint keeps moving.
233
246
  */
234
- export function renderBody(state, tick, now, fit = true) {
247
+ export function renderBodyTiered(state, tick, now, fit = true, minTier = 1) {
235
248
  const budget = bodyBudget();
236
249
  const tail = renderLogTail(state.logTail);
237
250
  const build = (mode, stepBudget) => {
@@ -246,30 +259,40 @@ export function renderBody(state, tick, now, fit = true) {
246
259
  // The closing frame is written permanently and never repainted, so it may
247
260
  // scroll freely — keep every step visible there.
248
261
  if (!fit)
249
- return [...build(() => "full"), ...tail];
262
+ return { lines: [...build(() => "full"), ...tail], tier: 1 };
250
263
  const done = (phase) => {
251
264
  const status = phaseStatus(phase);
252
- return status === "success" || status === "skipped";
265
+ return status === "success" || status === "skipped" || status === "cached";
253
266
  };
254
267
  const active = (phase) => phaseStatus(phase) === "running";
255
268
  // 1. Everything, in full.
256
- let out = build(() => "full");
257
- if (out.length + tail.length <= budget)
258
- return [...out, ...tail];
269
+ if (minTier <= 1) {
270
+ const out = build(() => "full");
271
+ if (out.length + tail.length <= budget)
272
+ return { lines: [...out, ...tail], tier: 1 };
273
+ }
259
274
  // 2. Finished phases become one line each.
260
- out = build((phase) => (done(phase) ? "collapsed" : "full"));
261
- if (out.length + tail.length <= budget)
262
- return [...out, ...tail];
275
+ if (minTier <= 2) {
276
+ const out = build((phase) => (done(phase) ? "collapsed" : "full"));
277
+ if (out.length + tail.length <= budget)
278
+ return { lines: [...out, ...tail], tier: 2 };
279
+ }
263
280
  // 3. Only the running phase keeps its steps, and drops its detail lines.
264
- out = build((phase) => (active(phase) ? "compact" : "collapsed"));
265
- if (out.length + tail.length <= budget)
266
- return [...out, ...tail];
281
+ if (minTier <= 3) {
282
+ const out = build((phase) => (active(phase) ? "compact" : "collapsed"));
283
+ if (out.length + tail.length <= budget)
284
+ return { lines: [...out, ...tail], tier: 3 };
285
+ }
267
286
  // 4. Window the running phase's steps around the one actually executing.
268
287
  const overhead = state.phases.filter((phase) => !active(phase)).length * 2;
269
- out = build((phase) => (active(phase) ? "compact" : "collapsed"), Math.max(1, budget - overhead - 2 - tail.length));
288
+ const out = build((phase) => (active(phase) ? "compact" : "collapsed"), Math.max(1, budget - overhead - 2 - tail.length));
270
289
  const combined = [...out, ...tail];
271
290
  // Last resort: a phase with a huge task list, or a viewport of a few rows.
272
- return combined.length <= budget ? combined : combined.slice(0, budget);
291
+ return { lines: combined.length <= budget ? combined : combined.slice(0, budget), tier: 4 };
292
+ }
293
+ /** Convenience wrapper over {@link renderBodyTiered} for callers that just want the lines. */
294
+ export function renderBody(state, tick, now, fit = true, minTier = 1) {
295
+ return renderBodyTiered(state, tick, now, fit, minTier).lines;
273
296
  }
274
297
  export function renderSummary(state, now) {
275
298
  const width = frameWidth();
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ui/frame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ui/frame.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export declare class LiveRenderer implements Renderer {
21
21
  private stopped;
22
22
  private lastPaintAt;
23
23
  private lastFrame;
24
+ /** Never lowered mid-run — see {@link renderBodyTiered} for why. */
25
+ private tier;
24
26
  private readonly logPlacement;
25
27
  constructor(logPlacement?: LogPlacement);
26
28
  start(state: RunState): void;
@@ -44,10 +46,10 @@ export declare class LiveRenderer implements Renderer {
44
46
  /** Returns the escape sequence to erase the live region, and marks it erased. */
45
47
  private eraseSequence;
46
48
  /**
47
- * Single write, bookended with the synchronized-output escape so terminals
48
- * that honour it (Windows Terminal, recent xterm/VTE/Ghostty/iTerm) paint
49
- * the erase and the new content atomically instead of as two frames — the
50
- * two-frame version is what reads as flicker/blinking.
49
+ * Single write so the erase and the new content always land together.
50
+ * On Windows Terminal that alone can still leave a gap the DirectX
51
+ * renderer presents as a blank frame, so it additionally gets the
52
+ * synchronized-output bookend — see `supportsSyncOutput()`.
51
53
  */
52
54
  private paintFrame;
53
55
  private write;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { cursor, sync } from "./ansi.js";
1
+ import { cursor, sync, supportsSyncOutput } from "./ansi.js";
2
2
  import { palette, supportsAnimation, symbols } from "./theme.js";
3
- import { renderBody, renderHeader, renderLogEntry, renderSummary } from "./frame.js";
3
+ import { renderBodyTiered, renderHeader, renderLogEntry, renderSummary } from "./frame.js";
4
4
  import { elapsed, errorMessage, formatDuration, } from "../state.js";
5
5
  const FRAME_INTERVAL_MS = 80;
6
6
  const MIN_REPAINT_MS = 32;
@@ -22,6 +22,8 @@ export class LiveRenderer {
22
22
  stopped = false;
23
23
  lastPaintAt = 0;
24
24
  lastFrame = null;
25
+ /** Never lowered mid-run — see {@link renderBodyTiered} for why. */
26
+ tier = 1;
25
27
  logPlacement;
26
28
  constructor(logPlacement = "scrollback") {
27
29
  this.logPlacement = logPlacement;
@@ -29,6 +31,7 @@ export class LiveRenderer {
29
31
  start(state) {
30
32
  this.state = state;
31
33
  this.stopped = false;
34
+ this.tier = 1;
32
35
  this.write(renderHeader(state).join("\n") + "\n");
33
36
  this.stream.write(cursor.hide);
34
37
  this.stream.on("resize", this.onResize);
@@ -47,6 +50,9 @@ export class LiveRenderer {
47
50
  onResize = () => {
48
51
  this.liveLines = 0;
49
52
  this.lastFrame = null;
53
+ // The viewport itself changed, so the tier this run had settled into may
54
+ // no longer be the right one either way — give it a fresh decision.
55
+ this.tier = 1;
50
56
  this.paint();
51
57
  };
52
58
  /**
@@ -95,7 +101,7 @@ export class LiveRenderer {
95
101
  this.stream.off("resize", this.onResize);
96
102
  const now = performance.now();
97
103
  const final = [
98
- ...renderBody(this.state, this.tick, now, false),
104
+ ...renderBodyTiered(this.state, this.tick, now, false).lines,
99
105
  ...renderSummary(this.state, now),
100
106
  ];
101
107
  this.paintFrame(this.eraseSequence() + final.join("\n") + "\n");
@@ -109,7 +115,9 @@ export class LiveRenderer {
109
115
  // backstop that keeps the up-N-lines invariant true no matter what, since
110
116
  // a frame taller than the terminal scrolls its own anchor off screen.
111
117
  const maxLines = Math.max(1, (process.stdout.rows ?? 40) - 1);
112
- const body = renderBody(this.state, this.tick, now).slice(0, maxLines);
118
+ const rendered = renderBodyTiered(this.state, this.tick, now, true, this.tier);
119
+ this.tier = rendered.tier;
120
+ const body = rendered.lines.slice(0, maxLines);
113
121
  const frame = body.join("\n");
114
122
  if (frame === this.lastFrame) {
115
123
  this.lastPaintAt = now;
@@ -135,13 +143,13 @@ export class LiveRenderer {
135
143
  return seq;
136
144
  }
137
145
  /**
138
- * Single write, bookended with the synchronized-output escape so terminals
139
- * that honour it (Windows Terminal, recent xterm/VTE/Ghostty/iTerm) paint
140
- * the erase and the new content atomically instead of as two frames — the
141
- * two-frame version is what reads as flicker/blinking.
146
+ * Single write so the erase and the new content always land together.
147
+ * On Windows Terminal that alone can still leave a gap the DirectX
148
+ * renderer presents as a blank frame, so it additionally gets the
149
+ * synchronized-output bookend — see `supportsSyncOutput()`.
142
150
  */
143
151
  paintFrame(text) {
144
- this.stream.write(sync.start + text + sync.end);
152
+ this.stream.write(supportsSyncOutput() ? sync.start + text + sync.end : text);
145
153
  }
146
154
  write(text) {
147
155
  this.stream.write(text);
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EACL,OAAO,EACP,YAAY,EACZ,cAAc,GAKf,MAAM,aAAa,CAAC;AAerB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B;yEACyE;AACzE,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,SAAS,UAAU,CAAC,OAAmB,EAAE,KAAe,EAAE,KAAa;IACrE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,oEAAoE;AACpE,MAAM,OAAO,YAAY;IACf,KAAK,GAAoB,IAAI,CAAC;IAC9B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACxB,SAAS,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,CAAC,CAAC;IACT,KAAK,GAA0B,IAAI,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC;IAChB,WAAW,GAAG,CAAC,CAAC;IAChB,SAAS,GAAkB,IAAI,CAAC;IACvB,YAAY,CAAe;IAE5C,YAAY,eAA6B,YAAY;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAe;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;;OAIG;IACc,QAAQ,GAAG,GAAS,EAAE;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC,CAAC;IAEF;;;OAGG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,cAAc;YAAE,OAAO;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,GAAG,CAAC,KAAe,EAAE,IAAgB;QACnC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,YAAY;QACV,wBAAwB;IAC1B,CAAC;IAED,WAAW;QACT,wBAAwB;IAC1B,CAAC;IAED,SAAS;QACP,wBAAwB;IAC1B,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG;YACZ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;YAChD,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;SAClC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAE9B,oEAAoE;QACpE,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,oEAAoE;QACpE,mEAAmE;QACnE,uEAAuE;QACvE,6DAA6D;QAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,iFAAiF;IACzE,aAAa;QACnB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QAClF,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,IAAY;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhC,KAAK,CAAC,KAAe;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,oBAAoB;IACtB,CAAC;IAED,GAAG,CAAC,KAAe;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,KAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,IAAe;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,CAAC,IAAe;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,KAAK,SAAS;YACvB,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;oBACxB,CAAC,CAAC,OAAO,CAAC,MAAM;oBAChB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa;wBAC7B,CAAC,CAAC,OAAO,CAAC,UAAU;wBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB;4BAC7D,CAAC,CAAC,OAAO,CAAC,OAAO;4BACjB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,IAAI;QACF,oDAAoD;IACtD,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAC7C,QAAQ,GAAoB,IAAI,CAAC;IAEhC,KAAK,CAAC,KAAe;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAEQ,IAAI;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACzB,KAAK,KAAU,CAAC;IAChB,OAAO,KAAU,CAAC;IAClB,GAAG,KAAU,CAAC;IACd,YAAY,KAAU,CAAC;IACvB,WAAW,KAAU,CAAC;IACtB,SAAS,KAAU,CAAC;IACpB,IAAI,KAAU,CAAC;CAChB;AAED,MAAM,UAAU,cAAc,CAAC,OAI9B;IACC,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,cAAc,EAAE,CAAC;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,oBAAoB,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3E,OAAO,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@michaelrwalker/stagehand",
3
- "version": "0.5.3",
3
+ "version": "0.6.1",
4
4
  "description": "Fully typesafe saga-style script framework with modern terminal visuals",
5
+ "homepage": "https://michaelrwalker.netlify.app/stagehand",
5
6
  "type": "module",
6
7
  "exports": {
7
8
  ".": {
@@ -10,7 +11,9 @@
10
11
  }
11
12
  },
12
13
  "files": [
13
- "dist"
14
+ "dist",
15
+ "skills",
16
+ "!skills/_artifacts"
14
17
  ],
15
18
  "engines": {
16
19
  "node": ">=20"
@@ -28,7 +31,8 @@
28
31
  "cli",
29
32
  "typescript",
30
33
  "rollback",
31
- "compensation"
34
+ "compensation",
35
+ "tanstack-intent"
32
36
  ],
33
37
  "license": "MIT",
34
38
  "repository": {
@@ -36,9 +40,10 @@
36
40
  "url": "https://github.com/miaklwalker/stagehand"
37
41
  },
38
42
  "devDependencies": {
43
+ "@tanstack/intent": "^0.3.6",
39
44
  "@types/node": "^22.10.0",
40
- "typescript": "^5.7.0",
41
- "release-it": "^20.2.1"
45
+ "release-it": "^20.2.1",
46
+ "typescript": "^5.7.0"
42
47
  },
43
48
  "publishConfig": {
44
49
  "access": "public"
@@ -0,0 +1,210 @@
1
+ ---
2
+ name: 'getting-started'
3
+ description: >
4
+ Build a complete Stagehand script end to end — Script constructor, addPhase/addStep, a handler
5
+ that widens the typed context, a rollback, and reading the RunResult. Load this first for any
6
+ "write my first script" or "turn this async function chain into Stagehand" request.
7
+ metadata:
8
+ type: 'lifecycle'
9
+ library: 'stagehand'
10
+ library_version: '0.5.3'
11
+ sources:
12
+ - 'miaklwalker/stagehand:README.md'
13
+ - 'miaklwalker/stagehand:docs/quick-start.md'
14
+ - 'miaklwalker/stagehand:docs/guides/script-options-and-result.md'
15
+ - 'miaklwalker/stagehand:docs/guides/cleaning-context.md'
16
+ - 'miaklwalker/stagehand:src/script.ts'
17
+ - 'miaklwalker/stagehand:src/types.ts'
18
+ ---
19
+
20
+ # Stagehand — Getting Started
21
+
22
+ A script is a `Script<Input>` built by chaining `addPhase`/`addStep`. Each step's handler reads
23
+ `input` and the typed `ctx` accumulated so far, and whatever it returns is merged into `ctx` for
24
+ every later step. `run()` never throws by default — it resolves to a discriminated `RunResult`.
25
+
26
+ ## Setup
27
+
28
+ ```ts
29
+ import { Script } from "@michaelrwalker/stagehand";
30
+
31
+ interface Input {
32
+ service: string;
33
+ }
34
+
35
+ const deploy = new Script<Input>({ name: "deploy" })
36
+ .addPhase("Validation")
37
+ .addStep({
38
+ name: "resolve commit",
39
+ handler: async ({ input, status }) => {
40
+ status("querying git");
41
+ return { sha: await resolveSha(input.service) };
42
+ },
43
+ })
44
+ .addPhase("Release")
45
+ .addStep({
46
+ name: "upload artifact",
47
+ handler: async ({ ctx }) => {
48
+ // ctx.sha is typed here — produced by the previous step
49
+ return { uploadId: await upload(ctx.sha) };
50
+ },
51
+ rollbackKeys: ["sha"],
52
+ rollback: async ({ ctx, output }) => {
53
+ await cdn.delete(output.uploadId, ctx.sha);
54
+ },
55
+ });
56
+
57
+ const result = await deploy.run({ service: "api" });
58
+
59
+ if (result.ok) {
60
+ console.log(`released ${result.ctx.uploadId} from ${result.ctx.sha}`);
61
+ } else {
62
+ console.error(`failed at ${result.failedAt?.phase} › ${result.failedAt?.step}`);
63
+ console.error(result.error);
64
+ process.exitCode = 1;
65
+ }
66
+ ```
67
+
68
+ ## Core Patterns
69
+
70
+ ### Grouping steps into phases
71
+
72
+ ```ts
73
+ new Script<{ id: string }>({ name: "provision" })
74
+ .addPhase("Fetch")
75
+ .addStep({
76
+ name: "load user",
77
+ handler: async ({ input }) => ({ user: await db.user(input.id) }),
78
+ })
79
+ .addPhase("Provision")
80
+ .addStep({
81
+ name: "create tenant",
82
+ handler: async ({ ctx }) => ({ tenantId: await api.create(ctx.user.org) }),
83
+ });
84
+ ```
85
+
86
+ `addPhase` opens a new phase; every `addStep` that follows lands in it until the next `addPhase`.
87
+
88
+ ### Context accumulates purely from what a handler returns
89
+
90
+ ```ts
91
+ new Script<{ id: string }>()
92
+ .addStep({ handler: () => ({ token: "x" }) }) // Ctx = { token: string }
93
+ .addStep({ handler: ({ ctx }) => ({ n: ctx.token.length }) });
94
+ // Ctx = { token: string; n: number }
95
+ ```
96
+
97
+ No generic is written by hand — each handler's return value widens `Ctx` for every step after it,
98
+ and a handler that returns nothing leaves it unchanged.
99
+
100
+ ### Compensating a mutation with rollback and rollbackKeys
101
+
102
+ ```ts
103
+ new Script<{ accountId: string; amount: number }>({ name: "charge" })
104
+ .addStep({ name: "read input", handler: ({ input }) => ({ ...input }) })
105
+ .addStep({
106
+ name: "reserve funds",
107
+ handler: async ({ ctx }) => ({ reservationId: await reserve(ctx.accountId, ctx.amount) }),
108
+ rollbackKeys: ["accountId", "reservationId"],
109
+ rollback: async ({ ctx }) => {
110
+ // ctx is { accountId: string; reservationId: string } — and nothing else
111
+ await release(ctx.accountId, ctx.reservationId);
112
+ },
113
+ })
114
+ .addStep({
115
+ name: "charge card",
116
+ handler: () => {
117
+ throw new Error("payment gateway timeout");
118
+ },
119
+ });
120
+ ```
121
+
122
+ Only steps that already succeeded get compensated, in reverse order, when a later step throws;
123
+ `rollbackKeys` narrows what the rollback's `ctx` contains to exactly those keys.
124
+
125
+ ### Naming a script with the bare-string shorthand
126
+
127
+ ```ts
128
+ const validate = new Script("validate") // shorthand for { name: "validate" }
129
+ .addStep({ name: "check input", handler: ({ input }) => ({ ok: true }) });
130
+ ```
131
+
132
+ Reach for the object form (`{ name, description, rollback, throwOnError, ... }`) once you need
133
+ anything beyond the name.
134
+
135
+ ## Common Mistakes
136
+
137
+ ### CRITICAL Wrapping run() in try/catch expecting it to throw
138
+
139
+ Wrong:
140
+ ```ts
141
+ try {
142
+ const result = await deploy.run(input);
143
+ console.log("deployed", result.ctx.releaseId);
144
+ } catch (e) {
145
+ console.error(e);
146
+ }
147
+ ```
148
+
149
+ Correct:
150
+ ```ts
151
+ const result = await deploy.run(input);
152
+ if (!result.ok) {
153
+ console.error(result.error);
154
+ process.exitCode = 1;
155
+ return;
156
+ }
157
+ console.log("deployed", result.ctx.releaseId);
158
+ ```
159
+
160
+ `run()` resolves to `{ ok: false, ... }` by default; nothing throws unless `throwOnError` is set, so the try/catch never fires and a failed run is silently treated as if it succeeded.
161
+
162
+ Source: docs/guides/script-options-and-result.md; src/script.ts run()
163
+
164
+ ### MEDIUM Mutating ctx directly instead of returning new keys
165
+
166
+ Wrong:
167
+ ```ts
168
+ handler: ({ ctx }) => {
169
+ ctx.total = ctx.total + 1; // "works" locally, breaks caching/rollback
170
+ };
171
+ ```
172
+
173
+ Correct:
174
+ ```ts
175
+ handler: ({ ctx }) => ({ total: ctx.total + 1 });
176
+ ```
177
+
178
+ `ctx` is the same live object every handler shares, but only a handler's *return value* is folded into a cached phase's delta and into a rollback's `rollbackKeys` pick, so a directly-mutated key never gets cached and is invisible to any rollback that asks for it.
179
+
180
+ Source: src/script.ts (const ctx = {} as Ctx & Record<string, unknown>; merge() only applied to handler output); docs/guides/cleaning-context.md
181
+
182
+ ### HIGH Returning a bare value from a handler instead of an object
183
+
184
+ Wrong:
185
+ ```ts
186
+ handler: () => {
187
+ const value = "me";
188
+ return value; // compile error — Out must be object | void
189
+ };
190
+ ```
191
+
192
+ Correct:
193
+ ```ts
194
+ handler: () => {
195
+ const value = "me";
196
+ return { name: value };
197
+ };
198
+ ```
199
+
200
+ A handler must resolve to `object | void` because whatever it returns is merged into `ctx` by key; TypeScript rejects a bare return at compile time (`Out extends object | void`), but reaching for `return value` out of habit still costs an extra iteration.
201
+
202
+ Source: src/types.ts StepDef.handler / src/script.ts addStep<Out extends object | void>(...)
203
+
204
+ ### HIGH Tension: Simple first draft vs. rollbackKeys reservation permanence
205
+
206
+ The simplest script has no `rollbackKeys` and no `clean` conflicts, but adding a rollback later to harden a working script permanently reserves whatever keys it names via `rollbackKeys`. Agents optimizing for this skill's goal tend to bolt a rollback onto a working script without revisiting existing `clean` calls elsewhere because they don't account for cleaning-context's key-reservation rule, which then throws `StepDefinitionError` at build time and reads as an unrelated regression.
207
+
208
+ See also: skills/compensation-safety/adding-rollbacks/SKILL.md, skills/compensation-safety/cleaning-context/SKILL.md § Common Mistakes
209
+
210
+ See also: skills/errors-results/handling-results-and-errors/SKILL.md — the very first script already needs correct RunResult handling; run() resolving instead of throwing is the single most consequential thing to get right early.