@genesislcap/ai-assistant 15.19.6 → 15.20.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 (42) hide show
  1. package/dist/ai-assistant.api.json +605 -72
  2. package/dist/ai-assistant.d.ts +404 -25
  3. package/dist/chat-driver.cjs +341 -28
  4. package/dist/chat-driver.cjs.map +4 -4
  5. package/dist/chat-driver.mjs +341 -28
  6. package/dist/chat-driver.mjs.map +4 -4
  7. package/dist/custom-elements.json +630 -20
  8. package/dist/dts/components/ai-driver/ai-driver.d.ts +33 -7
  9. package/dist/dts/components/ai-driver/ai-driver.d.ts.map +1 -1
  10. package/dist/dts/components/chat-driver/chat-driver.d.ts +63 -2
  11. package/dist/dts/components/chat-driver/chat-driver.d.ts.map +1 -1
  12. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts +9 -3
  13. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts.map +1 -1
  14. package/dist/dts/config/config.d.ts +44 -0
  15. package/dist/dts/config/config.d.ts.map +1 -1
  16. package/dist/dts/main/main.d.ts +187 -5
  17. package/dist/dts/main/main.d.ts.map +1 -1
  18. package/dist/dts/main/main.styles.d.ts.map +1 -1
  19. package/dist/dts/main/main.template.d.ts.map +1 -1
  20. package/dist/dts/utils/condense-history.d.ts.map +1 -1
  21. package/dist/dts/utils/context-tokens.d.ts +156 -0
  22. package/dist/dts/utils/context-tokens.d.ts.map +1 -0
  23. package/dist/dts/utils/history-transform.d.ts +76 -14
  24. package/dist/dts/utils/history-transform.d.ts.map +1 -1
  25. package/dist/dts/utils/resolve-context-budget.d.ts +98 -0
  26. package/dist/dts/utils/resolve-context-budget.d.ts.map +1 -0
  27. package/dist/esm/components/chat-driver/chat-driver.js +179 -34
  28. package/dist/esm/components/orchestrating-driver/orchestrating-driver.js +12 -4
  29. package/dist/esm/main/main.js +391 -21
  30. package/dist/esm/main/main.styles.js +128 -0
  31. package/dist/esm/main/main.template.js +64 -29
  32. package/dist/esm/state/debug-event-log.js +1 -1
  33. package/dist/esm/utils/condense-history.js +1 -5
  34. package/dist/esm/utils/context-tokens.js +339 -0
  35. package/dist/esm/utils/history-transform.js +101 -19
  36. package/dist/esm/utils/resolve-context-budget.js +84 -0
  37. package/package.json +16 -16
  38. package/sandbox/README.md +93 -4
  39. package/sandbox/controls.ts +77 -10
  40. package/sandbox/fixtures.ts +163 -6
  41. package/sandbox/sandbox.css +54 -1
  42. package/sandbox/sandbox.ts +384 -7
@@ -2464,11 +2464,20 @@
2464
2464
  {
2465
2465
  "kind": "MethodSignature",
2466
2466
  "canonicalReference": "@genesislcap/ai-assistant!AiDriver#canCompact:member(1)",
2467
- "docComment": "/**\n * Whether `compact()` would compact something right now a summarizable run of older turns exists behind a clean boundary. The UI gates its \"Compact\" affordance on this, so the button reflects the exact history `compact()` acts on (GENC-1351). Optional — only history-owning drivers implement it.\n */\n",
2467
+ "docComment": "/**\n * Whether `compact()` would compact something right now. Convenience over {@link AiDriver.getCompactionPlan} prefer the plan where the caller needs to say how much would be reclaimed. Optional — only history-owning drivers implement it.\n */\n",
2468
2468
  "excerptTokens": [
2469
2469
  {
2470
2470
  "kind": "Content",
2471
- "text": "canCompact?(): "
2471
+ "text": "canCompact?(options?: "
2472
+ },
2473
+ {
2474
+ "kind": "Reference",
2475
+ "text": "CompactionPlanOptions",
2476
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
2477
+ },
2478
+ {
2479
+ "kind": "Content",
2480
+ "text": "): "
2472
2481
  },
2473
2482
  {
2474
2483
  "kind": "Content",
@@ -2481,22 +2490,40 @@
2481
2490
  ],
2482
2491
  "isOptional": true,
2483
2492
  "returnTypeTokenRange": {
2484
- "startIndex": 1,
2485
- "endIndex": 2
2493
+ "startIndex": 3,
2494
+ "endIndex": 4
2486
2495
  },
2487
2496
  "releaseTag": "Beta",
2488
2497
  "overloadIndex": 1,
2489
- "parameters": [],
2498
+ "parameters": [
2499
+ {
2500
+ "parameterName": "options",
2501
+ "parameterTypeTokenRange": {
2502
+ "startIndex": 1,
2503
+ "endIndex": 2
2504
+ },
2505
+ "isOptional": true
2506
+ }
2507
+ ],
2490
2508
  "name": "canCompact"
2491
2509
  },
2492
2510
  {
2493
2511
  "kind": "MethodSignature",
2494
2512
  "canonicalReference": "@genesislcap/ai-assistant!AiDriver#compact:member(1)",
2495
- "docComment": "/**\n * Destructively compact older conversation turns into a single `compacted-summary` message (GENC-1351 §5.7), summarizing them via the default provider's one-shot `prompt()`. Atomic: history changes only on success. Resolves to the created summary message, or `null` when there is nothing worth compacting or the provider cannot summarize. Optional — only drivers that own history implement it.\n */\n",
2513
+ "docComment": "/**\n * Destructively compact older conversation turns into a single `compacted-summary` message (GENC-1351 §5.7), summarizing them via the default provider's one-shot `prompt()`. Atomic: history changes only on success. Resolves to the created summary message, or `null` when there is nothing worth compacting or the provider cannot summarize. Optional — only drivers that own history implement it.\n *\n * Pass the same `options` used for {@link AiDriver.getCompactionPlan} so the action does exactly what the affordance advertised.\n */\n",
2496
2514
  "excerptTokens": [
2497
2515
  {
2498
2516
  "kind": "Content",
2499
- "text": "compact?(): "
2517
+ "text": "compact?(options?: "
2518
+ },
2519
+ {
2520
+ "kind": "Reference",
2521
+ "text": "CompactionPlanOptions",
2522
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
2523
+ },
2524
+ {
2525
+ "kind": "Content",
2526
+ "text": "): "
2500
2527
  },
2501
2528
  {
2502
2529
  "kind": "Reference",
@@ -2523,12 +2550,21 @@
2523
2550
  ],
2524
2551
  "isOptional": true,
2525
2552
  "returnTypeTokenRange": {
2526
- "startIndex": 1,
2527
- "endIndex": 5
2553
+ "startIndex": 3,
2554
+ "endIndex": 7
2528
2555
  },
2529
2556
  "releaseTag": "Beta",
2530
2557
  "overloadIndex": 1,
2531
- "parameters": [],
2558
+ "parameters": [
2559
+ {
2560
+ "parameterName": "options",
2561
+ "parameterTypeTokenRange": {
2562
+ "startIndex": 1,
2563
+ "endIndex": 2
2564
+ },
2565
+ "isOptional": true
2566
+ }
2567
+ ],
2532
2568
  "name": "compact"
2533
2569
  },
2534
2570
  {
@@ -2693,6 +2729,57 @@
2693
2729
  "parameters": [],
2694
2730
  "name": "getActiveProviderName"
2695
2731
  },
2732
+ {
2733
+ "kind": "MethodSignature",
2734
+ "canonicalReference": "@genesislcap/ai-assistant!AiDriver#getCompactionPlan:member(1)",
2735
+ "docComment": "/**\n * What compacting right now would cost and reclaim, without running the summarizer (GENC-1567) — or `null` when there is no safe cut, or the projected reclaim is not worth the call.\n *\n * The single source of truth for every compaction affordance: the menu's enabled state, its tooltip, the context gate's banner copy, and the action itself all read this, so none of them can promise a reclaim the action does not deliver. Optional — only history-owning drivers implement it.\n */\n",
2736
+ "excerptTokens": [
2737
+ {
2738
+ "kind": "Content",
2739
+ "text": "getCompactionPlan?(options?: "
2740
+ },
2741
+ {
2742
+ "kind": "Reference",
2743
+ "text": "CompactionPlanOptions",
2744
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
2745
+ },
2746
+ {
2747
+ "kind": "Content",
2748
+ "text": "): "
2749
+ },
2750
+ {
2751
+ "kind": "Reference",
2752
+ "text": "CompactionProjection",
2753
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionProjection:interface"
2754
+ },
2755
+ {
2756
+ "kind": "Content",
2757
+ "text": " | null"
2758
+ },
2759
+ {
2760
+ "kind": "Content",
2761
+ "text": ";"
2762
+ }
2763
+ ],
2764
+ "isOptional": true,
2765
+ "returnTypeTokenRange": {
2766
+ "startIndex": 3,
2767
+ "endIndex": 5
2768
+ },
2769
+ "releaseTag": "Beta",
2770
+ "overloadIndex": 1,
2771
+ "parameters": [
2772
+ {
2773
+ "parameterName": "options",
2774
+ "parameterTypeTokenRange": {
2775
+ "startIndex": 1,
2776
+ "endIndex": 2
2777
+ },
2778
+ "isOptional": true
2779
+ }
2780
+ ],
2781
+ "name": "getCompactionPlan"
2782
+ },
2696
2783
  {
2697
2784
  "kind": "MethodSignature",
2698
2785
  "canonicalReference": "@genesislcap/ai-assistant!AiDriver#getExternalDiagnostics:member(1)",
@@ -3301,6 +3388,52 @@
3301
3388
  }
3302
3389
  ],
3303
3390
  "name": "sendMessage"
3391
+ },
3392
+ {
3393
+ "kind": "MethodSignature",
3394
+ "canonicalReference": "@genesislcap/ai-assistant!AiDriver#setContextGuard:member(1)",
3395
+ "docComment": "/**\n * Set the mid-loop context guard (GENC-1567). `undefined` disables it.\n *\n * Carries a margin rather than an absolute threshold: the window belongs to whichever provider the next call resolves to, which the driver learns during the call and the host cannot know until afterwards. The host owns the policy; the driver applies it against the model actually being addressed. Optional — only drivers that own a tool loop implement it.\n */\n",
3396
+ "excerptTokens": [
3397
+ {
3398
+ "kind": "Content",
3399
+ "text": "setContextGuard?(policy?: "
3400
+ },
3401
+ {
3402
+ "kind": "Reference",
3403
+ "text": "ContextGuardPolicy",
3404
+ "canonicalReference": "@genesislcap/ai-assistant!ContextGuardPolicy:interface"
3405
+ },
3406
+ {
3407
+ "kind": "Content",
3408
+ "text": "): "
3409
+ },
3410
+ {
3411
+ "kind": "Content",
3412
+ "text": "void"
3413
+ },
3414
+ {
3415
+ "kind": "Content",
3416
+ "text": ";"
3417
+ }
3418
+ ],
3419
+ "isOptional": true,
3420
+ "returnTypeTokenRange": {
3421
+ "startIndex": 3,
3422
+ "endIndex": 4
3423
+ },
3424
+ "releaseTag": "Beta",
3425
+ "overloadIndex": 1,
3426
+ "parameters": [
3427
+ {
3428
+ "parameterName": "policy",
3429
+ "parameterTypeTokenRange": {
3430
+ "startIndex": 1,
3431
+ "endIndex": 2
3432
+ },
3433
+ "isOptional": true
3434
+ }
3435
+ ],
3436
+ "name": "setContextGuard"
3304
3437
  }
3305
3438
  ],
3306
3439
  "extendsTokenRanges": [
@@ -4250,7 +4383,7 @@
4250
4383
  {
4251
4384
  "kind": "Class",
4252
4385
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver:class",
4253
- "docComment": "/**\n * Plain TS class that drives a multi-turn chat conversation, including the tool-call loop. Owned by `FoundationAiAssistant` — created in `connectedCallback`, torn down in `disconnectedCallback`.\n *\n * Dispatches `'history-updated'` events on itself so the owning element can observe changes.\n *\n * @fires\n *\n * history-updated - Fired whenever the in-memory chat history changes (append, tool loop, interaction resolution, post-resolve external cost) with the full history snapshot. detail: `ReadonlyArray<ChatMessage>`\n *\n * @beta\n */\n",
4386
+ "docComment": "",
4254
4387
  "excerptTokens": [
4255
4388
  {
4256
4389
  "kind": "Content",
@@ -4276,7 +4409,7 @@
4276
4409
  }
4277
4410
  ],
4278
4411
  "fileUrlPath": "src/components/chat-driver/chat-driver.ts",
4279
- "releaseTag": "Beta",
4412
+ "releaseTag": "Public",
4280
4413
  "isAbstract": false,
4281
4414
  "name": "ChatDriver",
4282
4415
  "preserveMemberOrder": false,
@@ -4309,7 +4442,7 @@
4309
4442
  "text": ");"
4310
4443
  }
4311
4444
  ],
4312
- "releaseTag": "Beta",
4445
+ "releaseTag": "Public",
4313
4446
  "isProtected": false,
4314
4447
  "overloadIndex": 1,
4315
4448
  "parameters": [
@@ -4363,7 +4496,7 @@
4363
4496
  "startIndex": 3,
4364
4497
  "endIndex": 4
4365
4498
  },
4366
- "releaseTag": "Beta",
4499
+ "releaseTag": "Public",
4367
4500
  "isProtected": false,
4368
4501
  "overloadIndex": 1,
4369
4502
  "parameters": [
@@ -4403,7 +4536,7 @@
4403
4536
  "startIndex": 1,
4404
4537
  "endIndex": 2
4405
4538
  },
4406
- "releaseTag": "Beta",
4539
+ "releaseTag": "Public",
4407
4540
  "isProtected": false,
4408
4541
  "overloadIndex": 1,
4409
4542
  "parameters": [],
@@ -4418,7 +4551,16 @@
4418
4551
  "excerptTokens": [
4419
4552
  {
4420
4553
  "kind": "Content",
4421
- "text": "canCompact(): "
4554
+ "text": "canCompact(options?: "
4555
+ },
4556
+ {
4557
+ "kind": "Reference",
4558
+ "text": "CompactionPlanOptions",
4559
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
4560
+ },
4561
+ {
4562
+ "kind": "Content",
4563
+ "text": "): "
4422
4564
  },
4423
4565
  {
4424
4566
  "kind": "Content",
@@ -4431,13 +4573,22 @@
4431
4573
  ],
4432
4574
  "isStatic": false,
4433
4575
  "returnTypeTokenRange": {
4434
- "startIndex": 1,
4435
- "endIndex": 2
4576
+ "startIndex": 3,
4577
+ "endIndex": 4
4436
4578
  },
4437
- "releaseTag": "Beta",
4579
+ "releaseTag": "Public",
4438
4580
  "isProtected": false,
4439
4581
  "overloadIndex": 1,
4440
- "parameters": [],
4582
+ "parameters": [
4583
+ {
4584
+ "parameterName": "options",
4585
+ "parameterTypeTokenRange": {
4586
+ "startIndex": 1,
4587
+ "endIndex": 2
4588
+ },
4589
+ "isOptional": true
4590
+ }
4591
+ ],
4441
4592
  "isOptional": false,
4442
4593
  "isAbstract": false,
4443
4594
  "name": "canCompact"
@@ -4449,7 +4600,16 @@
4449
4600
  "excerptTokens": [
4450
4601
  {
4451
4602
  "kind": "Content",
4452
- "text": "compact(): "
4603
+ "text": "compact(options?: "
4604
+ },
4605
+ {
4606
+ "kind": "Reference",
4607
+ "text": "CompactionPlanOptions",
4608
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
4609
+ },
4610
+ {
4611
+ "kind": "Content",
4612
+ "text": "): "
4453
4613
  },
4454
4614
  {
4455
4615
  "kind": "Reference",
@@ -4476,13 +4636,22 @@
4476
4636
  ],
4477
4637
  "isStatic": false,
4478
4638
  "returnTypeTokenRange": {
4479
- "startIndex": 1,
4480
- "endIndex": 5
4639
+ "startIndex": 3,
4640
+ "endIndex": 7
4481
4641
  },
4482
- "releaseTag": "Beta",
4642
+ "releaseTag": "Public",
4483
4643
  "isProtected": false,
4484
4644
  "overloadIndex": 1,
4485
- "parameters": [],
4645
+ "parameters": [
4646
+ {
4647
+ "parameterName": "options",
4648
+ "parameterTypeTokenRange": {
4649
+ "startIndex": 1,
4650
+ "endIndex": 2
4651
+ },
4652
+ "isOptional": true
4653
+ }
4654
+ ],
4486
4655
  "isOptional": false,
4487
4656
  "isAbstract": false,
4488
4657
  "name": "compact"
@@ -4537,7 +4706,7 @@
4537
4706
  "startIndex": 4,
4538
4707
  "endIndex": 8
4539
4708
  },
4540
- "releaseTag": "Beta",
4709
+ "releaseTag": "Public",
4541
4710
  "isProtected": false,
4542
4711
  "overloadIndex": 1,
4543
4712
  "parameters": [
@@ -4577,7 +4746,7 @@
4577
4746
  "startIndex": 1,
4578
4747
  "endIndex": 2
4579
4748
  },
4580
- "releaseTag": "Beta",
4749
+ "releaseTag": "Public",
4581
4750
  "isProtected": false,
4582
4751
  "overloadIndex": 1,
4583
4752
  "parameters": [],
@@ -4608,7 +4777,7 @@
4608
4777
  "startIndex": 1,
4609
4778
  "endIndex": 2
4610
4779
  },
4611
- "releaseTag": "Beta",
4780
+ "releaseTag": "Public",
4612
4781
  "isProtected": false,
4613
4782
  "overloadIndex": 1,
4614
4783
  "parameters": [],
@@ -4639,7 +4808,7 @@
4639
4808
  "startIndex": 1,
4640
4809
  "endIndex": 2
4641
4810
  },
4642
- "releaseTag": "Beta",
4811
+ "releaseTag": "Public",
4643
4812
  "isProtected": false,
4644
4813
  "overloadIndex": 1,
4645
4814
  "parameters": [],
@@ -4670,7 +4839,7 @@
4670
4839
  "startIndex": 1,
4671
4840
  "endIndex": 2
4672
4841
  },
4673
- "releaseTag": "Beta",
4842
+ "releaseTag": "Public",
4674
4843
  "isProtected": false,
4675
4844
  "overloadIndex": 1,
4676
4845
  "parameters": [],
@@ -4678,6 +4847,60 @@
4678
4847
  "isAbstract": false,
4679
4848
  "name": "getAgentReleaseRequested"
4680
4849
  },
4850
+ {
4851
+ "kind": "Method",
4852
+ "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#getCompactionPlan:member(1)",
4853
+ "docComment": "/**\n * What compacting right now would cost and reclaim, without running the summarizer (GENC-1567) — or `null` when there is no safe cut, or the projected reclaim is not worth the call.\n *\n * The single source of truth for every compaction affordance: the menu's enabled state, its tooltip, the context gate's banner copy, and the action itself all read this, so none of them can promise a reclaim the action does not deliver. Optional — only history-owning drivers implement it.\n */\n",
4854
+ "excerptTokens": [
4855
+ {
4856
+ "kind": "Content",
4857
+ "text": "getCompactionPlan(options?: "
4858
+ },
4859
+ {
4860
+ "kind": "Reference",
4861
+ "text": "CompactionPlanOptions",
4862
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
4863
+ },
4864
+ {
4865
+ "kind": "Content",
4866
+ "text": "): "
4867
+ },
4868
+ {
4869
+ "kind": "Reference",
4870
+ "text": "CompactionProjection",
4871
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionProjection:interface"
4872
+ },
4873
+ {
4874
+ "kind": "Content",
4875
+ "text": " | null"
4876
+ },
4877
+ {
4878
+ "kind": "Content",
4879
+ "text": ";"
4880
+ }
4881
+ ],
4882
+ "isStatic": false,
4883
+ "returnTypeTokenRange": {
4884
+ "startIndex": 3,
4885
+ "endIndex": 5
4886
+ },
4887
+ "releaseTag": "Public",
4888
+ "isProtected": false,
4889
+ "overloadIndex": 1,
4890
+ "parameters": [
4891
+ {
4892
+ "parameterName": "options",
4893
+ "parameterTypeTokenRange": {
4894
+ "startIndex": 1,
4895
+ "endIndex": 2
4896
+ },
4897
+ "isOptional": true
4898
+ }
4899
+ ],
4900
+ "isOptional": false,
4901
+ "isAbstract": false,
4902
+ "name": "getCompactionPlan"
4903
+ },
4681
4904
  {
4682
4905
  "kind": "Method",
4683
4906
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#getExternalDiagnostics:member(1)",
@@ -4715,7 +4938,7 @@
4715
4938
  "startIndex": 1,
4716
4939
  "endIndex": 5
4717
4940
  },
4718
- "releaseTag": "Beta",
4941
+ "releaseTag": "Public",
4719
4942
  "isProtected": false,
4720
4943
  "overloadIndex": 1,
4721
4944
  "parameters": [],
@@ -4760,7 +4983,7 @@
4760
4983
  "startIndex": 1,
4761
4984
  "endIndex": 5
4762
4985
  },
4763
- "releaseTag": "Beta",
4986
+ "releaseTag": "Public",
4764
4987
  "isProtected": false,
4765
4988
  "overloadIndex": 1,
4766
4989
  "parameters": [],
@@ -4804,7 +5027,7 @@
4804
5027
  "startIndex": 3,
4805
5028
  "endIndex": 5
4806
5029
  },
4807
- "releaseTag": "Beta",
5030
+ "releaseTag": "Public",
4808
5031
  "isProtected": false,
4809
5032
  "overloadIndex": 1,
4810
5033
  "parameters": [
@@ -4853,7 +5076,7 @@
4853
5076
  "startIndex": 1,
4854
5077
  "endIndex": 4
4855
5078
  },
4856
- "releaseTag": "Beta",
5079
+ "releaseTag": "Public",
4857
5080
  "isProtected": false,
4858
5081
  "overloadIndex": 1,
4859
5082
  "parameters": [],
@@ -4884,7 +5107,7 @@
4884
5107
  "startIndex": 1,
4885
5108
  "endIndex": 2
4886
5109
  },
4887
- "releaseTag": "Beta",
5110
+ "releaseTag": "Public",
4888
5111
  "isProtected": false,
4889
5112
  "overloadIndex": 1,
4890
5113
  "parameters": [],
@@ -4942,7 +5165,7 @@
4942
5165
  "startIndex": 1,
4943
5166
  "endIndex": 8
4944
5167
  },
4945
- "releaseTag": "Beta",
5168
+ "releaseTag": "Public",
4946
5169
  "isProtected": false,
4947
5170
  "overloadIndex": 1,
4948
5171
  "parameters": [],
@@ -5020,7 +5243,7 @@
5020
5243
  "startIndex": 11,
5021
5244
  "endIndex": 13
5022
5245
  },
5023
- "releaseTag": "Beta",
5246
+ "releaseTag": "Public",
5024
5247
  "isProtected": false,
5025
5248
  "overloadIndex": 1,
5026
5249
  "parameters": [
@@ -5098,7 +5321,7 @@
5098
5321
  "startIndex": 1,
5099
5322
  "endIndex": 5
5100
5323
  },
5101
- "releaseTag": "Beta",
5324
+ "releaseTag": "Public",
5102
5325
  "isProtected": false,
5103
5326
  "overloadIndex": 1,
5104
5327
  "parameters": [],
@@ -5129,7 +5352,7 @@
5129
5352
  "startIndex": 1,
5130
5353
  "endIndex": 2
5131
5354
  },
5132
- "releaseTag": "Beta",
5355
+ "releaseTag": "Public",
5133
5356
  "isProtected": false,
5134
5357
  "overloadIndex": 1,
5135
5358
  "parameters": [],
@@ -5173,7 +5396,7 @@
5173
5396
  "startIndex": 4,
5174
5397
  "endIndex": 5
5175
5398
  },
5176
- "releaseTag": "Beta",
5399
+ "releaseTag": "Public",
5177
5400
  "isProtected": false,
5178
5401
  "overloadIndex": 1,
5179
5402
  "parameters": [
@@ -5213,7 +5436,7 @@
5213
5436
  "startIndex": 1,
5214
5437
  "endIndex": 2
5215
5438
  },
5216
- "releaseTag": "Beta",
5439
+ "releaseTag": "Public",
5217
5440
  "isProtected": false,
5218
5441
  "overloadIndex": 1,
5219
5442
  "parameters": [],
@@ -5327,7 +5550,7 @@
5327
5550
  "startIndex": 5,
5328
5551
  "endIndex": 6
5329
5552
  },
5330
- "releaseTag": "Beta",
5553
+ "releaseTag": "Public",
5331
5554
  "isProtected": false,
5332
5555
  "overloadIndex": 1,
5333
5556
  "parameters": [
@@ -5418,7 +5641,7 @@
5418
5641
  "startIndex": 7,
5419
5642
  "endIndex": 9
5420
5643
  },
5421
- "releaseTag": "Beta",
5644
+ "releaseTag": "Public",
5422
5645
  "isProtected": false,
5423
5646
  "overloadIndex": 1,
5424
5647
  "parameters": [
@@ -5490,7 +5713,7 @@
5490
5713
  "startIndex": 5,
5491
5714
  "endIndex": 6
5492
5715
  },
5493
- "releaseTag": "Beta",
5716
+ "releaseTag": "Public",
5494
5717
  "isProtected": false,
5495
5718
  "overloadIndex": 1,
5496
5719
  "parameters": [
@@ -5561,7 +5784,64 @@
5561
5784
  },
5562
5785
  {
5563
5786
  "kind": "Content",
5564
- "text": ">"
5787
+ "text": ">"
5788
+ },
5789
+ {
5790
+ "kind": "Content",
5791
+ "text": ";"
5792
+ }
5793
+ ],
5794
+ "isStatic": false,
5795
+ "returnTypeTokenRange": {
5796
+ "startIndex": 6,
5797
+ "endIndex": 10
5798
+ },
5799
+ "releaseTag": "Public",
5800
+ "isProtected": false,
5801
+ "overloadIndex": 1,
5802
+ "parameters": [
5803
+ {
5804
+ "parameterName": "userInput",
5805
+ "parameterTypeTokenRange": {
5806
+ "startIndex": 1,
5807
+ "endIndex": 2
5808
+ },
5809
+ "isOptional": false
5810
+ },
5811
+ {
5812
+ "parameterName": "attachments",
5813
+ "parameterTypeTokenRange": {
5814
+ "startIndex": 3,
5815
+ "endIndex": 5
5816
+ },
5817
+ "isOptional": true
5818
+ }
5819
+ ],
5820
+ "isOptional": false,
5821
+ "isAbstract": false,
5822
+ "name": "sendMessage"
5823
+ },
5824
+ {
5825
+ "kind": "Method",
5826
+ "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#setContextGuard:member(1)",
5827
+ "docComment": "/**\n * Set the mid-loop context guard. Its margin is deliberately far smaller than the reserve that blocks NEW turns: that reserve exists so an accepted turn can spend it, and a guard set at the same line would kill every turn that used the headroom it was given.\n */\n",
5828
+ "excerptTokens": [
5829
+ {
5830
+ "kind": "Content",
5831
+ "text": "setContextGuard(policy?: "
5832
+ },
5833
+ {
5834
+ "kind": "Reference",
5835
+ "text": "ContextGuardPolicy",
5836
+ "canonicalReference": "@genesislcap/ai-assistant!ContextGuardPolicy:interface"
5837
+ },
5838
+ {
5839
+ "kind": "Content",
5840
+ "text": "): "
5841
+ },
5842
+ {
5843
+ "kind": "Content",
5844
+ "text": "void"
5565
5845
  },
5566
5846
  {
5567
5847
  "kind": "Content",
@@ -5570,33 +5850,25 @@
5570
5850
  ],
5571
5851
  "isStatic": false,
5572
5852
  "returnTypeTokenRange": {
5573
- "startIndex": 6,
5574
- "endIndex": 10
5853
+ "startIndex": 3,
5854
+ "endIndex": 4
5575
5855
  },
5576
- "releaseTag": "Beta",
5856
+ "releaseTag": "Public",
5577
5857
  "isProtected": false,
5578
5858
  "overloadIndex": 1,
5579
5859
  "parameters": [
5580
5860
  {
5581
- "parameterName": "userInput",
5861
+ "parameterName": "policy",
5582
5862
  "parameterTypeTokenRange": {
5583
5863
  "startIndex": 1,
5584
5864
  "endIndex": 2
5585
5865
  },
5586
- "isOptional": false
5587
- },
5588
- {
5589
- "parameterName": "attachments",
5590
- "parameterTypeTokenRange": {
5591
- "startIndex": 3,
5592
- "endIndex": 5
5593
- },
5594
5866
  "isOptional": true
5595
5867
  }
5596
5868
  ],
5597
5869
  "isOptional": false,
5598
5870
  "isAbstract": false,
5599
- "name": "sendMessage"
5871
+ "name": "setContextGuard"
5600
5872
  },
5601
5873
  {
5602
5874
  "kind": "Method",
@@ -5647,7 +5919,7 @@
5647
5919
  "startIndex": 7,
5648
5920
  "endIndex": 8
5649
5921
  },
5650
- "releaseTag": "Beta",
5922
+ "releaseTag": "Public",
5651
5923
  "isProtected": false,
5652
5924
  "overloadIndex": 1,
5653
5925
  "parameters": [
@@ -5667,7 +5939,7 @@
5667
5939
  {
5668
5940
  "kind": "Method",
5669
5941
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#setProviderHistoryTransform:member(1)",
5670
- "docComment": "/**\n * Optional transform applied to conversation history immediately before each LLM request. Cleared when `undefined`. Does not alter stored history.\n */\n",
5942
+ "docComment": "",
5671
5943
  "excerptTokens": [
5672
5944
  {
5673
5945
  "kind": "Content",
@@ -5713,7 +5985,7 @@
5713
5985
  "startIndex": 7,
5714
5986
  "endIndex": 8
5715
5987
  },
5716
- "releaseTag": "Beta",
5988
+ "releaseTag": "Public",
5717
5989
  "isProtected": false,
5718
5990
  "overloadIndex": 1,
5719
5991
  "parameters": [
@@ -6214,6 +6486,32 @@
6214
6486
  "endIndex": 7
6215
6487
  }
6216
6488
  },
6489
+ {
6490
+ "kind": "TypeAlias",
6491
+ "canonicalReference": "@genesislcap/ai-assistant!ContextReserveInput:type",
6492
+ "docComment": "/**\n * Context headroom an agent reserves for itself, in tokens.\n *\n * A plain number, unlike the value-or-resolver shape `provider` / `temperature` / `resumable` use. The resolver form was drafted for it and removed before release: the gate is recomputed from a synchronous getter with no turn context to resolve against, so no path could ever have invoked one. Accepting a type-correct option that is guaranteed to do nothing is worse than not offering it — a warning after the fact still leaves the configuration inert.\n *\n * It can widen to a resolver later without breaking a caller, since every existing `number` stays valid.\n *\n * @beta\n */\n",
6493
+ "excerptTokens": [
6494
+ {
6495
+ "kind": "Content",
6496
+ "text": "export type ContextReserveInput = "
6497
+ },
6498
+ {
6499
+ "kind": "Content",
6500
+ "text": "number"
6501
+ },
6502
+ {
6503
+ "kind": "Content",
6504
+ "text": ";"
6505
+ }
6506
+ ],
6507
+ "fileUrlPath": "src/config/config.ts",
6508
+ "releaseTag": "Beta",
6509
+ "name": "ContextReserveInput",
6510
+ "typeTokenRange": {
6511
+ "startIndex": 1,
6512
+ "endIndex": 2
6513
+ }
6514
+ },
6217
6515
  {
6218
6516
  "kind": "Interface",
6219
6517
  "canonicalReference": "@genesislcap/ai-assistant!CostSessionModelEntry:interface",
@@ -8149,7 +8447,7 @@
8149
8447
  {
8150
8448
  "kind": "Property",
8151
8449
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#compactable:member",
8152
- "docComment": "/**\n * Whether the menu's \"Compact\" action would do anything (GENC-1351 §5.7). Delegates to `driver.canCompact()` so the gate uses the exact same history `compact()` acts on — one source of truth. Also reads `messages`, purely to stay reactive as the conversation grows: the driver's history isn't a tracked observable, so the button keys its re-evaluation off the Redux mirror.\n */\n",
8450
+ "docComment": "/**\n * Whether the menu's \"Compact\" action would do anything (GENC-1351 §5.7, GENC-1567). Delegates to the driver's plan so the gate uses the exact same history `compact()` acts on, judged against the same budget — one source of truth for both whether a cut is legal and whether it reclaims enough.\n */\n",
8153
8451
  "excerptTokens": [
8154
8452
  {
8155
8453
  "kind": "Content",
@@ -8206,6 +8504,41 @@
8206
8504
  "isProtected": false,
8207
8505
  "isAbstract": false
8208
8506
  },
8507
+ {
8508
+ "kind": "Property",
8509
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#compactionPlan:member",
8510
+ "docComment": "/**\n * What compacting right now would reclaim, or `null` when it would not be worth it (GENC-1567). Sized against {@link FoundationAiAssistant.contextBudget}, so the plan aims at this model's window rather than a fixed default.\n *\n * Reads `messages` to stay reactive as the conversation grows: the driver's history is not a tracked observable, so every consumer of this keys its re-evaluation off the Redux mirror.\n */\n",
8511
+ "excerptTokens": [
8512
+ {
8513
+ "kind": "Content",
8514
+ "text": "get compactionPlan(): "
8515
+ },
8516
+ {
8517
+ "kind": "Reference",
8518
+ "text": "CompactionProjection",
8519
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionProjection:interface"
8520
+ },
8521
+ {
8522
+ "kind": "Content",
8523
+ "text": " | null"
8524
+ },
8525
+ {
8526
+ "kind": "Content",
8527
+ "text": ";"
8528
+ }
8529
+ ],
8530
+ "isReadonly": true,
8531
+ "isOptional": false,
8532
+ "releaseTag": "Beta",
8533
+ "name": "compactionPlan",
8534
+ "propertyTypeTokenRange": {
8535
+ "startIndex": 1,
8536
+ "endIndex": 3
8537
+ },
8538
+ "isStatic": false,
8539
+ "isProtected": false,
8540
+ "isAbstract": false
8541
+ },
8209
8542
  {
8210
8543
  "kind": "Method",
8211
8544
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#compactSession:member(1)",
@@ -8423,6 +8756,67 @@
8423
8756
  "isAbstract": false,
8424
8757
  "name": "connectedCallback"
8425
8758
  },
8759
+ {
8760
+ "kind": "Property",
8761
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#contextBudget:member",
8762
+ "docComment": "/**\n * Context-headroom thresholds for the active model (GENC-1567) — the warning and block lines, plus the tail budget compaction aims at.\n *\n * The agent's own `contextReserve` is deliberately NOT folded in here. This is the AMBIENT budget, which protects any turn from any agent; a per-agent reserve is an additional, larger requirement checked when that agent takes ownership of a flow, where there is a turn context to resolve its function form against.\n *\n * Overhead is read off `messages` (the Redux mirror) rather than the driver's own history, which the compaction plan uses. That is safe rather than sloppy: `estimateSystemOverhead` only looks at messages BEFORE the first usage-bearing one, and the two lists agree completely that early — the drift between mirror and driver history is only ever at the tail.\n */\n",
8763
+ "excerptTokens": [
8764
+ {
8765
+ "kind": "Content",
8766
+ "text": "get contextBudget(): "
8767
+ },
8768
+ {
8769
+ "kind": "Reference",
8770
+ "text": "ResolvedContextBudget",
8771
+ "canonicalReference": "@genesislcap/ai-assistant!~ResolvedContextBudget:interface"
8772
+ },
8773
+ {
8774
+ "kind": "Content",
8775
+ "text": ";"
8776
+ }
8777
+ ],
8778
+ "isReadonly": true,
8779
+ "isOptional": false,
8780
+ "releaseTag": "Beta",
8781
+ "name": "contextBudget",
8782
+ "propertyTypeTokenRange": {
8783
+ "startIndex": 1,
8784
+ "endIndex": 2
8785
+ },
8786
+ "isStatic": false,
8787
+ "isProtected": false,
8788
+ "isAbstract": false
8789
+ },
8790
+ {
8791
+ "kind": "Property",
8792
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#contextGate:member",
8793
+ "docComment": "/**\n * How close this conversation is to the model's context window (GENC-1567).\n *\n * **Derived, never latched** — the opposite of {@link FoundationAiAssistant.blocked}. A budget wall stays set because nothing the user does fixes it; this clears itself the moment the conversation shrinks, which is precisely what the user is being asked to do. The two must not be conflated: `blocked` is also deliberately preserved across `resetSession`, and a context gate obviously must not survive starting a new chat.\n *\n * **A flow in progress is never blocked, only warned.** Machine state lives outside the transcript, so a stateful flow is not desynced by compaction — but the summary can still drop detail the flow's own prompt leans on, and blocking mid-journey would strand the user between a flow they cannot finish and a compaction that is a poor idea right there. Letting the flow complete and gating on the way out is the lesser harm; the headroom reserve exists so this is rare rather than routine.\n */\n",
8794
+ "excerptTokens": [
8795
+ {
8796
+ "kind": "Content",
8797
+ "text": "get contextGate(): "
8798
+ },
8799
+ {
8800
+ "kind": "Content",
8801
+ "text": "'ok' | 'warn' | 'blocked'"
8802
+ },
8803
+ {
8804
+ "kind": "Content",
8805
+ "text": ";"
8806
+ }
8807
+ ],
8808
+ "isReadonly": true,
8809
+ "isOptional": false,
8810
+ "releaseTag": "Beta",
8811
+ "name": "contextGate",
8812
+ "propertyTypeTokenRange": {
8813
+ "startIndex": 1,
8814
+ "endIndex": 2
8815
+ },
8816
+ "isStatic": false,
8817
+ "isProtected": false,
8818
+ "isAbstract": false
8819
+ },
8426
8820
  {
8427
8821
  "kind": "Property",
8428
8822
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#contextLimit:member",
@@ -14772,11 +15166,20 @@
14772
15166
  {
14773
15167
  "kind": "Method",
14774
15168
  "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#canCompact:member(1)",
14775
- "docComment": "/**\n * Whether `compact()` would compact something right now a summarizable run of older turns exists behind a clean boundary. The UI gates its \"Compact\" affordance on this, so the button reflects the exact history `compact()` acts on (GENC-1351). Optional — only history-owning drivers implement it.\n */\n",
15169
+ "docComment": "/**\n * Whether `compact()` would compact something right now. Convenience over {@link AiDriver.getCompactionPlan} prefer the plan where the caller needs to say how much would be reclaimed. Optional — only history-owning drivers implement it.\n */\n",
14776
15170
  "excerptTokens": [
14777
15171
  {
14778
15172
  "kind": "Content",
14779
- "text": "canCompact(): "
15173
+ "text": "canCompact(options?: "
15174
+ },
15175
+ {
15176
+ "kind": "Reference",
15177
+ "text": "CompactionPlanOptions",
15178
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
15179
+ },
15180
+ {
15181
+ "kind": "Content",
15182
+ "text": "): "
14780
15183
  },
14781
15184
  {
14782
15185
  "kind": "Content",
@@ -14789,13 +15192,22 @@
14789
15192
  ],
14790
15193
  "isStatic": false,
14791
15194
  "returnTypeTokenRange": {
14792
- "startIndex": 1,
14793
- "endIndex": 2
15195
+ "startIndex": 3,
15196
+ "endIndex": 4
14794
15197
  },
14795
15198
  "releaseTag": "Beta",
14796
15199
  "isProtected": false,
14797
15200
  "overloadIndex": 1,
14798
- "parameters": [],
15201
+ "parameters": [
15202
+ {
15203
+ "parameterName": "options",
15204
+ "parameterTypeTokenRange": {
15205
+ "startIndex": 1,
15206
+ "endIndex": 2
15207
+ },
15208
+ "isOptional": true
15209
+ }
15210
+ ],
14799
15211
  "isOptional": false,
14800
15212
  "isAbstract": false,
14801
15213
  "name": "canCompact"
@@ -14803,11 +15215,20 @@
14803
15215
  {
14804
15216
  "kind": "Method",
14805
15217
  "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#compact:member(1)",
14806
- "docComment": "/**\n * Destructively compact older conversation turns into a single `compacted-summary` message (GENC-1351 §5.7), summarizing them via the default provider's one-shot `prompt()`. Atomic: history changes only on success. Resolves to the created summary message, or `null` when there is nothing worth compacting or the provider cannot summarize. Optional — only drivers that own history implement it.\n */\n",
15218
+ "docComment": "/**\n * Destructively compact older conversation turns into a single `compacted-summary` message (GENC-1351 §5.7), summarizing them via the default provider's one-shot `prompt()`. Atomic: history changes only on success. Resolves to the created summary message, or `null` when there is nothing worth compacting or the provider cannot summarize. Optional — only drivers that own history implement it.\n *\n * Pass the same `options` used for {@link AiDriver.getCompactionPlan} so the action does exactly what the affordance advertised.\n */\n",
14807
15219
  "excerptTokens": [
14808
15220
  {
14809
15221
  "kind": "Content",
14810
- "text": "compact(): "
15222
+ "text": "compact(options?: "
15223
+ },
15224
+ {
15225
+ "kind": "Reference",
15226
+ "text": "CompactionPlanOptions",
15227
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
15228
+ },
15229
+ {
15230
+ "kind": "Content",
15231
+ "text": "): "
14811
15232
  },
14812
15233
  {
14813
15234
  "kind": "Reference",
@@ -14834,13 +15255,22 @@
14834
15255
  ],
14835
15256
  "isStatic": false,
14836
15257
  "returnTypeTokenRange": {
14837
- "startIndex": 1,
14838
- "endIndex": 5
15258
+ "startIndex": 3,
15259
+ "endIndex": 7
14839
15260
  },
14840
15261
  "releaseTag": "Beta",
14841
15262
  "isProtected": false,
14842
15263
  "overloadIndex": 1,
14843
- "parameters": [],
15264
+ "parameters": [
15265
+ {
15266
+ "parameterName": "options",
15267
+ "parameterTypeTokenRange": {
15268
+ "startIndex": 1,
15269
+ "endIndex": 2
15270
+ },
15271
+ "isOptional": true
15272
+ }
15273
+ ],
14844
15274
  "isOptional": false,
14845
15275
  "isAbstract": false,
14846
15276
  "name": "compact"
@@ -15015,6 +15445,60 @@
15015
15445
  "isAbstract": false,
15016
15446
  "name": "getActiveProviderName"
15017
15447
  },
15448
+ {
15449
+ "kind": "Method",
15450
+ "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#getCompactionPlan:member(1)",
15451
+ "docComment": "/**\n * What compacting right now would cost and reclaim, without running the summarizer (GENC-1567) — or `null` when there is no safe cut, or the projected reclaim is not worth the call.\n *\n * The single source of truth for every compaction affordance: the menu's enabled state, its tooltip, the context gate's banner copy, and the action itself all read this, so none of them can promise a reclaim the action does not deliver. Optional — only history-owning drivers implement it.\n */\n",
15452
+ "excerptTokens": [
15453
+ {
15454
+ "kind": "Content",
15455
+ "text": "getCompactionPlan(options?: "
15456
+ },
15457
+ {
15458
+ "kind": "Reference",
15459
+ "text": "CompactionPlanOptions",
15460
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionPlanOptions:interface"
15461
+ },
15462
+ {
15463
+ "kind": "Content",
15464
+ "text": "): "
15465
+ },
15466
+ {
15467
+ "kind": "Reference",
15468
+ "text": "CompactionProjection",
15469
+ "canonicalReference": "@genesislcap/ai-assistant!~CompactionProjection:interface"
15470
+ },
15471
+ {
15472
+ "kind": "Content",
15473
+ "text": " | null"
15474
+ },
15475
+ {
15476
+ "kind": "Content",
15477
+ "text": ";"
15478
+ }
15479
+ ],
15480
+ "isStatic": false,
15481
+ "returnTypeTokenRange": {
15482
+ "startIndex": 3,
15483
+ "endIndex": 5
15484
+ },
15485
+ "releaseTag": "Beta",
15486
+ "isProtected": false,
15487
+ "overloadIndex": 1,
15488
+ "parameters": [
15489
+ {
15490
+ "parameterName": "options",
15491
+ "parameterTypeTokenRange": {
15492
+ "startIndex": 1,
15493
+ "endIndex": 2
15494
+ },
15495
+ "isOptional": true
15496
+ }
15497
+ ],
15498
+ "isOptional": false,
15499
+ "isAbstract": false,
15500
+ "name": "getCompactionPlan"
15501
+ },
15018
15502
  {
15019
15503
  "kind": "Method",
15020
15504
  "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#getExternalDiagnostics:member(1)",
@@ -15657,6 +16141,55 @@
15657
16141
  "isAbstract": false,
15658
16142
  "name": "sendMessage"
15659
16143
  },
16144
+ {
16145
+ "kind": "Method",
16146
+ "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#setContextGuard:member(1)",
16147
+ "docComment": "/**\n * Set the mid-loop context guard (GENC-1567). `undefined` disables it.\n *\n * Carries a margin rather than an absolute threshold: the window belongs to whichever provider the next call resolves to, which the driver learns during the call and the host cannot know until afterwards. The host owns the policy; the driver applies it against the model actually being addressed. Optional — only drivers that own a tool loop implement it.\n */\n",
16148
+ "excerptTokens": [
16149
+ {
16150
+ "kind": "Content",
16151
+ "text": "setContextGuard(policy?: "
16152
+ },
16153
+ {
16154
+ "kind": "Reference",
16155
+ "text": "ContextGuardPolicy",
16156
+ "canonicalReference": "@genesislcap/ai-assistant!ContextGuardPolicy:interface"
16157
+ },
16158
+ {
16159
+ "kind": "Content",
16160
+ "text": "): "
16161
+ },
16162
+ {
16163
+ "kind": "Content",
16164
+ "text": "void"
16165
+ },
16166
+ {
16167
+ "kind": "Content",
16168
+ "text": ";"
16169
+ }
16170
+ ],
16171
+ "isStatic": false,
16172
+ "returnTypeTokenRange": {
16173
+ "startIndex": 3,
16174
+ "endIndex": 4
16175
+ },
16176
+ "releaseTag": "Beta",
16177
+ "isProtected": false,
16178
+ "overloadIndex": 1,
16179
+ "parameters": [
16180
+ {
16181
+ "parameterName": "policy",
16182
+ "parameterTypeTokenRange": {
16183
+ "startIndex": 1,
16184
+ "endIndex": 2
16185
+ },
16186
+ "isOptional": true
16187
+ }
16188
+ ],
16189
+ "isOptional": false,
16190
+ "isAbstract": false,
16191
+ "name": "setContextGuard"
16192
+ },
15660
16193
  {
15661
16194
  "kind": "Method",
15662
16195
  "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#setFlowOwner:member(1)",