@staix/agent-hub 0.12.22 → 0.12.23

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 (78) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +16 -8
  3. package/docs/agent-notes/adapters.md +10 -5
  4. package/docs/agent-notes/benchmarks.md +3 -0
  5. package/docs/agent-notes/budget.md +4 -0
  6. package/docs/agent-notes/daemon.md +8 -1
  7. package/docs/agent-notes/local-worker.md +3 -2
  8. package/docs/agent-notes/tasks.md +2 -1
  9. package/docs/agent-notes/tests.md +2 -0
  10. package/docs/events.md +7 -3
  11. package/docs/operations.md +232 -26
  12. package/docs/quickstart.md +9 -4
  13. package/docs/security.md +15 -6
  14. package/docs/smoke.md +72 -5
  15. package/docs/specs/2026-09-19-agent-hub-design.md +77 -10
  16. package/docs/verification/2026-10-10-cli-output-phase1.md +309 -0
  17. package/docs/verification/2026-10-10-cli-output-phase2.md +672 -0
  18. package/docs/verification/2026-10-11-0.12.23.md +90 -0
  19. package/docs/verified.json +25 -16
  20. package/package.json +1 -1
  21. package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
  22. package/plugins/agent-hub/server.js +14 -3
  23. package/src/adapters/acp-quota.ts +13 -0
  24. package/src/adapters/acp.ts +95 -13
  25. package/src/adapters/codex-appserver.ts +43 -13
  26. package/src/cli/bench.ts +2 -1
  27. package/src/cli/console-state.ts +28 -22
  28. package/src/cli/console.ts +20 -10
  29. package/src/cli/help.ts +19 -14
  30. package/src/cli/identity.ts +2 -2
  31. package/src/cli/init.ts +1 -1
  32. package/src/cli/main.ts +272 -159
  33. package/src/cli/output.ts +363 -0
  34. package/src/cli/preview.ts +2 -1
  35. package/src/cli/reset.ts +3 -0
  36. package/src/cli/status-lines.ts +0 -28
  37. package/src/cli/terminal-recovery.ts +27 -1
  38. package/src/cli/upgrade-runtime.ts +24 -7
  39. package/src/cli/upgrade.ts +23 -5
  40. package/src/hub/board.ts +2 -0
  41. package/src/hub/budget.ts +39 -7
  42. package/src/hub/bus.ts +10 -11
  43. package/src/hub/child-process.ts +11 -0
  44. package/src/hub/conductor.ts +23 -11
  45. package/src/hub/config-trust.ts +16 -5
  46. package/src/hub/conflicts.ts +2 -0
  47. package/src/hub/context-window.ts +8 -1
  48. package/src/hub/crash.ts +2 -1
  49. package/src/hub/daemon.ts +338 -23
  50. package/src/hub/db-timeout.ts +3 -0
  51. package/src/hub/delivery-journal.ts +2 -1
  52. package/src/hub/envelope.ts +1 -1
  53. package/src/hub/events.ts +2 -0
  54. package/src/hub/execution-budget.ts +2 -0
  55. package/src/hub/facts.ts +5 -4
  56. package/src/hub/git.ts +32 -0
  57. package/src/hub/hub-tools.ts +1 -1
  58. package/src/hub/lifecycle.ts +10 -4
  59. package/src/hub/manager.ts +18 -5
  60. package/src/hub/peers.ts +5 -3
  61. package/src/hub/permission-mode.ts +14 -0
  62. package/src/hub/project.ts +2 -1
  63. package/src/hub/recovery-error.ts +31 -0
  64. package/src/hub/recovery-store.ts +6 -5
  65. package/src/hub/registry.ts +2 -1
  66. package/src/hub/routing.ts +114 -13
  67. package/src/hub/settings.ts +392 -0
  68. package/src/hub/snapshots.ts +4 -2
  69. package/src/hub/start-mode.ts +48 -0
  70. package/src/hub/tasks.ts +129 -31
  71. package/src/hub/terminal-open.ts +64 -0
  72. package/src/hub/ui.ts +25 -13
  73. package/src/local/deny.ts +29 -7
  74. package/src/local/sandbox.ts +44 -6
  75. package/src/memory/recall.ts +2 -2
  76. package/src/models/mlx.ts +2 -1
  77. package/src/pi/tool-receipts.ts +2 -1
  78. package/src/ui/index.html +157 -10
@@ -0,0 +1,672 @@
1
+ # Command output fixture (#284 phases 2 and 3)
2
+
3
+ Synthetic deterministic data at now=1800000000000. Before uses the previous command formatting (turn locale in UTC for determinism); after uses the current pure renderer. This is automated evidence, not a human terminal inspection.
4
+
5
+ ## projects, 80 columns
6
+
7
+ Before:
8
+
9
+ ```text
10
+ p_123456789012345678901234 running /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로
11
+ peers 2, control 12345, tasks {"approved":6,"in_progress":1}
12
+ ```
13
+
14
+ After:
15
+
16
+ ```text
17
+ PROJECT STATE PEERS TASKS ROOT
18
+ p_123456789012345678901234 running 2 6 approved, /project/
19
+ 1 in_progress 경로경로경로
20
+ 경로경로경로
21
+ 경로경로경로
22
+ 경로경로경로
23
+ 경로경로경로
24
+ 경로경로경로
25
+ 경로경로경로
26
+ 경로경로경로
27
+ 경로경로경로
28
+ 경로경로경로
29
+ 경로경로경로
30
+ 경로경로경로
31
+ 경로경로경로
32
+ 경로경로경로
33
+ 경로경로경로
34
+ 경로경로경로
35
+ 경로경로
36
+ ```
37
+
38
+ ## status --all, 80 columns
39
+
40
+ Before:
41
+
42
+ ```text
43
+ p_123456789012345678901234 running /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로
44
+ peers 2, control 12345, tasks {"approved":6,"in_progress":1}
45
+ ```
46
+
47
+ After:
48
+
49
+ ```text
50
+ PROJECT STATE PEERS TASKS ROOT
51
+ p_123456789012345678901234 running 2 6 approved, /project/
52
+ 1 in_progress 경로경로경로
53
+ 경로경로경로
54
+ 경로경로경로
55
+ 경로경로경로
56
+ 경로경로경로
57
+ 경로경로경로
58
+ 경로경로경로
59
+ 경로경로경로
60
+ 경로경로경로
61
+ 경로경로경로
62
+ 경로경로경로
63
+ 경로경로경로
64
+ 경로경로경로
65
+ 경로경로경로
66
+ 경로경로경로
67
+ 경로경로경로
68
+ 경로경로
69
+ ```
70
+
71
+ ## queue list, 80 columns
72
+
73
+ Before:
74
+
75
+ ```text
76
+ abcdef12-1111-2222-3333-444444444444 codex needs_review revision 3 important
77
+ ```
78
+
79
+ After:
80
+
81
+ ```text
82
+ ID PEER STATE REV AGE
83
+ abcdef12-1111-2222-3333-444444444444 codex needs_review 3 1m
84
+ priority important
85
+ ```
86
+
87
+ ## turns, 80 columns
88
+
89
+ Before:
90
+
91
+ ```text
92
+ turn-12345678901234567890 1/15/2027, 7:59:00 AM 8 files: src/한글경로/file-0.ts, src/한글경로/file-1.ts, src/한글경로/file-2.ts, src/한글경로/file-3.ts, src/한글경로/file-4.ts, ...
93
+ ```
94
+
95
+ After:
96
+
97
+ ```text
98
+ TURN PEER STARTED STATE FILES
99
+ turn-12345678901234567890 codex 1m ago completed 8 files:
100
+ src/한글경로/file-0.ts,
101
+ src/한글경로/file-1.ts,
102
+ src/한글경로/file-2.ts,
103
+ src/한글경로/file-3.ts,
104
+ src/한글경로/file-4.ts,
105
+ src/한글경로/file-5.ts,
106
+ src/한글경로/file-6.ts,
107
+ src/한글경로/file-7.ts
108
+ ```
109
+
110
+ ## doctor --orphans, 80 columns
111
+
112
+ Before:
113
+
114
+ ```text
115
+ orphaned hub registrations (the project root is gone):
116
+ p_123456789012345678901234 /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로 live pid 12345
117
+ kill live orphans with `ahub doctor --orphans --kill`, then forget each row with `ahub projects remove <id>`
118
+ ```
119
+
120
+ After:
121
+
122
+ ```text
123
+ orphaned hub registrations (the project root is gone):
124
+ PROJECT STATE PIDS ROOT
125
+ p_123456789012345678901234 live 12345 /project/
126
+ 경로경로경로경로경로경로경로경로경로경
127
+ 로경로경로경로경로경로경로경로경로경로
128
+ 경로경로경로경로경로경로경로경로경로경
129
+ 로경로경로경로경로경로경로경로경로경로
130
+ 경로경로경로경로경로경로경로경로경로경
131
+ 로경로경로
132
+
133
+ kill live orphans with ahub doctor --orphans --kill
134
+ forget ahub projects remove p_123456789012345678901234
135
+ ```
136
+
137
+ ## queue show, 80 columns
138
+
139
+ Before:
140
+
141
+ ```text
142
+ {
143
+ "id": "abcdef12-1111-2222-3333-444444444444",
144
+ "peer": "codex",
145
+ "state": "needs_review",
146
+ "revision": 3,
147
+ "important": true,
148
+ "createdAt": 1799999940000,
149
+ "updatedAt": 1799999970000,
150
+ "envelopeIds": [
151
+ "8d03b496-1111-2222-3333-444444444444"
152
+ ],
153
+ "messages": [
154
+ {
155
+ "id": "8d03b496-1111-2222-3333-444444444444",
156
+ "from": "claude",
157
+ "priority": "important",
158
+ "kind": "chat",
159
+ "body": "[private: inspect the associated task with ahub task show]"
160
+ }
161
+ ]
162
+ }
163
+ ```
164
+
165
+ After:
166
+
167
+ ```text
168
+ Delivery
169
+ FIELD VALUE
170
+ id abcdef12-1111-2222-3333-444444444444
171
+ peer codex
172
+ state needs_review
173
+ revision 3
174
+ important true
175
+ createdAt 1m ago
176
+ updatedAt 30s ago
177
+ envelopeIds 1 8d03b496-1111-2222-3333-444444444444
178
+ messages 1 id 8d03b496-1111-2222-3333-444444444444
179
+ messages 1 from claude
180
+ messages 1 priority important
181
+ messages 1 kind chat
182
+ messages 1 body [private: inspect the associated task with ahub task show]
183
+
184
+ resolve ahub queue resolve abcdef12-1111-2222-3333-444444444444 --action
185
+ completed|retry|discard --reason <text>
186
+ ```
187
+
188
+ ## models status, 80 columns
189
+
190
+ Before:
191
+
192
+ ```text
193
+ {
194
+ "state": "ready",
195
+ "model": "qwen/long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-",
196
+ "expiresAt": "2027-01-15T08:10:00.000Z",
197
+ "active": 0,
198
+ "contextWindow": 32768
199
+ }
200
+ ```
201
+
202
+ After:
203
+
204
+ ```text
205
+ Models
206
+ FIELD VALUE
207
+ state ready
208
+ model qwen/long-model-name-long-model-name-long-model-name-long-model-n
209
+ ame-long-model-name-long-model-name-long-model-name-long-model-na
210
+ me-long-model-name-long-model-name-
211
+ expiresAt in 10m
212
+ active 0
213
+ contextWindow 32768
214
+ ```
215
+
216
+ ## budget execution status, 80 columns
217
+
218
+ Before:
219
+
220
+ ```text
221
+ [
222
+ {
223
+ "id": "budget-12345678901234567890",
224
+ "kind": "task",
225
+ "taskId": 3,
226
+ "peers": [
227
+ "local",
228
+ "pi"
229
+ ],
230
+ "createdAt": 1799999940000,
231
+ "updatedAt": 1799999970000,
232
+ "units": {
233
+ "tokens": {
234
+ "used": 100,
235
+ "limit": 200,
236
+ "remaining": 100
237
+ }
238
+ }
239
+ }
240
+ ]
241
+ ```
242
+
243
+ After:
244
+
245
+ ```text
246
+ Execution budget
247
+ FIELD VALUE
248
+ 1 id budget-12345678901234567890
249
+ 1 kind task
250
+ 1 taskId 3
251
+ 1 peers 1 local
252
+ 1 peers 2 pi
253
+ 1 createdAt 1m ago
254
+ 1 updatedAt 30s ago
255
+ 1 units tokens used 100
256
+ 1 units tokens limit 200
257
+ 1 units tokens remaining 100
258
+ ```
259
+
260
+ ## report, 80 columns
261
+
262
+ Before:
263
+
264
+ ```text
265
+ period: 2027-01-15T07:59:00.000Z .. 2027-01-15T08:00:00.000Z
266
+ peer codex: 1 turn, 0.5 busy minutes, 120 tokens
267
+ usage codex: no usage records; input unknown (0 known), output unknown (0 known), cache read unknown (0 known), cache write unknown (0 known), reported total unknown (0 known); coverage unknown
268
+ usage team totals: reported token total unknown (0 known records); incomplete or unknown peer coverage (codex); estimated price unknown; measured spend unknown
269
+ messages: 0 (dropped: none; overflow 0; undeliverable 0); 0 per task that had any
270
+ overlap warnings: 0, task pairs: 0; edit conflicts: 0
271
+ task events: accepted 1
272
+ quota readings: 0 (0 hard limits)
273
+ ```
274
+
275
+ After:
276
+
277
+ ```text
278
+ period: 1m ago .. 0s ago
279
+
280
+ Counters
281
+ METRIC COUNT
282
+ messages 0
283
+ overflow 0
284
+ undeliverable 0
285
+ messages per task 0
286
+ overlap warnings 0
287
+ task pairs 0
288
+ edit conflicts 0
289
+ quota readings 0
290
+ hard limits 0
291
+
292
+ Peers
293
+ PEER TURNS BUSY TOKENS
294
+ codex 1 0.5m 120
295
+ peer codex: 1 turn, 0.5 busy minutes, 120 tokens
296
+
297
+ Usage
298
+ usage codex: no usage records; input unknown (0 known), output unknown (0
299
+ known), cache read unknown (0 known), cache write unknown (0 known),
300
+ reported total unknown (0 known); coverage unknown
301
+ usage team totals: reported token total unknown (0 known records); incomplete
302
+ or unknown peer coverage (codex); estimated price unknown; measured spend
303
+ unknown
304
+
305
+ Messages
306
+ messages: 0 (dropped: none; overflow 0; undeliverable 0); 0 per task that had
307
+ any
308
+
309
+ Coordination
310
+ overlap warnings: 0, task pairs: 0; edit conflicts: 0
311
+
312
+ Tasks
313
+ task events: accepted 1
314
+
315
+ Quota
316
+ quota readings: 0 (0 hard limits)
317
+ ```
318
+
319
+ ## report --by task, 80 columns
320
+
321
+ Before:
322
+
323
+ ```text
324
+ period: 2027-01-15T07:59:00.000Z .. 2027-01-15T08:00:00.000Z
325
+ task #3: class implement, outcome in_progress, turns 1, wall unknown
326
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
327
+ class implement: turns 1
328
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
329
+ unattributed: tokens 0/120 (0.0%), usage records 0/0 (unknown), turns 0
330
+ before attribution: tokens 0, usage records 0, turns 0
331
+ ```
332
+
333
+ After:
334
+
335
+ ```text
336
+ period: 1m ago .. 0s ago
337
+
338
+ Tasks
339
+ TASK CLASS OUTCOME TURNS WALL
340
+ #3 implement in_progress 1 unknown
341
+ task #3: class implement, outcome in_progress, turns 1, wall unknown
342
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens
343
+ unknown (0/0 known), cacheReadTokens unknown (0/0 known),
344
+ cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
345
+
346
+ Classes
347
+ class implement: turns 1
348
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens
349
+ unknown (0/0 known), cacheReadTokens unknown (0/0 known),
350
+ cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
351
+
352
+ Unattributed
353
+ unattributed: tokens 0/120 (0.0%), usage records 0/0 (unknown), turns 0
354
+
355
+ Before attribution
356
+ before attribution: tokens 0, usage records 0, turns 0
357
+ ```
358
+
359
+ ## projects, 120 columns
360
+
361
+ Before:
362
+
363
+ ```text
364
+ p_123456789012345678901234 running /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로
365
+ peers 2, control 12345, tasks {"approved":6,"in_progress":1}
366
+ ```
367
+
368
+ After:
369
+
370
+ ```text
371
+ PROJECT STATE PEERS TASKS ROOT
372
+ p_123456789012345678901234 running 2 6 approved, 1 in_progress /project/
373
+ 경로경로경로경로경로경로경로경로경로경로경로경로
374
+ 경로경로경로경로경로경로경로경로경로경로경로경로
375
+ 경로경로경로경로경로경로경로경로경로경로경로경로
376
+ 경로경로경로경로경로경로경로경로경로경로경로경로
377
+ 경로경로
378
+ ```
379
+
380
+ ## status --all, 120 columns
381
+
382
+ Before:
383
+
384
+ ```text
385
+ p_123456789012345678901234 running /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로
386
+ peers 2, control 12345, tasks {"approved":6,"in_progress":1}
387
+ ```
388
+
389
+ After:
390
+
391
+ ```text
392
+ PROJECT STATE PEERS TASKS ROOT
393
+ p_123456789012345678901234 running 2 6 approved, 1 in_progress /project/
394
+ 경로경로경로경로경로경로경로경로경로경로경로경로
395
+ 경로경로경로경로경로경로경로경로경로경로경로경로
396
+ 경로경로경로경로경로경로경로경로경로경로경로경로
397
+ 경로경로경로경로경로경로경로경로경로경로경로경로
398
+ 경로경로
399
+ ```
400
+
401
+ ## queue list, 120 columns
402
+
403
+ Before:
404
+
405
+ ```text
406
+ abcdef12-1111-2222-3333-444444444444 codex needs_review revision 3 important
407
+ ```
408
+
409
+ After:
410
+
411
+ ```text
412
+ ID PEER STATE REV AGE
413
+ abcdef12-1111-2222-3333-444444444444 codex needs_review 3 1m
414
+ priority important
415
+ ```
416
+
417
+ ## turns, 120 columns
418
+
419
+ Before:
420
+
421
+ ```text
422
+ turn-12345678901234567890 1/15/2027, 7:59:00 AM 8 files: src/한글경로/file-0.ts, src/한글경로/file-1.ts, src/한글경로/file-2.ts, src/한글경로/file-3.ts, src/한글경로/file-4.ts, ...
423
+ ```
424
+
425
+ After:
426
+
427
+ ```text
428
+ TURN PEER STARTED STATE FILES
429
+ turn-12345678901234567890 codex 1m ago completed 8 files: src/한글경로/file-0.ts, src/한글경로/file-1.ts,
430
+ src/한글경로/file-2.ts, src/한글경로/file-3.ts,
431
+ src/한글경로/file-4.ts, src/한글경로/file-5.ts,
432
+ src/한글경로/file-6.ts, src/한글경로/file-7.ts
433
+ ```
434
+
435
+ ## doctor --orphans, 120 columns
436
+
437
+ Before:
438
+
439
+ ```text
440
+ orphaned hub registrations (the project root is gone):
441
+ p_123456789012345678901234 /project/경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로 live pid 12345
442
+ kill live orphans with `ahub doctor --orphans --kill`, then forget each row with `ahub projects remove <id>`
443
+ ```
444
+
445
+ After:
446
+
447
+ ```text
448
+ orphaned hub registrations (the project root is gone):
449
+ PROJECT STATE PIDS ROOT
450
+ p_123456789012345678901234 live 12345 /project/
451
+ 경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경
452
+ 로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로경로
453
+ 경로경로경로경로경로경로경로경로경로경로경로
454
+
455
+ kill live orphans with ahub doctor --orphans --kill
456
+ forget ahub projects remove p_123456789012345678901234
457
+ ```
458
+
459
+ ## queue show, 120 columns
460
+
461
+ Before:
462
+
463
+ ```text
464
+ {
465
+ "id": "abcdef12-1111-2222-3333-444444444444",
466
+ "peer": "codex",
467
+ "state": "needs_review",
468
+ "revision": 3,
469
+ "important": true,
470
+ "createdAt": 1799999940000,
471
+ "updatedAt": 1799999970000,
472
+ "envelopeIds": [
473
+ "8d03b496-1111-2222-3333-444444444444"
474
+ ],
475
+ "messages": [
476
+ {
477
+ "id": "8d03b496-1111-2222-3333-444444444444",
478
+ "from": "claude",
479
+ "priority": "important",
480
+ "kind": "chat",
481
+ "body": "[private: inspect the associated task with ahub task show]"
482
+ }
483
+ ]
484
+ }
485
+ ```
486
+
487
+ After:
488
+
489
+ ```text
490
+ Delivery
491
+ FIELD VALUE
492
+ id abcdef12-1111-2222-3333-444444444444
493
+ peer codex
494
+ state needs_review
495
+ revision 3
496
+ important true
497
+ createdAt 1m ago
498
+ updatedAt 30s ago
499
+ envelopeIds 1 8d03b496-1111-2222-3333-444444444444
500
+ messages 1 id 8d03b496-1111-2222-3333-444444444444
501
+ messages 1 from claude
502
+ messages 1 priority important
503
+ messages 1 kind chat
504
+ messages 1 body [private: inspect the associated task with ahub task show]
505
+
506
+ resolve ahub queue resolve abcdef12-1111-2222-3333-444444444444 --action completed|retry|discard --reason <text>
507
+ ```
508
+
509
+ ## models status, 120 columns
510
+
511
+ Before:
512
+
513
+ ```text
514
+ {
515
+ "state": "ready",
516
+ "model": "qwen/long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-",
517
+ "expiresAt": "2027-01-15T08:10:00.000Z",
518
+ "active": 0,
519
+ "contextWindow": 32768
520
+ }
521
+ ```
522
+
523
+ After:
524
+
525
+ ```text
526
+ Models
527
+ FIELD VALUE
528
+ state ready
529
+ model qwen/long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long-model-name-long
530
+ -model-name-long-model-name-long-model-name-long-model-name-
531
+ expiresAt in 10m
532
+ active 0
533
+ contextWindow 32768
534
+ ```
535
+
536
+ ## budget execution status, 120 columns
537
+
538
+ Before:
539
+
540
+ ```text
541
+ [
542
+ {
543
+ "id": "budget-12345678901234567890",
544
+ "kind": "task",
545
+ "taskId": 3,
546
+ "peers": [
547
+ "local",
548
+ "pi"
549
+ ],
550
+ "createdAt": 1799999940000,
551
+ "updatedAt": 1799999970000,
552
+ "units": {
553
+ "tokens": {
554
+ "used": 100,
555
+ "limit": 200,
556
+ "remaining": 100
557
+ }
558
+ }
559
+ }
560
+ ]
561
+ ```
562
+
563
+ After:
564
+
565
+ ```text
566
+ Execution budget
567
+ FIELD VALUE
568
+ 1 id budget-12345678901234567890
569
+ 1 kind task
570
+ 1 taskId 3
571
+ 1 peers 1 local
572
+ 1 peers 2 pi
573
+ 1 createdAt 1m ago
574
+ 1 updatedAt 30s ago
575
+ 1 units tokens used 100
576
+ 1 units tokens limit 200
577
+ 1 units tokens remaining 100
578
+ ```
579
+
580
+ ## report, 120 columns
581
+
582
+ Before:
583
+
584
+ ```text
585
+ period: 2027-01-15T07:59:00.000Z .. 2027-01-15T08:00:00.000Z
586
+ peer codex: 1 turn, 0.5 busy minutes, 120 tokens
587
+ usage codex: no usage records; input unknown (0 known), output unknown (0 known), cache read unknown (0 known), cache write unknown (0 known), reported total unknown (0 known); coverage unknown
588
+ usage team totals: reported token total unknown (0 known records); incomplete or unknown peer coverage (codex); estimated price unknown; measured spend unknown
589
+ messages: 0 (dropped: none; overflow 0; undeliverable 0); 0 per task that had any
590
+ overlap warnings: 0, task pairs: 0; edit conflicts: 0
591
+ task events: accepted 1
592
+ quota readings: 0 (0 hard limits)
593
+ ```
594
+
595
+ After:
596
+
597
+ ```text
598
+ period: 1m ago .. 0s ago
599
+
600
+ Counters
601
+ METRIC COUNT
602
+ messages 0
603
+ overflow 0
604
+ undeliverable 0
605
+ messages per task 0
606
+ overlap warnings 0
607
+ task pairs 0
608
+ edit conflicts 0
609
+ quota readings 0
610
+ hard limits 0
611
+
612
+ Peers
613
+ PEER TURNS BUSY TOKENS
614
+ codex 1 0.5m 120
615
+ peer codex: 1 turn, 0.5 busy minutes, 120 tokens
616
+
617
+ Usage
618
+ usage codex: no usage records; input unknown (0 known), output unknown (0 known), cache read unknown (0 known), cache
619
+ write unknown (0 known), reported total unknown (0 known); coverage unknown
620
+ usage team totals: reported token total unknown (0 known records); incomplete or unknown peer coverage (codex);
621
+ estimated price unknown; measured spend unknown
622
+
623
+ Messages
624
+ messages: 0 (dropped: none; overflow 0; undeliverable 0); 0 per task that had any
625
+
626
+ Coordination
627
+ overlap warnings: 0, task pairs: 0; edit conflicts: 0
628
+
629
+ Tasks
630
+ task events: accepted 1
631
+
632
+ Quota
633
+ quota readings: 0 (0 hard limits)
634
+ ```
635
+
636
+ ## report --by task, 120 columns
637
+
638
+ Before:
639
+
640
+ ```text
641
+ period: 2027-01-15T07:59:00.000Z .. 2027-01-15T08:00:00.000Z
642
+ task #3: class implement, outcome in_progress, turns 1, wall unknown
643
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
644
+ class implement: turns 1
645
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
646
+ unattributed: tokens 0/120 (0.0%), usage records 0/0 (unknown), turns 0
647
+ before attribution: tokens 0, usage records 0, turns 0
648
+ ```
649
+
650
+ After:
651
+
652
+ ```text
653
+ period: 1m ago .. 0s ago
654
+
655
+ Tasks
656
+ TASK CLASS OUTCOME TURNS WALL
657
+ #3 implement in_progress 1 unknown
658
+ task #3: class implement, outcome in_progress, turns 1, wall unknown
659
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown
660
+ (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
661
+
662
+ Classes
663
+ class implement: turns 1
664
+ peer codex: tokens 120; inputTokens unknown (0/0 known), outputTokens unknown (0/0 known), cacheReadTokens unknown
665
+ (0/0 known), cacheWriteTokens unknown (0/0 known), totalTokens unknown (0/0 known)
666
+
667
+ Unattributed
668
+ unattributed: tokens 0/120 (0.0%), usage records 0/0 (unknown), turns 0
669
+
670
+ Before attribution
671
+ before attribution: tokens 0, usage records 0, turns 0
672
+ ```