@contraagent/api 0.0.0-stage → 0.2.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 (72) hide show
  1. package/README.md +108 -2
  2. package/dist/client.d.ts +54 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +68 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/derive.d.ts +81 -0
  7. package/dist/derive.d.ts.map +1 -0
  8. package/dist/derive.js +89 -0
  9. package/dist/derive.js.map +1 -0
  10. package/dist/export.d.ts +36 -0
  11. package/dist/export.d.ts.map +1 -0
  12. package/dist/export.js +130 -0
  13. package/dist/export.js.map +1 -0
  14. package/dist/feed.d.ts +27 -0
  15. package/dist/feed.d.ts.map +1 -0
  16. package/dist/feed.js +39 -0
  17. package/dist/feed.js.map +1 -0
  18. package/dist/index.d.ts +13 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +13 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/outcomes.d.ts +117 -0
  23. package/dist/outcomes.d.ts.map +1 -0
  24. package/dist/outcomes.js +201 -0
  25. package/dist/outcomes.js.map +1 -0
  26. package/dist/panels.d.ts +35 -0
  27. package/dist/panels.d.ts.map +1 -0
  28. package/dist/panels.js +12 -0
  29. package/dist/panels.js.map +1 -0
  30. package/dist/quota.d.ts +32 -0
  31. package/dist/quota.d.ts.map +1 -0
  32. package/dist/quota.js +46 -0
  33. package/dist/quota.js.map +1 -0
  34. package/dist/reasons.d.ts +25 -0
  35. package/dist/reasons.d.ts.map +1 -0
  36. package/dist/reasons.js +46 -0
  37. package/dist/reasons.js.map +1 -0
  38. package/dist/run-state.d.ts +62 -0
  39. package/dist/run-state.d.ts.map +1 -0
  40. package/dist/run-state.js +109 -0
  41. package/dist/run-state.js.map +1 -0
  42. package/dist/schema.d.ts +4014 -0
  43. package/dist/schema.d.ts.map +1 -0
  44. package/dist/schema.js +3 -0
  45. package/dist/schema.js.map +1 -0
  46. package/dist/spend.d.ts +46 -0
  47. package/dist/spend.d.ts.map +1 -0
  48. package/dist/spend.js +68 -0
  49. package/dist/spend.js.map +1 -0
  50. package/dist/store.d.ts +121 -0
  51. package/dist/store.d.ts.map +1 -0
  52. package/dist/store.js +286 -0
  53. package/dist/store.js.map +1 -0
  54. package/dist/types.d.ts +113 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +19 -0
  57. package/dist/types.js.map +1 -0
  58. package/package.json +43 -4
  59. package/src/client.ts +119 -0
  60. package/src/derive.ts +155 -0
  61. package/src/export.ts +158 -0
  62. package/src/feed.ts +81 -0
  63. package/src/index.ts +12 -0
  64. package/src/outcomes.ts +267 -0
  65. package/src/panels.ts +57 -0
  66. package/src/quota.ts +78 -0
  67. package/src/reasons.ts +57 -0
  68. package/src/run-state.ts +166 -0
  69. package/src/schema.ts +4015 -0
  70. package/src/spend.ts +108 -0
  71. package/src/store.ts +338 -0
  72. package/src/types.ts +166 -0
package/src/schema.ts ADDED
@@ -0,0 +1,4015 @@
1
+ // Generated by `pnpm gen` from src/contraagent/_internal/monitor/openapi.json. Do not edit.
2
+
3
+ export type paths = {
4
+ "/api/info": {
5
+ parameters: {
6
+ query?: never;
7
+ header?: never;
8
+ path?: never;
9
+ cookie?: never;
10
+ };
11
+ /**
12
+ * Api Info
13
+ * @description The title, the panel tabs to offer, and the version of this contract.
14
+ */
15
+ get: operations["api_info_api_info_get"];
16
+ put?: never;
17
+ post?: never;
18
+ delete?: never;
19
+ options?: never;
20
+ head?: never;
21
+ patch?: never;
22
+ trace?: never;
23
+ };
24
+ "/api/runs": {
25
+ parameters: {
26
+ query?: never;
27
+ header?: never;
28
+ path?: never;
29
+ cookie?: never;
30
+ };
31
+ /**
32
+ * Api Runs
33
+ * @description Every run directory, newest activity first.
34
+ */
35
+ get: operations["api_runs_api_runs_get"];
36
+ put?: never;
37
+ post?: never;
38
+ delete?: never;
39
+ options?: never;
40
+ head?: never;
41
+ patch?: never;
42
+ trace?: never;
43
+ };
44
+ "/api/hosts": {
45
+ parameters: {
46
+ query?: never;
47
+ header?: never;
48
+ path?: never;
49
+ cookie?: never;
50
+ };
51
+ /**
52
+ * Api Hosts
53
+ * @description The hosts that drive the runs, and each account's utilization over every run.
54
+ */
55
+ get: operations["api_hosts_api_hosts_get"];
56
+ put?: never;
57
+ post?: never;
58
+ delete?: never;
59
+ options?: never;
60
+ head?: never;
61
+ patch?: never;
62
+ trace?: never;
63
+ };
64
+ "/api/trends": {
65
+ parameters: {
66
+ query?: never;
67
+ header?: never;
68
+ path?: never;
69
+ cookie?: never;
70
+ };
71
+ /**
72
+ * Api Trends
73
+ * @description What the runs of a period add up to, day by day.
74
+ */
75
+ get: operations["api_trends_api_trends_get"];
76
+ put?: never;
77
+ post?: never;
78
+ delete?: never;
79
+ options?: never;
80
+ head?: never;
81
+ patch?: never;
82
+ trace?: never;
83
+ };
84
+ "/api/trends/panels/{name}": {
85
+ parameters: {
86
+ query?: never;
87
+ header?: never;
88
+ path?: never;
89
+ cookie?: never;
90
+ };
91
+ /**
92
+ * Api Trend Panel
93
+ * @description One trend panel's body: its `fn(runs, period)` over the runs of the period, made on a
94
+ * panel thread, and kept for the same period over the same runs (`Monitor.trends_panel`).
95
+ */
96
+ get: operations["api_trend_panel_api_trends_panels__name__get"];
97
+ put?: never;
98
+ post?: never;
99
+ delete?: never;
100
+ options?: never;
101
+ head?: never;
102
+ patch?: never;
103
+ trace?: never;
104
+ };
105
+ "/api/runs/{run}/journal": {
106
+ parameters: {
107
+ query?: never;
108
+ header?: never;
109
+ path?: never;
110
+ cookie?: never;
111
+ };
112
+ /**
113
+ * Api Journal
114
+ * @description Journal rows after line offset `since`; `total` is the next offset.
115
+ */
116
+ get: operations["api_journal_api_runs__run__journal_get"];
117
+ put?: never;
118
+ post?: never;
119
+ delete?: never;
120
+ options?: never;
121
+ head?: never;
122
+ patch?: never;
123
+ trace?: never;
124
+ };
125
+ "/api/runs/{run}/plan": {
126
+ parameters: {
127
+ query?: never;
128
+ header?: never;
129
+ path?: never;
130
+ cookie?: never;
131
+ };
132
+ /**
133
+ * Api Plan
134
+ * @description Every queued task with its dependencies and state, and the groups the UI draws as columns.
135
+ */
136
+ get: operations["api_plan_api_runs__run__plan_get"];
137
+ put?: never;
138
+ post?: never;
139
+ delete?: never;
140
+ options?: never;
141
+ head?: never;
142
+ patch?: never;
143
+ trace?: never;
144
+ };
145
+ "/api/runs/{run}/outputs": {
146
+ parameters: {
147
+ query?: never;
148
+ header?: never;
149
+ path?: never;
150
+ cookie?: never;
151
+ };
152
+ /**
153
+ * Api Outputs
154
+ * @description Every declared output/input contract: its file, the model it must satisfy, its status.
155
+ */
156
+ get: operations["api_outputs_api_runs__run__outputs_get"];
157
+ put?: never;
158
+ post?: never;
159
+ delete?: never;
160
+ options?: never;
161
+ head?: never;
162
+ patch?: never;
163
+ trace?: never;
164
+ };
165
+ "/api/runs/{run}/definitions": {
166
+ parameters: {
167
+ query?: never;
168
+ header?: never;
169
+ path?: never;
170
+ cookie?: never;
171
+ };
172
+ /**
173
+ * Api Definitions
174
+ * @description What defined each kind of task in this run.
175
+ */
176
+ get: operations["api_definitions_api_runs__run__definitions_get"];
177
+ put?: never;
178
+ post?: never;
179
+ delete?: never;
180
+ options?: never;
181
+ head?: never;
182
+ patch?: never;
183
+ trace?: never;
184
+ };
185
+ "/api/runs/{run}/cursor": {
186
+ parameters: {
187
+ query?: never;
188
+ header?: never;
189
+ path?: never;
190
+ cookie?: never;
191
+ };
192
+ /**
193
+ * Api Cursor
194
+ * @description The resume cursor; `{}` when the run keeps none.
195
+ */
196
+ get: operations["api_cursor_api_runs__run__cursor_get"];
197
+ put?: never;
198
+ post?: never;
199
+ delete?: never;
200
+ options?: never;
201
+ head?: never;
202
+ patch?: never;
203
+ trace?: never;
204
+ };
205
+ "/api/runs/{run}/procs": {
206
+ parameters: {
207
+ query?: never;
208
+ header?: never;
209
+ path?: never;
210
+ cookie?: never;
211
+ };
212
+ /**
213
+ * Api Procs
214
+ * @description The run's live agent launches, process tree and Python tasks.
215
+ */
216
+ get: operations["api_procs_api_runs__run__procs_get"];
217
+ put?: never;
218
+ post?: never;
219
+ delete?: never;
220
+ options?: never;
221
+ head?: never;
222
+ patch?: never;
223
+ trace?: never;
224
+ };
225
+ "/api/runs/{run}/task/{key}": {
226
+ parameters: {
227
+ query?: never;
228
+ header?: never;
229
+ path?: never;
230
+ cookie?: never;
231
+ };
232
+ /**
233
+ * Api Task
234
+ * @description One task, by its key: journal rows, live launches, definition, input/output, transcript name.
235
+ */
236
+ get: operations["api_task_api_runs__run__task__key__get"];
237
+ put?: never;
238
+ post?: never;
239
+ delete?: never;
240
+ options?: never;
241
+ head?: never;
242
+ patch?: never;
243
+ trace?: never;
244
+ };
245
+ "/api/runs/{run}/stream/{key}": {
246
+ parameters: {
247
+ query?: never;
248
+ header?: never;
249
+ path?: never;
250
+ cookie?: never;
251
+ };
252
+ /**
253
+ * Api Stream
254
+ * @description A page of task `key`'s normalized transcript from line `since`; `since=0` is the tail page.
255
+ */
256
+ get: operations["api_stream_api_runs__run__stream__key__get"];
257
+ put?: never;
258
+ post?: never;
259
+ delete?: never;
260
+ options?: never;
261
+ head?: never;
262
+ patch?: never;
263
+ trace?: never;
264
+ };
265
+ "/api/runs/{run}/panels/{name}": {
266
+ parameters: {
267
+ query?: never;
268
+ header?: never;
269
+ path?: never;
270
+ cookie?: never;
271
+ };
272
+ /**
273
+ * Api Panel
274
+ * @description One run panel's body: a typed body (tiles, a table, charts), or any JSON object;
275
+ * made on a panel thread.
276
+ */
277
+ get: operations["api_panel_api_runs__run__panels__name__get"];
278
+ put?: never;
279
+ post?: never;
280
+ delete?: never;
281
+ options?: never;
282
+ head?: never;
283
+ patch?: never;
284
+ trace?: never;
285
+ };
286
+ "/events": {
287
+ parameters: {
288
+ query?: never;
289
+ header?: never;
290
+ path?: never;
291
+ cookie?: never;
292
+ };
293
+ /**
294
+ * Events
295
+ * @description The run, live: journal rows as they land, then each other view when it changes.
296
+ */
297
+ get: operations["events_events_get"];
298
+ put?: never;
299
+ post?: never;
300
+ delete?: never;
301
+ options?: never;
302
+ head?: never;
303
+ patch?: never;
304
+ trace?: never;
305
+ };
306
+ "/events/stream": {
307
+ parameters: {
308
+ query?: never;
309
+ header?: never;
310
+ path?: never;
311
+ cookie?: never;
312
+ };
313
+ /**
314
+ * Events Stream
315
+ * @description Task `key`'s transcript, live: the tail page, then the events after it as they are written.
316
+ */
317
+ get: operations["events_stream_events_stream_get"];
318
+ put?: never;
319
+ post?: never;
320
+ delete?: never;
321
+ options?: never;
322
+ head?: never;
323
+ patch?: never;
324
+ trace?: never;
325
+ };
326
+ };
327
+ export type webhooks = Record<string, never>;
328
+ export type components = {
329
+ schemas: {
330
+ /**
331
+ * AccountQuota
332
+ * @description One account's subscription utilization over a run. `last` was taken when the
333
+ * account's last session started, so it leaves out that session's own use.
334
+ */
335
+ AccountQuota: {
336
+ /** Credential */
337
+ credential: string;
338
+ /**
339
+ * Account
340
+ * @description the account the readings are of (`QuotaReading.account`); empty when not known
341
+ * @default
342
+ */
343
+ account?: string;
344
+ first: components["schemas"]["QuotaReading"];
345
+ last: components["schemas"]["QuotaReading"];
346
+ /**
347
+ * Rests
348
+ * @description its rests now (`/api/hosts`): those a live run began and that have not ended, nor passed their `until`
349
+ */
350
+ rests?: components["schemas"]["CredentialRest"][];
351
+ };
352
+ /**
353
+ * AgentProcess
354
+ * @description One live agent launch: the topmost process of a coding-agent CLI, found by its
355
+ * `CONTRAAGENT_*` environment; or, for an agent behind a library-call backend (no
356
+ * child process), the run's own process, from its in-flight marker, with empty
357
+ * `cmd`, `full_cmd`, `role`, `model` and `plugin`.
358
+ */
359
+ AgentProcess: {
360
+ /** Pid */
361
+ pid: number;
362
+ /** Age S */
363
+ age_s: number;
364
+ /**
365
+ * Cmd
366
+ * @description the first three words of the command line
367
+ */
368
+ cmd: string;
369
+ /** Full Cmd */
370
+ full_cmd: string;
371
+ /** Children */
372
+ children?: components["schemas"]["ProcNode"][];
373
+ /** Key */
374
+ key: string;
375
+ /** Kind */
376
+ kind: string;
377
+ /** Unit */
378
+ unit: string;
379
+ /**
380
+ * Role
381
+ * @description the role it runs as, from the prompt's TELEMETRY line; empty when none
382
+ */
383
+ role: string;
384
+ /** Model */
385
+ model: string;
386
+ /** Plugin */
387
+ plugin: string;
388
+ };
389
+ /**
390
+ * BlocksBody
391
+ * @description Bodies one under another: a panel of several parts.
392
+ */
393
+ BlocksBody: {
394
+ /**
395
+ * Title
396
+ * @description a heading over the body
397
+ */
398
+ title?: string | null;
399
+ /**
400
+ * Collapsed
401
+ * @description shown folded, under its title
402
+ * @default false
403
+ */
404
+ collapsed?: boolean;
405
+ /**
406
+ * Anchor
407
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
408
+ */
409
+ anchor?: string | null;
410
+ /**
411
+ * Type
412
+ * @default blocks
413
+ * @constant
414
+ */
415
+ type?: "blocks";
416
+ /** Blocks */
417
+ blocks: (components["schemas"]["TilesBody"] | components["schemas"]["TableBody"] | components["schemas"]["ColumnsBody"] | components["schemas"]["LinesBody"] | components["schemas"]["HeatmapBody"] | components["schemas"]["HBarsBody"] | components["schemas"]["StatusGridBody"] | components["schemas"]["NoteBody"] | components["schemas"]["CodeBody"] | components["schemas"]["TreeBody"] | components["schemas"]["BlocksBody"] | {
418
+ [key: string]: unknown;
419
+ })[];
420
+ };
421
+ /**
422
+ * Changes
423
+ * @description The files one attempt changed under its task's `changes` patterns, as paths relative
424
+ * to the working directory: those it `created`, `modified` and `deleted`. Of a failed
425
+ * attempt's created files, `removed` lists those the runner removed, and `kept` those it
426
+ * left in place because the kind keeps them (`keep_failed_changes`).
427
+ */
428
+ Changes: {
429
+ /**
430
+ * Created
431
+ * @default []
432
+ */
433
+ created?: string[];
434
+ /**
435
+ * Modified
436
+ * @default []
437
+ */
438
+ modified?: string[];
439
+ /**
440
+ * Deleted
441
+ * @default []
442
+ */
443
+ deleted?: string[];
444
+ /**
445
+ * Removed
446
+ * @default []
447
+ */
448
+ removed?: string[];
449
+ /**
450
+ * Kept
451
+ * @default []
452
+ */
453
+ kept?: string[];
454
+ } & {
455
+ [key: string]: unknown;
456
+ };
457
+ /**
458
+ * ChartSeries
459
+ * @description One series: a value per label of the chart's `x`; null where it has none.
460
+ */
461
+ ChartSeries: {
462
+ /** Name */
463
+ name: string;
464
+ /** Values */
465
+ values: (number | null)[];
466
+ };
467
+ /**
468
+ * CodeBody
469
+ * @description A text shown as code: highlighted by its `language` (one of `LANGUAGES`, a file's
470
+ * extension such as `py`, or anything else for plain text), with line numbers from
471
+ * `start`. `highlight` marks lines in those numbers: a line (`7`) or a range of lines,
472
+ * both included (`[10, 14]`). `path` names the file over it. Long lines scroll sideways
473
+ * unless `wrap`. The monitor shows the first `CODE_LINES` lines (and at most
474
+ * `CODE_CHARACTERS` characters) and says how many it left out.
475
+ */
476
+ CodeBody: {
477
+ /**
478
+ * Title
479
+ * @description a heading over the body
480
+ */
481
+ title?: string | null;
482
+ /**
483
+ * Collapsed
484
+ * @description shown folded, under its title
485
+ * @default false
486
+ */
487
+ collapsed?: boolean;
488
+ /**
489
+ * Anchor
490
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
491
+ */
492
+ anchor?: string | null;
493
+ /**
494
+ * Type
495
+ * @default code
496
+ * @constant
497
+ */
498
+ type?: "code";
499
+ /** Text */
500
+ text: string;
501
+ /**
502
+ * Language
503
+ * @description a name of `LANGUAGES` or a file extension; '': plain text
504
+ * @default
505
+ */
506
+ language?: string;
507
+ /**
508
+ * Start
509
+ * @description the number of the first line
510
+ * @default 1
511
+ */
512
+ start?: number;
513
+ /**
514
+ * Highlight
515
+ * @description lines marked: a line, or a range, both ends included
516
+ */
517
+ highlight?: (number | [
518
+ number,
519
+ number
520
+ ])[];
521
+ /**
522
+ * Path
523
+ * @description the file the text is, named over it
524
+ */
525
+ path?: string | null;
526
+ /**
527
+ * Wrap
528
+ * @description long lines wrap; otherwise they scroll sideways
529
+ * @default false
530
+ */
531
+ wrap?: boolean;
532
+ };
533
+ /**
534
+ * ColumnsBody
535
+ * @description Vertical bars, one group per label of `x`; `stacked` puts the series of a label on one bar.
536
+ */
537
+ ColumnsBody: {
538
+ /**
539
+ * Title
540
+ * @description a heading over the body
541
+ */
542
+ title?: string | null;
543
+ /**
544
+ * Collapsed
545
+ * @description shown folded, under its title
546
+ * @default false
547
+ */
548
+ collapsed?: boolean;
549
+ /**
550
+ * Anchor
551
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
552
+ */
553
+ anchor?: string | null;
554
+ /**
555
+ * Type
556
+ * @default columns
557
+ * @constant
558
+ */
559
+ type?: "columns";
560
+ /** X */
561
+ x: string[];
562
+ /** Series */
563
+ series: components["schemas"]["ChartSeries"][];
564
+ /** Unit */
565
+ unit?: ("usd" | "pct" | "duration" | "tokens" | "datetime" | "number") | null;
566
+ /**
567
+ * Stacked
568
+ * @default false
569
+ */
570
+ stacked?: boolean;
571
+ };
572
+ /**
573
+ * ContractField
574
+ * @description One top-level field of the model a contract file must satisfy.
575
+ */
576
+ ContractField: {
577
+ /** Name */
578
+ name: string;
579
+ /**
580
+ * Type
581
+ * @description JSON-schema type, `list[...]`, a `$ref` name, or `a|b` for a union
582
+ */
583
+ type: string;
584
+ /** Required */
585
+ required: boolean;
586
+ };
587
+ /**
588
+ * ContractRecord
589
+ * @description What one task declared it reads and leaves behind (`contracts/<key>.json`).
590
+ */
591
+ ContractRecord: {
592
+ /** Key */
593
+ key: string;
594
+ /**
595
+ * Kind
596
+ * @default
597
+ */
598
+ kind?: string;
599
+ /**
600
+ * Unit
601
+ * @default
602
+ */
603
+ unit?: string;
604
+ /**
605
+ * Executor
606
+ * @default agent
607
+ * @enum {string}
608
+ */
609
+ executor?: "agent" | "python";
610
+ /**
611
+ * Params
612
+ * @description the task's params that are strings, numbers or booleans; an earlier task's output is one of `inputs`
613
+ */
614
+ params?: {
615
+ [key: string]: string | number | boolean;
616
+ };
617
+ /** Outputs */
618
+ outputs?: components["schemas"]["ContractSpec"][];
619
+ /** Inputs */
620
+ inputs?: components["schemas"]["ContractSpec"][];
621
+ } & {
622
+ [key: string]: unknown;
623
+ };
624
+ /**
625
+ * ContractSpec
626
+ * @description One declared `OutputContract` / `InputContract` (its record, passed through,
627
+ * minus the raw JSON schema, which `fields` summarizes). `status`, `rounds`
628
+ * and `errors` are on outputs only.
629
+ */
630
+ ContractSpec: {
631
+ /**
632
+ * Io
633
+ * @enum {string}
634
+ */
635
+ io: "output" | "input";
636
+ /** Path */
637
+ path: string;
638
+ /**
639
+ * Producer
640
+ * @description input: the key of the task whose output it is
641
+ */
642
+ producer?: string | null;
643
+ /**
644
+ * Format
645
+ * @description what the file holds: one JSON document, any text, or rows (JSON Lines, `fields` those of one line)
646
+ */
647
+ format?: ("json" | "text" | "jsonl") | null;
648
+ /** Schema Name */
649
+ schema_name: string;
650
+ /**
651
+ * Schema Ref
652
+ * @default
653
+ */
654
+ schema_ref?: string;
655
+ /** Fresh */
656
+ fresh?: boolean | null;
657
+ /** Required */
658
+ required?: boolean | null;
659
+ /** Validators */
660
+ validators?: string[];
661
+ /**
662
+ * Preserve
663
+ * @description output: JSON pointers to the parts of the file the task keeps as they were (`*`: every member)
664
+ */
665
+ preserve?: string[];
666
+ file: components["schemas"]["FileView"];
667
+ /** Fields */
668
+ fields: components["schemas"]["ContractField"][];
669
+ /** Status */
670
+ status?: ("valid" | "invalid" | "refused" | "pending" | "failed" | "running") | null;
671
+ /**
672
+ * Rounds
673
+ * @description rounds it took to pass, when the journal recorded it
674
+ */
675
+ rounds?: number | null;
676
+ /** Errors */
677
+ errors?: string[];
678
+ } & {
679
+ [key: string]: unknown;
680
+ };
681
+ /**
682
+ * CredentialRest
683
+ * @description A rest of one credential (`rests.jsonl`): why it began, when, and when it ended.
684
+ */
685
+ CredentialRest: {
686
+ /** Credential */
687
+ credential: string;
688
+ /**
689
+ * Window
690
+ * @default
691
+ * @enum {string}
692
+ */
693
+ window?: "" | "five_hour" | "seven_day";
694
+ /** Pct */
695
+ pct?: number | null;
696
+ /** Cap */
697
+ cap?: number | null;
698
+ /**
699
+ * Rule
700
+ * @default
701
+ */
702
+ rule?: string;
703
+ /**
704
+ * Until
705
+ * @default
706
+ */
707
+ until?: string;
708
+ /**
709
+ * Account
710
+ * @default
711
+ */
712
+ account?: string;
713
+ /** Reading */
714
+ reading?: {
715
+ [key: string]: unknown;
716
+ } | null;
717
+ /**
718
+ * Since
719
+ * @description when it began resting, ISO 8601
720
+ */
721
+ since: string;
722
+ /**
723
+ * Ended
724
+ * @description when it was found not resting again, ISO 8601; empty while it rests (or the run ended first)
725
+ * @default
726
+ */
727
+ ended?: string;
728
+ } & {
729
+ [key: string]: unknown;
730
+ };
731
+ /**
732
+ * CursorMessage
733
+ * @description The resume cursor, or null for a run that keeps none.
734
+ */
735
+ CursorMessage: {
736
+ /**
737
+ * Event
738
+ * @constant
739
+ */
740
+ event: "cursor";
741
+ data: components["schemas"]["CursorView"] | null;
742
+ };
743
+ /**
744
+ * CursorView
745
+ * @description The run's resume cursor. The REST endpoint answers `{}` (every field
746
+ * absent) for a run that keeps none; the live feed sends `null`.
747
+ */
748
+ CursorView: {
749
+ /** Stage */
750
+ stage?: string | null;
751
+ /** Completed Stages */
752
+ completed_stages?: string[];
753
+ /** History */
754
+ history?: components["schemas"]["StageEntry"][];
755
+ /**
756
+ * Updated At
757
+ * @default
758
+ */
759
+ updated_at?: string;
760
+ /** Units */
761
+ units?: {
762
+ [key: string]: components["schemas"]["UnitPosition"];
763
+ };
764
+ /**
765
+ * Markers
766
+ * @description free-form event lists by name
767
+ */
768
+ markers?: {
769
+ [key: string]: {
770
+ [key: string]: unknown;
771
+ }[];
772
+ };
773
+ };
774
+ /**
775
+ * DeferralCause
776
+ * @description Why a task was deferred, as data (`Deferral.cause`). `cause`: `deadline`,
777
+ * `grace_window` (past the deadline's grace window), `cannot_finish` (`need_s`, `left_s`),
778
+ * `dependency_not_queued`, `dependency_deferred` (a task whose output it reads was
779
+ * deferred: `dependency`), `rest` (the credential of every hop it could take rests:
780
+ * `rests`), or a runner's own name. A field a cause does not have is left unset, and
781
+ * `deferred.jsonl` records only the fields set.
782
+ */
783
+ DeferralCause: {
784
+ /** Cause */
785
+ cause: string;
786
+ /**
787
+ * Need S
788
+ * @description `cannot_finish`: the work it needed, in seconds
789
+ */
790
+ need_s?: number | null;
791
+ /**
792
+ * Left S
793
+ * @description `cannot_finish`: the time left before the deadline, in seconds
794
+ */
795
+ left_s?: number | null;
796
+ /**
797
+ * Flow Call
798
+ * @description `deadline`, `grace_window`, `cannot_finish`: the flow call whose time box it is; null for the run's deadline
799
+ */
800
+ flow_call?: string | null;
801
+ /**
802
+ * Rests
803
+ * @description `rest`: each hop passed over and why its credential rests
804
+ * @default []
805
+ */
806
+ rests?: components["schemas"]["SkippedHop"][];
807
+ /**
808
+ * Dependency
809
+ * @description `dependency_deferred`: the key of the deferred task whose output it reads
810
+ */
811
+ dependency?: string | null;
812
+ };
813
+ /**
814
+ * DefinitionFile
815
+ * @description One file that defines a task: its instructions (a task without a plugin), the role's agent file, a skill, the schema ...
816
+ */
817
+ DefinitionFile: {
818
+ /** Path */
819
+ path: string;
820
+ /** Part */
821
+ part: string;
822
+ /** Text */
823
+ text: string;
824
+ } & {
825
+ [key: string]: unknown;
826
+ };
827
+ /** DownstreamTask */
828
+ DownstreamTask: {
829
+ /** Key */
830
+ key: string;
831
+ /** Kind */
832
+ kind: string;
833
+ /** Unit */
834
+ unit: string;
835
+ /**
836
+ * Executor
837
+ * @enum {string}
838
+ */
839
+ executor: "agent" | "python";
840
+ };
841
+ /**
842
+ * DroppedRoute
843
+ * @description A route the preflight dropped: not in its agent's model list, or its probe did not
844
+ * complete. `kinds`: the kinds whose chain held it.
845
+ */
846
+ DroppedRoute: {
847
+ /** Agent */
848
+ agent: string;
849
+ /**
850
+ * Model
851
+ * @description empty: the coding agent's default model
852
+ */
853
+ model: string;
854
+ /** Credential */
855
+ credential: string;
856
+ /**
857
+ * Reason
858
+ * @description not in its coding agent's model list, or how its probe ended (`rate limited`, ...)
859
+ */
860
+ reason: string;
861
+ /**
862
+ * Kinds
863
+ * @description the kinds whose chain held it
864
+ */
865
+ kinds: string[];
866
+ };
867
+ /**
868
+ * ExportInfo
869
+ * @description What an export holds (`contraagent monitor export`): the monitor's views of some
870
+ * runs, written as files and read without a server.
871
+ */
872
+ ExportInfo: {
873
+ /**
874
+ * Exported At
875
+ * @description when it was written, ISO 8601
876
+ */
877
+ exported_at: string;
878
+ /**
879
+ * Runs
880
+ * @description the runs it holds, newest activity first
881
+ */
882
+ runs: string[];
883
+ /**
884
+ * Left Out
885
+ * @description the views it does not hold: `transcripts`, `processes`
886
+ */
887
+ left_out: string[];
888
+ /**
889
+ * Redacted
890
+ * @description what was taken out of the views: `paths` (made relative, else `<path>`), `host`, and each key named with --exclude
891
+ */
892
+ redacted: string[];
893
+ };
894
+ /** FeedReady */
895
+ FeedReady: {
896
+ /**
897
+ * Journal
898
+ * @description journal rows sent before this message
899
+ */
900
+ journal: number;
901
+ };
902
+ /**
903
+ * FileView
904
+ * @description A contract's file as it is now. `content` is the parsed JSON (for rows, the list of
905
+ * the lines that parse), else the text (cut at 20 000 characters, `truncated`), else null
906
+ * when unreadable.
907
+ */
908
+ FileView: {
909
+ /** Exists */
910
+ exists: boolean;
911
+ /**
912
+ * Size
913
+ * @default 0
914
+ */
915
+ size?: number;
916
+ /**
917
+ * Mtime
918
+ * @default
919
+ */
920
+ mtime?: string;
921
+ /**
922
+ * Truncated
923
+ * @default false
924
+ */
925
+ truncated?: boolean;
926
+ /** Content */
927
+ content?: unknown;
928
+ };
929
+ /**
930
+ * FlowCallNode
931
+ * @description One flow call (`flow_calls.jsonl`): a generator the run drove, or the flow itself.
932
+ */
933
+ FlowCallNode: {
934
+ /**
935
+ * Id
936
+ * @description `0` for the top flow, `<parent>.<n>` for a child
937
+ */
938
+ id: string;
939
+ /**
940
+ * Parent
941
+ * @description the parent flow call's id; null for a top flow
942
+ */
943
+ parent: string | null;
944
+ /**
945
+ * Function
946
+ * @description `module.qualname` of the generator function (or of a flow that does not yield)
947
+ */
948
+ function: string;
949
+ /**
950
+ * Flow
951
+ * @description the flow path where the parent yielded it, with its loops' passes; empty for a top flow
952
+ */
953
+ flow?: components["schemas"]["Frame"][];
954
+ /**
955
+ * State
956
+ * @enum {string}
957
+ */
958
+ state: "running" | "returned" | "raised" | "closed";
959
+ /**
960
+ * Error
961
+ * @description `<type>: <message>` of what it raised (or what closing it raised); else null
962
+ */
963
+ error?: string | null;
964
+ /** @description its own deadline, for a flow call yielded through `time_box`; else null */
965
+ time_box?: components["schemas"]["TimeBoxRecord"] | null;
966
+ };
967
+ /**
968
+ * Frame
969
+ * @description One frame of a flow path (outermost first): a call site in flow code where a task
970
+ * was created. A comprehension is not a loop.
971
+ */
972
+ Frame: {
973
+ /**
974
+ * Function
975
+ * @description `module.qualname`
976
+ */
977
+ function: string;
978
+ /**
979
+ * File
980
+ * @description relative to the run's working directory when under it, else as recorded
981
+ */
982
+ file: string;
983
+ /** Line */
984
+ line: number;
985
+ /**
986
+ * Loops
987
+ * @description the loops of a generator whose pass `line` was in, outermost first; empty outside a loop and for any other frame
988
+ * @default []
989
+ */
990
+ loops?: components["schemas"]["Loop"][];
991
+ };
992
+ /**
993
+ * GridCell
994
+ * @description One cell of a status grid: the state it is in, in words, and that state's tone.
995
+ * `tip` adds a fact about this cell to its tooltip (a run's id, a count).
996
+ */
997
+ GridCell: {
998
+ /** Label */
999
+ label: string;
1000
+ /**
1001
+ * Tone
1002
+ * @enum {string}
1003
+ */
1004
+ tone: "failed" | "attention" | "done" | "running" | "muted" | "neutral";
1005
+ /** Tip */
1006
+ tip?: string | null;
1007
+ };
1008
+ /** HBar */
1009
+ HBar: {
1010
+ /** Label */
1011
+ label: string;
1012
+ /** Value */
1013
+ value: number;
1014
+ /** Tone */
1015
+ tone?: ("failed" | "attention" | "done" | "running" | "muted" | "neutral") | null;
1016
+ };
1017
+ /**
1018
+ * HBarsBody
1019
+ * @description Horizontal bars, one per label, in the order given.
1020
+ */
1021
+ HBarsBody: {
1022
+ /**
1023
+ * Title
1024
+ * @description a heading over the body
1025
+ */
1026
+ title?: string | null;
1027
+ /**
1028
+ * Collapsed
1029
+ * @description shown folded, under its title
1030
+ * @default false
1031
+ */
1032
+ collapsed?: boolean;
1033
+ /**
1034
+ * Anchor
1035
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
1036
+ */
1037
+ anchor?: string | null;
1038
+ /**
1039
+ * Type
1040
+ * @default hbars
1041
+ * @constant
1042
+ */
1043
+ type?: "hbars";
1044
+ /** Bars */
1045
+ bars: components["schemas"]["HBar"][];
1046
+ /** Unit */
1047
+ unit?: ("usd" | "pct" | "duration" | "tokens" | "datetime" | "number") | null;
1048
+ };
1049
+ /** HTTPValidationError */
1050
+ HTTPValidationError: {
1051
+ /** Detail */
1052
+ detail?: components["schemas"]["ValidationError"][];
1053
+ };
1054
+ /**
1055
+ * HeatmapBody
1056
+ * @description A value per row (`y`) and column (`x`): `values[row][column]`, null where there is none.
1057
+ */
1058
+ HeatmapBody: {
1059
+ /**
1060
+ * Title
1061
+ * @description a heading over the body
1062
+ */
1063
+ title?: string | null;
1064
+ /**
1065
+ * Collapsed
1066
+ * @description shown folded, under its title
1067
+ * @default false
1068
+ */
1069
+ collapsed?: boolean;
1070
+ /**
1071
+ * Anchor
1072
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
1073
+ */
1074
+ anchor?: string | null;
1075
+ /**
1076
+ * Type
1077
+ * @default heatmap
1078
+ * @constant
1079
+ */
1080
+ type?: "heatmap";
1081
+ /** X */
1082
+ x: string[];
1083
+ /** Y */
1084
+ y: string[];
1085
+ /** Values */
1086
+ values: (number | null)[][];
1087
+ /** Unit */
1088
+ unit?: ("usd" | "pct" | "duration" | "tokens" | "datetime" | "number") | null;
1089
+ };
1090
+ /**
1091
+ * Hop
1092
+ * @description One launch of an attempt on one route of its failover chain: where it ran and how
1093
+ * it ended.
1094
+ */
1095
+ Hop: {
1096
+ /**
1097
+ * Route
1098
+ * @default
1099
+ */
1100
+ route?: string;
1101
+ /**
1102
+ * Agent
1103
+ * @default
1104
+ */
1105
+ agent?: string;
1106
+ /**
1107
+ * Model
1108
+ * @default
1109
+ */
1110
+ model?: string;
1111
+ /**
1112
+ * Credential
1113
+ * @default
1114
+ */
1115
+ credential?: string;
1116
+ /**
1117
+ * Stop
1118
+ * @default
1119
+ */
1120
+ stop?: string;
1121
+ /**
1122
+ * Wall S
1123
+ * @default 0
1124
+ */
1125
+ wall_s?: number;
1126
+ /** Cost Usd */
1127
+ cost_usd?: number | null;
1128
+ usage?: components["schemas"]["TokenUsage"] | null;
1129
+ /** Other Models */
1130
+ other_models?: {
1131
+ [key: string]: components["schemas"]["OtherModel"];
1132
+ };
1133
+ } & {
1134
+ [key: string]: unknown;
1135
+ };
1136
+ /**
1137
+ * HostSummary
1138
+ * @description One host that drives runs.
1139
+ */
1140
+ HostSummary: {
1141
+ /** Host Id */
1142
+ host_id: string;
1143
+ /**
1144
+ * Up
1145
+ * @description its reports keep arriving (a hub: a heartbeat within the TTL; one host: always)
1146
+ */
1147
+ up: boolean;
1148
+ /**
1149
+ * Last Seen
1150
+ * @description when it last reported, ISO 8601; empty when it does not report (one host)
1151
+ */
1152
+ last_seen: string;
1153
+ /**
1154
+ * Interval S
1155
+ * @description seconds between its reports; null when it does not report
1156
+ */
1157
+ interval_s: number | null;
1158
+ /**
1159
+ * Runs
1160
+ * @description its runs
1161
+ */
1162
+ runs: number;
1163
+ /**
1164
+ * Running
1165
+ * @description its runs whose process is alive
1166
+ */
1167
+ running: number;
1168
+ /**
1169
+ * Unresponsive
1170
+ * @description its runs last reported alive since it stopped reporting
1171
+ */
1172
+ unresponsive: number;
1173
+ };
1174
+ /**
1175
+ * Hosts
1176
+ * @description The hosts, and each account's utilization over every run of every host.
1177
+ */
1178
+ Hosts: {
1179
+ /** Hosts */
1180
+ hosts: components["schemas"]["HostSummary"][];
1181
+ /**
1182
+ * Quota
1183
+ * @description per credential (account): its first and last utilization reading over every run; highest weekly use first
1184
+ */
1185
+ quota?: components["schemas"]["AccountQuota"][];
1186
+ };
1187
+ /**
1188
+ * InflightPythonTask
1189
+ * @description A Python task running inside the run's own process.
1190
+ */
1191
+ InflightPythonTask: {
1192
+ /** Key */
1193
+ key: string;
1194
+ /** Kind */
1195
+ kind: string;
1196
+ /** Unit */
1197
+ unit: string;
1198
+ /** Pid */
1199
+ pid: number;
1200
+ /** Age S */
1201
+ age_s: number;
1202
+ };
1203
+ /**
1204
+ * Info
1205
+ * @description What the UI shows before a run is picked: the title, the panel tabs to offer,
1206
+ * and the version of this contract.
1207
+ */
1208
+ Info: {
1209
+ /** Title */
1210
+ title: string;
1211
+ /** Panels */
1212
+ panels: components["schemas"]["PanelInfo"][];
1213
+ /**
1214
+ * Api Version
1215
+ * @description Version of this API contract (semver)
1216
+ */
1217
+ api_version: string;
1218
+ /**
1219
+ * Hosts
1220
+ * @description the runs come from many hosts (a hub): `/api/hosts` lists them
1221
+ * @default false
1222
+ */
1223
+ hosts?: boolean;
1224
+ /** @description set only in an export: what it holds; a server never sends it */
1225
+ export?: components["schemas"]["ExportInfo"] | null;
1226
+ };
1227
+ /**
1228
+ * JournalMessage
1229
+ * @description One journal row, sent once per row: the whole journal on connect, then each new row.
1230
+ */
1231
+ JournalMessage: {
1232
+ /**
1233
+ * Event
1234
+ * @constant
1235
+ */
1236
+ event: "journal";
1237
+ data: components["schemas"]["JournalRow"];
1238
+ };
1239
+ /**
1240
+ * JournalPage
1241
+ * @description Journal rows after a line offset; pass `total` back as `since` to get only newer rows.
1242
+ */
1243
+ JournalPage: {
1244
+ /** Entries */
1245
+ entries: components["schemas"]["JournalRow"][];
1246
+ /** Total */
1247
+ total: number;
1248
+ };
1249
+ /**
1250
+ * JournalRow
1251
+ * @description One finished attempt. `key` is the stable `Task.key`, one task; `kind`
1252
+ * and `unit` are its kind and unit; `executor` says who ran it; `stop` is
1253
+ * `Stop.value` (or a Python task's completed/error).
1254
+ */
1255
+ JournalRow: {
1256
+ /** Ts */
1257
+ ts: string;
1258
+ /**
1259
+ * Run Id
1260
+ * @default
1261
+ */
1262
+ run_id?: string;
1263
+ /**
1264
+ * Run Group
1265
+ * @default
1266
+ */
1267
+ run_group?: string;
1268
+ /** Key */
1269
+ key: string;
1270
+ /**
1271
+ * Attempt
1272
+ * @default 0
1273
+ */
1274
+ attempt?: number;
1275
+ /** Kind */
1276
+ kind: string;
1277
+ /**
1278
+ * Executor
1279
+ * @default agent
1280
+ * @enum {string}
1281
+ */
1282
+ executor?: "agent" | "python";
1283
+ /**
1284
+ * Unit
1285
+ * @default
1286
+ */
1287
+ unit?: string;
1288
+ /**
1289
+ * Agent
1290
+ * @default
1291
+ */
1292
+ agent?: string;
1293
+ /**
1294
+ * Model
1295
+ * @default
1296
+ */
1297
+ model?: string;
1298
+ /**
1299
+ * Credential
1300
+ * @default
1301
+ */
1302
+ credential?: string;
1303
+ /**
1304
+ * Route
1305
+ * @default
1306
+ */
1307
+ route?: string;
1308
+ /** Hops */
1309
+ hops?: components["schemas"]["Hop"][];
1310
+ /** Skipped Hops */
1311
+ skipped_hops?: components["schemas"]["SkippedHop"][];
1312
+ /**
1313
+ * Stop
1314
+ * @enum {string}
1315
+ */
1316
+ stop: "completed" | "timeout" | "max_turns" | "budget" | "context_budget" | "stalled" | "auth_failed" | "api_error" | "rate_limited" | "refused" | "aborted" | "denied" | "error" | "no_output" | "launch_failed" | "invalid_output" | "invalid_input" | "credential_mismatch" | "skipped" | "partial";
1317
+ /** Ok */
1318
+ ok: boolean;
1319
+ /**
1320
+ * Wall S
1321
+ * @default 0
1322
+ */
1323
+ wall_s?: number;
1324
+ /** Exit Code */
1325
+ exit_code?: number | null;
1326
+ /** Signal */
1327
+ signal?: number | null;
1328
+ /**
1329
+ * Reason
1330
+ * @default
1331
+ */
1332
+ reason?: string;
1333
+ /** Rounds */
1334
+ rounds?: number | null;
1335
+ /** Round Errors */
1336
+ round_errors?: string[][];
1337
+ /** Max Corrections */
1338
+ max_corrections?: number | null;
1339
+ /** Hook Errors */
1340
+ hook_errors?: string[][];
1341
+ usage?: components["schemas"]["TokenUsage"] | null;
1342
+ /** Cost Usd */
1343
+ cost_usd?: number | null;
1344
+ /** Quota */
1345
+ quota?: components["schemas"]["QuotaReading"][];
1346
+ /** Web Queries */
1347
+ web_queries?: string[];
1348
+ /** Unread Events */
1349
+ unread_events?: {
1350
+ [key: string]: number;
1351
+ };
1352
+ changes?: components["schemas"]["Changes"] | null;
1353
+ /** Context Budget */
1354
+ context_budget?: number | null;
1355
+ /**
1356
+ * Context Warned
1357
+ * @default false
1358
+ */
1359
+ context_warned?: boolean;
1360
+ /**
1361
+ * Fingerprint
1362
+ * @default
1363
+ */
1364
+ fingerprint?: string;
1365
+ /**
1366
+ * Outside
1367
+ * @default
1368
+ */
1369
+ outside?: string;
1370
+ /**
1371
+ * Rerun
1372
+ * @default
1373
+ */
1374
+ rerun?: string;
1375
+ /** Flow Call */
1376
+ flow_call?: string | null;
1377
+ /**
1378
+ * Replayed
1379
+ * @default false
1380
+ */
1381
+ replayed?: boolean;
1382
+ } & {
1383
+ [key: string]: unknown;
1384
+ };
1385
+ /**
1386
+ * KeptKind
1387
+ * @description A kind with no route left, run as configured all the same (`substitute`), and why.
1388
+ */
1389
+ KeptKind: {
1390
+ /** Kind */
1391
+ kind: string;
1392
+ /** Agent */
1393
+ agent: string;
1394
+ /** Model */
1395
+ model: string;
1396
+ /** Reason */
1397
+ reason: string;
1398
+ };
1399
+ /**
1400
+ * LaunchEvent
1401
+ * @description Head of one invocation: the exact argv, cwd and the submitted prompt.
1402
+ */
1403
+ LaunchEvent: {
1404
+ /**
1405
+ * Type
1406
+ * @constant
1407
+ */
1408
+ type: "launch";
1409
+ /**
1410
+ * Ts
1411
+ * @description Unix time the launch started
1412
+ */
1413
+ ts?: number | null;
1414
+ /** Argv */
1415
+ argv: string[];
1416
+ /** Cwd */
1417
+ cwd: string;
1418
+ /**
1419
+ * Prompt
1420
+ * @description cut at 200 000 characters
1421
+ */
1422
+ prompt: string;
1423
+ /**
1424
+ * Prompt Truncated
1425
+ * @description characters of the prompt not shown
1426
+ * @default 0
1427
+ */
1428
+ prompt_truncated?: number;
1429
+ } & {
1430
+ [key: string]: unknown;
1431
+ };
1432
+ /** LinesBody */
1433
+ LinesBody: {
1434
+ /**
1435
+ * Title
1436
+ * @description a heading over the body
1437
+ */
1438
+ title?: string | null;
1439
+ /**
1440
+ * Collapsed
1441
+ * @description shown folded, under its title
1442
+ * @default false
1443
+ */
1444
+ collapsed?: boolean;
1445
+ /**
1446
+ * Anchor
1447
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
1448
+ */
1449
+ anchor?: string | null;
1450
+ /**
1451
+ * Type
1452
+ * @default lines
1453
+ * @constant
1454
+ */
1455
+ type?: "lines";
1456
+ /** X */
1457
+ x: string[];
1458
+ /** Series */
1459
+ series: components["schemas"]["ChartSeries"][];
1460
+ /** Unit */
1461
+ unit?: ("usd" | "pct" | "duration" | "tokens" | "datetime" | "number") | null;
1462
+ };
1463
+ /**
1464
+ * Loop
1465
+ * @description A `for` or `while` loop of a generator around a call site, and the pass the call
1466
+ * site was in.
1467
+ */
1468
+ Loop: {
1469
+ /**
1470
+ * Line
1471
+ * @description the loop's first line, which names it
1472
+ */
1473
+ line: number;
1474
+ /**
1475
+ * Pass
1476
+ * @description one iteration of this loop, numbered from 1 since the loop was last entered in that frame; null when not counted
1477
+ */
1478
+ pass: number | null;
1479
+ };
1480
+ /**
1481
+ * MessageEvent
1482
+ * @description omp: a whole message or a turn's closing thinking. Either `role` + `text`, or `thinking`.
1483
+ */
1484
+ MessageEvent: {
1485
+ /**
1486
+ * Type
1487
+ * @enum {string}
1488
+ */
1489
+ type: "message_start" | "message_end" | "turn_end";
1490
+ /** Role */
1491
+ role?: string | null;
1492
+ /** Text */
1493
+ text?: string | null;
1494
+ /** Thinking */
1495
+ thinking?: string | null;
1496
+ } & {
1497
+ [key: string]: unknown;
1498
+ };
1499
+ /**
1500
+ * MessageUpdateEvent
1501
+ * @description A piece of assistant prose: `ev` is `text_delta` or `thinking_delta` (omp may send its other delta kinds).
1502
+ */
1503
+ MessageUpdateEvent: {
1504
+ /**
1505
+ * Type
1506
+ * @constant
1507
+ */
1508
+ type: "message_update";
1509
+ /** Ev */
1510
+ ev: string;
1511
+ /** Delta */
1512
+ delta: string;
1513
+ } & {
1514
+ [key: string]: unknown;
1515
+ };
1516
+ /**
1517
+ * ModelUsage
1518
+ * @description What a run's agent sessions spent on one model of one coding agent, from each
1519
+ * journal row's hops (a failover's hops on two models count apart), a hop's spend on
1520
+ * other models (`Hop.other_models`) on each of them. Python tasks have no model and are
1521
+ * not counted.
1522
+ */
1523
+ ModelUsage: {
1524
+ /** Agent */
1525
+ agent: string;
1526
+ /** Model */
1527
+ model: string;
1528
+ /**
1529
+ * Sessions
1530
+ * @description hops: agent sessions launched on it (pool members tried on one hop count once); 0 for an other model only
1531
+ */
1532
+ sessions: number;
1533
+ /**
1534
+ * Calls
1535
+ * @description API calls
1536
+ * @default 0
1537
+ */
1538
+ calls?: number;
1539
+ /**
1540
+ * Input
1541
+ * @default 0
1542
+ */
1543
+ input?: number;
1544
+ /**
1545
+ * Output
1546
+ * @default 0
1547
+ */
1548
+ output?: number;
1549
+ /**
1550
+ * Cache Read
1551
+ * @default 0
1552
+ */
1553
+ cache_read?: number;
1554
+ /**
1555
+ * Cache Creation
1556
+ * @default 0
1557
+ */
1558
+ cache_creation?: number;
1559
+ /**
1560
+ * Cost Usd
1561
+ * @description what the coding agent reported; null when no session on it reported a cost
1562
+ */
1563
+ cost_usd?: number | null;
1564
+ /**
1565
+ * Wall S
1566
+ * @default 0
1567
+ */
1568
+ wall_s?: number;
1569
+ /**
1570
+ * Peak Context
1571
+ * @description peak context: the largest input of one API call of a session on it (tokens); null when none reported one
1572
+ */
1573
+ peak_context?: number | null;
1574
+ /**
1575
+ * Context Window
1576
+ * @description its context window (tokens of one API call's input) as the coding agent reported it; null when none did
1577
+ */
1578
+ context_window?: number | null;
1579
+ };
1580
+ /**
1581
+ * NoteBody
1582
+ * @description Text beside the figures: what a part shows, how to read a number. `text` is
1583
+ * markdown (paragraphs, lists, emphasis, code, http(s) links; any markup in it is shown
1584
+ * as text). `tone` marks a note that warns (`attention`) or reports a failure (`failed`).
1585
+ */
1586
+ NoteBody: {
1587
+ /**
1588
+ * Title
1589
+ * @description a heading over the body
1590
+ */
1591
+ title?: string | null;
1592
+ /**
1593
+ * Collapsed
1594
+ * @description shown folded, under its title
1595
+ * @default false
1596
+ */
1597
+ collapsed?: boolean;
1598
+ /**
1599
+ * Anchor
1600
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
1601
+ */
1602
+ anchor?: string | null;
1603
+ /**
1604
+ * Type
1605
+ * @default note
1606
+ * @constant
1607
+ */
1608
+ type?: "note";
1609
+ /** Text */
1610
+ text: string;
1611
+ /** Tone */
1612
+ tone?: ("failed" | "attention" | "done" | "running" | "muted" | "neutral") | null;
1613
+ };
1614
+ /**
1615
+ * NoticeEvent
1616
+ * @description A line of session bookkeeping: init, a retry, a rate-limit status, a custom message.
1617
+ */
1618
+ NoticeEvent: {
1619
+ /**
1620
+ * Type
1621
+ * @constant
1622
+ */
1623
+ type: "notice";
1624
+ /** Text */
1625
+ text: string;
1626
+ } & {
1627
+ [key: string]: unknown;
1628
+ };
1629
+ /**
1630
+ * OtherEvent
1631
+ * @description Any other event: omp's bare lifecycle markers (`agent_start`, `agent_end`,
1632
+ * `turn_start`, `auto_retry_end`) and whatever a custom backend's registered
1633
+ * normalizer emits, including a known `type` whose fields do not match above.
1634
+ */
1635
+ OtherEvent: {
1636
+ /** Type */
1637
+ type: string;
1638
+ } & {
1639
+ [key: string]: unknown;
1640
+ };
1641
+ /**
1642
+ * OtherModel
1643
+ * @description What a hop spent on a model other than its own (`Hop.other_models`).
1644
+ */
1645
+ OtherModel: {
1646
+ /** Cost Usd */
1647
+ cost_usd?: number | null;
1648
+ /**
1649
+ * Input
1650
+ * @default 0
1651
+ */
1652
+ input?: number;
1653
+ /**
1654
+ * Output
1655
+ * @default 0
1656
+ */
1657
+ output?: number;
1658
+ /**
1659
+ * Cache Read
1660
+ * @default 0
1661
+ */
1662
+ cache_read?: number;
1663
+ /**
1664
+ * Cache Creation
1665
+ * @default 0
1666
+ */
1667
+ cache_creation?: number;
1668
+ } & {
1669
+ [key: string]: unknown;
1670
+ };
1671
+ /** OutputTally */
1672
+ OutputTally: {
1673
+ /** Valid */
1674
+ valid: number;
1675
+ /** Invalid */
1676
+ invalid: number;
1677
+ /** Refused */
1678
+ refused: number;
1679
+ /** Pending */
1680
+ pending: number;
1681
+ /** Failed */
1682
+ failed: number;
1683
+ /** Running */
1684
+ running: number;
1685
+ };
1686
+ /** Outputs */
1687
+ Outputs: {
1688
+ /** Contracts */
1689
+ contracts: components["schemas"]["ContractRecord"][];
1690
+ /** @description output contracts per status */
1691
+ tally: components["schemas"]["OutputTally"];
1692
+ };
1693
+ /** OutputsMessage */
1694
+ OutputsMessage: {
1695
+ /**
1696
+ * Event
1697
+ * @constant
1698
+ */
1699
+ event: "outputs";
1700
+ data: components["schemas"]["Outputs"];
1701
+ };
1702
+ /**
1703
+ * PanelInfo
1704
+ * @description A panel a domain registered: its tab label, tooltip and glyph, and what it is
1705
+ * computed over (`run`: one run, a tab of the run; `trends`: the runs of a period).
1706
+ */
1707
+ PanelInfo: {
1708
+ /** Name */
1709
+ name: string;
1710
+ /** Title */
1711
+ title: string;
1712
+ /** Description */
1713
+ description: string;
1714
+ /** Icon */
1715
+ icon: string;
1716
+ /**
1717
+ * Scope
1718
+ * @default run
1719
+ * @enum {string}
1720
+ */
1721
+ scope?: "run" | "trends";
1722
+ /**
1723
+ * Tab
1724
+ * @description a trends panel's tab of the Trends page, with the panels of the same `tab`; '': on the first tab
1725
+ * @default
1726
+ */
1727
+ tab?: string;
1728
+ };
1729
+ /**
1730
+ * PanelMessage
1731
+ * @description A domain panel's body (`PanelBody`), sent when it changed. `{"error": ...}`
1732
+ * when the panel raised.
1733
+ */
1734
+ PanelMessage: {
1735
+ /**
1736
+ * Event
1737
+ * @description `panel:<name>`, one per run panel in /api/info `panels`
1738
+ */
1739
+ event: string;
1740
+ /** Data */
1741
+ data: components["schemas"]["TilesBody"] | components["schemas"]["TableBody"] | components["schemas"]["ColumnsBody"] | components["schemas"]["LinesBody"] | components["schemas"]["HeatmapBody"] | components["schemas"]["HBarsBody"] | components["schemas"]["StatusGridBody"] | components["schemas"]["NoteBody"] | components["schemas"]["CodeBody"] | components["schemas"]["TreeBody"] | components["schemas"]["BlocksBody"] | {
1742
+ [key: string]: unknown;
1743
+ };
1744
+ };
1745
+ /**
1746
+ * PanelTile
1747
+ * @description A figure as a tile (`cae-stat-tiles`). `sub`: lines under the value, each a row of facts.
1748
+ */
1749
+ PanelTile: {
1750
+ /** Id */
1751
+ id: string;
1752
+ /** Label */
1753
+ label: string;
1754
+ /**
1755
+ * Value
1756
+ * @description a number as given (an integer stays one), or text already formatted
1757
+ */
1758
+ value: number | string;
1759
+ /** Tone */
1760
+ tone?: ("failed" | "attention" | "done" | "running" | "muted" | "neutral") | null;
1761
+ /** Tip */
1762
+ tip?: string | null;
1763
+ /** Sub */
1764
+ sub?: string[][];
1765
+ };
1766
+ /**
1767
+ * Plan
1768
+ * @description The queued tasks, their groups, and the flow calls that created them. A run with
1769
+ * no `flow_calls.jsonl` (its tasks queued by hand, not by a flow) has no flow call.
1770
+ */
1771
+ Plan: {
1772
+ /** Nodes */
1773
+ nodes: components["schemas"]["PlanNode"][];
1774
+ /** Groups */
1775
+ groups: components["schemas"]["PlanGroup"][];
1776
+ /**
1777
+ * Flow Calls
1778
+ * @description in start order
1779
+ */
1780
+ flow_calls?: components["schemas"]["FlowCallNode"][];
1781
+ /**
1782
+ * Quota Caps
1783
+ * @description the run's credentials that have quota caps (`run.json`)
1784
+ */
1785
+ quota_caps?: components["schemas"]["QuotaCap"][];
1786
+ /**
1787
+ * Quota Rule
1788
+ * @description `module.qualname` of the run's quota rule (`Pipeline(quota_rule=)`); empty for none
1789
+ * @default
1790
+ */
1791
+ quota_rule?: string;
1792
+ /**
1793
+ * Rests
1794
+ * @description each rest of a credential in the run (`rests.jsonl`), in start order
1795
+ */
1796
+ rests?: components["schemas"]["CredentialRest"][];
1797
+ /**
1798
+ * Models
1799
+ * @description each model the run's agent sessions ran on, in order of first use
1800
+ */
1801
+ models?: components["schemas"]["ModelUsage"][];
1802
+ /**
1803
+ * Services
1804
+ * @description each start of a service of the run (`services.jsonl`), with its stop, in start order
1805
+ */
1806
+ services?: components["schemas"]["ServiceSpan"][];
1807
+ /** @description what the run's preflight did (`run.json`); null when its run.json records none */
1808
+ preflight?: components["schemas"]["PreflightRecord"] | null;
1809
+ };
1810
+ /**
1811
+ * PlanGroup
1812
+ * @description A group: a column of the pipeline view (a kind, the kinds `Monitor(groups=)` puts
1813
+ * together, or the implementation kinds of a base kind), its members counted by state.
1814
+ */
1815
+ PlanGroup: {
1816
+ /** Id */
1817
+ id: string;
1818
+ /** Label */
1819
+ label: string;
1820
+ /** Total */
1821
+ total: number;
1822
+ /** Done */
1823
+ done: number;
1824
+ /**
1825
+ * Partial
1826
+ * @default 0
1827
+ */
1828
+ partial?: number;
1829
+ /** Failed */
1830
+ failed: number;
1831
+ /** Running */
1832
+ running: number;
1833
+ /** Pending */
1834
+ pending: number;
1835
+ /** Skipped */
1836
+ skipped: number;
1837
+ /** Blocked */
1838
+ blocked: number;
1839
+ };
1840
+ /** PlanMessage */
1841
+ PlanMessage: {
1842
+ /**
1843
+ * Event
1844
+ * @constant
1845
+ */
1846
+ event: "plan";
1847
+ data: components["schemas"]["Plan"];
1848
+ };
1849
+ /**
1850
+ * PlanNode
1851
+ * @description A queued task (a `plan.jsonl` row, passed through) with its state and
1852
+ * layout. The journal fields (`wall_s` .. `attempts`) appear once it finished.
1853
+ * The origin fields (`flow` .. `flow_call`) say where the flow created it.
1854
+ */
1855
+ PlanNode: {
1856
+ /**
1857
+ * Ts
1858
+ * @description when it was queued (absent for a node rebuilt from the journal)
1859
+ * @default
1860
+ */
1861
+ ts?: string;
1862
+ /** Key */
1863
+ key: string;
1864
+ /** Kind */
1865
+ kind: string;
1866
+ /**
1867
+ * Unit
1868
+ * @default
1869
+ */
1870
+ unit?: string;
1871
+ /**
1872
+ * Claims
1873
+ * @description the names it holds while it runs, its kind's `claims` filled in
1874
+ */
1875
+ claims?: string[];
1876
+ /**
1877
+ * After
1878
+ * @description task keys it waits for
1879
+ */
1880
+ after?: string[];
1881
+ /**
1882
+ * Priority
1883
+ * @description its task call's `priority`: a tie-breaker in the queue, higher first
1884
+ * @default 0
1885
+ */
1886
+ priority?: number;
1887
+ /**
1888
+ * Credential
1889
+ * @description the credential its task call names (`credential=`), which every route of its kind ran it as; empty when it names none, or a run-wide override outranks it
1890
+ * @default
1891
+ */
1892
+ credential?: string;
1893
+ /**
1894
+ * Executor
1895
+ * @default agent
1896
+ * @enum {string}
1897
+ */
1898
+ executor?: "agent" | "python";
1899
+ /**
1900
+ * Flow
1901
+ * @description the flow path: frames of flow code that created it, outermost first
1902
+ */
1903
+ flow?: components["schemas"]["Frame"][];
1904
+ /**
1905
+ * Created From
1906
+ * @description keys whose results its flow call had received when it created it
1907
+ */
1908
+ created_from?: string[];
1909
+ /**
1910
+ * Flow Call
1911
+ * @description the id of the flow call that created it; null for a task with no origin
1912
+ */
1913
+ flow_call?: string | null;
1914
+ /**
1915
+ * Base Kind
1916
+ * @description an implementation kind's base kind (`agent_task(implementations=)`), its group unless `groups` lists it; else empty
1917
+ * @default
1918
+ */
1919
+ base_kind?: string;
1920
+ /**
1921
+ * State
1922
+ * @enum {string}
1923
+ */
1924
+ state: "pending" | "running" | "done" | "partial" | "failed" | "skipped" | "blocked";
1925
+ /**
1926
+ * Level
1927
+ * @description depth in the dependency graph, 0 for a task that waits for nothing
1928
+ */
1929
+ level: number;
1930
+ /** Group */
1931
+ group: string;
1932
+ /**
1933
+ * Wall S
1934
+ * @default 0
1935
+ */
1936
+ wall_s?: number;
1937
+ /**
1938
+ * Stop
1939
+ * @default
1940
+ */
1941
+ stop?: string;
1942
+ /**
1943
+ * Route
1944
+ * @default
1945
+ */
1946
+ route?: string;
1947
+ /**
1948
+ * Attempts
1949
+ * @default 1
1950
+ */
1951
+ attempts?: number;
1952
+ /**
1953
+ * Deferred
1954
+ * @description why the queue deferred it, never launched (`deferred.jsonl`): a deadline, a resting credential; empty when it was not
1955
+ * @default
1956
+ */
1957
+ deferred?: string;
1958
+ /** @description the same as data; null when it was not deferred, or the run recorded no cause */
1959
+ deferred_cause?: components["schemas"]["DeferralCause"] | null;
1960
+ /**
1961
+ * Rerun
1962
+ * @description why a resume ran it again although an earlier attempt of the run had finished it (its outside state changed, ...), from its last journal row; empty when no earlier attempt had
1963
+ * @default
1964
+ */
1965
+ rerun?: string;
1966
+ } & {
1967
+ [key: string]: unknown;
1968
+ };
1969
+ /**
1970
+ * PreflightRecord
1971
+ * @description What a preflight did, as `run.json` records it (`preflight`): its policy, the routes
1972
+ * it dropped, and, for each kind left with no route, its substitution, the kind kept
1973
+ * as configured, or the kind that stopped the run (`stopped`).
1974
+ */
1975
+ PreflightRecord: {
1976
+ /**
1977
+ * Policy
1978
+ * @description `Pipeline(preflight=)`; `off`: no route was probed
1979
+ * @enum {string}
1980
+ */
1981
+ policy: "substitute" | "stop" | "off";
1982
+ /** Dropped */
1983
+ dropped?: components["schemas"]["DroppedRoute"][];
1984
+ /** Substituted */
1985
+ substituted?: components["schemas"]["Substitution"][];
1986
+ /** Kept */
1987
+ kept?: components["schemas"]["KeptKind"][];
1988
+ /**
1989
+ * Stopped
1990
+ * @description the kinds with no route left that stopped the run (policy `stop`)
1991
+ */
1992
+ stopped?: string[];
1993
+ };
1994
+ /**
1995
+ * ProcNode
1996
+ * @description A process in the run's tree (three levels deep at most). The launch fields
1997
+ * are set on the topmost process of an agent launch.
1998
+ */
1999
+ ProcNode: {
2000
+ /** Pid */
2001
+ pid: number;
2002
+ /** Age S */
2003
+ age_s: number;
2004
+ /**
2005
+ * Cmd
2006
+ * @description the first three words of the command line
2007
+ */
2008
+ cmd: string;
2009
+ /** Full Cmd */
2010
+ full_cmd: string;
2011
+ /** Children */
2012
+ children?: components["schemas"]["ProcNode"][];
2013
+ /** Key */
2014
+ key?: string | null;
2015
+ /** Kind */
2016
+ kind?: string | null;
2017
+ /** Unit */
2018
+ unit?: string | null;
2019
+ /**
2020
+ * Role
2021
+ * @description the role it runs as, from the prompt's TELEMETRY line
2022
+ */
2023
+ role?: string | null;
2024
+ /** Model */
2025
+ model?: string | null;
2026
+ /** Plugin */
2027
+ plugin?: string | null;
2028
+ };
2029
+ /**
2030
+ * Procs
2031
+ * @description The run's live processes. Everything but the run's own fields is empty when it is not alive.
2032
+ */
2033
+ Procs: {
2034
+ /** Run */
2035
+ run: string;
2036
+ /** Alive */
2037
+ alive: boolean;
2038
+ /** Pid */
2039
+ pid: number | null;
2040
+ /** Argv */
2041
+ argv: string[];
2042
+ /** Started At */
2043
+ started_at: string;
2044
+ /** Max Workers */
2045
+ max_workers: number | null;
2046
+ /** Run Group */
2047
+ run_group: string;
2048
+ /** Launches */
2049
+ launches: components["schemas"]["AgentProcess"][];
2050
+ /** Tree */
2051
+ tree: components["schemas"]["ProcNode"][];
2052
+ /** Python Tasks */
2053
+ python_tasks: components["schemas"]["InflightPythonTask"][];
2054
+ };
2055
+ /**
2056
+ * ProcsMessage
2057
+ * @description The live processes, sent when a launch starts or ends (not on every age tick).
2058
+ */
2059
+ ProcsMessage: {
2060
+ /**
2061
+ * Event
2062
+ * @constant
2063
+ */
2064
+ event: "procs";
2065
+ data: components["schemas"]["Procs"];
2066
+ };
2067
+ /**
2068
+ * QuotaCap
2069
+ * @description One credential's quota caps (`[credentials.<name>] max_five_hour_pct`, `max_seven_day_pct`):
2070
+ * the utilization (%) of a window past which it rests; None for a window with no cap.
2071
+ */
2072
+ QuotaCap: {
2073
+ /** Credential */
2074
+ credential: string;
2075
+ /** Five Hour Pct */
2076
+ five_hour_pct?: number | null;
2077
+ /** Seven Day Pct */
2078
+ seven_day_pct?: number | null;
2079
+ };
2080
+ /**
2081
+ * QuotaReading
2082
+ * @description A subscription's utilization during a launch, from one of these sources:
2083
+ *
2084
+ * * Claude Code: in its stream, when a session starts or resumes;
2085
+ * * Codex: in its stream, with each API call of a ChatGPT login;
2086
+ * * omp (`omp`, `omp-rpc`): at each launch, what the account's latest request reported
2087
+ * (`omp usage --json`, read before the launch: `Backend.usage_reading`);
2088
+ * * opencode and pi: for an OpenCode Go model only, OpenCode's usage endpoint, read by
2089
+ * contraagent before each launch (`Backend.usage_reading`); the agents report none.
2090
+ *
2091
+ * Account-wide: it includes whatever else used the same account, parallel tasks too.
2092
+ * `LaunchResult.quota` holds a launch's, the journal's `quota` an attempt's that give a
2093
+ * 5-hour or weekly utilization.
2094
+ */
2095
+ QuotaReading: {
2096
+ /** Observed At */
2097
+ observed_at?: string | null;
2098
+ /**
2099
+ * Credential
2100
+ * @default
2101
+ */
2102
+ credential?: string;
2103
+ /** Five Hour Pct */
2104
+ five_hour_pct?: number | null;
2105
+ /** Five Hour Resets At */
2106
+ five_hour_resets_at?: string | null;
2107
+ /** Seven Day Pct */
2108
+ seven_day_pct?: number | null;
2109
+ /** Seven Day Resets At */
2110
+ seven_day_resets_at?: string | null;
2111
+ /**
2112
+ * Status
2113
+ * @default
2114
+ */
2115
+ status?: string;
2116
+ /**
2117
+ * Account
2118
+ * @default
2119
+ */
2120
+ account?: string;
2121
+ /**
2122
+ * Status Window
2123
+ * @default
2124
+ */
2125
+ status_window?: string;
2126
+ /** Threshold Pct */
2127
+ threshold_pct?: number | null;
2128
+ /**
2129
+ * Overage Status
2130
+ * @default
2131
+ */
2132
+ overage_status?: string;
2133
+ /**
2134
+ * Overage Disabled Reason
2135
+ * @default
2136
+ */
2137
+ overage_disabled_reason?: string;
2138
+ /** Using Overage */
2139
+ using_overage?: boolean | null;
2140
+ /** Windows */
2141
+ windows?: {
2142
+ [key: string]: components["schemas"]["QuotaWindow"];
2143
+ };
2144
+ /** Extra */
2145
+ extra?: {
2146
+ [key: string]: unknown;
2147
+ };
2148
+ } & {
2149
+ [key: string]: unknown;
2150
+ };
2151
+ /**
2152
+ * QuotaWindow
2153
+ * @description One window of a reading: its utilization (%) and when it resets (ISO 8601).
2154
+ */
2155
+ QuotaWindow: {
2156
+ /** Pct */
2157
+ pct?: number | null;
2158
+ /** Resets At */
2159
+ resets_at?: string | null;
2160
+ } & {
2161
+ [key: string]: unknown;
2162
+ };
2163
+ /**
2164
+ * ReadyMessage
2165
+ * @description Sent once per connection, after the first round of messages: the journal
2166
+ * replayed so far and the current value of every other view. A row that
2167
+ * arrives after it is new, not part of the replay.
2168
+ */
2169
+ ReadyMessage: {
2170
+ /**
2171
+ * Event
2172
+ * @constant
2173
+ */
2174
+ event: "ready";
2175
+ data: components["schemas"]["FeedReady"];
2176
+ };
2177
+ /**
2178
+ * RetryEvent
2179
+ * @description omp: the agent retrying after a provider error.
2180
+ */
2181
+ RetryEvent: {
2182
+ /**
2183
+ * Type
2184
+ * @constant
2185
+ */
2186
+ type: "auto_retry_start";
2187
+ /** Attempt */
2188
+ attempt?: number | null;
2189
+ /**
2190
+ * Err
2191
+ * @default
2192
+ */
2193
+ err?: string;
2194
+ } & {
2195
+ [key: string]: unknown;
2196
+ };
2197
+ /**
2198
+ * RunEvent
2199
+ * @description One message of /events?run=
2200
+ */
2201
+ RunEvent: components["schemas"]["JournalMessage"] | components["schemas"]["ProcsMessage"] | components["schemas"]["PlanMessage"] | components["schemas"]["OutputsMessage"] | components["schemas"]["CursorMessage"] | components["schemas"]["PanelMessage"] | components["schemas"]["ReadyMessage"];
2202
+ /**
2203
+ * RunSummary
2204
+ * @description One run directory, as the run picker lists it.
2205
+ */
2206
+ RunSummary: {
2207
+ /** Run */
2208
+ run: string;
2209
+ /**
2210
+ * Run Group
2211
+ * @description the label grouping runs (`Run(run_group=)`); the run id when none was given
2212
+ */
2213
+ run_group: string;
2214
+ /**
2215
+ * Attempts
2216
+ * @description journal rows: finished task attempts
2217
+ */
2218
+ attempts: number;
2219
+ /**
2220
+ * Ok
2221
+ * @description journal rows that passed, not counting `partial` ones
2222
+ */
2223
+ ok: number;
2224
+ /**
2225
+ * Partial
2226
+ * @description journal rows with stop `partial`
2227
+ * @default 0
2228
+ */
2229
+ partial?: number;
2230
+ /**
2231
+ * Not Run
2232
+ * @description journal rows of tasks that never ran: refused for an input (`invalid_input`) or skipped
2233
+ * @default 0
2234
+ */
2235
+ not_run?: number;
2236
+ tasks: components["schemas"]["TaskCounts"];
2237
+ /**
2238
+ * Cost Usd
2239
+ * @description what the coding agents reported the run cost, in USD; null when none reported
2240
+ */
2241
+ cost_usd?: number | null;
2242
+ /** @description tokens of every attempt, summed */
2243
+ tokens: components["schemas"]["TokenUsage"];
2244
+ /**
2245
+ * Quota
2246
+ * @description per credential (account): the run's first and last utilization reading; highest weekly use first
2247
+ */
2248
+ quota?: components["schemas"]["AccountQuota"][];
2249
+ /**
2250
+ * Wall S
2251
+ * @description sum of the rows' wall time, rounded to seconds
2252
+ */
2253
+ wall_s: number;
2254
+ /**
2255
+ * Last Ts
2256
+ * @description ISO time of the last journal row, else the directory's mtime
2257
+ */
2258
+ last_ts: string;
2259
+ /**
2260
+ * Kinds
2261
+ * @description journal rows per task kind
2262
+ */
2263
+ kinds: {
2264
+ [key: string]: number;
2265
+ };
2266
+ /**
2267
+ * Running
2268
+ * @description the process that runs it is alive
2269
+ */
2270
+ running: boolean;
2271
+ /**
2272
+ * Unresponsive
2273
+ * @description its host last reported it alive and has stopped reporting (a hub only)
2274
+ * @default false
2275
+ */
2276
+ unresponsive?: boolean;
2277
+ /**
2278
+ * Host Id
2279
+ * @description the host that drives it; empty when its run.json does not say
2280
+ * @default
2281
+ */
2282
+ host_id?: string;
2283
+ /**
2284
+ * Run Uid
2285
+ * @description the id no other run has, on any host; empty when its run.json does not say
2286
+ * @default
2287
+ */
2288
+ run_uid?: string;
2289
+ /** Started At */
2290
+ started_at: string;
2291
+ /**
2292
+ * Stub
2293
+ * @description a stub run: the stub agent, or a replay's recordings, played its tasks (`Pipeline(stub=)`, `contraagent run --stub`)
2294
+ * @default false
2295
+ */
2296
+ stub?: boolean;
2297
+ /**
2298
+ * Replay
2299
+ * @description a replay: the directory of the recordings it played (`Pipeline(replay=)`), and with `record_missing` recorded into (then `stub` is false, and each played attempt's journal row says `replayed`); empty otherwise
2300
+ * @default
2301
+ */
2302
+ replay?: string;
2303
+ /**
2304
+ * Row Extras
2305
+ * @description the journal columns that are the pipeline's own (`Run(row_extras=)`), in the order they first appear
2306
+ */
2307
+ row_extras?: string[];
2308
+ };
2309
+ /**
2310
+ * ServiceSpan
2311
+ * @description One start of the service a claim name stands for (`services.jsonl`), with its stop.
2312
+ */
2313
+ ServiceSpan: {
2314
+ /**
2315
+ * Name
2316
+ * @description the claim name the service stands for
2317
+ */
2318
+ name: string;
2319
+ /**
2320
+ * Started At
2321
+ * @description when its start ended, ISO 8601
2322
+ */
2323
+ started_at: string;
2324
+ /**
2325
+ * Key
2326
+ * @description the task whose claim started it
2327
+ * @default
2328
+ */
2329
+ key?: string;
2330
+ /**
2331
+ * Address
2332
+ * @description what it gave its tasks to reach it; null for none
2333
+ */
2334
+ address?: string | null;
2335
+ /**
2336
+ * Start S
2337
+ * @description how long its start took, in seconds
2338
+ * @default 0
2339
+ */
2340
+ start_s?: number;
2341
+ /**
2342
+ * Start Error
2343
+ * @description the exception of a start that failed (the service did not start); empty when it started
2344
+ * @default
2345
+ */
2346
+ start_error?: string;
2347
+ /**
2348
+ * Stopped At
2349
+ * @description when it stopped, ISO 8601; empty while it is up, or when the run ended with no stop recorded
2350
+ * @default
2351
+ */
2352
+ stopped_at?: string;
2353
+ /**
2354
+ * Stop Cause
2355
+ * @description why it stopped; null while it is up
2356
+ */
2357
+ stop_cause?: ("run_end" | "interrupted") | null;
2358
+ /**
2359
+ * Stop Error
2360
+ * @description the exception its stop raised; empty when the stop went well
2361
+ * @default
2362
+ */
2363
+ stop_error?: string;
2364
+ };
2365
+ /**
2366
+ * SkippedHop
2367
+ * @description A hop of the failover chain an attempt passed over without a launch, because its
2368
+ * credential rested: its route label and model, and the rest.
2369
+ */
2370
+ SkippedHop: {
2371
+ /** Credential */
2372
+ credential: string;
2373
+ /**
2374
+ * Window
2375
+ * @default
2376
+ * @enum {string}
2377
+ */
2378
+ window?: "" | "five_hour" | "seven_day";
2379
+ /** Pct */
2380
+ pct?: number | null;
2381
+ /** Cap */
2382
+ cap?: number | null;
2383
+ /**
2384
+ * Rule
2385
+ * @default
2386
+ */
2387
+ rule?: string;
2388
+ /**
2389
+ * Until
2390
+ * @default
2391
+ */
2392
+ until?: string;
2393
+ /**
2394
+ * Account
2395
+ * @default
2396
+ */
2397
+ account?: string;
2398
+ /** Reading */
2399
+ reading?: {
2400
+ [key: string]: unknown;
2401
+ } | null;
2402
+ /**
2403
+ * Route
2404
+ * @default
2405
+ */
2406
+ route?: string;
2407
+ /**
2408
+ * Model
2409
+ * @default
2410
+ */
2411
+ model?: string;
2412
+ } & {
2413
+ [key: string]: unknown;
2414
+ };
2415
+ /**
2416
+ * StageEntry
2417
+ * @description One transition of the cursor (`HistoryEntry`), its time as `datetime.isoformat` gives it.
2418
+ */
2419
+ StageEntry: {
2420
+ /** Name */
2421
+ name: string;
2422
+ /** At */
2423
+ at: string;
2424
+ };
2425
+ /**
2426
+ * StatusGridBody
2427
+ * @description A state per row (`y`) and column (`x`): `cells[row][column]`, null where there is
2428
+ * none. Each cell is coloured by its tone and named by its label (in the legend, the
2429
+ * tooltip and the table): the states of hourly cycles by day, say.
2430
+ */
2431
+ StatusGridBody: {
2432
+ /**
2433
+ * Title
2434
+ * @description a heading over the body
2435
+ */
2436
+ title?: string | null;
2437
+ /**
2438
+ * Collapsed
2439
+ * @description shown folded, under its title
2440
+ * @default false
2441
+ */
2442
+ collapsed?: boolean;
2443
+ /**
2444
+ * Anchor
2445
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
2446
+ */
2447
+ anchor?: string | null;
2448
+ /**
2449
+ * Type
2450
+ * @default status_grid
2451
+ * @constant
2452
+ */
2453
+ type?: "status_grid";
2454
+ /** X */
2455
+ x: string[];
2456
+ /** Y */
2457
+ y: string[];
2458
+ /** Cells */
2459
+ cells: (components["schemas"]["GridCell"] | null)[][];
2460
+ };
2461
+ /**
2462
+ * StreamMessage
2463
+ * @description `/events/stream`: the first message is the transcript's tail page, then each
2464
+ * message carries only the events after the previous one.
2465
+ */
2466
+ StreamMessage: {
2467
+ /**
2468
+ * Event
2469
+ * @constant
2470
+ */
2471
+ event: "stream";
2472
+ data: components["schemas"]["StreamPage"];
2473
+ };
2474
+ /**
2475
+ * StreamPage
2476
+ * @description A page of one transcript. `total` is the file's line count: pass it back as
2477
+ * `since` for the next page. The first page (`since=0`) is the tail; `behind`
2478
+ * lines precede it, fetched by asking again with a smaller `since`.
2479
+ */
2480
+ StreamPage: {
2481
+ /** Events */
2482
+ events: (components["schemas"]["LaunchEvent"] | components["schemas"]["MessageUpdateEvent"] | components["schemas"]["ToolStartEvent"] | components["schemas"]["ToolEndEvent"] | components["schemas"]["ToolCallEchoEvent"] | components["schemas"]["ToolResultEchoEvent"] | components["schemas"]["MessageEvent"] | components["schemas"]["NoticeEvent"] | components["schemas"]["RetryEvent"] | components["schemas"]["OtherEvent"])[];
2483
+ /** Total */
2484
+ total: number;
2485
+ /** Behind */
2486
+ behind: number;
2487
+ };
2488
+ /**
2489
+ * Substitution
2490
+ * @description A kind with no route left, run on the first route that answered (`substitute`).
2491
+ */
2492
+ Substitution: {
2493
+ /** Kind */
2494
+ kind: string;
2495
+ /** From Agent */
2496
+ from_agent: string;
2497
+ /** From Model */
2498
+ from_model: string;
2499
+ /** To Agent */
2500
+ to_agent: string;
2501
+ /** To Model */
2502
+ to_model: string;
2503
+ };
2504
+ /**
2505
+ * TableBody
2506
+ * @description Rows of values, one key per column; a row's `_tone` is its status (a `Tone`).
2507
+ */
2508
+ TableBody: {
2509
+ /**
2510
+ * Title
2511
+ * @description a heading over the body
2512
+ */
2513
+ title?: string | null;
2514
+ /**
2515
+ * Collapsed
2516
+ * @description shown folded, under its title
2517
+ * @default false
2518
+ */
2519
+ collapsed?: boolean;
2520
+ /**
2521
+ * Anchor
2522
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
2523
+ */
2524
+ anchor?: string | null;
2525
+ /**
2526
+ * Type
2527
+ * @default table
2528
+ * @constant
2529
+ */
2530
+ type?: "table";
2531
+ /** Columns */
2532
+ columns: components["schemas"]["TableColumn"][];
2533
+ /** Rows */
2534
+ rows: {
2535
+ [key: string]: unknown;
2536
+ }[];
2537
+ };
2538
+ /**
2539
+ * TableColumn
2540
+ * @description A column of a table body: `id` names the key of each row it shows. `bar`: a bar in
2541
+ * the cell, as long as the value against the column's largest. `link`: the key of each
2542
+ * row that holds the URL the cell leads to (http or https; any other is no link).
2543
+ */
2544
+ TableColumn: {
2545
+ /** Id */
2546
+ id: string;
2547
+ /** Label */
2548
+ label: string;
2549
+ /** Align */
2550
+ align?: ("start" | "end") | null;
2551
+ /** Format */
2552
+ format?: ("usd" | "pct" | "duration" | "tokens" | "datetime" | "number") | null;
2553
+ /**
2554
+ * Bar
2555
+ * @default false
2556
+ */
2557
+ bar?: boolean;
2558
+ /**
2559
+ * Link
2560
+ * @description the key of the row that holds the cell's URL
2561
+ */
2562
+ link?: string | null;
2563
+ /** Tip */
2564
+ tip?: string | null;
2565
+ };
2566
+ /**
2567
+ * TaskCounts
2568
+ * @description A run's tasks (not attempts) by how they ended. `not_started`: refused for
2569
+ * an input, or waiting behind a task that failed; `running`: running now (in a
2570
+ * live run); `waiting`: queued in a live run; `not_run`: deferred, or queued in a
2571
+ * run that is no longer live (it will not run).
2572
+ */
2573
+ TaskCounts: {
2574
+ /** Total */
2575
+ total: number;
2576
+ /** Done */
2577
+ done: number;
2578
+ /**
2579
+ * Partial
2580
+ * @description tasks whose last result was `partial`: ok, the output a placeholder; not in `done`
2581
+ * @default 0
2582
+ */
2583
+ partial?: number;
2584
+ /** Failed */
2585
+ failed: number;
2586
+ /** Not Started */
2587
+ not_started: number;
2588
+ /**
2589
+ * Running
2590
+ * @default 0
2591
+ */
2592
+ running?: number;
2593
+ /** Waiting */
2594
+ waiting: number;
2595
+ /**
2596
+ * Not Run
2597
+ * @default 0
2598
+ */
2599
+ not_run?: number;
2600
+ /** Skipped */
2601
+ skipped: number;
2602
+ };
2603
+ /**
2604
+ * TaskDefinition
2605
+ * @description What defined one kind of task in this run (`definitions/<kind>.json`).
2606
+ * Beyond `kind`, the keys are the task adapter's choice; these are the ones
2607
+ * the bundled adapters write.
2608
+ */
2609
+ TaskDefinition: {
2610
+ /** Kind */
2611
+ kind: string;
2612
+ /** Role */
2613
+ role?: string | null;
2614
+ /** Plugin Dirs */
2615
+ plugin_dirs?: string[];
2616
+ /** Files */
2617
+ files?: components["schemas"]["DefinitionFile"][];
2618
+ /** Plugin */
2619
+ plugin?: boolean | null;
2620
+ /** Name */
2621
+ name?: string | null;
2622
+ /** Root */
2623
+ root?: string | null;
2624
+ /** Params */
2625
+ params?: string | null;
2626
+ /** Requires */
2627
+ requires?: string[];
2628
+ /** Output */
2629
+ output?: string | null;
2630
+ /**
2631
+ * Output From
2632
+ * @description agent task: `file`, the agent writes its output; `message`, its final message is the output
2633
+ */
2634
+ output_from?: ("file" | "message") | null;
2635
+ /** Validators */
2636
+ validators?: string[];
2637
+ /**
2638
+ * Preserve
2639
+ * @description agent task: JSON pointers to the parts of its output file it keeps (`agent_task(preserve=)`)
2640
+ */
2641
+ preserve?: string[];
2642
+ /**
2643
+ * Output Of
2644
+ * @description agent task: the kind whose output file it writes (`agent_task(output_of=)`)
2645
+ */
2646
+ output_of?: string | null;
2647
+ /**
2648
+ * Base Kind
2649
+ * @description agent task: an implementation kind's base kind (`agent_task(implementations=)`)
2650
+ */
2651
+ base_kind?: string | null;
2652
+ /**
2653
+ * Tools
2654
+ * @description agent task: `[]`, a light launch with no tools (`agent_task(tools=())`); null, the tools its role allows
2655
+ */
2656
+ tools?: string[] | null;
2657
+ /** Executor */
2658
+ executor?: ("agent" | "python") | null;
2659
+ /**
2660
+ * Function
2661
+ * @description Python task: `module.qualname` of its function
2662
+ */
2663
+ function?: string | null;
2664
+ /**
2665
+ * Signature
2666
+ * @description Python task: the function's signature
2667
+ */
2668
+ signature?: string | null;
2669
+ /**
2670
+ * Doc
2671
+ * @description Python task: the function's docstring
2672
+ */
2673
+ doc?: string | null;
2674
+ /**
2675
+ * File
2676
+ * @description Python task: the source file, relative to the run's working directory when inside it
2677
+ */
2678
+ file?: string | null;
2679
+ /**
2680
+ * Line
2681
+ * @description Python task: the function's first line in `file`
2682
+ */
2683
+ line?: number | null;
2684
+ /**
2685
+ * Retries
2686
+ * @description Python task: the fresh attempts after the first, each after an exception of `retry_on` (`@python_task(retries=)`)
2687
+ */
2688
+ retries?: number | null;
2689
+ /**
2690
+ * Retry On
2691
+ * @description Python task: the exception classes that give an attempt a fresh one
2692
+ */
2693
+ retry_on?: string[] | null;
2694
+ } & {
2695
+ [key: string]: unknown;
2696
+ };
2697
+ /**
2698
+ * TaskDetail
2699
+ * @description One task, by its key. Open: the `task_detail` callback merges its own keys
2700
+ * in (a failing one leaves `task_detail_error` instead).
2701
+ */
2702
+ TaskDetail: {
2703
+ /**
2704
+ * Key
2705
+ * @description the task key asked for
2706
+ */
2707
+ key: string;
2708
+ /** Rows */
2709
+ rows: components["schemas"]["JournalRow"][];
2710
+ /**
2711
+ * Launches
2712
+ * @description its launches running now; empty once it has finished (finished attempts are `rows`)
2713
+ */
2714
+ launches: components["schemas"]["TaskLaunch"][];
2715
+ definition: components["schemas"]["TaskDefinition"] | null;
2716
+ io: components["schemas"]["TaskIO"];
2717
+ /**
2718
+ * Stream
2719
+ * @description the transcript's task key for /stream and /events/stream, null when it has none
2720
+ */
2721
+ stream: string | null;
2722
+ /**
2723
+ * Row Extras
2724
+ * @description the columns of `rows` that are the pipeline's own (`Run(row_extras=)`), in the order they first appear
2725
+ */
2726
+ row_extras?: string[];
2727
+ /** Task Detail Error */
2728
+ task_detail_error?: string | null;
2729
+ } & {
2730
+ [key: string]: unknown;
2731
+ };
2732
+ /**
2733
+ * TaskIO
2734
+ * @description The task's params, what it reads and leaves behind, and its neighbours in the plan.
2735
+ */
2736
+ TaskIO: {
2737
+ /** Params */
2738
+ params: {
2739
+ [key: string]: unknown;
2740
+ };
2741
+ /** Inputs */
2742
+ inputs: components["schemas"]["ContractSpec"][];
2743
+ /** Outputs */
2744
+ outputs: components["schemas"]["ContractSpec"][];
2745
+ /**
2746
+ * Executor
2747
+ * @enum {string}
2748
+ */
2749
+ executor: "agent" | "python";
2750
+ /** Upstream */
2751
+ upstream: components["schemas"]["UpstreamTask"][];
2752
+ /** Downstream */
2753
+ downstream: components["schemas"]["DownstreamTask"][];
2754
+ };
2755
+ /**
2756
+ * TaskLaunch
2757
+ * @description A live launch of the task (a child process, or an in-process marker with empty plugin/model/role/cmd).
2758
+ */
2759
+ TaskLaunch: {
2760
+ /** Key */
2761
+ key: string | null;
2762
+ /** Kind */
2763
+ kind: string | null;
2764
+ /** Unit */
2765
+ unit: string | null;
2766
+ /** Pid */
2767
+ pid: number | null;
2768
+ /** Age S */
2769
+ age_s: number | null;
2770
+ /** Plugin */
2771
+ plugin: string | null;
2772
+ /** Model */
2773
+ model: string | null;
2774
+ /** Role */
2775
+ role: string | null;
2776
+ /**
2777
+ * Cmd
2778
+ * @description the full command line, cut at 600 characters
2779
+ */
2780
+ cmd: string;
2781
+ };
2782
+ /** TilesBody */
2783
+ TilesBody: {
2784
+ /**
2785
+ * Title
2786
+ * @description a heading over the body
2787
+ */
2788
+ title?: string | null;
2789
+ /**
2790
+ * Collapsed
2791
+ * @description shown folded, under its title
2792
+ * @default false
2793
+ */
2794
+ collapsed?: boolean;
2795
+ /**
2796
+ * Anchor
2797
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
2798
+ */
2799
+ anchor?: string | null;
2800
+ /**
2801
+ * Type
2802
+ * @default tiles
2803
+ * @constant
2804
+ */
2805
+ type?: "tiles";
2806
+ /** Tiles */
2807
+ tiles: components["schemas"]["PanelTile"][];
2808
+ };
2809
+ /**
2810
+ * TimeBoxRecord
2811
+ * @description A flow call's own deadline (`time_box`, `TimeBox`), as `flow_calls.jsonl` records it.
2812
+ */
2813
+ TimeBoxRecord: {
2814
+ /**
2815
+ * Started At
2816
+ * @description when the flow call started, where its deadline counts from (UTC ISO 8601)
2817
+ */
2818
+ started_at: string;
2819
+ /**
2820
+ * Deadline S
2821
+ * @description seconds from `started_at` to the deadline
2822
+ */
2823
+ deadline_s: number;
2824
+ /**
2825
+ * Grace S
2826
+ * @description seconds past the deadline its `finishing_kinds` still launch
2827
+ */
2828
+ grace_s: number;
2829
+ /**
2830
+ * Slack S
2831
+ * @description seconds before the deadline from which its tasks are ordered for it
2832
+ */
2833
+ slack_s: number;
2834
+ /**
2835
+ * Finishing Kinds
2836
+ * @description the kinds that still launch past the deadline
2837
+ * @default []
2838
+ */
2839
+ finishing_kinds?: string[];
2840
+ };
2841
+ /**
2842
+ * TokenUsage
2843
+ * @description Tokens summed over API calls: an attempt's (its rounds and hops, in `JournalRow.usage`)
2844
+ * or one hop's (`Hop.usage`).
2845
+ */
2846
+ TokenUsage: {
2847
+ /**
2848
+ * Input
2849
+ * @default 0
2850
+ */
2851
+ input?: number;
2852
+ /**
2853
+ * Output
2854
+ * @default 0
2855
+ */
2856
+ output?: number;
2857
+ /**
2858
+ * Cache Read
2859
+ * @default 0
2860
+ */
2861
+ cache_read?: number;
2862
+ /**
2863
+ * Cache Creation
2864
+ * @default 0
2865
+ */
2866
+ cache_creation?: number;
2867
+ /**
2868
+ * Calls
2869
+ * @default 0
2870
+ */
2871
+ calls?: number;
2872
+ /** Resident */
2873
+ resident?: number | null;
2874
+ /** Peak Context */
2875
+ peak_context?: number | null;
2876
+ /** Context Window */
2877
+ context_window?: number | null;
2878
+ } & {
2879
+ [key: string]: unknown;
2880
+ };
2881
+ /**
2882
+ * ToolCallEchoEvent
2883
+ * @description omp: a tool call carried on a message or turn (`acall`).
2884
+ */
2885
+ ToolCallEchoEvent: {
2886
+ /**
2887
+ * Type
2888
+ * @constant
2889
+ */
2890
+ type: "acall";
2891
+ /** Tool */
2892
+ tool: string | null;
2893
+ /** Cmd */
2894
+ cmd: string;
2895
+ /** Call */
2896
+ call: string;
2897
+ /** Intent */
2898
+ intent: string;
2899
+ /**
2900
+ * Web Query
2901
+ * @description the query, when the call is a web search
2902
+ */
2903
+ web_query?: string | null;
2904
+ /**
2905
+ * Web Fetch
2906
+ * @description the URL, when the call reads a web page
2907
+ */
2908
+ web_fetch?: string | null;
2909
+ } & {
2910
+ [key: string]: unknown;
2911
+ };
2912
+ /**
2913
+ * ToolEndEvent
2914
+ * @description A tool call's result. `tool` is empty for claude, which names only the call id.
2915
+ */
2916
+ ToolEndEvent: {
2917
+ /**
2918
+ * Type
2919
+ * @constant
2920
+ */
2921
+ type: "tool_execution_end";
2922
+ /** Tool */
2923
+ tool: string | null;
2924
+ /** Out */
2925
+ out: string;
2926
+ /** Err */
2927
+ err: boolean;
2928
+ /** Call */
2929
+ call: string;
2930
+ } & {
2931
+ [key: string]: unknown;
2932
+ };
2933
+ /**
2934
+ * ToolResultEchoEvent
2935
+ * @description omp: a tool result carried as a `toolResult` message (`aresult`).
2936
+ */
2937
+ ToolResultEchoEvent: {
2938
+ /**
2939
+ * Type
2940
+ * @constant
2941
+ */
2942
+ type: "aresult";
2943
+ /** Tool */
2944
+ tool: string | null;
2945
+ /** Call */
2946
+ call: string;
2947
+ /** Out */
2948
+ out: string;
2949
+ /** Err */
2950
+ err: boolean;
2951
+ } & {
2952
+ [key: string]: unknown;
2953
+ };
2954
+ /**
2955
+ * ToolStartEvent
2956
+ * @description A tool call starting (or omp's progress update for it). `call` pairs it with its end event.
2957
+ */
2958
+ ToolStartEvent: {
2959
+ /**
2960
+ * Type
2961
+ * @enum {string}
2962
+ */
2963
+ type: "tool_execution_start" | "tool_execution_update";
2964
+ /** Tool */
2965
+ tool: string | null;
2966
+ /**
2967
+ * Cmd
2968
+ * @description a one-line preview: the command, pattern, path, URL or query
2969
+ */
2970
+ cmd: string;
2971
+ /** Intent */
2972
+ intent: string;
2973
+ /** Call */
2974
+ call: string;
2975
+ /**
2976
+ * Web Query
2977
+ * @description the query, when the call is a web search
2978
+ */
2979
+ web_query?: string | null;
2980
+ /**
2981
+ * Web Fetch
2982
+ * @description the URL, when the call reads a web page
2983
+ */
2984
+ web_fetch?: string | null;
2985
+ } & {
2986
+ [key: string]: unknown;
2987
+ };
2988
+ /**
2989
+ * TreeBody
2990
+ * @description A tree of nodes, folded and opened by the reader: files and directories, say. A
2991
+ * node's `code` is shown beside the tree when the node is selected, with no request
2992
+ * of its own: a panel of files returns their texts with the tree. `selected` is the
2993
+ * node selected first (its `id`; default: the first node with code).
2994
+ */
2995
+ TreeBody: {
2996
+ /**
2997
+ * Title
2998
+ * @description a heading over the body
2999
+ */
3000
+ title?: string | null;
3001
+ /**
3002
+ * Collapsed
3003
+ * @description shown folded, under its title
3004
+ * @default false
3005
+ */
3006
+ collapsed?: boolean;
3007
+ /**
3008
+ * Anchor
3009
+ * @description a name a tree node's link leads to: the body is scrolled into view (`TreeLink.anchor`)
3010
+ */
3011
+ anchor?: string | null;
3012
+ /**
3013
+ * Type
3014
+ * @default tree
3015
+ * @constant
3016
+ */
3017
+ type?: "tree";
3018
+ /** Nodes */
3019
+ nodes: components["schemas"]["TreeNode"][];
3020
+ /** Selected */
3021
+ selected?: string | null;
3022
+ };
3023
+ /**
3024
+ * TreeLink
3025
+ * @description Where a tree node leads, in the monitor: a run panel's tab (`panel`, its name), a
3026
+ * task (`task`, its key), each in `run` (default: the run shown), or a body of the same
3027
+ * panel (`anchor`, its `anchor`). Exactly one of `panel`, `task` and `anchor`.
3028
+ */
3029
+ TreeLink: {
3030
+ /** Panel */
3031
+ panel?: string | null;
3032
+ /**
3033
+ * Task
3034
+ * @description a task's key
3035
+ */
3036
+ task?: string | null;
3037
+ /**
3038
+ * Run
3039
+ * @description the run of `panel` or `task`; a trends panel names it
3040
+ */
3041
+ run?: string | null;
3042
+ /** Anchor */
3043
+ anchor?: string | null;
3044
+ };
3045
+ /**
3046
+ * TreeNode
3047
+ * @description One node of a tree: its `name`, and `children` under it. `id` names it (default: the
3048
+ * names from the top, joined by `/`). `icon` is `directory` for a node with children and
3049
+ * `file` for one without, unless given. `badge` is a word beside the name, coloured by
3050
+ * `tone`. A node shows its `code` beside the tree when
3051
+ * it is selected, or leads elsewhere by its `link`; not both. `open`: its children are
3052
+ * shown at first.
3053
+ */
3054
+ TreeNode: {
3055
+ /** Name */
3056
+ name: string;
3057
+ /** Id */
3058
+ id?: string | null;
3059
+ /** Icon */
3060
+ icon?: ("file" | "directory") | null;
3061
+ /** Badge */
3062
+ badge?: string | null;
3063
+ /** Tone */
3064
+ tone?: ("failed" | "attention" | "done" | "running" | "muted" | "neutral") | null;
3065
+ /**
3066
+ * Open
3067
+ * @default true
3068
+ */
3069
+ open?: boolean;
3070
+ /** Children */
3071
+ children?: components["schemas"]["TreeNode"][];
3072
+ code?: components["schemas"]["CodeBody"] | null;
3073
+ link?: components["schemas"]["TreeLink"] | null;
3074
+ };
3075
+ /**
3076
+ * TrendDay
3077
+ * @description One day: its attempts (by when they ended), and its cost per group (`Monitor(groups=)`; a kind in none is its own).
3078
+ */
3079
+ TrendDay: {
3080
+ /** Day */
3081
+ day: string;
3082
+ /**
3083
+ * Cost Usd
3084
+ * @description group -> cost, USD; a group with no cost reported is absent
3085
+ */
3086
+ cost_usd: {
3087
+ [key: string]: number;
3088
+ };
3089
+ /** Attempts */
3090
+ attempts: number;
3091
+ /**
3092
+ * Ok
3093
+ * @description attempts that passed, not counting `partial` ones
3094
+ */
3095
+ ok: number;
3096
+ /**
3097
+ * Partial
3098
+ * @description attempts with stop `partial`: ok, counted apart from `ok`
3099
+ * @default 0
3100
+ */
3101
+ partial?: number;
3102
+ };
3103
+ /**
3104
+ * TrendDeferral
3105
+ * @description A deferred task (`deferred.jsonl`), with its run; `cause` is `DeferralCause.cause`.
3106
+ */
3107
+ TrendDeferral: {
3108
+ /** Run */
3109
+ run: string;
3110
+ /** Ts */
3111
+ ts: string;
3112
+ /** Key */
3113
+ key: string;
3114
+ /** Kind */
3115
+ kind: string;
3116
+ /** Cause */
3117
+ cause: string;
3118
+ /** Reason */
3119
+ reason: string;
3120
+ };
3121
+ /**
3122
+ * TrendDenial
3123
+ * @description Tool calls the coding agent's permissions refused, of one tool (`launches.jsonl` `denied`).
3124
+ */
3125
+ TrendDenial: {
3126
+ /** Tool */
3127
+ tool: string;
3128
+ /** Count */
3129
+ count: number;
3130
+ /** Kinds */
3131
+ kinds: {
3132
+ [key: string]: number;
3133
+ };
3134
+ };
3135
+ /**
3136
+ * TrendKind
3137
+ * @description One kind over the period. A task is one key of one run; its last attempt in the period says how it ended.
3138
+ */
3139
+ TrendKind: {
3140
+ /** Kind */
3141
+ kind: string;
3142
+ /** Group */
3143
+ group: string;
3144
+ /**
3145
+ * Executor
3146
+ * @enum {string}
3147
+ */
3148
+ executor: "agent" | "python";
3149
+ /** Tasks */
3150
+ tasks: number;
3151
+ /**
3152
+ * Tasks Ok
3153
+ * @description tasks whose last attempt passed, not counting `partial` ones
3154
+ */
3155
+ tasks_ok: number;
3156
+ /**
3157
+ * Tasks Partial
3158
+ * @description tasks whose last attempt was `partial`
3159
+ * @default 0
3160
+ */
3161
+ tasks_partial?: number;
3162
+ /** Attempts */
3163
+ attempts: number;
3164
+ /**
3165
+ * Ok
3166
+ * @description attempts that passed, not counting `partial` ones
3167
+ */
3168
+ ok: number;
3169
+ /**
3170
+ * Partial
3171
+ * @description attempts with stop `partial`: ok, counted apart from `ok`
3172
+ * @default 0
3173
+ */
3174
+ partial?: number;
3175
+ /**
3176
+ * Wall S
3177
+ * @description every attempt's wall time, summed
3178
+ */
3179
+ wall_s: number;
3180
+ /**
3181
+ * Wall S Median
3182
+ * @description the median attempt's wall time
3183
+ */
3184
+ wall_s_median: number;
3185
+ /** Cost Usd */
3186
+ cost_usd: number | null;
3187
+ tokens: components["schemas"]["TokenUsage"];
3188
+ };
3189
+ /**
3190
+ * TrendPeriod
3191
+ * @description The period: days `from`..`to`, both included, in the time zone `tz` (an IANA name).
3192
+ */
3193
+ TrendPeriod: {
3194
+ /**
3195
+ * From
3196
+ * @description the first day, YYYY-MM-DD
3197
+ */
3198
+ from: string;
3199
+ /**
3200
+ * To
3201
+ * @description the last day, YYYY-MM-DD
3202
+ */
3203
+ to: string;
3204
+ /** Tz */
3205
+ tz: string;
3206
+ /**
3207
+ * Days
3208
+ * @description every day of the period, in order
3209
+ */
3210
+ days: string[];
3211
+ };
3212
+ /**
3213
+ * TrendQuota
3214
+ * @description One account's utilization of one window over the period: each day's and each hour's highest reading.
3215
+ * A credential whose token was replaced has one entry per account.
3216
+ */
3217
+ TrendQuota: {
3218
+ /** Credential */
3219
+ credential: string;
3220
+ /**
3221
+ * Account
3222
+ * @description the account the readings are of (`QuotaReading.account`); empty when not known
3223
+ * @default
3224
+ */
3225
+ account?: string;
3226
+ /**
3227
+ * Window
3228
+ * @description `five_hour`, `seven_day`, or another window a reading names (`seven_day_opus`)
3229
+ */
3230
+ window: string;
3231
+ /**
3232
+ * Daily Peak
3233
+ * @description per day of `period.days`; null when no reading arrived that day
3234
+ */
3235
+ daily_peak: (number | null)[];
3236
+ /**
3237
+ * Hourly Peak
3238
+ * @description per hour from the period's first instant (the first day's midnight in `tz`); null when no reading arrived in it
3239
+ */
3240
+ hourly_peak: (number | null)[];
3241
+ };
3242
+ /**
3243
+ * TrendRest
3244
+ * @description A start or end of a credential's rest (a `rests.jsonl` row), with its run.
3245
+ */
3246
+ TrendRest: {
3247
+ /** Credential */
3248
+ credential: string;
3249
+ /**
3250
+ * Window
3251
+ * @default
3252
+ * @enum {string}
3253
+ */
3254
+ window?: "" | "five_hour" | "seven_day";
3255
+ /** Pct */
3256
+ pct?: number | null;
3257
+ /** Cap */
3258
+ cap?: number | null;
3259
+ /**
3260
+ * Rule
3261
+ * @default
3262
+ */
3263
+ rule?: string;
3264
+ /**
3265
+ * Until
3266
+ * @default
3267
+ */
3268
+ until?: string;
3269
+ /**
3270
+ * Account
3271
+ * @default
3272
+ */
3273
+ account?: string;
3274
+ /** Reading */
3275
+ reading?: {
3276
+ [key: string]: unknown;
3277
+ } | null;
3278
+ /** Ts */
3279
+ ts: string;
3280
+ /**
3281
+ * Event
3282
+ * @enum {string}
3283
+ */
3284
+ event: "start" | "end";
3285
+ /** Run */
3286
+ run: string;
3287
+ } & {
3288
+ [key: string]: unknown;
3289
+ };
3290
+ /**
3291
+ * TrendRun
3292
+ * @description One run of the period: its attempts in the period.
3293
+ */
3294
+ TrendRun: {
3295
+ /** Run */
3296
+ run: string;
3297
+ /** Run Group */
3298
+ run_group: string;
3299
+ /** Host Id */
3300
+ host_id: string;
3301
+ /** Started At */
3302
+ started_at: string;
3303
+ /** Finished At */
3304
+ finished_at: string;
3305
+ /**
3306
+ * Last Ts
3307
+ * @description when its last attempt in the period ended; empty when it has none
3308
+ */
3309
+ last_ts: string;
3310
+ /** Attempts */
3311
+ attempts: number;
3312
+ /**
3313
+ * Ok
3314
+ * @description attempts that passed, not counting `partial` ones
3315
+ */
3316
+ ok: number;
3317
+ /**
3318
+ * Partial
3319
+ * @description attempts with stop `partial`: ok, counted apart from `ok`
3320
+ * @default 0
3321
+ */
3322
+ partial?: number;
3323
+ /** Cost Usd */
3324
+ cost_usd: number | null;
3325
+ /** Wall S */
3326
+ wall_s: number;
3327
+ /** Stub */
3328
+ stub: boolean;
3329
+ };
3330
+ /**
3331
+ * TrendStarts
3332
+ * @description Run starts by weekday (`weekdays`, Monday first) and hour (`hours`) in the period's time zone: `counts[weekday][hour]`.
3333
+ */
3334
+ TrendStarts: {
3335
+ /** Weekdays */
3336
+ weekdays: string[];
3337
+ /** Hours */
3338
+ hours: number[];
3339
+ /** Counts */
3340
+ counts: number[][];
3341
+ };
3342
+ /**
3343
+ * TrendStop
3344
+ * @description Attempts that ended on one `stop`, and by which kinds.
3345
+ */
3346
+ TrendStop: {
3347
+ /** Stop */
3348
+ stop: string;
3349
+ /** Attempts */
3350
+ attempts: number;
3351
+ /** Kinds */
3352
+ kinds: {
3353
+ [key: string]: number;
3354
+ };
3355
+ };
3356
+ /**
3357
+ * TrendTotals
3358
+ * @description The period's runs and attempts, summed.
3359
+ */
3360
+ TrendTotals: {
3361
+ /**
3362
+ * Runs
3363
+ * @description runs with an attempt in the period, or started in it
3364
+ */
3365
+ runs: number;
3366
+ /** Attempts */
3367
+ attempts: number;
3368
+ /**
3369
+ * Ok
3370
+ * @description attempts that passed, not counting `partial` ones
3371
+ */
3372
+ ok: number;
3373
+ /**
3374
+ * Partial
3375
+ * @description attempts with stop `partial`: ok, counted apart from `ok`
3376
+ * @default 0
3377
+ */
3378
+ partial?: number;
3379
+ /**
3380
+ * Cost Usd
3381
+ * @description what the coding agents reported; null when no attempt reported a cost
3382
+ */
3383
+ cost_usd: number | null;
3384
+ /** Wall S */
3385
+ wall_s: number;
3386
+ tokens: components["schemas"]["TokenUsage"];
3387
+ };
3388
+ /**
3389
+ * Trends
3390
+ * @description What the runs of a period add up to (`Monitor.trends`). `bodies`: the same numbers as
3391
+ * panel bodies (`{"type": "blocks", ...}`), in English, for a page with no words of its own;
3392
+ * `panels`: the trend panels a domain registered (`Panel(scope="trends")`).
3393
+ */
3394
+ Trends: {
3395
+ period: components["schemas"]["TrendPeriod"];
3396
+ totals: components["schemas"]["TrendTotals"];
3397
+ /** Daily */
3398
+ daily: components["schemas"]["TrendDay"][];
3399
+ /** Kinds */
3400
+ kinds: components["schemas"]["TrendKind"][];
3401
+ /** Models */
3402
+ models: components["schemas"]["ModelUsage"][];
3403
+ /** Stops */
3404
+ stops: components["schemas"]["TrendStop"][];
3405
+ /** Denials */
3406
+ denials: components["schemas"]["TrendDenial"][];
3407
+ /** Quota */
3408
+ quota: components["schemas"]["TrendQuota"][];
3409
+ /** Rests */
3410
+ rests: components["schemas"]["TrendRest"][];
3411
+ /** Deferred */
3412
+ deferred: components["schemas"]["TrendDeferral"][];
3413
+ /** Deferred Causes */
3414
+ deferred_causes: {
3415
+ [key: string]: number;
3416
+ };
3417
+ /** Runs */
3418
+ runs: components["schemas"]["TrendRun"][];
3419
+ starts: components["schemas"]["TrendStarts"];
3420
+ /** Bodies */
3421
+ bodies: {
3422
+ [key: string]: {
3423
+ [key: string]: unknown;
3424
+ };
3425
+ };
3426
+ /** Panels */
3427
+ panels: components["schemas"]["PanelInfo"][];
3428
+ };
3429
+ /**
3430
+ * UnitPosition
3431
+ * @description One unit's place in the per-unit step sequence; `inflight` are the work
3432
+ * items dispatched but not yet recorded.
3433
+ */
3434
+ UnitPosition: {
3435
+ /** Stage */
3436
+ stage: string | null;
3437
+ /** Step */
3438
+ step: string | null;
3439
+ /** Completed */
3440
+ completed: string[];
3441
+ /** Loop Pass */
3442
+ loop_pass: number;
3443
+ /** Inflight */
3444
+ inflight: string[];
3445
+ };
3446
+ /** UpstreamTask */
3447
+ UpstreamTask: {
3448
+ /** Key */
3449
+ key: string;
3450
+ /** Kind */
3451
+ kind: string;
3452
+ /** Unit */
3453
+ unit: string;
3454
+ /**
3455
+ * Executor
3456
+ * @enum {string}
3457
+ */
3458
+ executor: "agent" | "python";
3459
+ /** Outputs */
3460
+ outputs: components["schemas"]["ContractSpec"][];
3461
+ };
3462
+ /** ValidationError */
3463
+ ValidationError: {
3464
+ /** Location */
3465
+ loc: (string | number)[];
3466
+ /** Message */
3467
+ msg: string;
3468
+ /** Error Type */
3469
+ type: string;
3470
+ /** Input */
3471
+ input?: unknown;
3472
+ /** Context */
3473
+ ctx?: Record<string, never>;
3474
+ };
3475
+ };
3476
+ responses: never;
3477
+ parameters: never;
3478
+ requestBodies: never;
3479
+ headers: never;
3480
+ pathItems: never;
3481
+ };
3482
+ export type $defs = Record<string, never>;
3483
+ export interface operations {
3484
+ api_info_api_info_get: {
3485
+ parameters: {
3486
+ query?: never;
3487
+ header?: never;
3488
+ path?: never;
3489
+ cookie?: never;
3490
+ };
3491
+ requestBody?: never;
3492
+ responses: {
3493
+ /** @description Successful Response */
3494
+ 200: {
3495
+ headers: {
3496
+ [name: string]: unknown;
3497
+ };
3498
+ content: {
3499
+ "application/json": components["schemas"]["Info"];
3500
+ };
3501
+ };
3502
+ };
3503
+ };
3504
+ api_runs_api_runs_get: {
3505
+ parameters: {
3506
+ query?: never;
3507
+ header?: never;
3508
+ path?: never;
3509
+ cookie?: never;
3510
+ };
3511
+ requestBody?: never;
3512
+ responses: {
3513
+ /** @description Successful Response */
3514
+ 200: {
3515
+ headers: {
3516
+ [name: string]: unknown;
3517
+ };
3518
+ content: {
3519
+ "application/json": components["schemas"]["RunSummary"][];
3520
+ };
3521
+ };
3522
+ };
3523
+ };
3524
+ api_hosts_api_hosts_get: {
3525
+ parameters: {
3526
+ query?: never;
3527
+ header?: never;
3528
+ path?: never;
3529
+ cookie?: never;
3530
+ };
3531
+ requestBody?: never;
3532
+ responses: {
3533
+ /** @description Successful Response */
3534
+ 200: {
3535
+ headers: {
3536
+ [name: string]: unknown;
3537
+ };
3538
+ content: {
3539
+ "application/json": components["schemas"]["Hosts"];
3540
+ };
3541
+ };
3542
+ };
3543
+ };
3544
+ api_trends_api_trends_get: {
3545
+ parameters: {
3546
+ query?: {
3547
+ /** @description the first day, YYYY-MM-DD (default: 13 days before `to`) */
3548
+ from?: string;
3549
+ /** @description the last day, YYYY-MM-DD (default: today in `tz`) */
3550
+ to?: string;
3551
+ /** @description the time zone the days are in, an IANA name (default UTC) */
3552
+ tz?: string;
3553
+ /** @description only the runs of this run group */
3554
+ run_group?: string;
3555
+ /** @description count stub runs too */
3556
+ stub?: boolean;
3557
+ };
3558
+ header?: never;
3559
+ path?: never;
3560
+ cookie?: never;
3561
+ };
3562
+ requestBody?: never;
3563
+ responses: {
3564
+ /** @description Successful Response */
3565
+ 200: {
3566
+ headers: {
3567
+ [name: string]: unknown;
3568
+ };
3569
+ content: {
3570
+ "application/json": components["schemas"]["Trends"];
3571
+ };
3572
+ };
3573
+ /** @description a period it cannot read */
3574
+ 400: {
3575
+ headers: {
3576
+ [name: string]: unknown;
3577
+ };
3578
+ content?: never;
3579
+ };
3580
+ /** @description Validation Error */
3581
+ 422: {
3582
+ headers: {
3583
+ [name: string]: unknown;
3584
+ };
3585
+ content: {
3586
+ "application/json": components["schemas"]["HTTPValidationError"];
3587
+ };
3588
+ };
3589
+ };
3590
+ };
3591
+ api_trend_panel_api_trends_panels__name__get: {
3592
+ parameters: {
3593
+ query?: {
3594
+ from?: string;
3595
+ to?: string;
3596
+ tz?: string;
3597
+ run_group?: string;
3598
+ };
3599
+ header?: never;
3600
+ path: {
3601
+ name: string;
3602
+ };
3603
+ cookie?: never;
3604
+ };
3605
+ requestBody?: never;
3606
+ responses: {
3607
+ /** @description Successful Response */
3608
+ 200: {
3609
+ headers: {
3610
+ [name: string]: unknown;
3611
+ };
3612
+ content: {
3613
+ "application/json": components["schemas"]["TilesBody"] | components["schemas"]["TableBody"] | components["schemas"]["ColumnsBody"] | components["schemas"]["LinesBody"] | components["schemas"]["HeatmapBody"] | components["schemas"]["HBarsBody"] | components["schemas"]["StatusGridBody"] | components["schemas"]["NoteBody"] | components["schemas"]["CodeBody"] | components["schemas"]["TreeBody"] | components["schemas"]["BlocksBody"] | {
3614
+ [key: string]: unknown;
3615
+ };
3616
+ };
3617
+ };
3618
+ /** @description a period it cannot read */
3619
+ 400: {
3620
+ headers: {
3621
+ [name: string]: unknown;
3622
+ };
3623
+ content?: never;
3624
+ };
3625
+ /** @description no trend panel of that name */
3626
+ 404: {
3627
+ headers: {
3628
+ [name: string]: unknown;
3629
+ };
3630
+ content?: never;
3631
+ };
3632
+ /** @description Validation Error */
3633
+ 422: {
3634
+ headers: {
3635
+ [name: string]: unknown;
3636
+ };
3637
+ content: {
3638
+ "application/json": components["schemas"]["HTTPValidationError"];
3639
+ };
3640
+ };
3641
+ };
3642
+ };
3643
+ api_journal_api_runs__run__journal_get: {
3644
+ parameters: {
3645
+ query?: {
3646
+ since?: number;
3647
+ };
3648
+ header?: never;
3649
+ path: {
3650
+ run: string;
3651
+ };
3652
+ cookie?: never;
3653
+ };
3654
+ requestBody?: never;
3655
+ responses: {
3656
+ /** @description Successful Response */
3657
+ 200: {
3658
+ headers: {
3659
+ [name: string]: unknown;
3660
+ };
3661
+ content: {
3662
+ "application/json": components["schemas"]["JournalPage"];
3663
+ };
3664
+ };
3665
+ /** @description Validation Error */
3666
+ 422: {
3667
+ headers: {
3668
+ [name: string]: unknown;
3669
+ };
3670
+ content: {
3671
+ "application/json": components["schemas"]["HTTPValidationError"];
3672
+ };
3673
+ };
3674
+ };
3675
+ };
3676
+ api_plan_api_runs__run__plan_get: {
3677
+ parameters: {
3678
+ query?: never;
3679
+ header?: never;
3680
+ path: {
3681
+ run: string;
3682
+ };
3683
+ cookie?: never;
3684
+ };
3685
+ requestBody?: never;
3686
+ responses: {
3687
+ /** @description Successful Response */
3688
+ 200: {
3689
+ headers: {
3690
+ [name: string]: unknown;
3691
+ };
3692
+ content: {
3693
+ "application/json": components["schemas"]["Plan"];
3694
+ };
3695
+ };
3696
+ /** @description Validation Error */
3697
+ 422: {
3698
+ headers: {
3699
+ [name: string]: unknown;
3700
+ };
3701
+ content: {
3702
+ "application/json": components["schemas"]["HTTPValidationError"];
3703
+ };
3704
+ };
3705
+ };
3706
+ };
3707
+ api_outputs_api_runs__run__outputs_get: {
3708
+ parameters: {
3709
+ query?: never;
3710
+ header?: never;
3711
+ path: {
3712
+ run: string;
3713
+ };
3714
+ cookie?: never;
3715
+ };
3716
+ requestBody?: never;
3717
+ responses: {
3718
+ /** @description Successful Response */
3719
+ 200: {
3720
+ headers: {
3721
+ [name: string]: unknown;
3722
+ };
3723
+ content: {
3724
+ "application/json": components["schemas"]["Outputs"];
3725
+ };
3726
+ };
3727
+ /** @description Validation Error */
3728
+ 422: {
3729
+ headers: {
3730
+ [name: string]: unknown;
3731
+ };
3732
+ content: {
3733
+ "application/json": components["schemas"]["HTTPValidationError"];
3734
+ };
3735
+ };
3736
+ };
3737
+ };
3738
+ api_definitions_api_runs__run__definitions_get: {
3739
+ parameters: {
3740
+ query?: never;
3741
+ header?: never;
3742
+ path: {
3743
+ run: string;
3744
+ };
3745
+ cookie?: never;
3746
+ };
3747
+ requestBody?: never;
3748
+ responses: {
3749
+ /** @description Successful Response */
3750
+ 200: {
3751
+ headers: {
3752
+ [name: string]: unknown;
3753
+ };
3754
+ content: {
3755
+ "application/json": components["schemas"]["TaskDefinition"][];
3756
+ };
3757
+ };
3758
+ /** @description Validation Error */
3759
+ 422: {
3760
+ headers: {
3761
+ [name: string]: unknown;
3762
+ };
3763
+ content: {
3764
+ "application/json": components["schemas"]["HTTPValidationError"];
3765
+ };
3766
+ };
3767
+ };
3768
+ };
3769
+ api_cursor_api_runs__run__cursor_get: {
3770
+ parameters: {
3771
+ query?: never;
3772
+ header?: never;
3773
+ path: {
3774
+ run: string;
3775
+ };
3776
+ cookie?: never;
3777
+ };
3778
+ requestBody?: never;
3779
+ responses: {
3780
+ /** @description Successful Response */
3781
+ 200: {
3782
+ headers: {
3783
+ [name: string]: unknown;
3784
+ };
3785
+ content: {
3786
+ "application/json": components["schemas"]["CursorView"];
3787
+ };
3788
+ };
3789
+ /** @description Validation Error */
3790
+ 422: {
3791
+ headers: {
3792
+ [name: string]: unknown;
3793
+ };
3794
+ content: {
3795
+ "application/json": components["schemas"]["HTTPValidationError"];
3796
+ };
3797
+ };
3798
+ };
3799
+ };
3800
+ api_procs_api_runs__run__procs_get: {
3801
+ parameters: {
3802
+ query?: never;
3803
+ header?: never;
3804
+ path: {
3805
+ run: string;
3806
+ };
3807
+ cookie?: never;
3808
+ };
3809
+ requestBody?: never;
3810
+ responses: {
3811
+ /** @description Successful Response */
3812
+ 200: {
3813
+ headers: {
3814
+ [name: string]: unknown;
3815
+ };
3816
+ content: {
3817
+ "application/json": components["schemas"]["Procs"];
3818
+ };
3819
+ };
3820
+ /** @description Validation Error */
3821
+ 422: {
3822
+ headers: {
3823
+ [name: string]: unknown;
3824
+ };
3825
+ content: {
3826
+ "application/json": components["schemas"]["HTTPValidationError"];
3827
+ };
3828
+ };
3829
+ };
3830
+ };
3831
+ api_task_api_runs__run__task__key__get: {
3832
+ parameters: {
3833
+ query?: never;
3834
+ header?: never;
3835
+ path: {
3836
+ run: string;
3837
+ key: string;
3838
+ };
3839
+ cookie?: never;
3840
+ };
3841
+ requestBody?: never;
3842
+ responses: {
3843
+ /** @description Successful Response */
3844
+ 200: {
3845
+ headers: {
3846
+ [name: string]: unknown;
3847
+ };
3848
+ content: {
3849
+ "application/json": components["schemas"]["TaskDetail"];
3850
+ };
3851
+ };
3852
+ /** @description Validation Error */
3853
+ 422: {
3854
+ headers: {
3855
+ [name: string]: unknown;
3856
+ };
3857
+ content: {
3858
+ "application/json": components["schemas"]["HTTPValidationError"];
3859
+ };
3860
+ };
3861
+ };
3862
+ };
3863
+ api_stream_api_runs__run__stream__key__get: {
3864
+ parameters: {
3865
+ query?: {
3866
+ since?: number;
3867
+ };
3868
+ header?: never;
3869
+ path: {
3870
+ run: string;
3871
+ key: string;
3872
+ };
3873
+ cookie?: never;
3874
+ };
3875
+ requestBody?: never;
3876
+ responses: {
3877
+ /** @description Successful Response */
3878
+ 200: {
3879
+ headers: {
3880
+ [name: string]: unknown;
3881
+ };
3882
+ content: {
3883
+ "application/json": components["schemas"]["StreamPage"];
3884
+ };
3885
+ };
3886
+ /** @description Validation Error */
3887
+ 422: {
3888
+ headers: {
3889
+ [name: string]: unknown;
3890
+ };
3891
+ content: {
3892
+ "application/json": components["schemas"]["HTTPValidationError"];
3893
+ };
3894
+ };
3895
+ };
3896
+ };
3897
+ api_panel_api_runs__run__panels__name__get: {
3898
+ parameters: {
3899
+ query?: never;
3900
+ header?: never;
3901
+ path: {
3902
+ run: string;
3903
+ name: string;
3904
+ };
3905
+ cookie?: never;
3906
+ };
3907
+ requestBody?: never;
3908
+ responses: {
3909
+ /** @description Successful Response */
3910
+ 200: {
3911
+ headers: {
3912
+ [name: string]: unknown;
3913
+ };
3914
+ content: {
3915
+ "application/json": components["schemas"]["TilesBody"] | components["schemas"]["TableBody"] | components["schemas"]["ColumnsBody"] | components["schemas"]["LinesBody"] | components["schemas"]["HeatmapBody"] | components["schemas"]["HBarsBody"] | components["schemas"]["StatusGridBody"] | components["schemas"]["NoteBody"] | components["schemas"]["CodeBody"] | components["schemas"]["TreeBody"] | components["schemas"]["BlocksBody"] | {
3916
+ [key: string]: unknown;
3917
+ };
3918
+ };
3919
+ };
3920
+ /** @description no run panel of that name */
3921
+ 404: {
3922
+ headers: {
3923
+ [name: string]: unknown;
3924
+ };
3925
+ content?: never;
3926
+ };
3927
+ /** @description Validation Error */
3928
+ 422: {
3929
+ headers: {
3930
+ [name: string]: unknown;
3931
+ };
3932
+ content: {
3933
+ "application/json": components["schemas"]["HTTPValidationError"];
3934
+ };
3935
+ };
3936
+ };
3937
+ };
3938
+ events_events_get: {
3939
+ parameters: {
3940
+ query: {
3941
+ run: string;
3942
+ };
3943
+ header?: never;
3944
+ path?: never;
3945
+ cookie?: never;
3946
+ };
3947
+ requestBody?: never;
3948
+ responses: {
3949
+ /** @description Server-Sent Events; each message is one `RunEvent` */
3950
+ 200: {
3951
+ headers: {
3952
+ [name: string]: unknown;
3953
+ };
3954
+ content: {
3955
+ "text/event-stream": components["schemas"]["RunEvent"];
3956
+ };
3957
+ };
3958
+ /** @description not a plain run id */
3959
+ 404: {
3960
+ headers: {
3961
+ [name: string]: unknown;
3962
+ };
3963
+ content?: never;
3964
+ };
3965
+ /** @description Validation Error */
3966
+ 422: {
3967
+ headers: {
3968
+ [name: string]: unknown;
3969
+ };
3970
+ content: {
3971
+ "application/json": components["schemas"]["HTTPValidationError"];
3972
+ };
3973
+ };
3974
+ };
3975
+ };
3976
+ events_stream_events_stream_get: {
3977
+ parameters: {
3978
+ query: {
3979
+ run: string;
3980
+ key: string;
3981
+ };
3982
+ header?: never;
3983
+ path?: never;
3984
+ cookie?: never;
3985
+ };
3986
+ requestBody?: never;
3987
+ responses: {
3988
+ /** @description Server-Sent Events; each message is one `StreamMessage` */
3989
+ 200: {
3990
+ headers: {
3991
+ [name: string]: unknown;
3992
+ };
3993
+ content: {
3994
+ "text/event-stream": components["schemas"]["StreamMessage"];
3995
+ };
3996
+ };
3997
+ /** @description not a plain run id or task key */
3998
+ 404: {
3999
+ headers: {
4000
+ [name: string]: unknown;
4001
+ };
4002
+ content?: never;
4003
+ };
4004
+ /** @description Validation Error */
4005
+ 422: {
4006
+ headers: {
4007
+ [name: string]: unknown;
4008
+ };
4009
+ content: {
4010
+ "application/json": components["schemas"]["HTTPValidationError"];
4011
+ };
4012
+ };
4013
+ };
4014
+ };
4015
+ }