@michaelrwalker/stagehand 0.2.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/README.md +387 -67
- package/dist/cache.d.ts +33 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +120 -0
- package/dist/cache.js.map +1 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +14 -2
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +23 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/script.d.ts +149 -9
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +273 -14
- package/dist/script.js.map +1 -1
- package/dist/state.d.ts +17 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +18 -1
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +175 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/frame.d.ts +1 -6
- package/dist/ui/frame.d.ts.map +1 -1
- package/dist/ui/frame.js +55 -16
- package/dist/ui/frame.js.map +1 -1
- package/dist/ui/renderer.d.ts +8 -4
- package/dist/ui/renderer.d.ts.map +1 -1
- package/dist/ui/renderer.js +36 -10
- package/dist/ui/renderer.js.map +1 -1
- package/dist/ui/theme.d.ts +1 -0
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js +2 -0
- package/dist/ui/theme.js.map +1 -1
- package/package.json +9 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
1
2
|
export type Awaitable<T> = T | Promise<T>;
|
|
2
3
|
/** Flattens intersections so hover tooltips show a real object shape. */
|
|
3
4
|
export type Prettify<T> = {
|
|
@@ -8,9 +9,121 @@ export type Prettify<T> = {
|
|
|
8
9
|
* the context untouched; later keys win over earlier ones.
|
|
9
10
|
*/
|
|
10
11
|
export type Merge<Ctx, Out> = [Out] extends [void] ? Ctx : [Out] extends [undefined] ? Ctx : Prettify<Omit<Ctx, keyof Out> & Out>;
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Context with `Keys` dropped — what `clean` leaves behind for later steps.
|
|
14
|
+
*/
|
|
15
|
+
export type Cleaned<Ctx, Keys extends PropertyKey> = Prettify<Omit<Ctx, Keys>>;
|
|
16
|
+
/**
|
|
17
|
+
* The slice of the context a `rollback` sees: exactly the keys it asked for
|
|
18
|
+
* via `rollbackKeys`, and nothing else. With no keys declared it is `{}` — a
|
|
19
|
+
* rollback has to say what it needs.
|
|
20
|
+
*/
|
|
21
|
+
export type RollbackData<Ctx, Keys extends readonly PropertyKey[]> = Pick<Ctx, Extract<Keys[number], keyof Ctx>>;
|
|
22
|
+
/**
|
|
23
|
+
* The optional `clean` field, mixed into a step definition by `addStep`.
|
|
24
|
+
*
|
|
25
|
+
* `Keys` captures the literal tuple so the caller's context type can be
|
|
26
|
+
* narrowed by exactly the keys listed. The value is checked element-wise — a
|
|
27
|
+
* valid key checks against itself, an invalid one against the union of valid
|
|
28
|
+
* keys — so only the offending entry is flagged and the editor still
|
|
29
|
+
* autocompletes. `Reserved` holds the keys earlier `rollbackKeys` declarations
|
|
30
|
+
* locked down; they are excluded from the valid set.
|
|
31
|
+
*/
|
|
32
|
+
export type CleanField<Ctx, Reserved extends PropertyKey, Keys extends readonly PropertyKey[]> = {
|
|
33
|
+
/**
|
|
34
|
+
* Keys of the incoming context this step is done with. They are deleted from
|
|
35
|
+
* the context once the step settles and disappear from the type every later
|
|
36
|
+
* step sees.
|
|
37
|
+
*/
|
|
38
|
+
clean?: {
|
|
39
|
+
[I in keyof Keys]: Keys[I] extends Exclude<keyof Ctx, Reserved> ? Keys[I] : Exclude<keyof Ctx, Reserved>;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export type StepStatus = "pending" | "running" | "success" | "failed" | "skipped" | "cached" | "rolling-back" | "rolled-back" | "rollback-failed";
|
|
43
|
+
export type PhaseStatus = "pending" | "running" | "success" | "failed" | "skipped" | "cached";
|
|
13
44
|
export type RunStatus = "pending" | "running" | "success" | "failed" | "aborted";
|
|
45
|
+
/**
|
|
46
|
+
* Where `log`/`info`/`warn`/`error`/`success` land in the live terminal.
|
|
47
|
+
*
|
|
48
|
+
* - `"scrollback"` (default): a permanent line above the frame — the complete
|
|
49
|
+
* record, in order, for the whole run.
|
|
50
|
+
* - `"step"`: nested under the step that logged it, alongside its tasks and
|
|
51
|
+
* progress bar. Keeps only the most recent few per step.
|
|
52
|
+
* - `"bottom"`: a rolling tail of the most recent lines across the whole run,
|
|
53
|
+
* shown below the phase tree.
|
|
54
|
+
*
|
|
55
|
+
* `"step"` and `"bottom"` trade completeness for locality — both cap what
|
|
56
|
+
* they keep, so reach for `"scrollback"` when the log is the thing you need
|
|
57
|
+
* to still have after the run. Only the live renderer honours this; the
|
|
58
|
+
* plain/CI renderer prints every line immediately as it happens regardless,
|
|
59
|
+
* which is already both complete and in place.
|
|
60
|
+
*/
|
|
61
|
+
export type LogPlacement = "scrollback" | "step" | "bottom";
|
|
62
|
+
/** One stored result, as it sits in a {@link CacheStore}. */
|
|
63
|
+
export interface CachedEntry {
|
|
64
|
+
/** What the phase contributed, or what the step returned. */
|
|
65
|
+
value: unknown;
|
|
66
|
+
/** Wall-clock ms (`Date.now()`) at the moment it was written. */
|
|
67
|
+
savedAt: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Where cached values live. The three methods are all a store has to do — a
|
|
71
|
+
* Redis or S3 backing is a dozen lines.
|
|
72
|
+
*
|
|
73
|
+
* `slot` identifies which phase or step an entry belongs to and is derived
|
|
74
|
+
* from its name; scripts never write it. It exists so that several phases can
|
|
75
|
+
* point at one store without overwriting each other.
|
|
76
|
+
*/
|
|
77
|
+
export interface CacheStore {
|
|
78
|
+
read(slot: string): Awaitable<CachedEntry | undefined>;
|
|
79
|
+
write(slot: string, entry: CachedEntry): Awaitable<void>;
|
|
80
|
+
clear(slot: string): Awaitable<void>;
|
|
81
|
+
}
|
|
82
|
+
/** What `stale` gets to decide on. */
|
|
83
|
+
export interface StaleContext<In, Ctx> {
|
|
84
|
+
/** The stored value — the phase's context delta, or the step's return value. */
|
|
85
|
+
value: unknown;
|
|
86
|
+
input: In;
|
|
87
|
+
/** The live context as it stands right now, *before* the entry is applied. */
|
|
88
|
+
ctx: Ctx;
|
|
89
|
+
/** Wall-clock ms at which the entry was written. */
|
|
90
|
+
savedAt: number;
|
|
91
|
+
/** How old the entry is, in ms. A TTL is `({ ageMs }) => ageMs > 3_600_000`. */
|
|
92
|
+
ageMs: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Caching for a phase or a step. Pass a bare {@link CacheStore} when the
|
|
96
|
+
* defaults are enough, or this object to say when an entry stops being good.
|
|
97
|
+
*
|
|
98
|
+
* There is no key: the store *is* the identity. Whether an entry is still
|
|
99
|
+
* usable is `stale`'s job, and nothing else's.
|
|
100
|
+
*/
|
|
101
|
+
export interface CacheOptions<In = unknown, Ctx = unknown> {
|
|
102
|
+
store: CacheStore;
|
|
103
|
+
/**
|
|
104
|
+
* Return true to treat the stored entry as a miss — the work runs again and
|
|
105
|
+
* the entry is overwritten. Given `value` as `unknown`; annotate the
|
|
106
|
+
* parameter yourself, or hand over a `schema` and let it do the narrowing.
|
|
107
|
+
*/
|
|
108
|
+
stale?: (context: StaleContext<In, Ctx>) => Awaitable<boolean>;
|
|
109
|
+
/**
|
|
110
|
+
* Checked against the stored value on every read. A stored value that no
|
|
111
|
+
* longer fits is a **miss**, not an error — which is what keeps a cache
|
|
112
|
+
* written by an older version of the script from feeding the wrong shape
|
|
113
|
+
* into the context.
|
|
114
|
+
*/
|
|
115
|
+
schema?: StandardSchemaV1;
|
|
116
|
+
}
|
|
117
|
+
export type CacheSource<In = unknown, Ctx = unknown> = CacheStore | CacheOptions<In, Ctx>;
|
|
118
|
+
/**
|
|
119
|
+
* What `run` is allowed to do with the caches this script declares.
|
|
120
|
+
*
|
|
121
|
+
* - `"on"` (default): read and write.
|
|
122
|
+
* - `"off"`: ignore them entirely — nothing is read, nothing is written.
|
|
123
|
+
* - `"refresh"`: run everything, then overwrite every entry.
|
|
124
|
+
* - `"read-only"`: use hits, but never write.
|
|
125
|
+
*/
|
|
126
|
+
export type CacheMode = "on" | "off" | "refresh" | "read-only";
|
|
14
127
|
export interface ProgressHandle {
|
|
15
128
|
/** Set the absolute value, optionally relabelling the bar. */
|
|
16
129
|
update(value: number, label?: string): void;
|
|
@@ -48,7 +161,7 @@ export interface StepContext<In, Ctx> {
|
|
|
48
161
|
readonly attempt: number;
|
|
49
162
|
readonly phase: string;
|
|
50
163
|
readonly step: string;
|
|
51
|
-
/**
|
|
164
|
+
/** Where this lands is controlled by `logPlacement` (default: a permanent line above the live frame, kept in scrollback). */
|
|
52
165
|
log(message: string): void;
|
|
53
166
|
info(message: string): void;
|
|
54
167
|
warn(message: string): void;
|
|
@@ -56,6 +169,13 @@ export interface StepContext<In, Ctx> {
|
|
|
56
169
|
success(message: string): void;
|
|
57
170
|
/** Transient one-liner shown beside the step. Replaced on each call. */
|
|
58
171
|
status(message: string): void;
|
|
172
|
+
/**
|
|
173
|
+
* Annotate the step's title — `query database (400 rows found)`. Unlike
|
|
174
|
+
* `status`, it survives the step finishing, so it is what to use for the
|
|
175
|
+
* one fact worth reading off the finished line. Replaced on each call;
|
|
176
|
+
* pass `""` to remove it.
|
|
177
|
+
*/
|
|
178
|
+
note(message: string): void;
|
|
59
179
|
/** Attach a progress bar to this step. */
|
|
60
180
|
progress(options: {
|
|
61
181
|
total: number;
|
|
@@ -69,7 +189,10 @@ export interface StepContext<In, Ctx> {
|
|
|
69
189
|
}
|
|
70
190
|
export interface RollbackContext<In, Ctx, Out> {
|
|
71
191
|
readonly input: In;
|
|
72
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* Only the keys this step declared in `rollbackKeys`, as they stood when the
|
|
194
|
+
* failure happened. Empty when none were declared.
|
|
195
|
+
*/
|
|
73
196
|
readonly ctx: Ctx;
|
|
74
197
|
/** Exactly what this step's handler returned. */
|
|
75
198
|
readonly output: Out;
|
|
@@ -78,8 +201,11 @@ export interface RollbackContext<In, Ctx, Out> {
|
|
|
78
201
|
readonly signal: AbortSignal;
|
|
79
202
|
readonly phase: string;
|
|
80
203
|
readonly step: string;
|
|
204
|
+
/** Where this lands is controlled by `logPlacement`, as in a handler. */
|
|
81
205
|
log(message: string): void;
|
|
82
206
|
status(message: string): void;
|
|
207
|
+
/** Annotate the step's title, as in a handler. Replaces whatever it set. */
|
|
208
|
+
note(message: string): void;
|
|
83
209
|
progress(options: {
|
|
84
210
|
total: number;
|
|
85
211
|
label?: string;
|
|
@@ -93,7 +219,7 @@ export interface RetryPolicy {
|
|
|
93
219
|
/** Return false to stop retrying this particular error. */
|
|
94
220
|
retryIf?: (error: unknown, attempt: number) => boolean;
|
|
95
221
|
}
|
|
96
|
-
export interface StepDef<In, Ctx, Out> {
|
|
222
|
+
export interface StepDef<In, Ctx, Out, RollbackKeys extends readonly PropertyKey[] = readonly []> {
|
|
97
223
|
name: string;
|
|
98
224
|
description?: string;
|
|
99
225
|
/**
|
|
@@ -101,16 +227,38 @@ export interface StepDef<In, Ctx, Out> {
|
|
|
101
227
|
* visible — and typed — for every later step.
|
|
102
228
|
*/
|
|
103
229
|
handler: (context: StepContext<In, Ctx>) => Awaitable<Out>;
|
|
230
|
+
/**
|
|
231
|
+
* The context keys this step's `rollback` needs. It receives only these
|
|
232
|
+
* (none by default), and declaring them reserves them: neither this step nor
|
|
233
|
+
* any later one may `clean` them away, so they are guaranteed to still be
|
|
234
|
+
* there if the rollback runs.
|
|
235
|
+
*
|
|
236
|
+
* `output` is unaffected — a rollback always gets its own step's return
|
|
237
|
+
* value in full, whether or not it was cleaned from the context.
|
|
238
|
+
*/
|
|
239
|
+
rollbackKeys?: RollbackKeys & readonly (keyof Merge<Ctx, Out>)[];
|
|
104
240
|
/**
|
|
105
241
|
* Compensation. Runs when a *later* step fails, in reverse order, after this
|
|
106
242
|
* step has already succeeded.
|
|
107
243
|
*/
|
|
108
|
-
rollback?: (context: RollbackContext<In, Ctx, Out>) => Awaitable<void>;
|
|
244
|
+
rollback?: (context: RollbackContext<In, Prettify<RollbackData<Merge<Ctx, Out>, RollbackKeys>>, Out>) => Awaitable<void>;
|
|
109
245
|
/** Skip the step (and its rollback) when this resolves falsy. */
|
|
110
246
|
when?: (context: {
|
|
111
247
|
input: In;
|
|
112
248
|
ctx: Ctx;
|
|
113
249
|
}) => Awaitable<boolean>;
|
|
250
|
+
/**
|
|
251
|
+
* Reuse this step's return value from a previous run instead of running the
|
|
252
|
+
* handler. On a hit the stored value is merged into the context exactly as
|
|
253
|
+
* if the handler had produced it — and, since the step never ran, its
|
|
254
|
+
* `rollback` cannot fire during a later unwind. That is deliberate: the side
|
|
255
|
+
* effect belongs to the earlier run and was never undone.
|
|
256
|
+
*
|
|
257
|
+
* ```ts
|
|
258
|
+
* cache: { store: fileStore("./cache.json"), stale: ({ ageMs }) => ageMs > 60_000 }
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
cache?: CacheSource<In, Ctx>;
|
|
114
262
|
retry?: RetryPolicy;
|
|
115
263
|
timeoutMs?: number;
|
|
116
264
|
}
|
|
@@ -121,6 +269,25 @@ export interface PhaseOptions<In = unknown, Ctx = unknown> {
|
|
|
121
269
|
input: In;
|
|
122
270
|
ctx: Ctx;
|
|
123
271
|
}) => Awaitable<boolean>;
|
|
272
|
+
/**
|
|
273
|
+
* Reuse this phase's work from a previous run. What gets stored is the
|
|
274
|
+
* phase's **delta** — the keys its steps contributed to the context, minus
|
|
275
|
+
* anything they cleaned — so a hit skips every step and merges that delta
|
|
276
|
+
* over the live context, leaving keys from earlier phases alone.
|
|
277
|
+
*
|
|
278
|
+
* `stale` and `when` see the context as it stands when the phase is reached,
|
|
279
|
+
* which is exactly `Ctx` here, so both are typed without any annotation.
|
|
280
|
+
*
|
|
281
|
+
* ```ts
|
|
282
|
+
* .addPhase("Build", {
|
|
283
|
+
* cache: {
|
|
284
|
+
* store: fileStore("./cache.json"),
|
|
285
|
+
* stale: ({ ctx }) => ctx.sha !== lastBuiltSha,
|
|
286
|
+
* },
|
|
287
|
+
* })
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
cache?: CacheSource<In, Ctx>;
|
|
124
291
|
}
|
|
125
292
|
export interface ScriptOptions {
|
|
126
293
|
name?: string;
|
|
@@ -138,6 +305,8 @@ export interface ScriptOptions {
|
|
|
138
305
|
silent?: boolean;
|
|
139
306
|
/** Rollback on SIGINT/SIGTERM. Default true. */
|
|
140
307
|
handleSignals?: boolean;
|
|
308
|
+
/** Where `log`/`info`/`warn`/`error`/`success` land. Default `"scrollback"`. */
|
|
309
|
+
logPlacement?: LogPlacement;
|
|
141
310
|
}
|
|
142
311
|
export interface StepReport {
|
|
143
312
|
phase: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C,yEAAyE;AACzE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAC9C,GAAG,GACH,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GACvB,GAAG,GACH,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE3C,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,cAAc,GACd,aAAa,GACb,iBAAiB,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/frame.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import { type ProgressState, type RunState } from "../state.js";
|
|
2
|
-
export type LogLevel = "log" | "info" | "warn" | "error" | "success";
|
|
3
|
-
export interface LogEntry {
|
|
4
|
-
level: LogLevel;
|
|
5
|
-
message: string;
|
|
6
|
-
}
|
|
1
|
+
import { type LogEntry, type ProgressState, type RunState } from "../state.js";
|
|
7
2
|
export declare function renderBar(progress: ProgressState, width?: number): string;
|
|
8
3
|
export declare function renderHeader(state: RunState): string[];
|
|
9
4
|
/**
|
package/dist/ui/frame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ui/frame.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ui/frame.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,QAAQ,EAEb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;AA4ErB,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,SAAK,GAAG,MAAM,CAoBrE;AAsJD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,UAAO,GAAG,MAAM,EAAE,CA6C3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAkDpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAkBtD"}
|
package/dist/ui/frame.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { padEnd, stringWidth, truncate, wrapText } from "./ansi.js";
|
|
2
2
|
import { frameWidth, palette, spinnerFrame, symbols } from "./theme.js";
|
|
3
|
-
import { elapsed, errorMessage, formatDuration, phaseElapsed, phaseStatus, } from "../state.js";
|
|
3
|
+
import { elapsed, errorMessage, formatAge, formatDuration, phaseElapsed, phaseStatus, } from "../state.js";
|
|
4
4
|
const GUTTER = " ";
|
|
5
5
|
const PHASE_INDENT = GUTTER;
|
|
6
6
|
const STEP_INDENT = GUTTER + " ";
|
|
@@ -27,6 +27,8 @@ function stepIcon(step, tick) {
|
|
|
27
27
|
return palette.error(symbols.failure);
|
|
28
28
|
case "skipped":
|
|
29
29
|
return palette.faint(symbols.skipped);
|
|
30
|
+
case "cached":
|
|
31
|
+
return palette.info(symbols.cached);
|
|
30
32
|
case "rolling-back":
|
|
31
33
|
return palette.warning(spinnerFrame(tick));
|
|
32
34
|
case "rolled-back":
|
|
@@ -47,6 +49,8 @@ function phaseIcon(phase, tick) {
|
|
|
47
49
|
return palette.error(symbols.failure);
|
|
48
50
|
case "skipped":
|
|
49
51
|
return palette.faint(symbols.skipped);
|
|
52
|
+
case "cached":
|
|
53
|
+
return palette.info(symbols.cached);
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
function taskIcon(task, tick) {
|
|
@@ -63,6 +67,10 @@ function taskIcon(task, tick) {
|
|
|
63
67
|
return palette.faint(symbols.skipped);
|
|
64
68
|
}
|
|
65
69
|
}
|
|
70
|
+
/** `cached` on its own, or `cached • 6m ago` once an age is known. */
|
|
71
|
+
function cachedBadge(ageMs) {
|
|
72
|
+
return ageMs === undefined ? "cached" : `cached ${symbols.info} ${formatAge(ageMs)}`;
|
|
73
|
+
}
|
|
66
74
|
export function renderBar(progress, width = 24) {
|
|
67
75
|
const total = Math.max(progress.total, 1);
|
|
68
76
|
const ratio = Math.max(0, Math.min(1, progress.value / total));
|
|
@@ -87,6 +95,11 @@ function stepLines(step, tick, now, compact = false) {
|
|
|
87
95
|
let label = step.status === "pending" ? palette.faint(step.name) : step.name;
|
|
88
96
|
if (step.status === "skipped")
|
|
89
97
|
label = palette.faint(step.name);
|
|
98
|
+
// Part of the title, so it stays put once the step is done — unlike
|
|
99
|
+
// statusText, which is cleared the moment the step settles.
|
|
100
|
+
if (step.note) {
|
|
101
|
+
label += " " + palette.muted(`(${step.note})`);
|
|
102
|
+
}
|
|
90
103
|
if (step.attempts > 1 && active) {
|
|
91
104
|
label += palette.warning(` (retry ${step.attempts - 1})`);
|
|
92
105
|
}
|
|
@@ -98,9 +111,11 @@ function stepLines(step, tick, now, compact = false) {
|
|
|
98
111
|
? ""
|
|
99
112
|
: step.status === "skipped"
|
|
100
113
|
? palette.faint("skipped")
|
|
101
|
-
:
|
|
102
|
-
? palette.
|
|
103
|
-
:
|
|
114
|
+
: step.status === "cached"
|
|
115
|
+
? palette.info(cachedBadge(step.cacheAgeMs))
|
|
116
|
+
: duration !== undefined
|
|
117
|
+
? palette.faint(formatDuration(duration))
|
|
118
|
+
: "";
|
|
104
119
|
lines.push(row(`${STEP_INDENT}${stepIcon(step, tick)} ${label}`, right));
|
|
105
120
|
// Kept on failure — how far the bar got is diagnostic. Dropped on success
|
|
106
121
|
// even when the handler forgot to call done(), so green rows stay clean.
|
|
@@ -116,6 +131,11 @@ function stepLines(step, tick, now, compact = false) {
|
|
|
116
131
|
lines.push(row(`${DETAIL_INDENT}${taskIcon(task, tick)} ${text}`));
|
|
117
132
|
}
|
|
118
133
|
}
|
|
134
|
+
// logPlacement: "step" routes entries here instead of the scrollback; shown
|
|
135
|
+
// regardless of `active` so they stay readable once the step has settled.
|
|
136
|
+
for (const entry of step.logs) {
|
|
137
|
+
lines.push(renderLogEntry(entry));
|
|
138
|
+
}
|
|
119
139
|
if (step.error !== undefined && step.status === "failed") {
|
|
120
140
|
const width = frameWidth() - stringWidth(DETAIL_INDENT);
|
|
121
141
|
// Capped here only because the live frame has a height budget; the closing
|
|
@@ -127,10 +147,14 @@ function stepLines(step, tick, now, compact = false) {
|
|
|
127
147
|
return lines;
|
|
128
148
|
}
|
|
129
149
|
function collapsedPhaseLine(phase, tick, now) {
|
|
130
|
-
const done = phase.steps.filter((s) => s.status === "success").length;
|
|
150
|
+
const done = phase.steps.filter((s) => s.status === "success" || s.status === "cached").length;
|
|
131
151
|
const summary = palette.faint(`${done}/${phase.steps.length} steps`);
|
|
132
152
|
const duration = phaseElapsed(phase, now);
|
|
133
|
-
const right =
|
|
153
|
+
const right = phaseStatus(phase) === "cached"
|
|
154
|
+
? palette.info(cachedBadge(phase.cacheAgeMs))
|
|
155
|
+
: duration !== undefined
|
|
156
|
+
? palette.faint(formatDuration(duration))
|
|
157
|
+
: "";
|
|
134
158
|
return row(`${PHASE_INDENT}${phaseIcon(phase, tick)} ${palette.muted(phase.name)} ${summary}`, right);
|
|
135
159
|
}
|
|
136
160
|
function elision(count) {
|
|
@@ -156,7 +180,11 @@ function phaseLines(phase, tick, now, mode, stepBudget = Number.POSITIVE_INFINIT
|
|
|
156
180
|
const status = phaseStatus(phase);
|
|
157
181
|
const name = status === "pending" ? palette.faint(phase.name) : palette.bold(phase.name);
|
|
158
182
|
const duration = phaseElapsed(phase, now);
|
|
159
|
-
const right = status === "
|
|
183
|
+
const right = status === "cached"
|
|
184
|
+
? palette.info(cachedBadge(phase.cacheAgeMs))
|
|
185
|
+
: status === "pending" || duration === undefined
|
|
186
|
+
? ""
|
|
187
|
+
: palette.faint(formatDuration(duration));
|
|
160
188
|
const lines = [row(`${PHASE_INDENT}${phaseIcon(phase, tick)} ${name}`, right)];
|
|
161
189
|
if (mode === "full" && phase.description && status !== "pending") {
|
|
162
190
|
lines.push(row(`${STEP_INDENT}${palette.faint(phase.description)}`));
|
|
@@ -172,6 +200,12 @@ function phaseLines(phase, tick, now, mode, stepBudget = Number.POSITIVE_INFINIT
|
|
|
172
200
|
lines.push(elision(phase.steps.length - end));
|
|
173
201
|
return lines;
|
|
174
202
|
}
|
|
203
|
+
/** logPlacement: "bottom" — the most recent lines, below the whole phase tree. */
|
|
204
|
+
function renderLogTail(entries) {
|
|
205
|
+
if (entries.length === 0)
|
|
206
|
+
return [];
|
|
207
|
+
return ["", ...entries.map((entry) => renderLogEntry(entry))];
|
|
208
|
+
}
|
|
175
209
|
export function renderHeader(state) {
|
|
176
210
|
const lines = ["", row(`${GUTTER}${palette.accent(symbols.brand)} ${palette.bold(state.name)}`)];
|
|
177
211
|
if (state.description) {
|
|
@@ -199,6 +233,7 @@ export function bodyBudget() {
|
|
|
199
233
|
*/
|
|
200
234
|
export function renderBody(state, tick, now, fit = true) {
|
|
201
235
|
const budget = bodyBudget();
|
|
236
|
+
const tail = renderLogTail(state.logTail);
|
|
202
237
|
const build = (mode, stepBudget) => {
|
|
203
238
|
const out = [];
|
|
204
239
|
state.phases.forEach((phase, index) => {
|
|
@@ -211,7 +246,7 @@ export function renderBody(state, tick, now, fit = true) {
|
|
|
211
246
|
// The closing frame is written permanently and never repainted, so it may
|
|
212
247
|
// scroll freely — keep every step visible there.
|
|
213
248
|
if (!fit)
|
|
214
|
-
return build(() => "full");
|
|
249
|
+
return [...build(() => "full"), ...tail];
|
|
215
250
|
const done = (phase) => {
|
|
216
251
|
const status = phaseStatus(phase);
|
|
217
252
|
return status === "success" || status === "skipped";
|
|
@@ -219,21 +254,22 @@ export function renderBody(state, tick, now, fit = true) {
|
|
|
219
254
|
const active = (phase) => phaseStatus(phase) === "running";
|
|
220
255
|
// 1. Everything, in full.
|
|
221
256
|
let out = build(() => "full");
|
|
222
|
-
if (out.length <= budget)
|
|
223
|
-
return out;
|
|
257
|
+
if (out.length + tail.length <= budget)
|
|
258
|
+
return [...out, ...tail];
|
|
224
259
|
// 2. Finished phases become one line each.
|
|
225
260
|
out = build((phase) => (done(phase) ? "collapsed" : "full"));
|
|
226
|
-
if (out.length <= budget)
|
|
227
|
-
return out;
|
|
261
|
+
if (out.length + tail.length <= budget)
|
|
262
|
+
return [...out, ...tail];
|
|
228
263
|
// 3. Only the running phase keeps its steps, and drops its detail lines.
|
|
229
264
|
out = build((phase) => (active(phase) ? "compact" : "collapsed"));
|
|
230
|
-
if (out.length <= budget)
|
|
231
|
-
return out;
|
|
265
|
+
if (out.length + tail.length <= budget)
|
|
266
|
+
return [...out, ...tail];
|
|
232
267
|
// 4. Window the running phase's steps around the one actually executing.
|
|
233
268
|
const overhead = state.phases.filter((phase) => !active(phase)).length * 2;
|
|
234
|
-
out = build((phase) => (active(phase) ? "compact" : "collapsed"), Math.max(1, budget - overhead - 2));
|
|
269
|
+
out = build((phase) => (active(phase) ? "compact" : "collapsed"), Math.max(1, budget - overhead - 2 - tail.length));
|
|
270
|
+
const combined = [...out, ...tail];
|
|
235
271
|
// Last resort: a phase with a huge task list, or a viewport of a few rows.
|
|
236
|
-
return
|
|
272
|
+
return combined.length <= budget ? combined : combined.slice(0, budget);
|
|
237
273
|
}
|
|
238
274
|
export function renderSummary(state, now) {
|
|
239
275
|
const width = frameWidth();
|
|
@@ -241,10 +277,13 @@ export function renderSummary(state, now) {
|
|
|
241
277
|
const allSteps = state.phases.flatMap((p) => p.steps);
|
|
242
278
|
const succeeded = allSteps.filter((s) => s.status === "success").length;
|
|
243
279
|
const skipped = allSteps.filter((s) => s.status === "skipped").length;
|
|
280
|
+
const cached = allSteps.filter((s) => s.status === "cached").length;
|
|
244
281
|
const total = (state.endedAt ?? now) - state.startedAt;
|
|
245
282
|
if (state.status === "success") {
|
|
246
283
|
lines.push(row(`${GUTTER}${palette.success(symbols.success)} ${palette.bold(state.name)} ${palette.muted("completed in")} ${palette.bold(formatDuration(total))}`));
|
|
247
284
|
const parts = [`${succeeded} steps`, `${state.phases.length} phases`];
|
|
285
|
+
if (cached > 0)
|
|
286
|
+
parts.push(`${cached} cached`);
|
|
248
287
|
if (skipped > 0)
|
|
249
288
|
parts.push(`${skipped} skipped`);
|
|
250
289
|
lines.push(row(`${GUTTER} ${palette.faint(parts.join(` ${symbols.info} `))}`));
|
package/dist/ui/frame.js.map
CHANGED
|
@@ -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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"}
|
package/dist/ui/renderer.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { type LogEntry } from "
|
|
2
|
-
import
|
|
1
|
+
import { type LogEntry, type PhaseState, type RunState, type StepState } from "../state.js";
|
|
2
|
+
import type { LogPlacement } from "../types.js";
|
|
3
3
|
export interface Renderer {
|
|
4
4
|
start(state: RunState): void;
|
|
5
5
|
/** State mutated; repaint when the renderer is live. */
|
|
6
6
|
refresh(): void;
|
|
7
|
-
|
|
7
|
+
/** `step` is a routing hint — where the entry came from, for placements that nest it there. */
|
|
8
|
+
log(entry: LogEntry, step?: StepState): void;
|
|
8
9
|
onPhaseStart(phase: PhaseState): void;
|
|
9
10
|
onStepStart(step: StepState): void;
|
|
10
11
|
onStepEnd(step: StepState): void;
|
|
@@ -19,6 +20,8 @@ export declare class LiveRenderer implements Renderer {
|
|
|
19
20
|
private timer;
|
|
20
21
|
private stopped;
|
|
21
22
|
private lastPaintAt;
|
|
23
|
+
private readonly logPlacement;
|
|
24
|
+
constructor(logPlacement?: LogPlacement);
|
|
22
25
|
start(state: RunState): void;
|
|
23
26
|
/**
|
|
24
27
|
* A resize reflows whatever is already on screen, so the line count we
|
|
@@ -31,7 +34,7 @@ export declare class LiveRenderer implements Renderer {
|
|
|
31
34
|
* loop), so coalesce; the frame timer guarantees the last state lands.
|
|
32
35
|
*/
|
|
33
36
|
refresh(): void;
|
|
34
|
-
log(entry: LogEntry): void;
|
|
37
|
+
log(entry: LogEntry, step?: StepState): void;
|
|
35
38
|
onPhaseStart(): void;
|
|
36
39
|
onStepStart(): void;
|
|
37
40
|
onStepEnd(): void;
|
|
@@ -69,6 +72,7 @@ export declare class SilentRenderer implements Renderer {
|
|
|
69
72
|
export declare function createRenderer(options: {
|
|
70
73
|
plain?: boolean;
|
|
71
74
|
silent?: boolean;
|
|
75
|
+
logPlacement?: LogPlacement;
|
|
72
76
|
}): Renderer;
|
|
73
77
|
export declare const uiPalette: {
|
|
74
78
|
accent: import("./ansi.js").Styler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/ui/renderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,OAAO,IAAI,IAAI,CAAC;IAChB,+FAA+F;IAC/F,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC;CACd;AAaD,oEAAoE;AACpE,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,YAAY,GAAE,YAA2B;IAIrD,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAc5B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IAEF;;;OAGG;IACH,OAAO,IAAI,IAAI;IAMf,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI;IAmB5C,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,IAAI;IAIjB,IAAI,IAAI,IAAI;IAkBZ,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,KAAK;CAGd;AAED,+DAA+D;AAC/D,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,MAAM,CAAkB;IAEhC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAM5B,OAAO,IAAI,IAAI;IAIf,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI1B,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIrC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIlC,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAqBhC,IAAI,IAAI,IAAI;CAGb;AAED,kEAAkE;AAClE,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAyB;IAEhC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAK5B,IAAI,IAAI,IAAI;CAItB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,KAAK,IAAI,IAAI;IACb,OAAO,IAAI,IAAI;IACf,GAAG,IAAI,IAAI;IACX,YAAY,IAAI,IAAI;IACpB,WAAW,IAAI,IAAI;IACnB,SAAS,IAAI,IAAI;IACjB,IAAI,IAAI,IAAI;CACb;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,QAAQ,CAKX;AAED,eAAO,MAAM,SAAS;;;;;;;;;;CAAU,CAAC"}
|