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