@smithers-orchestrator/devtools 0.16.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/src/index.d.ts ADDED
@@ -0,0 +1,550 @@
1
+ type SmithersNodeType$2 = "workflow" | "task" | "sequence" | "parallel" | "merge-queue" | "branch" | "loop" | "worktree" | "approval" | "timer" | "subflow" | "wait-for-event" | "saga" | "try-catch" | "fragment" | "unknown";
2
+
3
+ type DevToolsNode$7 = {
4
+ id: number;
5
+ /** Smithers-level type: "workflow" | "task" | "sequence" | etc. */
6
+ type: SmithersNodeType$2;
7
+ /** Display name (component function name or host tag) */
8
+ name: string;
9
+ /** Props snapshot (serializable subset) */
10
+ props: Record<string, unknown>;
11
+ /** Task-specific fields extracted from renderer raw props */
12
+ task?: {
13
+ nodeId: string;
14
+ kind: "agent" | "compute" | "static";
15
+ agent?: string;
16
+ label?: string;
17
+ outputTableName?: string;
18
+ iteration?: number;
19
+ };
20
+ children: DevToolsNode$7[];
21
+ /** Depth in the Smithers tree (not renderer tree depth) */
22
+ depth: number;
23
+ };
24
+
25
+ type DevToolsDeltaOp$1 = {
26
+ op: "addNode";
27
+ parentId: number;
28
+ index: number;
29
+ node: DevToolsNode$7;
30
+ } | {
31
+ op: "removeNode";
32
+ id: number;
33
+ } | {
34
+ op: "updateProps";
35
+ id: number;
36
+ props: Record<string, unknown>;
37
+ } | {
38
+ op: "updateTask";
39
+ id: number;
40
+ task: DevToolsNode$7["task"];
41
+ } | {
42
+ op: "replaceRoot";
43
+ node: DevToolsNode$7;
44
+ };
45
+
46
+ type DevToolsDelta$3 = {
47
+ version: 1;
48
+ baseSeq: number;
49
+ seq: number;
50
+ ops: DevToolsDeltaOp$1[];
51
+ };
52
+
53
+ type DevToolsSnapshotV1$3 = {
54
+ version: 1;
55
+ runId: string;
56
+ frameNo: number;
57
+ seq: number;
58
+ root: DevToolsNode$7;
59
+ };
60
+
61
+ type SnapshotSerializerWarning$1 = {
62
+ code: "CircularReference" | "MaxDepthExceeded" | "MaxEntriesExceeded" | "UnsupportedType";
63
+ path: string;
64
+ detail?: string;
65
+ };
66
+
67
+ type SnapshotSerializerOptions$2 = {
68
+ maxDepth?: number;
69
+ maxEntries?: number;
70
+ onWarning?: (warning: SnapshotSerializerWarning$1) => void;
71
+ };
72
+
73
+ /** Execution state for a task, derived from SmithersEvent stream */
74
+ type TaskExecutionState$3 = {
75
+ nodeId: string;
76
+ iteration: number;
77
+ status: "pending" | "started" | "finished" | "failed" | "cancelled" | "skipped" | "waiting-approval" | "waiting-event" | "waiting-timer" | "retrying";
78
+ attempt: number;
79
+ startedAt?: number;
80
+ finishedAt?: number;
81
+ error?: unknown;
82
+ toolCalls: Array<{
83
+ name: string;
84
+ seq: number;
85
+ status?: "success" | "error";
86
+ }>;
87
+ };
88
+
89
+ /**
90
+ * Discriminated union of Smithers engine events that {@link DevToolsRunStore}
91
+ * understands when reducing engine state. Any other `type` value flows through
92
+ * the open-ended tail so future event kinds can be added without changes to
93
+ * consumers.
94
+ */
95
+ type DevToolsEngineEvent$2 = RunStartedEvent | RunFinishedEvent | RunFailedEvent | RunCancelledEvent | FrameCommittedEvent | NodePendingEvent | NodeStartedEvent | NodeFinishedEvent | NodeFailedEvent | NodeCancelledEvent | NodeSkippedEvent | NodeRetryingEvent | NodeWaitingApprovalEvent | NodeWaitingEventEvent | NodeWaitingTimerEvent | ToolCallStartedEvent | ToolCallFinishedEvent | UnknownEngineEvent;
96
+ type RunEventBase = {
97
+ runId: string;
98
+ timestampMs: number;
99
+ };
100
+ type NodeEventBase = RunEventBase & {
101
+ nodeId: string;
102
+ iteration: number;
103
+ };
104
+ type RunStartedEvent = RunEventBase & {
105
+ type: "RunStarted";
106
+ };
107
+ type RunFinishedEvent = RunEventBase & {
108
+ type: "RunFinished";
109
+ };
110
+ type RunFailedEvent = RunEventBase & {
111
+ type: "RunFailed";
112
+ error?: unknown;
113
+ };
114
+ type RunCancelledEvent = RunEventBase & {
115
+ type: "RunCancelled";
116
+ };
117
+ type FrameCommittedEvent = RunEventBase & {
118
+ type: "FrameCommitted";
119
+ frameNo: number;
120
+ };
121
+ type NodePendingEvent = NodeEventBase & {
122
+ type: "NodePending";
123
+ };
124
+ type NodeStartedEvent = NodeEventBase & {
125
+ type: "NodeStarted";
126
+ attempt: number;
127
+ };
128
+ type NodeFinishedEvent = NodeEventBase & {
129
+ type: "NodeFinished";
130
+ attempt: number;
131
+ };
132
+ type NodeFailedEvent = NodeEventBase & {
133
+ type: "NodeFailed";
134
+ attempt: number;
135
+ error?: unknown;
136
+ };
137
+ type NodeCancelledEvent = NodeEventBase & {
138
+ type: "NodeCancelled";
139
+ };
140
+ type NodeSkippedEvent = NodeEventBase & {
141
+ type: "NodeSkipped";
142
+ };
143
+ type NodeRetryingEvent = NodeEventBase & {
144
+ type: "NodeRetrying";
145
+ attempt: number;
146
+ };
147
+ type NodeWaitingApprovalEvent = NodeEventBase & {
148
+ type: "NodeWaitingApproval";
149
+ };
150
+ type NodeWaitingEventEvent = NodeEventBase & {
151
+ type: "NodeWaitingEvent";
152
+ };
153
+ type NodeWaitingTimerEvent = NodeEventBase & {
154
+ type: "NodeWaitingTimer";
155
+ };
156
+ type ToolCallStartedEvent = NodeEventBase & {
157
+ type: "ToolCallStarted";
158
+ toolName: string;
159
+ seq: number;
160
+ };
161
+ type ToolCallFinishedEvent = NodeEventBase & {
162
+ type: "ToolCallFinished";
163
+ toolName: string;
164
+ seq: number;
165
+ status?: string;
166
+ };
167
+ /**
168
+ * Open tail: any future engine event with the minimal shape we require
169
+ * (`type` + `runId` + `timestampMs`). The store ignores unknown `type`s but
170
+ * still records them in `run.events`.
171
+ */
172
+ type UnknownEngineEvent = {
173
+ type: string;
174
+ runId: string;
175
+ timestampMs: number;
176
+ } & Record<string, unknown>;
177
+
178
+ type RunState = "running" | "waiting-approval" | "waiting-event" | "waiting-timer" | "recovering" | "stale" | "orphaned" | "failed" | "cancelled" | "succeeded" | "unknown";
179
+ type ReasonBlocked = {
180
+ kind: "approval";
181
+ nodeId: string;
182
+ requestedAt: string;
183
+ } | {
184
+ kind: "event";
185
+ nodeId: string;
186
+ correlationKey: string;
187
+ } | {
188
+ kind: "timer";
189
+ nodeId: string;
190
+ wakeAt: string;
191
+ } | {
192
+ kind: "provider";
193
+ nodeId: string;
194
+ code: "rate-limit" | "auth" | "timeout";
195
+ } | {
196
+ kind: "tool";
197
+ nodeId: string;
198
+ toolName: string;
199
+ code: string;
200
+ };
201
+ type ReasonUnhealthy = {
202
+ kind: "engine-heartbeat-stale";
203
+ lastHeartbeatAt: string;
204
+ } | {
205
+ kind: "ui-heartbeat-stale";
206
+ lastSeenAt: string;
207
+ } | {
208
+ kind: "db-lock";
209
+ } | {
210
+ kind: "sandbox-unreachable";
211
+ } | {
212
+ kind: "supervisor-backoff";
213
+ attempt: number;
214
+ nextAt: string;
215
+ };
216
+ type RunStateView = {
217
+ runId: string;
218
+ state: RunState;
219
+ blocked?: ReasonBlocked;
220
+ unhealthy?: ReasonUnhealthy;
221
+ computedAt: string;
222
+ };
223
+ type DevToolsSnapshot$3 = {
224
+ tree: DevToolsNode$7 | null;
225
+ nodeCount: number;
226
+ taskCount: number;
227
+ timestamp: number;
228
+ runState?: RunStateView;
229
+ };
230
+
231
+ type DevToolsEventHandler$1 = (event: "commit" | "unmount", snapshot: DevToolsSnapshot$3) => void;
232
+
233
+ type SmithersDevToolsOptions$2 = {
234
+ /** Called on every renderer commit that touches the Smithers tree */
235
+ onCommit?: DevToolsEventHandler$1;
236
+ /** Called on every SmithersEvent from an attached EventBus */
237
+ onEngineEvent?: (event: DevToolsEngineEvent$2) => void;
238
+ /** Enable verbose console logging */
239
+ verbose?: boolean;
240
+ };
241
+
242
+ /** Execution state for a run, aggregated from SmithersEvent stream */
243
+ type RunExecutionState$3 = {
244
+ runId: string;
245
+ status: "running" | "finished" | "failed" | "cancelled" | "waiting-approval" | "waiting-timer";
246
+ frameNo: number;
247
+ tasks: Map<string, TaskExecutionState$3>;
248
+ events: Array<{
249
+ type: string;
250
+ timestampMs: number;
251
+ [key: string]: unknown;
252
+ }>;
253
+ startedAt?: number;
254
+ finishedAt?: number;
255
+ };
256
+
257
+ type DevToolsRunStoreOptions$2 = Pick<SmithersDevToolsOptions$2, "onEngineEvent" | "verbose">;
258
+
259
+ type DevToolsEventBus$3 = {
260
+ on: (event: "event", handler: (e: DevToolsEngineEvent$2) => void) => void;
261
+ removeListener: (event: "event", handler: (e: DevToolsEngineEvent$2) => void) => void;
262
+ };
263
+
264
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
265
+ /**
266
+ * @param {DevToolsNode} node
267
+ * @returns {{ nodes: number; tasks: number }}
268
+ */
269
+ declare function countNodes(node: DevToolsNode$6): {
270
+ nodes: number;
271
+ tasks: number;
272
+ };
273
+ type DevToolsNode$6 = DevToolsNode$7;
274
+
275
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
276
+ /** @typedef {import("./DevToolsSnapshot.ts").DevToolsSnapshot} DevToolsSnapshot */
277
+ /**
278
+ * @param {DevToolsNode | null} root
279
+ * @returns {DevToolsSnapshot}
280
+ */
281
+ declare function buildSnapshot(root: DevToolsNode$5 | null): DevToolsSnapshot$2;
282
+ type DevToolsNode$5 = DevToolsNode$7;
283
+ type DevToolsSnapshot$2 = DevToolsSnapshot$3;
284
+
285
+ /** @typedef {import("./SmithersNodeType.ts").SmithersNodeType} SmithersNodeType */
286
+ /** @type {Record<SmithersNodeType, string>} */
287
+ declare const SMITHERS_NODE_ICONS: Record<SmithersNodeType$1, string>;
288
+ type SmithersNodeType$1 = SmithersNodeType$2;
289
+
290
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
291
+ /**
292
+ * @param {DevToolsNode} node
293
+ * @param {string} [indent]
294
+ * @returns {string}
295
+ */
296
+ declare function printTree(node: DevToolsNode$4, indent?: string): string;
297
+ type DevToolsNode$4 = DevToolsNode$7;
298
+
299
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
300
+ /**
301
+ * @param {DevToolsNode} node
302
+ * @param {string} nodeId
303
+ * @returns {DevToolsNode | null}
304
+ */
305
+ declare function findNodeById(node: DevToolsNode$3, nodeId: string): DevToolsNode$3 | null;
306
+ type DevToolsNode$3 = DevToolsNode$7;
307
+
308
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
309
+ /**
310
+ * @param {DevToolsNode} node
311
+ * @param {DevToolsNode[]} [out]
312
+ * @returns {DevToolsNode[]}
313
+ */
314
+ declare function collectTasks(node: DevToolsNode$2, out?: DevToolsNode$2[]): DevToolsNode$2[];
315
+ type DevToolsNode$2 = DevToolsNode$7;
316
+
317
+ /** @typedef {import("./DevToolsEngineEvent.ts").DevToolsEngineEvent} DevToolsEngineEvent */
318
+ /** @typedef {import("./DevToolsEventBus.ts").DevToolsEventBus} DevToolsEventBus */
319
+ /** @typedef {import("./DevToolsRunStoreOptions.ts").DevToolsRunStoreOptions} DevToolsRunStoreOptions */
320
+ /** @typedef {import("./RunExecutionState.ts").RunExecutionState} RunExecutionState */
321
+ /** @typedef {import("./TaskExecutionState.ts").TaskExecutionState} TaskExecutionState */
322
+ declare class DevToolsRunStore {
323
+ /**
324
+ * @param {DevToolsRunStoreOptions} [options]
325
+ */
326
+ constructor(options?: DevToolsRunStoreOptions$1);
327
+ /** @type {DevToolsRunStoreOptions} */
328
+ options: DevToolsRunStoreOptions$1;
329
+ /** @type {Map<string, RunExecutionState>} */
330
+ _runs: Map<string, RunExecutionState$2>;
331
+ /** @type {Array<{ bus: DevToolsEventBus; handler: (event: DevToolsEngineEvent) => void }>} */
332
+ _eventBusListeners: Array<{
333
+ bus: DevToolsEventBus$2;
334
+ handler: (event: DevToolsEngineEvent$1) => void;
335
+ }>;
336
+ /**
337
+ * Attach to a Smithers EventBus-like source.
338
+ * @param {DevToolsEventBus} bus
339
+ * @returns {this}
340
+ */
341
+ attachEventBus(bus: DevToolsEventBus$2): this;
342
+ /**
343
+ * Detach all EventBus listeners registered by this store.
344
+ * @returns {void}
345
+ */
346
+ detachEventBuses(): void;
347
+ /**
348
+ * Get execution state for a specific run.
349
+ * @param {string} runId
350
+ * @returns {RunExecutionState | undefined}
351
+ */
352
+ getRun(runId: string): RunExecutionState$2 | undefined;
353
+ /**
354
+ * Get all tracked runs.
355
+ * @returns {Map<string, RunExecutionState>}
356
+ */
357
+ get runs(): Map<string, RunExecutionState$2>;
358
+ /**
359
+ * Get task execution state by nodeId within a run. Searches all iterations.
360
+ * @param {string} runId
361
+ * @param {string} nodeId
362
+ * @param {number} [iteration]
363
+ * @returns {TaskExecutionState | undefined}
364
+ */
365
+ getTaskState(runId: string, nodeId: string, iteration?: number): TaskExecutionState$2 | undefined;
366
+ /**
367
+ * @param {DevToolsEngineEvent} event
368
+ * @returns {void}
369
+ */
370
+ processEngineEvent(event: DevToolsEngineEvent$1): void;
371
+ /**
372
+ * @param {string} runId
373
+ * @returns {RunExecutionState}
374
+ */
375
+ ensureRun(runId: string): RunExecutionState$2;
376
+ /**
377
+ * @param {RunExecutionState} run
378
+ * @param {string} nodeId
379
+ * @param {number} iteration
380
+ * @returns {TaskExecutionState}
381
+ */
382
+ ensureTask(run: RunExecutionState$2, nodeId: string, iteration: number): TaskExecutionState$2;
383
+ }
384
+ type DevToolsEngineEvent$1 = DevToolsEngineEvent$2;
385
+ type DevToolsEventBus$2 = DevToolsEventBus$3;
386
+ type DevToolsRunStoreOptions$1 = DevToolsRunStoreOptions$2;
387
+ type RunExecutionState$2 = RunExecutionState$3;
388
+ type TaskExecutionState$2 = TaskExecutionState$3;
389
+
390
+ /** @typedef {import("./DevToolsEngineEvent.ts").DevToolsEngineEvent} DevToolsEngineEvent */
391
+ /** @typedef {import("./DevToolsEventBus.ts").DevToolsEventBus} DevToolsEventBus */
392
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
393
+ /** @typedef {import("./DevToolsSnapshot.ts").DevToolsSnapshot} DevToolsSnapshot */
394
+ /** @typedef {import("./RunExecutionState.ts").RunExecutionState} RunExecutionState */
395
+ /** @typedef {import("./SmithersDevToolsOptions.ts").SmithersDevToolsOptions} SmithersDevToolsOptions */
396
+ /** @typedef {import("./TaskExecutionState.ts").TaskExecutionState} TaskExecutionState */
397
+ declare class SmithersDevToolsCore {
398
+ /**
399
+ * @param {SmithersDevToolsOptions} [options]
400
+ */
401
+ constructor(options?: SmithersDevToolsOptions$1);
402
+ /** @type {SmithersDevToolsOptions} */
403
+ options: SmithersDevToolsOptions$1;
404
+ /** @type {DevToolsSnapshot | null} */
405
+ _lastSnapshot: DevToolsSnapshot$1 | null;
406
+ /** @type {DevToolsRunStore} */
407
+ _runStore: DevToolsRunStore;
408
+ /**
409
+ * @param {DevToolsNode | null} tree
410
+ * @returns {DevToolsSnapshot}
411
+ */
412
+ captureSnapshot(tree: DevToolsNode$1 | null): DevToolsSnapshot$1;
413
+ /**
414
+ * @param {DevToolsSnapshot} [snapshot]
415
+ * @returns {DevToolsSnapshot}
416
+ */
417
+ emitCommit(snapshot?: DevToolsSnapshot$1): DevToolsSnapshot$1;
418
+ /**
419
+ * @param {DevToolsNode | null} tree
420
+ * @returns {DevToolsSnapshot}
421
+ */
422
+ captureCommit(tree: DevToolsNode$1 | null): DevToolsSnapshot$1;
423
+ /**
424
+ * @param {DevToolsSnapshot} [snapshot]
425
+ * @returns {DevToolsSnapshot}
426
+ */
427
+ emitUnmount(snapshot?: DevToolsSnapshot$1): DevToolsSnapshot$1;
428
+ /**
429
+ * @param {DevToolsEventBus} bus
430
+ * @returns {this}
431
+ */
432
+ attachEventBus(bus: DevToolsEventBus$1): this;
433
+ /** @returns {void} */
434
+ detachEventBuses(): void;
435
+ /**
436
+ * @param {DevToolsEngineEvent} event
437
+ * @returns {void}
438
+ */
439
+ processEngineEvent(event: DevToolsEngineEvent): void;
440
+ /**
441
+ * @param {string} runId
442
+ * @returns {RunExecutionState | undefined}
443
+ */
444
+ getRun(runId: string): RunExecutionState$1 | undefined;
445
+ /**
446
+ * @returns {Map<string, RunExecutionState>}
447
+ */
448
+ get runs(): Map<string, RunExecutionState$1>;
449
+ /**
450
+ * @param {string} runId
451
+ * @param {string} nodeId
452
+ * @param {number} [iteration]
453
+ * @returns {TaskExecutionState | undefined}
454
+ */
455
+ getTaskState(runId: string, nodeId: string, iteration?: number): TaskExecutionState$1 | undefined;
456
+ /**
457
+ * Get the last captured snapshot.
458
+ * @returns {DevToolsSnapshot | null}
459
+ */
460
+ get snapshot(): DevToolsSnapshot$1 | null;
461
+ /**
462
+ * Get the current tree (shorthand).
463
+ * @returns {DevToolsNode | null}
464
+ */
465
+ get tree(): DevToolsNode$1 | null;
466
+ /**
467
+ * Pretty-print the current tree to a string.
468
+ * @returns {string}
469
+ */
470
+ printTree(): string;
471
+ /**
472
+ * Find a node by task nodeId.
473
+ * @param {string} nodeId
474
+ * @returns {DevToolsNode | null}
475
+ */
476
+ findTask(nodeId: string): DevToolsNode$1 | null;
477
+ /**
478
+ * List all tasks in the current tree.
479
+ * @returns {DevToolsNode[]}
480
+ */
481
+ listTasks(): DevToolsNode$1[];
482
+ }
483
+ type DevToolsEngineEvent = DevToolsEngineEvent$2;
484
+ type DevToolsEventBus$1 = DevToolsEventBus$3;
485
+ type DevToolsNode$1 = DevToolsNode$7;
486
+ type DevToolsSnapshot$1 = DevToolsSnapshot$3;
487
+ type RunExecutionState$1 = RunExecutionState$3;
488
+ type SmithersDevToolsOptions$1 = SmithersDevToolsOptions$2;
489
+ type TaskExecutionState$1 = TaskExecutionState$3;
490
+
491
+ /**
492
+ * Serialize arbitrary values into a stable JSON-safe shape for devtools snapshots.
493
+ *
494
+ * @param {unknown} value
495
+ * @param {SnapshotSerializerOptions} [options]
496
+ * @returns {unknown}
497
+ */
498
+ declare function snapshotSerialize(value: unknown, options?: SnapshotSerializerOptions$1): unknown;
499
+ type SnapshotSerializerOptions$1 = SnapshotSerializerOptions$2;
500
+
501
+ /** @type {number} */
502
+ declare const SNAPSHOT_SERIALIZER_DEFAULT_MAX_DEPTH: number;
503
+
504
+ /**
505
+ * Compute a delta from snapshot `a` to snapshot `b`.
506
+ *
507
+ * @param {DevToolsSnapshotV1} a
508
+ * @param {DevToolsSnapshotV1} b
509
+ * @returns {DevToolsDelta}
510
+ */
511
+ declare function diffSnapshots(a: DevToolsSnapshotV1$2, b: DevToolsSnapshotV1$2): DevToolsDelta$2;
512
+ type DevToolsDelta$2 = DevToolsDelta$3;
513
+ type DevToolsSnapshotV1$2 = DevToolsSnapshotV1$3;
514
+
515
+ /**
516
+ * Apply a delta to a snapshot. Throws `InvalidDeltaError` for malformed ops.
517
+ *
518
+ * @param {DevToolsSnapshotV1} snapshot
519
+ * @param {DevToolsDelta} delta
520
+ * @returns {DevToolsSnapshotV1}
521
+ */
522
+ declare function applyDelta(snapshot: DevToolsSnapshotV1$1, delta: DevToolsDelta$1): DevToolsSnapshotV1$1;
523
+ type DevToolsDelta$1 = DevToolsDelta$3;
524
+ type DevToolsSnapshotV1$1 = DevToolsSnapshotV1$3;
525
+
526
+ declare class InvalidDeltaError extends Error {
527
+ /**
528
+ * @param {string} message
529
+ */
530
+ constructor(message: string);
531
+ /** @type {"InvalidDelta"} */
532
+ code: "InvalidDelta";
533
+ }
534
+
535
+ type DevToolsEventBus = DevToolsEventBus$3;
536
+ type DevToolsEventHandler = DevToolsEventHandler$1;
537
+ type DevToolsNode = DevToolsNode$7;
538
+ type DevToolsRunStoreOptions = DevToolsRunStoreOptions$2;
539
+ type DevToolsSnapshot = DevToolsSnapshot$3;
540
+ type RunExecutionState = RunExecutionState$3;
541
+ type SmithersDevToolsOptions = SmithersDevToolsOptions$2;
542
+ type SmithersNodeType = SmithersNodeType$2;
543
+ type TaskExecutionState = TaskExecutionState$3;
544
+ type SnapshotSerializerOptions = SnapshotSerializerOptions$2;
545
+ type SnapshotSerializerWarning = SnapshotSerializerWarning$1;
546
+ type DevToolsSnapshotV1 = DevToolsSnapshotV1$3;
547
+ type DevToolsDelta = DevToolsDelta$3;
548
+ type DevToolsDeltaOp = DevToolsDeltaOp$1;
549
+
550
+ export { type DevToolsDelta, type DevToolsDeltaOp, type DevToolsEventBus, type DevToolsEventHandler, type DevToolsNode, DevToolsRunStore, type DevToolsRunStoreOptions, type DevToolsSnapshot, type DevToolsSnapshotV1, InvalidDeltaError, type RunExecutionState, SMITHERS_NODE_ICONS, SNAPSHOT_SERIALIZER_DEFAULT_MAX_DEPTH, SmithersDevToolsCore, type SmithersDevToolsOptions, type SmithersNodeType, type SnapshotSerializerOptions, type SnapshotSerializerWarning, type TaskExecutionState, applyDelta, buildSnapshot, collectTasks, countNodes, diffSnapshots, findNodeById, printTree, snapshotSerialize };
package/src/index.js ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @typedef {import("./DevToolsEventBus.ts").DevToolsEventBus} DevToolsEventBus
3
+ * @typedef {import("./DevToolsEventHandler.ts").DevToolsEventHandler} DevToolsEventHandler
4
+ * @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode
5
+ * @typedef {import("./DevToolsRunStoreOptions.ts").DevToolsRunStoreOptions} DevToolsRunStoreOptions
6
+ * @typedef {import("./DevToolsSnapshot.ts").DevToolsSnapshot} DevToolsSnapshot
7
+ * @typedef {import("./RunExecutionState.ts").RunExecutionState} RunExecutionState
8
+ * @typedef {import("./SmithersDevToolsOptions.ts").SmithersDevToolsOptions} SmithersDevToolsOptions
9
+ * @typedef {import("./SmithersNodeType.ts").SmithersNodeType} SmithersNodeType
10
+ * @typedef {import("./TaskExecutionState.ts").TaskExecutionState} TaskExecutionState
11
+ * @typedef {import("./SnapshotSerializerOptions.ts").SnapshotSerializerOptions} SnapshotSerializerOptions
12
+ * @typedef {import("./SnapshotSerializerWarning.ts").SnapshotSerializerWarning} SnapshotSerializerWarning
13
+ * @typedef {import("./DevToolsSnapshotV1.ts").DevToolsSnapshotV1} DevToolsSnapshotV1
14
+ * @typedef {import("./DevToolsDelta.ts").DevToolsDelta} DevToolsDelta
15
+ * @typedef {import("./DevToolsDeltaOp.ts").DevToolsDeltaOp} DevToolsDeltaOp
16
+ */
17
+
18
+ export { countNodes } from "./countNodes.js";
19
+ export { buildSnapshot } from "./buildSnapshot.js";
20
+ export { SMITHERS_NODE_ICONS } from "./SMITHERS_NODE_ICONS.js";
21
+ export { printTree } from "./printTree.js";
22
+ export { findNodeById } from "./findNodeById.js";
23
+ export { collectTasks } from "./collectTasks.js";
24
+ export { DevToolsRunStore } from "./DevToolsRunStore.js";
25
+ export { SmithersDevToolsCore } from "./SmithersDevToolsCore.js";
26
+ export { snapshotSerialize } from "./snapshotSerializer.js";
27
+ export { SNAPSHOT_SERIALIZER_DEFAULT_MAX_DEPTH } from "./SNAPSHOT_SERIALIZER_DEFAULT_MAX_DEPTH.js";
28
+ export { diffSnapshots } from "./diffSnapshots.js";
29
+ export { applyDelta } from "./applyDelta.js";
30
+ export { InvalidDeltaError } from "./InvalidDeltaError.js";
@@ -0,0 +1,35 @@
1
+ import { SMITHERS_NODE_ICONS } from "./SMITHERS_NODE_ICONS.js";
2
+ /** @typedef {import("./DevToolsNode.ts").DevToolsNode} DevToolsNode */
3
+
4
+ /**
5
+ * @param {DevToolsNode} node
6
+ * @param {string} [indent]
7
+ * @returns {string}
8
+ */
9
+ export function printTree(node, indent = "") {
10
+ const icon = SMITHERS_NODE_ICONS[node.type] ?? "❓";
11
+ let line = `${indent}${icon} ${node.type}`;
12
+ if (node.task) {
13
+ line += ` [${node.task.nodeId}]`;
14
+ if (node.task.kind === "agent" && node.task.agent) {
15
+ line += ` (${node.task.agent})`;
16
+ }
17
+ else {
18
+ line += ` (${node.task.kind})`;
19
+ }
20
+ if (node.task.label) {
21
+ line += ` "${node.task.label}"`;
22
+ }
23
+ }
24
+ else if (node.props.name) {
25
+ line += ` "${node.props.name}"`;
26
+ }
27
+ else if (node.props.id) {
28
+ line += ` [${node.props.id}]`;
29
+ }
30
+ let output = line + "\n";
31
+ for (const child of node.children) {
32
+ output += printTree(child, indent + " ");
33
+ }
34
+ return output;
35
+ }