ummaya 0.2.3 → 0.2.4

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 (111) hide show
  1. package/README.md +2 -1
  2. package/npm-shrinkwrap.json +2 -2
  3. package/package.json +1 -1
  4. package/prompts/manifest.yaml +2 -2
  5. package/prompts/session_guidance_v1.md +3 -1
  6. package/prompts/system_v1.md +8 -7
  7. package/pyproject.toml +2 -7
  8. package/src/ummaya/context/builder.py +17 -11
  9. package/src/ummaya/engine/engine.py +27 -7
  10. package/src/ummaya/engine/query.py +20 -0
  11. package/src/ummaya/evidence/__init__.py +25 -0
  12. package/src/ummaya/evidence/__main__.py +7 -0
  13. package/src/ummaya/evidence/models.py +58 -0
  14. package/src/ummaya/evidence/runner.py +308 -0
  15. package/src/ummaya/evidence/task_registry.py +264 -0
  16. package/src/ummaya/ipc/frame_schema.py +47 -0
  17. package/src/ummaya/ipc/stdio.py +1287 -54
  18. package/src/ummaya/llm/client.py +132 -56
  19. package/src/ummaya/llm/reasoning.py +84 -0
  20. package/src/ummaya/tools/discovery_bridge.py +17 -1
  21. package/src/ummaya/tools/executor.py +32 -12
  22. package/src/ummaya/tools/geocoding/kakao_client.py +1 -2
  23. package/src/ummaya/tools/kma/apihub_catalog.py +984 -1
  24. package/src/ummaya/tools/kma/apihub_structured_adapter.py +86 -6
  25. package/src/ummaya/tools/kma/apihub_url_adapter.py +593 -0
  26. package/src/ummaya/tools/kma/apihub_url_catalog.py +296 -0
  27. package/src/ummaya/tools/location_adapters.py +8 -6
  28. package/src/ummaya/tools/manifest_metadata.py +16 -3
  29. package/src/ummaya/tools/mvp_surface.py +2 -2
  30. package/src/ummaya/tools/nmc/emergency_search.py +8 -6
  31. package/src/ummaya/tools/register_all.py +9 -0
  32. package/src/ummaya/tools/resolve_location.py +4 -4
  33. package/src/ummaya/tools/search.py +664 -18
  34. package/src/ummaya/tools/verified_data_go_kr/_manifest.py +115 -25
  35. package/src/ummaya/tools/verified_data_go_kr/airkorea_air_quality.py +109 -4
  36. package/src/ummaya/tools/verified_data_go_kr/nmc_aed_site.py +108 -2
  37. package/src/ummaya/tools/verified_data_go_kr/pps_bid_public_info.py +174 -9
  38. package/src/ummaya/tools/verified_data_go_kr/tago_bus_arrival.py +66 -3
  39. package/src/ummaya/tools/verified_data_go_kr/tago_bus_location.py +12 -2
  40. package/src/ummaya/tools/verified_data_go_kr/tago_bus_route.py +8 -2
  41. package/src/ummaya/tools/verified_data_go_kr/tago_bus_route_station.py +114 -0
  42. package/src/ummaya/tools/verified_data_go_kr/tago_bus_station.py +14 -3
  43. package/src/ummaya/tools/verify_canonical_map.py +21 -0
  44. package/tui/package.json +1 -2
  45. package/tui/src/QueryEngine.ts +4 -0
  46. package/tui/src/cli/handlers/auth.ts +1 -1
  47. package/tui/src/cli/handlers/mcp.tsx +3 -3
  48. package/tui/src/cli/print.ts +69 -18
  49. package/tui/src/cli/update.ts +13 -13
  50. package/tui/src/commands/copy/index.ts +1 -1
  51. package/tui/src/commands/cost/cost.ts +2 -2
  52. package/tui/src/commands/init-verifiers.ts +5 -5
  53. package/tui/src/commands/init.ts +30 -30
  54. package/tui/src/commands/insights.ts +43 -43
  55. package/tui/src/commands/install-github-app/install-github-app.tsx +2 -2
  56. package/tui/src/commands/install-github-app/setupGitHubActions.ts +3 -3
  57. package/tui/src/commands/install.tsx +5 -5
  58. package/tui/src/commands/mcp/addCommand.ts +5 -5
  59. package/tui/src/commands/mcp/xaaIdpCommand.ts +2 -2
  60. package/tui/src/commands/plugin/ManageMarketplaces.tsx +2 -2
  61. package/tui/src/commands/reasoning/index.ts +13 -0
  62. package/tui/src/commands/reasoning/reasoning.tsx +177 -0
  63. package/tui/src/commands/thinkback/thinkback.tsx +3 -3
  64. package/tui/src/commands.ts +2 -0
  65. package/tui/src/components/Messages.tsx +2 -1
  66. package/tui/src/components/Spinner.tsx +2 -2
  67. package/tui/src/components/design-system/LoadingState.tsx +2 -2
  68. package/tui/src/ipc/codec.ts +26 -0
  69. package/tui/src/ipc/frames.generated.ts +398 -303
  70. package/tui/src/ipc/llmClient.ts +130 -51
  71. package/tui/src/ipc/llmTypes.ts +16 -1
  72. package/tui/src/ipc/schema/frame.schema.json +1 -3475
  73. package/tui/src/main.tsx +3 -0
  74. package/tui/src/query.ts +467 -2
  75. package/tui/src/screens/REPL.tsx +3 -3
  76. package/tui/src/services/api/claude.ts +48 -18
  77. package/tui/src/services/api/client.ts +33 -12
  78. package/tui/src/services/api/ummaya.ts +70 -16
  79. package/tui/src/skills/bundled/stuck.ts +12 -12
  80. package/tui/src/state/AppStateStore.ts +7 -0
  81. package/tui/src/tools/AdapterTool/AdapterTool.ts +590 -7
  82. package/tui/src/tools/LookupPrimitive/LookupPrimitive.ts +43 -17
  83. package/tui/src/tools/LookupPrimitive/prompt.ts +7 -6
  84. package/tui/src/tools/ResolveLocationPrimitive/ResolveLocationPrimitive.ts +40 -19
  85. package/tui/src/tools/SubmitPrimitive/SubmitPrimitive.ts +25 -9
  86. package/tui/src/tools/VerifyPrimitive/VerifyPrimitive.ts +25 -9
  87. package/tui/src/tools/_shared/citizenUserText.ts +49 -0
  88. package/tui/src/tools/_shared/directPublicDataGuard.ts +362 -0
  89. package/tui/src/tools/_shared/kmaAnalysisGuard.ts +197 -0
  90. package/tui/src/tools/_shared/kmaAviationGuard.ts +70 -0
  91. package/tui/src/tools/_shared/locationInputRepair.ts +112 -0
  92. package/tui/src/tools/_shared/nmcAedGuard.ts +234 -0
  93. package/tui/src/tools/_shared/protectedCheckGuard.ts +207 -0
  94. package/tui/src/tools/_shared/rootPrimitiveInput.ts +67 -0
  95. package/tui/src/tools/_shared/textToolCallGuard.ts +91 -0
  96. package/tui/src/tools/_shared/toolChoiceRepair.ts +866 -0
  97. package/tui/src/utils/attachments.ts +1 -1
  98. package/tui/src/utils/kExaoneReasoning.ts +138 -0
  99. package/tui/src/utils/messages.ts +1 -0
  100. package/tui/src/utils/multiToolLayout.ts +13 -0
  101. package/tui/src/utils/processUserInput/processSlashCommand.tsx +2 -2
  102. package/tui/src/utils/processUserInput/processUserInput.ts +26 -0
  103. package/tui/src/utils/settings/applySettingsChange.ts +4 -0
  104. package/tui/src/utils/settings/types.ts +9 -3
  105. package/tui/src/utils/stats.ts +1 -1
  106. package/uv.lock +1 -15
  107. package/assets/copilot-gate-logo.svg +0 -58
  108. package/assets/govon-logo.svg +0 -40
  109. package/src/ummaya/eval/__init__.py +0 -5
  110. package/src/ummaya/eval/retrieval.py +0 -713
  111. package/tui/src/utils/messageStream.ts +0 -186
@@ -13,6 +13,7 @@ export type IPCFrame =
13
13
  | UserInputFrame
14
14
  | ChatRequestFrame
15
15
  | AssistantChunkFrame
16
+ | ProgressEventFrame
16
17
  | ToolCallFrame
17
18
  | ToolResultFrame
18
19
  | CoordinatorPhaseFrame
@@ -188,6 +189,10 @@ export type Temperature = number;
188
189
  * Nucleus sampling threshold.
189
190
  */
190
191
  export type TopP = number;
192
+ /**
193
+ * K-EXAONE/FriendliAI reasoning policy for this assistant turn.
194
+ */
195
+ export type ReasoningMode = ('fast' | 'balanced' | 'deep' | 'diagnostic' | 'auto') | null;
191
196
  /**
192
197
  * Opaque session identifier.
193
198
  */
@@ -267,15 +272,36 @@ export type TransactionId4 = string | null;
267
272
  /**
268
273
  * Frame discriminator.
269
274
  */
270
- export type Kind3 = 'tool_call';
275
+ export type Kind3 = 'progress_event';
271
276
  /**
272
- * ULID correlating this call to its subsequent tool_result.
277
+ * Safe query-loop phase represented by this event.
273
278
  */
274
- export type CallId = string;
279
+ export type Phase =
280
+ | 'analysis'
281
+ | 'tool_selection'
282
+ | 'tool_call'
283
+ | 'tool_result'
284
+ | 'answer_synthesis';
275
285
  /**
276
- * Concrete tool name selected by the model; root primitive names remain valid for legacy transcripts.
286
+ * Korean progress text for the TUI.
277
287
  */
278
- export type Name3 = string;
288
+ export type MessageKo = string;
289
+ /**
290
+ * English fallback progress text.
291
+ */
292
+ export type MessageEn = string;
293
+ /**
294
+ * True because this channel never carries raw provider chain-of-thought.
295
+ */
296
+ export type SafeToPersist = boolean;
297
+ /**
298
+ * Concrete adapter/tool id when this event is tied to one.
299
+ */
300
+ export type ToolId = string | null;
301
+ /**
302
+ * Tool call id when this event is tied to a specific invocation.
303
+ */
304
+ export type CallId = string | null;
279
305
  /**
280
306
  * Opaque session identifier.
281
307
  */
@@ -307,15 +333,15 @@ export type TransactionId5 = string | null;
307
333
  /**
308
334
  * Frame discriminator.
309
335
  */
310
- export type Kind4 = 'tool_result';
336
+ export type Kind4 = 'tool_call';
311
337
  /**
312
- * ULID correlating this result to its originating tool_call.
338
+ * ULID correlating this call to its subsequent tool_result.
313
339
  */
314
340
  export type CallId1 = string;
315
341
  /**
316
- * Primitive kind discriminator per Spec 031.
342
+ * Concrete tool name selected by the model; root primitive names remain valid for legacy transcripts.
317
343
  */
318
- export type Kind5 = 'find' | 'locate' | 'send' | 'check';
344
+ export type Name3 = string;
319
345
  /**
320
346
  * Opaque session identifier.
321
347
  */
@@ -347,11 +373,15 @@ export type TransactionId6 = string | null;
347
373
  /**
348
374
  * Frame discriminator.
349
375
  */
350
- export type Kind6 = 'coordinator_phase';
376
+ export type Kind5 = 'tool_result';
351
377
  /**
352
- * Current coordinator phase.
378
+ * ULID correlating this result to its originating tool_call.
379
+ */
380
+ export type CallId2 = string;
381
+ /**
382
+ * Primitive kind discriminator per Spec 031.
353
383
  */
354
- export type Phase = 'Research' | 'Synthesis' | 'Implementation' | 'Verification';
384
+ export type Kind6 = 'find' | 'locate' | 'send' | 'check';
355
385
  /**
356
386
  * Opaque session identifier.
357
387
  */
@@ -383,7 +413,43 @@ export type TransactionId7 = string | null;
383
413
  /**
384
414
  * Frame discriminator.
385
415
  */
386
- export type Kind7 = 'worker_status';
416
+ export type Kind7 = 'coordinator_phase';
417
+ /**
418
+ * Current coordinator phase.
419
+ */
420
+ export type Phase1 = 'Research' | 'Synthesis' | 'Implementation' | 'Verification';
421
+ /**
422
+ * Opaque session identifier.
423
+ */
424
+ export type SessionId7 = string;
425
+ /**
426
+ * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
427
+ */
428
+ export type CorrelationId7 = string;
429
+ /**
430
+ * ISO-8601 UTC timestamp with sub-ms precision.
431
+ */
432
+ export type Ts7 = string;
433
+ /**
434
+ * Envelope version. Hard-fail on mismatch (E1, FR-001).
435
+ */
436
+ export type Version7 = '1.0';
437
+ /**
438
+ * Origin role. Validated against kind<->role allow-list (E3, FR-004).
439
+ */
440
+ export type Role8 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
441
+ /**
442
+ * Per-session monotonic sequence number (ge=0). Gap detection uses this.
443
+ */
444
+ export type FrameSeq7 = number;
445
+ /**
446
+ * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
447
+ */
448
+ export type TransactionId8 = string | null;
449
+ /**
450
+ * Frame discriminator.
451
+ */
452
+ export type Kind8 = 'worker_status';
387
453
  /**
388
454
  * Unique worker identifier.
389
455
  */
@@ -403,35 +469,35 @@ export type Status = 'idle' | 'running' | 'waiting_permission' | 'error';
403
469
  /**
404
470
  * Opaque session identifier.
405
471
  */
406
- export type SessionId7 = string;
472
+ export type SessionId8 = string;
407
473
  /**
408
474
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
409
475
  */
410
- export type CorrelationId7 = string;
476
+ export type CorrelationId8 = string;
411
477
  /**
412
478
  * ISO-8601 UTC timestamp with sub-ms precision.
413
479
  */
414
- export type Ts7 = string;
480
+ export type Ts8 = string;
415
481
  /**
416
482
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
417
483
  */
418
- export type Version7 = '1.0';
484
+ export type Version8 = '1.0';
419
485
  /**
420
486
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
421
487
  */
422
- export type Role8 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
488
+ export type Role9 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
423
489
  /**
424
490
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
425
491
  */
426
- export type FrameSeq7 = number;
492
+ export type FrameSeq8 = number;
427
493
  /**
428
494
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
429
495
  */
430
- export type TransactionId8 = string | null;
496
+ export type TransactionId9 = string | null;
431
497
  /**
432
498
  * Frame discriminator.
433
499
  */
434
- export type Kind8 = 'permission_request';
500
+ export type Kind9 = 'permission_request';
435
501
  /**
436
502
  * ULID; round-trips in the matching permission_response frame.
437
503
  */
@@ -459,39 +525,39 @@ export type RiskLevel = 'low' | 'medium' | 'high';
459
525
  /**
460
526
  * Fully-qualified adapter id (e.g. `mock_verify_mobile_id`). Falls back to worker_id || primitive_kind in the TUI when None. None for legacy callers that have not yet been updated.
461
527
  */
462
- export type ToolId = string | null;
528
+ export type ToolId1 = string | null;
463
529
  /**
464
530
  * Opaque session identifier.
465
531
  */
466
- export type SessionId8 = string;
532
+ export type SessionId9 = string;
467
533
  /**
468
534
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
469
535
  */
470
- export type CorrelationId8 = string;
536
+ export type CorrelationId9 = string;
471
537
  /**
472
538
  * ISO-8601 UTC timestamp with sub-ms precision.
473
539
  */
474
- export type Ts8 = string;
540
+ export type Ts9 = string;
475
541
  /**
476
542
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
477
543
  */
478
- export type Version8 = '1.0';
544
+ export type Version9 = '1.0';
479
545
  /**
480
546
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
481
547
  */
482
- export type Role9 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
548
+ export type Role10 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
483
549
  /**
484
550
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
485
551
  */
486
- export type FrameSeq8 = number;
552
+ export type FrameSeq9 = number;
487
553
  /**
488
554
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
489
555
  */
490
- export type TransactionId9 = string | null;
556
+ export type TransactionId10 = string | null;
491
557
  /**
492
558
  * Frame discriminator.
493
559
  */
494
- export type Kind9 = 'permission_response';
560
+ export type Kind10 = 'permission_response';
495
561
  /**
496
562
  * ULID matching the originating permission_request.request_id.
497
563
  */
@@ -511,39 +577,39 @@ export type PrimitiveKind1 = ('find' | 'locate' | 'send' | 'check') | null;
511
577
  /**
512
578
  * The fully-qualified adapter id (e.g. `mock_verify_mobile_id`, `mock_submit_welfare_grant`) the citizen authorised. The TUI uses this to render the human-readable Korean adapter name in /consent list and the modal title. None for non-adapter primitives (rare) or legacy backends.
513
579
  */
514
- export type ToolId1 = string | null;
580
+ export type ToolId2 = string | null;
515
581
  /**
516
582
  * Opaque session identifier.
517
583
  */
518
- export type SessionId9 = string;
584
+ export type SessionId10 = string;
519
585
  /**
520
586
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
521
587
  */
522
- export type CorrelationId9 = string;
588
+ export type CorrelationId10 = string;
523
589
  /**
524
590
  * ISO-8601 UTC timestamp with sub-ms precision.
525
591
  */
526
- export type Ts9 = string;
592
+ export type Ts10 = string;
527
593
  /**
528
594
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
529
595
  */
530
- export type Version9 = '1.0';
596
+ export type Version10 = '1.0';
531
597
  /**
532
598
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
533
599
  */
534
- export type Role10 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
600
+ export type Role11 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
535
601
  /**
536
602
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
537
603
  */
538
- export type FrameSeq9 = number;
604
+ export type FrameSeq10 = number;
539
605
  /**
540
606
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
541
607
  */
542
- export type TransactionId10 = string | null;
608
+ export type TransactionId11 = string | null;
543
609
  /**
544
610
  * Frame discriminator.
545
611
  */
546
- export type Kind10 = 'session_event';
612
+ export type Kind11 = 'session_event';
547
613
  /**
548
614
  * Session lifecycle event type.
549
615
  */
@@ -551,35 +617,35 @@ export type Event = 'save' | 'load' | 'list' | 'resume' | 'new' | 'exit';
551
617
  /**
552
618
  * Opaque session identifier.
553
619
  */
554
- export type SessionId10 = string;
620
+ export type SessionId11 = string;
555
621
  /**
556
622
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
557
623
  */
558
- export type CorrelationId10 = string;
624
+ export type CorrelationId11 = string;
559
625
  /**
560
626
  * ISO-8601 UTC timestamp with sub-ms precision.
561
627
  */
562
- export type Ts10 = string;
628
+ export type Ts11 = string;
563
629
  /**
564
630
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
565
631
  */
566
- export type Version10 = '1.0';
632
+ export type Version11 = '1.0';
567
633
  /**
568
634
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
569
635
  */
570
- export type Role11 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
636
+ export type Role12 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
571
637
  /**
572
638
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
573
639
  */
574
- export type FrameSeq10 = number;
640
+ export type FrameSeq11 = number;
575
641
  /**
576
642
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
577
643
  */
578
- export type TransactionId11 = string | null;
644
+ export type TransactionId12 = string | null;
579
645
  /**
580
646
  * Frame discriminator.
581
647
  */
582
- export type Kind11 = 'error';
648
+ export type Kind12 = 'error';
583
649
  /**
584
650
  * Machine-readable error code (e.g., 'backend_crash', 'protocol_mismatch').
585
651
  */
@@ -591,35 +657,35 @@ export type Message = string;
591
657
  /**
592
658
  * Opaque session identifier.
593
659
  */
594
- export type SessionId11 = string;
660
+ export type SessionId12 = string;
595
661
  /**
596
662
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
597
663
  */
598
- export type CorrelationId11 = string;
664
+ export type CorrelationId12 = string;
599
665
  /**
600
666
  * ISO-8601 UTC timestamp with sub-ms precision.
601
667
  */
602
- export type Ts11 = string;
668
+ export type Ts12 = string;
603
669
  /**
604
670
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
605
671
  */
606
- export type Version11 = '1.0';
672
+ export type Version12 = '1.0';
607
673
  /**
608
674
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
609
675
  */
610
- export type Role12 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
676
+ export type Role13 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
611
677
  /**
612
678
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
613
679
  */
614
- export type FrameSeq11 = number;
680
+ export type FrameSeq12 = number;
615
681
  /**
616
682
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
617
683
  */
618
- export type TransactionId12 = string | null;
684
+ export type TransactionId13 = string | null;
619
685
  /**
620
686
  * Frame discriminator.
621
687
  */
622
- export type Kind12 = 'payload_start';
688
+ export type Kind13 = 'payload_start';
623
689
  /**
624
690
  * Payload MIME type.
625
691
  */
@@ -631,35 +697,35 @@ export type EstimatedBytes = number | null;
631
697
  /**
632
698
  * Opaque session identifier.
633
699
  */
634
- export type SessionId12 = string;
700
+ export type SessionId13 = string;
635
701
  /**
636
702
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
637
703
  */
638
- export type CorrelationId12 = string;
704
+ export type CorrelationId13 = string;
639
705
  /**
640
706
  * ISO-8601 UTC timestamp with sub-ms precision.
641
707
  */
642
- export type Ts12 = string;
708
+ export type Ts13 = string;
643
709
  /**
644
710
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
645
711
  */
646
- export type Version12 = '1.0';
712
+ export type Version13 = '1.0';
647
713
  /**
648
714
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
649
715
  */
650
- export type Role13 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
716
+ export type Role14 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
651
717
  /**
652
718
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
653
719
  */
654
- export type FrameSeq12 = number;
720
+ export type FrameSeq13 = number;
655
721
  /**
656
722
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
657
723
  */
658
- export type TransactionId13 = string | null;
724
+ export type TransactionId14 = string | null;
659
725
  /**
660
726
  * Frame discriminator.
661
727
  */
662
- export type Kind13 = 'payload_delta';
728
+ export type Kind14 = 'payload_delta';
663
729
  /**
664
730
  * Monotonic within the payload (first delta = 0).
665
731
  */
@@ -671,35 +737,35 @@ export type Payload1 = string;
671
737
  /**
672
738
  * Opaque session identifier.
673
739
  */
674
- export type SessionId13 = string;
740
+ export type SessionId14 = string;
675
741
  /**
676
742
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
677
743
  */
678
- export type CorrelationId13 = string;
744
+ export type CorrelationId14 = string;
679
745
  /**
680
746
  * ISO-8601 UTC timestamp with sub-ms precision.
681
747
  */
682
- export type Ts13 = string;
748
+ export type Ts14 = string;
683
749
  /**
684
750
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
685
751
  */
686
- export type Version13 = '1.0';
752
+ export type Version14 = '1.0';
687
753
  /**
688
754
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
689
755
  */
690
- export type Role14 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
756
+ export type Role15 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
691
757
  /**
692
758
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
693
759
  */
694
- export type FrameSeq13 = number;
760
+ export type FrameSeq14 = number;
695
761
  /**
696
762
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
697
763
  */
698
- export type TransactionId14 = string | null;
764
+ export type TransactionId15 = string | null;
699
765
  /**
700
766
  * Frame discriminator.
701
767
  */
702
- export type Kind14 = 'payload_end';
768
+ export type Kind15 = 'payload_end';
703
769
  /**
704
770
  * Total number of payload_delta frames emitted.
705
771
  */
@@ -711,35 +777,35 @@ export type Status1 = 'ok' | 'aborted';
711
777
  /**
712
778
  * Opaque session identifier.
713
779
  */
714
- export type SessionId14 = string;
780
+ export type SessionId15 = string;
715
781
  /**
716
782
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
717
783
  */
718
- export type CorrelationId14 = string;
784
+ export type CorrelationId15 = string;
719
785
  /**
720
786
  * ISO-8601 UTC timestamp with sub-ms precision.
721
787
  */
722
- export type Ts14 = string;
788
+ export type Ts15 = string;
723
789
  /**
724
790
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
725
791
  */
726
- export type Version14 = '1.0';
792
+ export type Version15 = '1.0';
727
793
  /**
728
794
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
729
795
  */
730
- export type Role15 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
796
+ export type Role16 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
731
797
  /**
732
798
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
733
799
  */
734
- export type FrameSeq14 = number;
800
+ export type FrameSeq15 = number;
735
801
  /**
736
802
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
737
803
  */
738
- export type TransactionId15 = string | null;
804
+ export type TransactionId16 = string | null;
739
805
  /**
740
806
  * Frame discriminator.
741
807
  */
742
- export type Kind15 = 'backpressure';
808
+ export type Kind16 = 'backpressure';
743
809
  /**
744
810
  * Reader action. pause=stop emitting; resume=clear; throttle=slow down.
745
811
  */
@@ -771,35 +837,35 @@ export type HudCopyEn = string;
771
837
  /**
772
838
  * Opaque session identifier.
773
839
  */
774
- export type SessionId15 = string;
840
+ export type SessionId16 = string;
775
841
  /**
776
842
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
777
843
  */
778
- export type CorrelationId15 = string;
844
+ export type CorrelationId16 = string;
779
845
  /**
780
846
  * ISO-8601 UTC timestamp with sub-ms precision.
781
847
  */
782
- export type Ts15 = string;
848
+ export type Ts16 = string;
783
849
  /**
784
850
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
785
851
  */
786
- export type Version15 = '1.0';
852
+ export type Version16 = '1.0';
787
853
  /**
788
854
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
789
855
  */
790
- export type Role16 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
856
+ export type Role17 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
791
857
  /**
792
858
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
793
859
  */
794
- export type FrameSeq15 = number;
860
+ export type FrameSeq16 = number;
795
861
  /**
796
862
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
797
863
  */
798
- export type TransactionId16 = string | null;
864
+ export type TransactionId17 = string | null;
799
865
  /**
800
866
  * Frame discriminator.
801
867
  */
802
- export type Kind16 = 'resume_request';
868
+ export type Kind17 = 'resume_request';
803
869
  /**
804
870
  * Last correlation_id the TUI successfully applied. None if no prior frame.
805
871
  */
@@ -815,35 +881,35 @@ export type TuiSessionToken = string;
815
881
  /**
816
882
  * Opaque session identifier.
817
883
  */
818
- export type SessionId16 = string;
884
+ export type SessionId17 = string;
819
885
  /**
820
886
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
821
887
  */
822
- export type CorrelationId16 = string;
888
+ export type CorrelationId17 = string;
823
889
  /**
824
890
  * ISO-8601 UTC timestamp with sub-ms precision.
825
891
  */
826
- export type Ts16 = string;
892
+ export type Ts17 = string;
827
893
  /**
828
894
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
829
895
  */
830
- export type Version16 = '1.0';
896
+ export type Version17 = '1.0';
831
897
  /**
832
898
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
833
899
  */
834
- export type Role17 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
900
+ export type Role18 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
835
901
  /**
836
902
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
837
903
  */
838
- export type FrameSeq16 = number;
904
+ export type FrameSeq17 = number;
839
905
  /**
840
906
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
841
907
  */
842
- export type TransactionId17 = string | null;
908
+ export type TransactionId18 = string | null;
843
909
  /**
844
910
  * Frame discriminator.
845
911
  */
846
- export type Kind17 = 'resume_response';
912
+ export type Kind18 = 'resume_response';
847
913
  /**
848
914
  * Inclusive lower bound of frames that will be replayed.
849
915
  */
@@ -863,35 +929,35 @@ export type HeartbeatIntervalMs = number;
863
929
  /**
864
930
  * Opaque session identifier.
865
931
  */
866
- export type SessionId17 = string;
932
+ export type SessionId18 = string;
867
933
  /**
868
934
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
869
935
  */
870
- export type CorrelationId17 = string;
936
+ export type CorrelationId18 = string;
871
937
  /**
872
938
  * ISO-8601 UTC timestamp with sub-ms precision.
873
939
  */
874
- export type Ts17 = string;
940
+ export type Ts18 = string;
875
941
  /**
876
942
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
877
943
  */
878
- export type Version17 = '1.0';
944
+ export type Version18 = '1.0';
879
945
  /**
880
946
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
881
947
  */
882
- export type Role18 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
948
+ export type Role19 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
883
949
  /**
884
950
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
885
951
  */
886
- export type FrameSeq17 = number;
952
+ export type FrameSeq18 = number;
887
953
  /**
888
954
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
889
955
  */
890
- export type TransactionId18 = string | null;
956
+ export type TransactionId19 = string | null;
891
957
  /**
892
958
  * Frame discriminator.
893
959
  */
894
- export type Kind18 = 'resume_rejected';
960
+ export type Kind19 = 'resume_rejected';
895
961
  /**
896
962
  * Machine-readable reason code.
897
963
  */
@@ -908,35 +974,35 @@ export type Detail = string;
908
974
  /**
909
975
  * Opaque session identifier.
910
976
  */
911
- export type SessionId18 = string;
977
+ export type SessionId19 = string;
912
978
  /**
913
979
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
914
980
  */
915
- export type CorrelationId18 = string;
981
+ export type CorrelationId19 = string;
916
982
  /**
917
983
  * ISO-8601 UTC timestamp with sub-ms precision.
918
984
  */
919
- export type Ts18 = string;
985
+ export type Ts19 = string;
920
986
  /**
921
987
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
922
988
  */
923
- export type Version18 = '1.0';
989
+ export type Version19 = '1.0';
924
990
  /**
925
991
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
926
992
  */
927
- export type Role19 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
993
+ export type Role20 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
928
994
  /**
929
995
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
930
996
  */
931
- export type FrameSeq18 = number;
997
+ export type FrameSeq19 = number;
932
998
  /**
933
999
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
934
1000
  */
935
- export type TransactionId19 = string | null;
1001
+ export type TransactionId20 = string | null;
936
1002
  /**
937
1003
  * Frame discriminator.
938
1004
  */
939
- export type Kind19 = 'heartbeat';
1005
+ export type Kind20 = 'heartbeat';
940
1006
  /**
941
1007
  * ping from sender, pong from receiver.
942
1008
  */
@@ -948,35 +1014,35 @@ export type PeerFrameSeq = number;
948
1014
  /**
949
1015
  * Opaque session identifier.
950
1016
  */
951
- export type SessionId19 = string;
1017
+ export type SessionId20 = string;
952
1018
  /**
953
1019
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
954
1020
  */
955
- export type CorrelationId19 = string;
1021
+ export type CorrelationId20 = string;
956
1022
  /**
957
1023
  * ISO-8601 UTC timestamp with sub-ms precision.
958
1024
  */
959
- export type Ts19 = string;
1025
+ export type Ts20 = string;
960
1026
  /**
961
1027
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
962
1028
  */
963
- export type Version19 = '1.0';
1029
+ export type Version20 = '1.0';
964
1030
  /**
965
1031
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
966
1032
  */
967
- export type Role20 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1033
+ export type Role21 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
968
1034
  /**
969
1035
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
970
1036
  */
971
- export type FrameSeq19 = number;
1037
+ export type FrameSeq20 = number;
972
1038
  /**
973
1039
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
974
1040
  */
975
- export type TransactionId20 = string | null;
1041
+ export type TransactionId21 = string | null;
976
1042
  /**
977
1043
  * Frame discriminator.
978
1044
  */
979
- export type Kind20 = 'notification_push';
1045
+ export type Kind21 = 'notification_push';
980
1046
  /**
981
1047
  * Notification channel handle.
982
1048
  */
@@ -1000,35 +1066,35 @@ export type Payload2 = string;
1000
1066
  /**
1001
1067
  * Opaque session identifier.
1002
1068
  */
1003
- export type SessionId20 = string;
1069
+ export type SessionId21 = string;
1004
1070
  /**
1005
1071
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
1006
1072
  */
1007
- export type CorrelationId20 = string;
1073
+ export type CorrelationId21 = string;
1008
1074
  /**
1009
1075
  * ISO-8601 UTC timestamp with sub-ms precision.
1010
1076
  */
1011
- export type Ts20 = string;
1077
+ export type Ts21 = string;
1012
1078
  /**
1013
1079
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
1014
1080
  */
1015
- export type Version20 = '1.0';
1081
+ export type Version21 = '1.0';
1016
1082
  /**
1017
1083
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
1018
1084
  */
1019
- export type Role21 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1085
+ export type Role22 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1020
1086
  /**
1021
1087
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
1022
1088
  */
1023
- export type FrameSeq20 = number;
1089
+ export type FrameSeq21 = number;
1024
1090
  /**
1025
1091
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
1026
1092
  */
1027
- export type TransactionId21 = string | null;
1093
+ export type TransactionId22 = string | null;
1028
1094
  /**
1029
1095
  * Frame discriminator.
1030
1096
  */
1031
- export type Kind21 = 'plugin_op';
1097
+ export type Kind22 = 'plugin_op';
1032
1098
  /**
1033
1099
  * Operation phase. ``request`` = TUI initiates install/uninstall/list; ``progress`` = backend reports phase tick; ``complete`` = backend reports terminal outcome.
1034
1100
  */
@@ -1088,35 +1154,35 @@ export type WasIdempotentNoop = boolean | null;
1088
1154
  /**
1089
1155
  * Opaque session identifier.
1090
1156
  */
1091
- export type SessionId21 = string;
1157
+ export type SessionId22 = string;
1092
1158
  /**
1093
1159
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
1094
1160
  */
1095
- export type CorrelationId21 = string;
1161
+ export type CorrelationId22 = string;
1096
1162
  /**
1097
1163
  * ISO-8601 UTC timestamp with sub-ms precision.
1098
1164
  */
1099
- export type Ts21 = string;
1165
+ export type Ts22 = string;
1100
1166
  /**
1101
1167
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
1102
1168
  */
1103
- export type Version21 = '1.0';
1169
+ export type Version22 = '1.0';
1104
1170
  /**
1105
1171
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
1106
1172
  */
1107
- export type Role22 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1173
+ export type Role23 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1108
1174
  /**
1109
1175
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
1110
1176
  */
1111
- export type FrameSeq21 = number;
1177
+ export type FrameSeq22 = number;
1112
1178
  /**
1113
1179
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
1114
1180
  */
1115
- export type TransactionId22 = string | null;
1181
+ export type TransactionId23 = string | null;
1116
1182
  /**
1117
1183
  * Frame discriminator — 21st arm of IPCFrame.
1118
1184
  */
1119
- export type Kind22 = 'adapter_manifest_sync';
1185
+ export type Kind23 = 'adapter_manifest_sync';
1120
1186
  /**
1121
1187
  * Full registry snapshot. Non-empty (I1); no duplicate tool_id (I2).
1122
1188
  *
@@ -1126,7 +1192,7 @@ export type Entries = [AdapterManifestEntry, ...AdapterManifestEntry[]];
1126
1192
  /**
1127
1193
  * Globally unique adapter id within the registry, e.g. 'nmc_emergency_search'. Lowercase snake-case; validated by I7.
1128
1194
  */
1129
- export type ToolId2 = string;
1195
+ export type ToolId3 = string;
1130
1196
  /**
1131
1197
  * Human-readable display name; bilingual permitted.
1132
1198
  */
@@ -1162,35 +1228,35 @@ export type EmitterPid = number;
1162
1228
  /**
1163
1229
  * Opaque session identifier.
1164
1230
  */
1165
- export type SessionId22 = string;
1231
+ export type SessionId23 = string;
1166
1232
  /**
1167
1233
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
1168
1234
  */
1169
- export type CorrelationId22 = string;
1235
+ export type CorrelationId23 = string;
1170
1236
  /**
1171
1237
  * ISO-8601 UTC timestamp with sub-ms precision.
1172
1238
  */
1173
- export type Ts22 = string;
1239
+ export type Ts23 = string;
1174
1240
  /**
1175
1241
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
1176
1242
  */
1177
- export type Version22 = '1.0';
1243
+ export type Version23 = '1.0';
1178
1244
  /**
1179
1245
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
1180
1246
  */
1181
- export type Role23 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1247
+ export type Role24 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1182
1248
  /**
1183
1249
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
1184
1250
  */
1185
- export type FrameSeq22 = number;
1251
+ export type FrameSeq23 = number;
1186
1252
  /**
1187
1253
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
1188
1254
  */
1189
- export type TransactionId23 = string | null;
1255
+ export type TransactionId24 = string | null;
1190
1256
  /**
1191
1257
  * Frame discriminator — arm 22 of IPCFrame.
1192
1258
  */
1193
- export type Kind23 = 'consent_revoke_request';
1259
+ export type Kind24 = 'consent_revoke_request';
1194
1260
  /**
1195
1261
  * UUIDv4 round-trip correlation ID; matched in consent_revoke_response.
1196
1262
  */
@@ -1210,35 +1276,35 @@ export type Reason1 = string | null;
1210
1276
  /**
1211
1277
  * Opaque session identifier.
1212
1278
  */
1213
- export type SessionId23 = string;
1279
+ export type SessionId24 = string;
1214
1280
  /**
1215
1281
  * UUIDv7 string for new emissions; ULID accepted for back-compat. Non-empty; emitter SHOULD use UUIDv7. (E5)
1216
1282
  */
1217
- export type CorrelationId23 = string;
1283
+ export type CorrelationId24 = string;
1218
1284
  /**
1219
1285
  * ISO-8601 UTC timestamp with sub-ms precision.
1220
1286
  */
1221
- export type Ts23 = string;
1287
+ export type Ts24 = string;
1222
1288
  /**
1223
1289
  * Envelope version. Hard-fail on mismatch (E1, FR-001).
1224
1290
  */
1225
- export type Version23 = '1.0';
1291
+ export type Version24 = '1.0';
1226
1292
  /**
1227
1293
  * Origin role. Validated against kind<->role allow-list (E3, FR-004).
1228
1294
  */
1229
- export type Role24 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1295
+ export type Role25 = 'tui' | 'backend' | 'tool' | 'llm' | 'notification';
1230
1296
  /**
1231
1297
  * Per-session monotonic sequence number (ge=0). Gap detection uses this.
1232
1298
  */
1233
- export type FrameSeq23 = number;
1299
+ export type FrameSeq24 = number;
1234
1300
  /**
1235
1301
  * UUIDv7. Populated for idempotent state-change frames (irreversible tools). None for streaming chunks. (FR-026) Non-empty when present (parity with codec.ts ``z.string().min(1).nullable().optional()`` — Spec 2642 § US3).
1236
1302
  */
1237
- export type TransactionId24 = string | null;
1303
+ export type TransactionId25 = string | null;
1238
1304
  /**
1239
1305
  * Frame discriminator — arm 23 of IPCFrame.
1240
1306
  */
1241
- export type Kind24 = 'consent_revoke_response';
1307
+ export type Kind25 = 'consent_revoke_response';
1242
1308
  /**
1243
1309
  * Mirrors consent_revoke_request.request_id for round-trip correlation.
1244
1310
  */
@@ -1312,6 +1378,7 @@ export interface ChatRequestFrame {
1312
1378
  max_tokens?: MaxTokens;
1313
1379
  temperature?: Temperature;
1314
1380
  top_p?: TopP;
1381
+ reasoning_mode?: ReasoningMode;
1315
1382
  }
1316
1383
  /**
1317
1384
  * One conversation-history entry carried by ``ChatRequestFrame.messages``.
@@ -1409,9 +1476,14 @@ export interface AssistantChunkFrame {
1409
1476
  done: Done;
1410
1477
  }
1411
1478
  /**
1412
- * backend -> TUI (display only): a tool invocation decision by the model.
1479
+ * backend -> TUI: deterministic query-loop progress.
1480
+ *
1481
+ * This is intentionally separate from ``AssistantChunkFrame.thinking``.
1482
+ * ``progress_event`` carries safe harness state such as analysis, tool
1483
+ * selection, tool dispatch/result, and answer synthesis. Provider reasoning
1484
+ * remains on the gated ``thinking_delta`` channel.
1413
1485
  */
1414
- export interface ToolCallFrame {
1486
+ export interface ProgressEventFrame {
1415
1487
  session_id: SessionId3;
1416
1488
  correlation_id: CorrelationId3;
1417
1489
  ts: Ts3;
@@ -1424,20 +1496,17 @@ export interface ToolCallFrame {
1424
1496
  */
1425
1497
  trailer?: FrameTrailer | null;
1426
1498
  kind?: Kind3;
1427
- call_id: CallId;
1428
- name: Name3;
1429
- arguments: Arguments1;
1430
- }
1431
- /**
1432
- * Tool-specific arguments. Concrete adapter calls carry adapter schema fields directly.
1433
- */
1434
- export interface Arguments1 {
1435
- [k: string]: any;
1499
+ phase: Phase;
1500
+ message_ko: MessageKo;
1501
+ message_en: MessageEn;
1502
+ safe_to_persist?: SafeToPersist;
1503
+ tool_id?: ToolId;
1504
+ call_id?: CallId;
1436
1505
  }
1437
1506
  /**
1438
- * backend -> TUI (render): the output of a tool invocation.
1507
+ * backend -> TUI (display only): a tool invocation decision by the model.
1439
1508
  */
1440
- export interface ToolResultFrame {
1509
+ export interface ToolCallFrame {
1441
1510
  session_id: SessionId4;
1442
1511
  correlation_id: CorrelationId4;
1443
1512
  ts: Ts4;
@@ -1451,19 +1520,19 @@ export interface ToolResultFrame {
1451
1520
  trailer?: FrameTrailer | null;
1452
1521
  kind?: Kind4;
1453
1522
  call_id: CallId1;
1454
- envelope: ToolResultEnvelope;
1523
+ name: Name3;
1524
+ arguments: Arguments1;
1455
1525
  }
1456
1526
  /**
1457
- * Active primitive discriminated union. Unknown kind falls to UnrecognizedPayload.
1527
+ * Tool-specific arguments. Concrete adapter calls carry adapter schema fields directly.
1458
1528
  */
1459
- export interface ToolResultEnvelope {
1460
- kind: Kind5;
1529
+ export interface Arguments1 {
1461
1530
  [k: string]: any;
1462
1531
  }
1463
1532
  /**
1464
- * backend -> TUI: Spec 027 coordinator phase update.
1533
+ * backend -> TUI (render): the output of a tool invocation.
1465
1534
  */
1466
- export interface CoordinatorPhaseFrame {
1535
+ export interface ToolResultFrame {
1467
1536
  session_id: SessionId5;
1468
1537
  correlation_id: CorrelationId5;
1469
1538
  ts: Ts5;
@@ -1475,13 +1544,21 @@ export interface CoordinatorPhaseFrame {
1475
1544
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1476
1545
  */
1477
1546
  trailer?: FrameTrailer | null;
1478
- kind?: Kind6;
1479
- phase: Phase;
1547
+ kind?: Kind5;
1548
+ call_id: CallId2;
1549
+ envelope: ToolResultEnvelope;
1480
1550
  }
1481
1551
  /**
1482
- * backend -> TUI: per-worker status row update from Spec 027 swarm.
1552
+ * Active primitive discriminated union. Unknown kind falls to UnrecognizedPayload.
1483
1553
  */
1484
- export interface WorkerStatusFrame {
1554
+ export interface ToolResultEnvelope {
1555
+ kind: Kind6;
1556
+ [k: string]: any;
1557
+ }
1558
+ /**
1559
+ * backend -> TUI: Spec 027 coordinator phase update.
1560
+ */
1561
+ export interface CoordinatorPhaseFrame {
1485
1562
  session_id: SessionId6;
1486
1563
  correlation_id: CorrelationId6;
1487
1564
  ts: Ts6;
@@ -1494,15 +1571,12 @@ export interface WorkerStatusFrame {
1494
1571
  */
1495
1572
  trailer?: FrameTrailer | null;
1496
1573
  kind?: Kind7;
1497
- worker_id: WorkerId;
1498
- role_id: RoleId;
1499
- current_primitive: CurrentPrimitive;
1500
- status: Status;
1574
+ phase: Phase1;
1501
1575
  }
1502
1576
  /**
1503
- * backend -> TUI: a worker raises a permission request.
1577
+ * backend -> TUI: per-worker status row update from Spec 027 swarm.
1504
1578
  */
1505
- export interface PermissionRequestFrame {
1579
+ export interface WorkerStatusFrame {
1506
1580
  session_id: SessionId7;
1507
1581
  correlation_id: CorrelationId7;
1508
1582
  ts: Ts7;
@@ -1515,18 +1589,15 @@ export interface PermissionRequestFrame {
1515
1589
  */
1516
1590
  trailer?: FrameTrailer | null;
1517
1591
  kind?: Kind8;
1518
- request_id: RequestId;
1519
- worker_id: WorkerId1;
1520
- primitive_kind: PrimitiveKind;
1521
- description_ko: DescriptionKo;
1522
- description_en: DescriptionEn;
1523
- risk_level: RiskLevel;
1524
- tool_id?: ToolId;
1592
+ worker_id: WorkerId;
1593
+ role_id: RoleId;
1594
+ current_primitive: CurrentPrimitive;
1595
+ status: Status;
1525
1596
  }
1526
1597
  /**
1527
- * TUI -> backend: citizen's decision on a permission_request.
1598
+ * backend -> TUI: a worker raises a permission request.
1528
1599
  */
1529
- export interface PermissionResponseFrame {
1600
+ export interface PermissionRequestFrame {
1530
1601
  session_id: SessionId8;
1531
1602
  correlation_id: CorrelationId8;
1532
1603
  ts: Ts8;
@@ -1539,16 +1610,18 @@ export interface PermissionResponseFrame {
1539
1610
  */
1540
1611
  trailer?: FrameTrailer | null;
1541
1612
  kind?: Kind9;
1542
- request_id: RequestId1;
1543
- decision: Decision;
1544
- receipt_id?: ReceiptId;
1545
- primitive_kind?: PrimitiveKind1;
1613
+ request_id: RequestId;
1614
+ worker_id: WorkerId1;
1615
+ primitive_kind: PrimitiveKind;
1616
+ description_ko: DescriptionKo;
1617
+ description_en: DescriptionEn;
1618
+ risk_level: RiskLevel;
1546
1619
  tool_id?: ToolId1;
1547
1620
  }
1548
1621
  /**
1549
- * Bidirectional: session lifecycle events.
1622
+ * TUI -> backend: citizen's decision on a permission_request.
1550
1623
  */
1551
- export interface SessionEventFrame {
1624
+ export interface PermissionResponseFrame {
1552
1625
  session_id: SessionId9;
1553
1626
  correlation_id: CorrelationId9;
1554
1627
  ts: Ts9;
@@ -1561,19 +1634,16 @@ export interface SessionEventFrame {
1561
1634
  */
1562
1635
  trailer?: FrameTrailer | null;
1563
1636
  kind?: Kind10;
1564
- event: Event;
1565
- payload: Payload;
1566
- }
1567
- /**
1568
- * Event-specific payload. For list: {sessions: [{id, created_at, turn_count}]}. For resume: {id: str}. For others: {}.
1569
- */
1570
- export interface Payload {
1571
- [k: string]: any;
1637
+ request_id: RequestId1;
1638
+ decision: Decision;
1639
+ receipt_id?: ReceiptId;
1640
+ primitive_kind?: PrimitiveKind1;
1641
+ tool_id?: ToolId2;
1572
1642
  }
1573
1643
  /**
1574
- * backend -> TUI: a backend error surfaced to the TUI for rendering.
1644
+ * Bidirectional: session lifecycle events.
1575
1645
  */
1576
- export interface ErrorFrame {
1646
+ export interface SessionEventFrame {
1577
1647
  session_id: SessionId10;
1578
1648
  correlation_id: CorrelationId10;
1579
1649
  ts: Ts10;
@@ -1586,23 +1656,19 @@ export interface ErrorFrame {
1586
1656
  */
1587
1657
  trailer?: FrameTrailer | null;
1588
1658
  kind?: Kind11;
1589
- code: Code;
1590
- message: Message;
1591
- details: Details;
1659
+ event: Event;
1660
+ payload: Payload;
1592
1661
  }
1593
1662
  /**
1594
- * Structured error details. UMMAYA_* env var values MUST be redacted.
1663
+ * Event-specific payload. For list: {sessions: [{id, created_at, turn_count}]}. For resume: {id: str}. For others: {}.
1595
1664
  */
1596
- export interface Details {
1665
+ export interface Payload {
1597
1666
  [k: string]: any;
1598
1667
  }
1599
1668
  /**
1600
- * Begins a streamed payload (assistant output, tool result chunking).
1601
- *
1602
- * Sender MUST follow with >= 1 payload_delta and exactly one payload_end.
1603
- * role allow-list: backend, tool, llm.
1669
+ * backend -> TUI: a backend error surfaced to the TUI for rendering.
1604
1670
  */
1605
- export interface PayloadStartFrame {
1671
+ export interface ErrorFrame {
1606
1672
  session_id: SessionId11;
1607
1673
  correlation_id: CorrelationId11;
1608
1674
  ts: Ts11;
@@ -1615,15 +1681,23 @@ export interface PayloadStartFrame {
1615
1681
  */
1616
1682
  trailer?: FrameTrailer | null;
1617
1683
  kind?: Kind12;
1618
- content_type: ContentType;
1619
- estimated_bytes?: EstimatedBytes;
1684
+ code: Code;
1685
+ message: Message;
1686
+ details: Details;
1620
1687
  }
1621
1688
  /**
1622
- * One chunk of a streamed payload.
1689
+ * Structured error details. UMMAYA_* env var values MUST be redacted.
1690
+ */
1691
+ export interface Details {
1692
+ [k: string]: any;
1693
+ }
1694
+ /**
1695
+ * Begins a streamed payload (assistant output, tool result chunking).
1623
1696
  *
1697
+ * Sender MUST follow with >= 1 payload_delta and exactly one payload_end.
1624
1698
  * role allow-list: backend, tool, llm.
1625
1699
  */
1626
- export interface PayloadDeltaFrame {
1700
+ export interface PayloadStartFrame {
1627
1701
  session_id: SessionId12;
1628
1702
  correlation_id: CorrelationId12;
1629
1703
  ts: Ts12;
@@ -1636,16 +1710,15 @@ export interface PayloadDeltaFrame {
1636
1710
  */
1637
1711
  trailer?: FrameTrailer | null;
1638
1712
  kind?: Kind13;
1639
- delta_seq: DeltaSeq;
1640
- payload: Payload1;
1713
+ content_type: ContentType;
1714
+ estimated_bytes?: EstimatedBytes;
1641
1715
  }
1642
1716
  /**
1643
- * Terminates a streamed payload.
1717
+ * One chunk of a streamed payload.
1644
1718
  *
1645
- * MUST carry a trailer with final=True.
1646
1719
  * role allow-list: backend, tool, llm.
1647
1720
  */
1648
- export interface PayloadEndFrame {
1721
+ export interface PayloadDeltaFrame {
1649
1722
  session_id: SessionId13;
1650
1723
  correlation_id: CorrelationId13;
1651
1724
  ts: Ts13;
@@ -1658,16 +1731,16 @@ export interface PayloadEndFrame {
1658
1731
  */
1659
1732
  trailer?: FrameTrailer | null;
1660
1733
  kind?: Kind14;
1661
- delta_count: DeltaCount;
1662
- status: Status1;
1734
+ delta_seq: DeltaSeq;
1735
+ payload: Payload1;
1663
1736
  }
1664
1737
  /**
1665
- * Emitted when outgoing queue crosses HWM or a 429 condition is detected.
1738
+ * Terminates a streamed payload.
1666
1739
  *
1667
- * role allow-list: tui (tui_reader), backend (backend_writer, upstream_429).
1668
- * FR-012, FR-015: hud_copy_ko/en MUST be non-empty (min_length=1).
1740
+ * MUST carry a trailer with final=True.
1741
+ * role allow-list: backend, tool, llm.
1669
1742
  */
1670
- export interface BackpressureSignalFrame {
1743
+ export interface PayloadEndFrame {
1671
1744
  session_id: SessionId14;
1672
1745
  correlation_id: CorrelationId14;
1673
1746
  ts: Ts14;
@@ -1680,20 +1753,16 @@ export interface BackpressureSignalFrame {
1680
1753
  */
1681
1754
  trailer?: FrameTrailer | null;
1682
1755
  kind?: Kind15;
1683
- signal: Signal;
1684
- source: Source;
1685
- queue_depth: QueueDepth;
1686
- hwm: Hwm;
1687
- retry_after_ms?: RetryAfterMs;
1688
- hud_copy_ko: HudCopyKo;
1689
- hud_copy_en: HudCopyEn;
1756
+ delta_count: DeltaCount;
1757
+ status: Status1;
1690
1758
  }
1691
1759
  /**
1692
- * Sent by the reconnecting TUI after a stdio drop.
1760
+ * Emitted when outgoing queue crosses HWM or a 429 condition is detected.
1693
1761
  *
1694
- * role allow-list: tui.
1762
+ * role allow-list: tui (tui_reader), backend (backend_writer, upstream_429).
1763
+ * FR-012, FR-015: hud_copy_ko/en MUST be non-empty (min_length=1).
1695
1764
  */
1696
- export interface ResumeRequestFrame {
1765
+ export interface BackpressureSignalFrame {
1697
1766
  session_id: SessionId15;
1698
1767
  correlation_id: CorrelationId15;
1699
1768
  ts: Ts15;
@@ -1706,18 +1775,20 @@ export interface ResumeRequestFrame {
1706
1775
  */
1707
1776
  trailer?: FrameTrailer | null;
1708
1777
  kind?: Kind16;
1709
- last_seen_correlation_id?: LastSeenCorrelationId;
1710
- last_seen_frame_seq?: LastSeenFrameSeq;
1711
- tui_session_token: TuiSessionToken;
1778
+ signal: Signal;
1779
+ source: Source;
1780
+ queue_depth: QueueDepth;
1781
+ hwm: Hwm;
1782
+ retry_after_ms?: RetryAfterMs;
1783
+ hud_copy_ko: HudCopyKo;
1784
+ hud_copy_en: HudCopyEn;
1712
1785
  }
1713
1786
  /**
1714
- * Backend accepts the resume.
1787
+ * Sent by the reconnecting TUI after a stdio drop.
1715
1788
  *
1716
- * Must be followed by replay of frames with frame_seq > last_seen_frame_seq.
1717
- * Trailer with final=True MUST be set (E6).
1718
- * role allow-list: backend.
1789
+ * role allow-list: tui.
1719
1790
  */
1720
- export interface ResumeResponseFrame {
1791
+ export interface ResumeRequestFrame {
1721
1792
  session_id: SessionId16;
1722
1793
  correlation_id: CorrelationId16;
1723
1794
  ts: Ts16;
@@ -1730,18 +1801,18 @@ export interface ResumeResponseFrame {
1730
1801
  */
1731
1802
  trailer?: FrameTrailer | null;
1732
1803
  kind?: Kind17;
1733
- resumed_from_frame_seq: ResumedFromFrameSeq;
1734
- replay_count: ReplayCount;
1735
- server_session_id: ServerSessionId;
1736
- heartbeat_interval_ms: HeartbeatIntervalMs;
1804
+ last_seen_correlation_id?: LastSeenCorrelationId;
1805
+ last_seen_frame_seq?: LastSeenFrameSeq;
1806
+ tui_session_token: TuiSessionToken;
1737
1807
  }
1738
1808
  /**
1739
- * Backend cannot honor the resume request.
1809
+ * Backend accepts the resume.
1740
1810
  *
1811
+ * Must be followed by replay of frames with frame_seq > last_seen_frame_seq.
1741
1812
  * Trailer with final=True MUST be set (E6).
1742
1813
  * role allow-list: backend.
1743
1814
  */
1744
- export interface ResumeRejectedFrame {
1815
+ export interface ResumeResponseFrame {
1745
1816
  session_id: SessionId17;
1746
1817
  correlation_id: CorrelationId17;
1747
1818
  ts: Ts17;
@@ -1754,17 +1825,18 @@ export interface ResumeRejectedFrame {
1754
1825
  */
1755
1826
  trailer?: FrameTrailer | null;
1756
1827
  kind?: Kind18;
1757
- reason: Reason;
1758
- detail: Detail;
1828
+ resumed_from_frame_seq: ResumedFromFrameSeq;
1829
+ replay_count: ReplayCount;
1830
+ server_session_id: ServerSessionId;
1831
+ heartbeat_interval_ms: HeartbeatIntervalMs;
1759
1832
  }
1760
1833
  /**
1761
- * Emitted every 30 s (default) by both sides to prove liveness.
1834
+ * Backend cannot honor the resume request.
1762
1835
  *
1763
- * Note: Heartbeat frames do NOT increment frame_seq — they use a dedicated
1764
- * counter. This keeps ring-buffer economy tight.
1765
- * role allow-list: tui, backend.
1836
+ * Trailer with final=True MUST be set (E6).
1837
+ * role allow-list: backend.
1766
1838
  */
1767
- export interface HeartbeatFrame {
1839
+ export interface ResumeRejectedFrame {
1768
1840
  session_id: SessionId18;
1769
1841
  correlation_id: CorrelationId18;
1770
1842
  ts: Ts18;
@@ -1777,6 +1849,29 @@ export interface HeartbeatFrame {
1777
1849
  */
1778
1850
  trailer?: FrameTrailer | null;
1779
1851
  kind?: Kind19;
1852
+ reason: Reason;
1853
+ detail: Detail;
1854
+ }
1855
+ /**
1856
+ * Emitted every 30 s (default) by both sides to prove liveness.
1857
+ *
1858
+ * Note: Heartbeat frames do NOT increment frame_seq — they use a dedicated
1859
+ * counter. This keeps ring-buffer economy tight.
1860
+ * role allow-list: tui, backend.
1861
+ */
1862
+ export interface HeartbeatFrame {
1863
+ session_id: SessionId19;
1864
+ correlation_id: CorrelationId19;
1865
+ ts: Ts19;
1866
+ version?: Version19;
1867
+ role: Role20;
1868
+ frame_seq?: FrameSeq19;
1869
+ transaction_id?: TransactionId20;
1870
+ /**
1871
+ * Completion/validation metadata. Populated on terminal frames. (FR-006)
1872
+ */
1873
+ trailer?: FrameTrailer | null;
1874
+ kind?: Kind20;
1780
1875
  direction: Direction;
1781
1876
  peer_frame_seq: PeerFrameSeq;
1782
1877
  }
@@ -1798,18 +1893,18 @@ export interface HeartbeatFrame {
1798
1893
  * UMMAYA swap-2 add-on, not a CC-divergence regression).
1799
1894
  */
1800
1895
  export interface NotificationPushFrame {
1801
- session_id: SessionId19;
1802
- correlation_id: CorrelationId19;
1803
- ts: Ts19;
1804
- version?: Version19;
1805
- role: Role20;
1806
- frame_seq?: FrameSeq19;
1807
- transaction_id?: TransactionId20;
1896
+ session_id: SessionId20;
1897
+ correlation_id: CorrelationId20;
1898
+ ts: Ts20;
1899
+ version?: Version20;
1900
+ role: Role21;
1901
+ frame_seq?: FrameSeq20;
1902
+ transaction_id?: TransactionId21;
1808
1903
  /**
1809
1904
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1810
1905
  */
1811
1906
  trailer?: FrameTrailer | null;
1812
- kind?: Kind20;
1907
+ kind?: Kind21;
1813
1908
  subscription_id: SubscriptionId;
1814
1909
  adapter_id: AdapterId;
1815
1910
  event_guid: EventGuid;
@@ -1840,18 +1935,18 @@ export interface NotificationPushFrame {
1840
1935
  * role allow-list: tui (request), backend (progress / complete).
1841
1936
  */
1842
1937
  export interface PluginOpFrame {
1843
- session_id: SessionId20;
1844
- correlation_id: CorrelationId20;
1845
- ts: Ts20;
1846
- version?: Version20;
1847
- role: Role21;
1848
- frame_seq?: FrameSeq20;
1849
- transaction_id?: TransactionId21;
1938
+ session_id: SessionId21;
1939
+ correlation_id: CorrelationId21;
1940
+ ts: Ts21;
1941
+ version?: Version21;
1942
+ role: Role22;
1943
+ frame_seq?: FrameSeq21;
1944
+ transaction_id?: TransactionId22;
1850
1945
  /**
1851
1946
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1852
1947
  */
1853
1948
  trailer?: FrameTrailer | null;
1854
- kind?: Kind21;
1949
+ kind?: Kind22;
1855
1950
  op: Op;
1856
1951
  request_op?: RequestOp;
1857
1952
  name?: Name4;
@@ -1883,18 +1978,18 @@ export interface PluginOpFrame {
1883
1978
  * Constitution § II + Spec 1634 boot-validation pattern.
1884
1979
  */
1885
1980
  export interface AdapterManifestSyncFrame {
1886
- session_id: SessionId21;
1887
- correlation_id: CorrelationId21;
1888
- ts: Ts21;
1889
- version?: Version21;
1890
- role: Role22;
1891
- frame_seq?: FrameSeq21;
1892
- transaction_id?: TransactionId22;
1981
+ session_id: SessionId22;
1982
+ correlation_id: CorrelationId22;
1983
+ ts: Ts22;
1984
+ version?: Version22;
1985
+ role: Role23;
1986
+ frame_seq?: FrameSeq22;
1987
+ transaction_id?: TransactionId23;
1893
1988
  /**
1894
1989
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1895
1990
  */
1896
1991
  trailer?: FrameTrailer | null;
1897
- kind?: Kind22;
1992
+ kind?: Kind23;
1898
1993
  entries: Entries;
1899
1994
  manifest_hash: ManifestHash;
1900
1995
  emitter_pid: EmitterPid;
@@ -1911,7 +2006,7 @@ export interface AdapterManifestSyncFrame {
1911
2006
  * - ``tool_id`` matches ``^[a-z][a-z0-9_]*$`` (I7).
1912
2007
  */
1913
2008
  export interface AdapterManifestEntry {
1914
- tool_id: ToolId2;
2009
+ tool_id: ToolId3;
1915
2010
  name: Name5;
1916
2011
  primitive: Primitive;
1917
2012
  policy_authority_url?: PolicyAuthorityUrl;
@@ -1950,18 +2045,18 @@ export interface OutputSchemaJson {
1950
2045
  * role allow-list: tui.
1951
2046
  */
1952
2047
  export interface ConsentRevokeRequestFrame {
1953
- session_id: SessionId22;
1954
- correlation_id: CorrelationId22;
1955
- ts: Ts22;
1956
- version?: Version22;
1957
- role: Role23;
1958
- frame_seq?: FrameSeq22;
1959
- transaction_id?: TransactionId23;
2048
+ session_id: SessionId23;
2049
+ correlation_id: CorrelationId23;
2050
+ ts: Ts23;
2051
+ version?: Version23;
2052
+ role: Role24;
2053
+ frame_seq?: FrameSeq23;
2054
+ transaction_id?: TransactionId24;
1960
2055
  /**
1961
2056
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1962
2057
  */
1963
2058
  trailer?: FrameTrailer | null;
1964
- kind?: Kind23;
2059
+ kind?: Kind24;
1965
2060
  request_id: RequestId2;
1966
2061
  receipt_id: ReceiptId2;
1967
2062
  scope: Scope;
@@ -1985,18 +2080,18 @@ export interface ConsentRevokeRequestFrame {
1985
2080
  * role allow-list: backend.
1986
2081
  */
1987
2082
  export interface ConsentRevokeResponseFrame {
1988
- session_id: SessionId23;
1989
- correlation_id: CorrelationId23;
1990
- ts: Ts23;
1991
- version?: Version23;
1992
- role: Role24;
1993
- frame_seq?: FrameSeq23;
1994
- transaction_id?: TransactionId24;
2083
+ session_id: SessionId24;
2084
+ correlation_id: CorrelationId24;
2085
+ ts: Ts24;
2086
+ version?: Version24;
2087
+ role: Role25;
2088
+ frame_seq?: FrameSeq24;
2089
+ transaction_id?: TransactionId25;
1995
2090
  /**
1996
2091
  * Completion/validation metadata. Populated on terminal frames. (FR-006)
1997
2092
  */
1998
2093
  trailer?: FrameTrailer | null;
1999
- kind?: Kind24;
2094
+ kind?: Kind25;
2000
2095
  request_id: RequestId3;
2001
2096
  ok: Ok;
2002
2097
  revoked_at?: RevokedAt;