@genesislcap/ai-assistant 14.432.2 → 14.433.1

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 (68) hide show
  1. package/api-extractor.json +8 -1
  2. package/dist/ai-assistant.api.json +1216 -141
  3. package/dist/ai-assistant.d.ts +216 -15
  4. package/dist/dts/components/agent-picker/agent-picker.constants.d.ts +3 -0
  5. package/dist/dts/components/agent-picker/agent-picker.constants.d.ts.map +1 -0
  6. package/dist/dts/components/agent-picker/agent-picker.d.ts +69 -0
  7. package/dist/dts/components/agent-picker/agent-picker.d.ts.map +1 -0
  8. package/dist/dts/components/agent-picker/agent-picker.styles.d.ts +2 -0
  9. package/dist/dts/components/agent-picker/agent-picker.styles.d.ts.map +1 -0
  10. package/dist/dts/components/agent-picker/agent-picker.template.d.ts +5 -0
  11. package/dist/dts/components/agent-picker/agent-picker.template.d.ts.map +1 -0
  12. package/dist/dts/components/agent-picker/index.d.ts +2 -0
  13. package/dist/dts/components/agent-picker/index.d.ts.map +1 -0
  14. package/dist/dts/components/chat-driver/chat-driver.d.ts +21 -0
  15. package/dist/dts/components/chat-driver/chat-driver.d.ts.map +1 -1
  16. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts +14 -0
  17. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts.map +1 -1
  18. package/dist/dts/config/config.d.ts +22 -12
  19. package/dist/dts/config/config.d.ts.map +1 -1
  20. package/dist/dts/index.d.ts +1 -0
  21. package/dist/dts/index.d.ts.map +1 -1
  22. package/dist/dts/main/main.d.ts +72 -4
  23. package/dist/dts/main/main.d.ts.map +1 -1
  24. package/dist/dts/main/main.styles.d.ts.map +1 -1
  25. package/dist/dts/main/main.template.d.ts.map +1 -1
  26. package/dist/dts/main/main.types.d.ts +1 -0
  27. package/dist/dts/main/main.types.d.ts.map +1 -1
  28. package/dist/dts/state/ai-assistant-slice.d.ts +39 -1
  29. package/dist/dts/state/ai-assistant-slice.d.ts.map +1 -1
  30. package/dist/dts/state/session-store.d.ts +6 -0
  31. package/dist/dts/state/session-store.d.ts.map +1 -1
  32. package/dist/dts/utils/animated-panel-toggle.d.ts +26 -0
  33. package/dist/dts/utils/animated-panel-toggle.d.ts.map +1 -0
  34. package/dist/dts/utils/index.d.ts +1 -0
  35. package/dist/dts/utils/index.d.ts.map +1 -1
  36. package/dist/esm/components/agent-picker/agent-picker.constants.js +2 -0
  37. package/dist/esm/components/agent-picker/agent-picker.js +157 -0
  38. package/dist/esm/components/agent-picker/agent-picker.styles.js +73 -0
  39. package/dist/esm/components/agent-picker/agent-picker.template.js +72 -0
  40. package/dist/esm/components/agent-picker/index.js +1 -0
  41. package/dist/esm/components/chat-driver/chat-driver.js +48 -6
  42. package/dist/esm/components/orchestrating-driver/orchestrating-driver.js +43 -6
  43. package/dist/esm/index.js +1 -0
  44. package/dist/esm/main/main.js +215 -21
  45. package/dist/esm/main/main.styles.js +59 -0
  46. package/dist/esm/main/main.template.js +66 -12
  47. package/dist/esm/state/ai-assistant-slice.js +15 -0
  48. package/dist/esm/utils/animated-panel-toggle.js +62 -0
  49. package/dist/esm/utils/index.js +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/docs/gemini-empty-response.md +110 -0
  52. package/package.json +16 -16
  53. package/src/components/agent-picker/agent-picker.constants.ts +2 -0
  54. package/src/components/agent-picker/agent-picker.styles.ts +74 -0
  55. package/src/components/agent-picker/agent-picker.template.ts +89 -0
  56. package/src/components/agent-picker/agent-picker.ts +148 -0
  57. package/src/components/agent-picker/index.ts +1 -0
  58. package/src/components/chat-driver/chat-driver.ts +65 -8
  59. package/src/components/orchestrating-driver/orchestrating-driver.ts +45 -6
  60. package/src/config/config.ts +28 -11
  61. package/src/index.ts +1 -0
  62. package/src/main/main.styles.ts +59 -0
  63. package/src/main/main.template.ts +79 -13
  64. package/src/main/main.ts +220 -19
  65. package/src/main/main.types.ts +2 -0
  66. package/src/state/ai-assistant-slice.ts +51 -1
  67. package/src/utils/animated-panel-toggle.ts +62 -0
  68. package/src/utils/index.ts +1 -0
@@ -172,6 +172,33 @@
172
172
  "name": "",
173
173
  "preserveMemberOrder": false,
174
174
  "members": [
175
+ {
176
+ "kind": "Variable",
177
+ "canonicalReference": "@genesislcap/ai-assistant!AGENT_PICKER_AUTO_VALUE:var",
178
+ "docComment": "/**\n * Sentinel value used by the segmented control / select to represent \"Auto\".\n */\n",
179
+ "excerptTokens": [
180
+ {
181
+ "kind": "Content",
182
+ "text": "AGENT_PICKER_AUTO_VALUE = "
183
+ },
184
+ {
185
+ "kind": "Content",
186
+ "text": "\"__auto__\""
187
+ }
188
+ ],
189
+ "fileUrlPath": "src/components/agent-picker/agent-picker.constants.ts",
190
+ "initializerTokenRange": {
191
+ "startIndex": 1,
192
+ "endIndex": 2
193
+ },
194
+ "isReadonly": true,
195
+ "releaseTag": "Public",
196
+ "name": "AGENT_PICKER_AUTO_VALUE",
197
+ "variableTypeTokenRange": {
198
+ "startIndex": 0,
199
+ "endIndex": 0
200
+ }
201
+ },
175
202
  {
176
203
  "kind": "TypeAlias",
177
204
  "canonicalReference": "@genesislcap/ai-assistant!AgentConfig:type",
@@ -596,35 +623,496 @@
596
623
  }
597
624
  ],
598
625
  "isReadonly": false,
599
- "isOptional": true,
626
+ "isOptional": true,
627
+ "releaseTag": "Beta",
628
+ "name": "channelName",
629
+ "propertyTypeTokenRange": {
630
+ "startIndex": 1,
631
+ "endIndex": 2
632
+ }
633
+ },
634
+ {
635
+ "kind": "PropertySignature",
636
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityBusConfig#crossTabEvents:member",
637
+ "docComment": "/**\n * Events that should also be forwarded via BroadcastChannel to other tabs.\n */\n",
638
+ "excerptTokens": [
639
+ {
640
+ "kind": "Content",
641
+ "text": "crossTabEvents?: "
642
+ },
643
+ {
644
+ "kind": "Content",
645
+ "text": "(keyof "
646
+ },
647
+ {
648
+ "kind": "Reference",
649
+ "text": "AgenticActivityEvents",
650
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents:interface"
651
+ },
652
+ {
653
+ "kind": "Content",
654
+ "text": ")[]"
655
+ },
656
+ {
657
+ "kind": "Content",
658
+ "text": ";"
659
+ }
660
+ ],
661
+ "isReadonly": false,
662
+ "isOptional": true,
663
+ "releaseTag": "Beta",
664
+ "name": "crossTabEvents",
665
+ "propertyTypeTokenRange": {
666
+ "startIndex": 1,
667
+ "endIndex": 4
668
+ }
669
+ }
670
+ ],
671
+ "extendsTokenRanges": []
672
+ },
673
+ {
674
+ "kind": "Interface",
675
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents:interface",
676
+ "docComment": "/**\n * Event map for the AI activity bus.\n *\n * Declare-merge this interface to add your own event types:\n * ```ts\n * declare module '@genesislcap/ai-assistant' {\n * interface AgenticActivityEvents {\n * 'grid-flash-rows': { gridId: string; rowIds: string[] };\n * }\n * }\n * ```\n *\n * @beta\n */\n",
677
+ "excerptTokens": [
678
+ {
679
+ "kind": "Content",
680
+ "text": "export interface AgenticActivityEvents "
681
+ }
682
+ ],
683
+ "fileUrlPath": "src/channel/ai-activity-channel.ts",
684
+ "releaseTag": "Beta",
685
+ "name": "AgenticActivityEvents",
686
+ "preserveMemberOrder": false,
687
+ "members": [
688
+ {
689
+ "kind": "PropertySignature",
690
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"chat-popin\":member",
691
+ "docComment": "/**\n * Fired when the user clicks the collapse button — moves assistant from layout back to bubble. State lives in the session store, not in this event.\n */\n",
692
+ "excerptTokens": [
693
+ {
694
+ "kind": "Content",
695
+ "text": "'chat-popin': "
696
+ },
697
+ {
698
+ "kind": "Content",
699
+ "text": "undefined"
700
+ },
701
+ {
702
+ "kind": "Content",
703
+ "text": ";"
704
+ }
705
+ ],
706
+ "isReadonly": false,
707
+ "isOptional": false,
708
+ "releaseTag": "Beta",
709
+ "name": "\"chat-popin\"",
710
+ "propertyTypeTokenRange": {
711
+ "startIndex": 1,
712
+ "endIndex": 2
713
+ }
714
+ },
715
+ {
716
+ "kind": "PropertySignature",
717
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"chat-popout\":member",
718
+ "docComment": "/**\n * Fired when the user clicks the expand button — moves assistant from bubble into layout. State lives in the session store, not in this event.\n */\n",
719
+ "excerptTokens": [
720
+ {
721
+ "kind": "Content",
722
+ "text": "'chat-popout': "
723
+ },
724
+ {
725
+ "kind": "Content",
726
+ "text": "undefined"
727
+ },
728
+ {
729
+ "kind": "Content",
730
+ "text": ";"
731
+ }
732
+ ],
733
+ "isReadonly": false,
734
+ "isOptional": false,
735
+ "releaseTag": "Beta",
736
+ "name": "\"chat-popout\"",
737
+ "propertyTypeTokenRange": {
738
+ "startIndex": 1,
739
+ "endIndex": 2
740
+ }
741
+ },
742
+ {
743
+ "kind": "PropertySignature",
744
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"halo-start\":member",
745
+ "docComment": "/**\n * Fired when the assistant begins a tool call. Contains the names of all active tools.\n */\n",
746
+ "excerptTokens": [
747
+ {
748
+ "kind": "Content",
749
+ "text": "'halo-start': "
750
+ },
751
+ {
752
+ "kind": "Content",
753
+ "text": "{\n toolNames: string[];\n }"
754
+ },
755
+ {
756
+ "kind": "Content",
757
+ "text": ";"
758
+ }
759
+ ],
760
+ "isReadonly": false,
761
+ "isOptional": false,
762
+ "releaseTag": "Beta",
763
+ "name": "\"halo-start\"",
764
+ "propertyTypeTokenRange": {
765
+ "startIndex": 1,
766
+ "endIndex": 2
767
+ }
768
+ },
769
+ {
770
+ "kind": "PropertySignature",
771
+ "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"halo-stop\":member",
772
+ "docComment": "/**\n * Fired when the assistant finishes all tool processing and returns to idle.\n */\n",
773
+ "excerptTokens": [
774
+ {
775
+ "kind": "Content",
776
+ "text": "'halo-stop': "
777
+ },
778
+ {
779
+ "kind": "Content",
780
+ "text": "undefined"
781
+ },
782
+ {
783
+ "kind": "Content",
784
+ "text": ";"
785
+ }
786
+ ],
787
+ "isReadonly": false,
788
+ "isOptional": false,
789
+ "releaseTag": "Beta",
790
+ "name": "\"halo-stop\"",
791
+ "propertyTypeTokenRange": {
792
+ "startIndex": 1,
793
+ "endIndex": 2
794
+ }
795
+ }
796
+ ],
797
+ "extendsTokenRanges": []
798
+ },
799
+ {
800
+ "kind": "Class",
801
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker:class",
802
+ "docComment": "/**\n * User-facing agent picker rendered above the chat input.\n *\n * Renders `Auto` plus each top-level agent that has `manualSelection.enabled`. Sub-agents and non-selectable specialists are excluded. Hidden when fewer than two agents are configured or none are manually selectable.\n *\n * @fires agent-pinned - Fired when the user changes selection. `detail` is the agent name (string) or `null` for Auto.\n *\n * @beta\n */\n",
803
+ "excerptTokens": [
804
+ {
805
+ "kind": "Content",
806
+ "text": "export declare class AgentPicker extends "
807
+ },
808
+ {
809
+ "kind": "Reference",
810
+ "text": "GenesisElement",
811
+ "canonicalReference": "@microsoft/fast-element!FASTElement:interface"
812
+ },
813
+ {
814
+ "kind": "Content",
815
+ "text": " "
816
+ }
817
+ ],
818
+ "fileUrlPath": "src/components/agent-picker/agent-picker.ts",
819
+ "releaseTag": "Beta",
820
+ "isAbstract": false,
821
+ "name": "AgentPicker",
822
+ "preserveMemberOrder": false,
823
+ "members": [
824
+ {
825
+ "kind": "Property",
826
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#agents:member",
827
+ "docComment": "/**\n * Top-level agents passed to the assistant.\n */\n",
828
+ "excerptTokens": [
829
+ {
830
+ "kind": "Content",
831
+ "text": "agents: "
832
+ },
833
+ {
834
+ "kind": "Reference",
835
+ "text": "AgentConfig",
836
+ "canonicalReference": "@genesislcap/ai-assistant!AgentConfig:type"
837
+ },
838
+ {
839
+ "kind": "Content",
840
+ "text": "[]"
841
+ },
842
+ {
843
+ "kind": "Content",
844
+ "text": ";"
845
+ }
846
+ ],
847
+ "isReadonly": false,
848
+ "isOptional": false,
849
+ "releaseTag": "Beta",
850
+ "name": "agents",
851
+ "propertyTypeTokenRange": {
852
+ "startIndex": 1,
853
+ "endIndex": 3
854
+ },
855
+ "isStatic": false,
856
+ "isProtected": false,
857
+ "isAbstract": false
858
+ },
859
+ {
860
+ "kind": "Method",
861
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#agentsChanged:member(1)",
862
+ "docComment": "/**\n * Re-measure when agents change — newly added selectable agents may push the segmented row past the container's width.\n */\n",
863
+ "excerptTokens": [
864
+ {
865
+ "kind": "Content",
866
+ "text": "agentsChanged(): "
867
+ },
868
+ {
869
+ "kind": "Content",
870
+ "text": "void"
871
+ },
872
+ {
873
+ "kind": "Content",
874
+ "text": ";"
875
+ }
876
+ ],
877
+ "isStatic": false,
878
+ "returnTypeTokenRange": {
879
+ "startIndex": 1,
880
+ "endIndex": 2
881
+ },
882
+ "releaseTag": "Beta",
883
+ "isProtected": false,
884
+ "overloadIndex": 1,
885
+ "parameters": [],
886
+ "isOptional": false,
887
+ "isAbstract": false,
888
+ "name": "agentsChanged"
889
+ },
890
+ {
891
+ "kind": "Method",
892
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#connectedCallback:member(1)",
893
+ "docComment": "",
894
+ "excerptTokens": [
895
+ {
896
+ "kind": "Content",
897
+ "text": "connectedCallback(): "
898
+ },
899
+ {
900
+ "kind": "Content",
901
+ "text": "void"
902
+ },
903
+ {
904
+ "kind": "Content",
905
+ "text": ";"
906
+ }
907
+ ],
908
+ "isStatic": false,
909
+ "returnTypeTokenRange": {
910
+ "startIndex": 1,
911
+ "endIndex": 2
912
+ },
913
+ "releaseTag": "Beta",
914
+ "isProtected": false,
915
+ "overloadIndex": 1,
916
+ "parameters": [],
917
+ "isOptional": false,
918
+ "isAbstract": false,
919
+ "name": "connectedCallback"
920
+ },
921
+ {
922
+ "kind": "Property",
923
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#currentValue:member",
924
+ "docComment": "/**\n * Current pinned agent name as a value the segmented-control / select can bind to.\n */\n",
925
+ "excerptTokens": [
926
+ {
927
+ "kind": "Content",
928
+ "text": "get currentValue(): "
929
+ },
930
+ {
931
+ "kind": "Content",
932
+ "text": "string"
933
+ },
934
+ {
935
+ "kind": "Content",
936
+ "text": ";"
937
+ }
938
+ ],
939
+ "isReadonly": true,
940
+ "isOptional": false,
941
+ "releaseTag": "Beta",
942
+ "name": "currentValue",
943
+ "propertyTypeTokenRange": {
944
+ "startIndex": 1,
945
+ "endIndex": 2
946
+ },
947
+ "isStatic": false,
948
+ "isProtected": false,
949
+ "isAbstract": false
950
+ },
951
+ {
952
+ "kind": "Property",
953
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#designSystemPrefix:member",
954
+ "docComment": "/**\n * Design-system tag prefix, e.g. `'rapid'` for `rapid-segmented-control`.\n */\n",
955
+ "excerptTokens": [
956
+ {
957
+ "kind": "Content",
958
+ "text": "designSystemPrefix: "
959
+ },
960
+ {
961
+ "kind": "Content",
962
+ "text": "string"
963
+ },
964
+ {
965
+ "kind": "Content",
966
+ "text": ";"
967
+ }
968
+ ],
969
+ "isReadonly": false,
970
+ "isOptional": false,
971
+ "releaseTag": "Beta",
972
+ "name": "designSystemPrefix",
973
+ "propertyTypeTokenRange": {
974
+ "startIndex": 1,
975
+ "endIndex": 2
976
+ },
977
+ "isStatic": false,
978
+ "isProtected": false,
979
+ "isAbstract": false
980
+ },
981
+ {
982
+ "kind": "Method",
983
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#disconnectedCallback:member(1)",
984
+ "docComment": "",
985
+ "excerptTokens": [
986
+ {
987
+ "kind": "Content",
988
+ "text": "disconnectedCallback(): "
989
+ },
990
+ {
991
+ "kind": "Content",
992
+ "text": "void"
993
+ },
994
+ {
995
+ "kind": "Content",
996
+ "text": ";"
997
+ }
998
+ ],
999
+ "isStatic": false,
1000
+ "returnTypeTokenRange": {
1001
+ "startIndex": 1,
1002
+ "endIndex": 2
1003
+ },
1004
+ "releaseTag": "Beta",
1005
+ "isProtected": false,
1006
+ "overloadIndex": 1,
1007
+ "parameters": [],
1008
+ "isOptional": false,
1009
+ "isAbstract": false,
1010
+ "name": "disconnectedCallback"
1011
+ },
1012
+ {
1013
+ "kind": "Property",
1014
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#effectiveMode:member",
1015
+ "docComment": "/**\n * The variant actually rendered: `'select'` if user-configured or if the segmented row currently overflows; `'segmented-control'` otherwise.\n */\n",
1016
+ "excerptTokens": [
1017
+ {
1018
+ "kind": "Content",
1019
+ "text": "get effectiveMode(): "
1020
+ },
1021
+ {
1022
+ "kind": "Content",
1023
+ "text": "'select' | 'segmented-control'"
1024
+ },
1025
+ {
1026
+ "kind": "Content",
1027
+ "text": ";"
1028
+ }
1029
+ ],
1030
+ "isReadonly": true,
1031
+ "isOptional": false,
1032
+ "releaseTag": "Beta",
1033
+ "name": "effectiveMode",
1034
+ "propertyTypeTokenRange": {
1035
+ "startIndex": 1,
1036
+ "endIndex": 2
1037
+ },
1038
+ "isStatic": false,
1039
+ "isProtected": false,
1040
+ "isAbstract": false
1041
+ },
1042
+ {
1043
+ "kind": "Property",
1044
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#mode:member",
1045
+ "docComment": "/**\n * Picker variant, sourced from the assistant's `chatConfig.agentPicker`.\n */\n",
1046
+ "excerptTokens": [
1047
+ {
1048
+ "kind": "Content",
1049
+ "text": "mode: "
1050
+ },
1051
+ {
1052
+ "kind": "Reference",
1053
+ "text": "AgentPickerMode",
1054
+ "canonicalReference": "@genesislcap/foundation-ai!AgentPickerMode:type"
1055
+ },
1056
+ {
1057
+ "kind": "Content",
1058
+ "text": ";"
1059
+ }
1060
+ ],
1061
+ "isReadonly": false,
1062
+ "isOptional": false,
600
1063
  "releaseTag": "Beta",
601
- "name": "channelName",
1064
+ "name": "mode",
602
1065
  "propertyTypeTokenRange": {
603
1066
  "startIndex": 1,
604
1067
  "endIndex": 2
605
- }
1068
+ },
1069
+ "isStatic": false,
1070
+ "isProtected": false,
1071
+ "isAbstract": false
606
1072
  },
607
1073
  {
608
- "kind": "PropertySignature",
609
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityBusConfig#crossTabEvents:member",
610
- "docComment": "/**\n * Events that should also be forwarded via BroadcastChannel to other tabs.\n */\n",
1074
+ "kind": "Method",
1075
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#modeChanged:member(1)",
1076
+ "docComment": "",
611
1077
  "excerptTokens": [
612
1078
  {
613
1079
  "kind": "Content",
614
- "text": "crossTabEvents?: "
1080
+ "text": "modeChanged(): "
615
1081
  },
616
1082
  {
617
1083
  "kind": "Content",
618
- "text": "(keyof "
1084
+ "text": "void"
619
1085
  },
620
1086
  {
621
- "kind": "Reference",
622
- "text": "AgenticActivityEvents",
623
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents:interface"
1087
+ "kind": "Content",
1088
+ "text": ";"
1089
+ }
1090
+ ],
1091
+ "isStatic": false,
1092
+ "returnTypeTokenRange": {
1093
+ "startIndex": 1,
1094
+ "endIndex": 2
1095
+ },
1096
+ "releaseTag": "Beta",
1097
+ "isProtected": false,
1098
+ "overloadIndex": 1,
1099
+ "parameters": [],
1100
+ "isOptional": false,
1101
+ "isAbstract": false,
1102
+ "name": "modeChanged"
1103
+ },
1104
+ {
1105
+ "kind": "Property",
1106
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#pinnedAgentName:member",
1107
+ "docComment": "/**\n * Currently pinned agent name, or `null` for Auto.\n */\n",
1108
+ "excerptTokens": [
1109
+ {
1110
+ "kind": "Content",
1111
+ "text": "pinnedAgentName: "
624
1112
  },
625
1113
  {
626
1114
  "kind": "Content",
627
- "text": ")[]"
1115
+ "text": "string | null"
628
1116
  },
629
1117
  {
630
1118
  "kind": "Content",
@@ -632,142 +1120,184 @@
632
1120
  }
633
1121
  ],
634
1122
  "isReadonly": false,
635
- "isOptional": true,
1123
+ "isOptional": false,
636
1124
  "releaseTag": "Beta",
637
- "name": "crossTabEvents",
1125
+ "name": "pinnedAgentName",
638
1126
  "propertyTypeTokenRange": {
639
1127
  "startIndex": 1,
640
- "endIndex": 4
641
- }
642
- }
643
- ],
644
- "extendsTokenRanges": []
645
- },
646
- {
647
- "kind": "Interface",
648
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents:interface",
649
- "docComment": "/**\n * Event map for the AI activity bus.\n *\n * Declare-merge this interface to add your own event types:\n * ```ts\n * declare module '@genesislcap/ai-assistant' {\n * interface AgenticActivityEvents {\n * 'grid-flash-rows': { gridId: string; rowIds: string[] };\n * }\n * }\n * ```\n *\n * @beta\n */\n",
650
- "excerptTokens": [
651
- {
652
- "kind": "Content",
653
- "text": "export interface AgenticActivityEvents "
654
- }
655
- ],
656
- "fileUrlPath": "src/channel/ai-activity-channel.ts",
657
- "releaseTag": "Beta",
658
- "name": "AgenticActivityEvents",
659
- "preserveMemberOrder": false,
660
- "members": [
1128
+ "endIndex": 2
1129
+ },
1130
+ "isStatic": false,
1131
+ "isProtected": false,
1132
+ "isAbstract": false
1133
+ },
661
1134
  {
662
- "kind": "PropertySignature",
663
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"chat-popin\":member",
664
- "docComment": "/**\n * Fired when the user clicks the collapse button — moves assistant from layout back to bubble. State lives in the session store, not in this event.\n */\n",
1135
+ "kind": "Property",
1136
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#selectableAgents:member",
1137
+ "docComment": "/**\n * Top-level agents that opted in to manual selection.\n */\n",
665
1138
  "excerptTokens": [
666
1139
  {
667
1140
  "kind": "Content",
668
- "text": "'chat-popin': "
1141
+ "text": "get selectableAgents(): "
1142
+ },
1143
+ {
1144
+ "kind": "Reference",
1145
+ "text": "AgentConfig",
1146
+ "canonicalReference": "@genesislcap/ai-assistant!AgentConfig:type"
669
1147
  },
670
1148
  {
671
1149
  "kind": "Content",
672
- "text": "undefined"
1150
+ "text": "[]"
673
1151
  },
674
1152
  {
675
1153
  "kind": "Content",
676
1154
  "text": ";"
677
1155
  }
678
1156
  ],
679
- "isReadonly": false,
1157
+ "isReadonly": true,
680
1158
  "isOptional": false,
681
1159
  "releaseTag": "Beta",
682
- "name": "\"chat-popin\"",
1160
+ "name": "selectableAgents",
683
1161
  "propertyTypeTokenRange": {
684
1162
  "startIndex": 1,
685
- "endIndex": 2
686
- }
1163
+ "endIndex": 3
1164
+ },
1165
+ "isStatic": false,
1166
+ "isProtected": false,
1167
+ "isAbstract": false
687
1168
  },
688
1169
  {
689
- "kind": "PropertySignature",
690
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"chat-popout\":member",
691
- "docComment": "/**\n * Fired when the user clicks the expand button — moves assistant from bubble into layout. State lives in the session store, not in this event.\n */\n",
1170
+ "kind": "Method",
1171
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#selectAgent:member(1)",
1172
+ "docComment": "",
692
1173
  "excerptTokens": [
693
1174
  {
694
1175
  "kind": "Content",
695
- "text": "'chat-popout': "
1176
+ "text": "selectAgent(name: "
696
1177
  },
697
1178
  {
698
1179
  "kind": "Content",
699
- "text": "undefined"
1180
+ "text": "string | null"
1181
+ },
1182
+ {
1183
+ "kind": "Content",
1184
+ "text": "): "
1185
+ },
1186
+ {
1187
+ "kind": "Content",
1188
+ "text": "void"
700
1189
  },
701
1190
  {
702
1191
  "kind": "Content",
703
1192
  "text": ";"
704
1193
  }
705
1194
  ],
706
- "isReadonly": false,
707
- "isOptional": false,
1195
+ "isStatic": false,
1196
+ "returnTypeTokenRange": {
1197
+ "startIndex": 3,
1198
+ "endIndex": 4
1199
+ },
708
1200
  "releaseTag": "Beta",
709
- "name": "\"chat-popout\"",
710
- "propertyTypeTokenRange": {
711
- "startIndex": 1,
712
- "endIndex": 2
713
- }
1201
+ "isProtected": false,
1202
+ "overloadIndex": 1,
1203
+ "parameters": [
1204
+ {
1205
+ "parameterName": "name",
1206
+ "parameterTypeTokenRange": {
1207
+ "startIndex": 1,
1208
+ "endIndex": 2
1209
+ },
1210
+ "isOptional": false
1211
+ }
1212
+ ],
1213
+ "isOptional": false,
1214
+ "isAbstract": false,
1215
+ "name": "selectAgent"
714
1216
  },
715
1217
  {
716
- "kind": "PropertySignature",
717
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"halo-start\":member",
718
- "docComment": "/**\n * Fired when the assistant begins a tool call. Contains the names of all active tools.\n */\n",
1218
+ "kind": "Method",
1219
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#selectByValue:member(1)",
1220
+ "docComment": "/**\n * Maps a value from the segmented-control or select (which uses {@link AGENT_PICKER_AUTO_VALUE} for Auto) back to the `string | null` form expected by `selectAgent`.\n */\n",
719
1221
  "excerptTokens": [
720
1222
  {
721
1223
  "kind": "Content",
722
- "text": "'halo-start': "
1224
+ "text": "selectByValue(value: "
723
1225
  },
724
1226
  {
725
1227
  "kind": "Content",
726
- "text": "{\n toolNames: string[];\n }"
1228
+ "text": "string"
1229
+ },
1230
+ {
1231
+ "kind": "Content",
1232
+ "text": "): "
1233
+ },
1234
+ {
1235
+ "kind": "Content",
1236
+ "text": "void"
727
1237
  },
728
1238
  {
729
1239
  "kind": "Content",
730
1240
  "text": ";"
731
1241
  }
732
1242
  ],
733
- "isReadonly": false,
734
- "isOptional": false,
1243
+ "isStatic": false,
1244
+ "returnTypeTokenRange": {
1245
+ "startIndex": 3,
1246
+ "endIndex": 4
1247
+ },
735
1248
  "releaseTag": "Beta",
736
- "name": "\"halo-start\"",
737
- "propertyTypeTokenRange": {
738
- "startIndex": 1,
739
- "endIndex": 2
740
- }
1249
+ "isProtected": false,
1250
+ "overloadIndex": 1,
1251
+ "parameters": [
1252
+ {
1253
+ "parameterName": "value",
1254
+ "parameterTypeTokenRange": {
1255
+ "startIndex": 1,
1256
+ "endIndex": 2
1257
+ },
1258
+ "isOptional": false
1259
+ }
1260
+ ],
1261
+ "isOptional": false,
1262
+ "isAbstract": false,
1263
+ "name": "selectByValue"
741
1264
  },
742
1265
  {
743
- "kind": "PropertySignature",
744
- "canonicalReference": "@genesislcap/ai-assistant!AgenticActivityEvents#\"halo-stop\":member",
745
- "docComment": "/**\n * Fired when the assistant finishes all tool processing and returns to idle.\n */\n",
1266
+ "kind": "Property",
1267
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#visible:member",
1268
+ "docComment": "/**\n * Whether the picker should render at all.\n */\n",
746
1269
  "excerptTokens": [
747
1270
  {
748
1271
  "kind": "Content",
749
- "text": "'halo-stop': "
1272
+ "text": "get visible(): "
750
1273
  },
751
1274
  {
752
1275
  "kind": "Content",
753
- "text": "undefined"
1276
+ "text": "boolean"
754
1277
  },
755
1278
  {
756
1279
  "kind": "Content",
757
1280
  "text": ";"
758
1281
  }
759
1282
  ],
760
- "isReadonly": false,
1283
+ "isReadonly": true,
761
1284
  "isOptional": false,
762
1285
  "releaseTag": "Beta",
763
- "name": "\"halo-stop\"",
1286
+ "name": "visible",
764
1287
  "propertyTypeTokenRange": {
765
1288
  "startIndex": 1,
766
1289
  "endIndex": 2
767
- }
1290
+ },
1291
+ "isStatic": false,
1292
+ "isProtected": false,
1293
+ "isAbstract": false
768
1294
  }
769
1295
  ],
770
- "extendsTokenRanges": []
1296
+ "extendsTokenRange": {
1297
+ "startIndex": 1,
1298
+ "endIndex": 2
1299
+ },
1300
+ "implementsTokenRanges": []
771
1301
  },
772
1302
  {
773
1303
  "kind": "TypeAlias",
@@ -2312,7 +2842,7 @@
2312
2842
  {
2313
2843
  "kind": "Method",
2314
2844
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#requestInteraction:member(1)",
2315
- "docComment": "/**\n * Request a custom UI interaction. Emits a new message with the interaction. Tool handlers can call this to pause execution until the user completes the UI interaction.\n *\n * @param componentName - The custom element name to render.\n *\n * @param data - Data to pass to the component.\n */\n",
2845
+ "docComment": "/**\n * Request a custom UI interaction. Emits a new message with the interaction. Tool handlers can call this to pause execution until the user completes the UI interaction.\n *\n * If a host requester is wired (sub-agent case), the call delegates upward so the interaction lives on the parent — the main UI is only listening to the root driver. Only one interaction may be in flight at any time on a given root: concurrent calls (e.g. two parallel sub-agents both spawning a widget) throw. Parallel sub-agents are for parallel work, not for user interaction, which is inherently sequential.\n *\n * @param componentName - The custom element name to render.\n *\n * @param data - Data to pass to the component.\n */\n",
2316
2846
  "excerptTokens": [
2317
2847
  {
2318
2848
  "kind": "Content",
@@ -2521,22 +3051,79 @@
2521
3051
  "parameterName": "userInput",
2522
3052
  "parameterTypeTokenRange": {
2523
3053
  "startIndex": 1,
2524
- "endIndex": 2
3054
+ "endIndex": 2
3055
+ },
3056
+ "isOptional": false
3057
+ },
3058
+ {
3059
+ "parameterName": "attachments",
3060
+ "parameterTypeTokenRange": {
3061
+ "startIndex": 3,
3062
+ "endIndex": 5
3063
+ },
3064
+ "isOptional": true
3065
+ }
3066
+ ],
3067
+ "isOptional": false,
3068
+ "isAbstract": false,
3069
+ "name": "sendMessage"
3070
+ },
3071
+ {
3072
+ "kind": "Method",
3073
+ "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#setHostInteractionRequester:member(1)",
3074
+ "docComment": "/**\n * Wire a parent driver as the host for this driver's interactions. When set, `requestInteraction` delegates upward so the widget renders in (and resolves through) the parent's history and pending map. Calls chain naturally: a grandchild → child → root.\n */\n",
3075
+ "excerptTokens": [
3076
+ {
3077
+ "kind": "Content",
3078
+ "text": "setHostInteractionRequester(fn: "
3079
+ },
3080
+ {
3081
+ "kind": "Content",
3082
+ "text": "<T>(componentName: string, data: any) => "
3083
+ },
3084
+ {
3085
+ "kind": "Reference",
3086
+ "text": "Promise",
3087
+ "canonicalReference": "!Promise:interface"
3088
+ },
3089
+ {
3090
+ "kind": "Content",
3091
+ "text": "<T>"
3092
+ },
3093
+ {
3094
+ "kind": "Content",
3095
+ "text": "): "
3096
+ },
3097
+ {
3098
+ "kind": "Content",
3099
+ "text": "void"
3100
+ },
3101
+ {
3102
+ "kind": "Content",
3103
+ "text": ";"
3104
+ }
3105
+ ],
3106
+ "isStatic": false,
3107
+ "returnTypeTokenRange": {
3108
+ "startIndex": 5,
3109
+ "endIndex": 6
3110
+ },
3111
+ "releaseTag": "Beta",
3112
+ "isProtected": false,
3113
+ "overloadIndex": 1,
3114
+ "parameters": [
3115
+ {
3116
+ "parameterName": "fn",
3117
+ "parameterTypeTokenRange": {
3118
+ "startIndex": 1,
3119
+ "endIndex": 4
2525
3120
  },
2526
3121
  "isOptional": false
2527
- },
2528
- {
2529
- "parameterName": "attachments",
2530
- "parameterTypeTokenRange": {
2531
- "startIndex": 3,
2532
- "endIndex": 5
2533
- },
2534
- "isOptional": true
2535
3122
  }
2536
3123
  ],
2537
3124
  "isOptional": false,
2538
3125
  "isAbstract": false,
2539
- "name": "sendMessage"
3126
+ "name": "setHostInteractionRequester"
2540
3127
  },
2541
3128
  {
2542
3129
  "kind": "Method",
@@ -2665,32 +3252,6 @@
2665
3252
  "endIndex": 7
2666
3253
  }
2667
3254
  },
2668
- {
2669
- "kind": "TypeAlias",
2670
- "canonicalReference": "@genesislcap/ai-assistant!ChatInputDuringExecutionMode:type",
2671
- "docComment": "/**\n * Controls how the main chat input area behaves while this agent is executing (i.e. while `state === 'loading'` — covers both LLM thinking and pending widget interactions).\n *\n * - `'disabled'` (default): input stays visible but disabled. - `'hidden'`: the entire input row (attach button, textarea, send button) is hidden. Useful for agents whose interaction widgets contain their own input affordances and where a second disabled chat input is redundant or confusing — typically long-running agents (planners) where one transition in/out is less jarring than mid-run flicker.\n *\n * @beta\n */\n",
2672
- "excerptTokens": [
2673
- {
2674
- "kind": "Content",
2675
- "text": "export type ChatInputDuringExecutionMode = "
2676
- },
2677
- {
2678
- "kind": "Content",
2679
- "text": "'disabled' | 'hidden'"
2680
- },
2681
- {
2682
- "kind": "Content",
2683
- "text": ";"
2684
- }
2685
- ],
2686
- "fileUrlPath": "src/config/config.ts",
2687
- "releaseTag": "Beta",
2688
- "name": "ChatInputDuringExecutionMode",
2689
- "typeTokenRange": {
2690
- "startIndex": 1,
2691
- "endIndex": 2
2692
- }
2693
- },
2694
3255
  {
2695
3256
  "kind": "Function",
2696
3257
  "canonicalReference": "@genesislcap/ai-assistant!createToolFold:function(1)",
@@ -3058,6 +3619,97 @@
3058
3619
  "isProtected": false,
3059
3620
  "isAbstract": false
3060
3621
  },
3622
+ {
3623
+ "kind": "Property",
3624
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agentPicker:member",
3625
+ "docComment": "/**\n * Resolved agent picker mode from `chatConfig.picker.mode`. Defaults to `'disabled'`.\n */\n",
3626
+ "excerptTokens": [
3627
+ {
3628
+ "kind": "Content",
3629
+ "text": "get agentPicker(): "
3630
+ },
3631
+ {
3632
+ "kind": "Reference",
3633
+ "text": "AgentPickerMode",
3634
+ "canonicalReference": "@genesislcap/foundation-ai!AgentPickerMode:type"
3635
+ },
3636
+ {
3637
+ "kind": "Content",
3638
+ "text": ";"
3639
+ }
3640
+ ],
3641
+ "isReadonly": true,
3642
+ "isOptional": false,
3643
+ "releaseTag": "Beta",
3644
+ "name": "agentPicker",
3645
+ "propertyTypeTokenRange": {
3646
+ "startIndex": 1,
3647
+ "endIndex": 2
3648
+ },
3649
+ "isStatic": false,
3650
+ "isProtected": false,
3651
+ "isAbstract": false
3652
+ },
3653
+ {
3654
+ "kind": "Property",
3655
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agentPickerEnabled:member",
3656
+ "docComment": "/**\n * Whether the picker toggle button should appear. Mirrors the picker's own visibility rule.\n */\n",
3657
+ "excerptTokens": [
3658
+ {
3659
+ "kind": "Content",
3660
+ "text": "get agentPickerEnabled(): "
3661
+ },
3662
+ {
3663
+ "kind": "Content",
3664
+ "text": "boolean"
3665
+ },
3666
+ {
3667
+ "kind": "Content",
3668
+ "text": ";"
3669
+ }
3670
+ ],
3671
+ "isReadonly": true,
3672
+ "isOptional": false,
3673
+ "releaseTag": "Beta",
3674
+ "name": "agentPickerEnabled",
3675
+ "propertyTypeTokenRange": {
3676
+ "startIndex": 1,
3677
+ "endIndex": 2
3678
+ },
3679
+ "isStatic": false,
3680
+ "isProtected": false,
3681
+ "isAbstract": false
3682
+ },
3683
+ {
3684
+ "kind": "Property",
3685
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agentPickerOpen:member",
3686
+ "docComment": "/**\n * Whether the agent picker slide-out panel is open. Lives on the session store so the bubble-dialog and popout-panel instances stay in sync.\n */\n",
3687
+ "excerptTokens": [
3688
+ {
3689
+ "kind": "Content",
3690
+ "text": "get agentPickerOpen(): "
3691
+ },
3692
+ {
3693
+ "kind": "Content",
3694
+ "text": "boolean"
3695
+ },
3696
+ {
3697
+ "kind": "Content",
3698
+ "text": ";\n\nset agentPickerOpen(value: boolean);"
3699
+ }
3700
+ ],
3701
+ "isReadonly": false,
3702
+ "isOptional": false,
3703
+ "releaseTag": "Beta",
3704
+ "name": "agentPickerOpen",
3705
+ "propertyTypeTokenRange": {
3706
+ "startIndex": 1,
3707
+ "endIndex": 2
3708
+ },
3709
+ "isStatic": false,
3710
+ "isProtected": false,
3711
+ "isAbstract": false
3712
+ },
3061
3713
  {
3062
3714
  "kind": "Property",
3063
3715
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agents:member",
@@ -3556,6 +4208,67 @@
3556
4208
  "isAbstract": false,
3557
4209
  "name": "downloadDebugLog"
3558
4210
  },
4211
+ {
4212
+ "kind": "Property",
4213
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#effectiveChatInputDuringExecution:member",
4214
+ "docComment": "/**\n * Resolves the effective chat-input behaviour while the assistant is executing. Sub-agent overrides take precedence over the agent-level config; among overrides the most restrictive wins (`'hidden'` > `'disabled'`). Falls back to the active agent's config, then `'disabled'`.\n */\n",
4215
+ "excerptTokens": [
4216
+ {
4217
+ "kind": "Content",
4218
+ "text": "get effectiveChatInputDuringExecution(): "
4219
+ },
4220
+ {
4221
+ "kind": "Reference",
4222
+ "text": "ChatInputDuringExecutionMode",
4223
+ "canonicalReference": "@genesislcap/foundation-ai!ChatInputDuringExecutionMode:type"
4224
+ },
4225
+ {
4226
+ "kind": "Content",
4227
+ "text": ";"
4228
+ }
4229
+ ],
4230
+ "isReadonly": true,
4231
+ "isOptional": false,
4232
+ "releaseTag": "Beta",
4233
+ "name": "effectiveChatInputDuringExecution",
4234
+ "propertyTypeTokenRange": {
4235
+ "startIndex": 1,
4236
+ "endIndex": 2
4237
+ },
4238
+ "isStatic": false,
4239
+ "isProtected": false,
4240
+ "isAbstract": false
4241
+ },
4242
+ {
4243
+ "kind": "Property",
4244
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#effectivePlaceholder:member",
4245
+ "docComment": "/**\n * Placeholder shown in the chat input. Substitutes the pinned agent's name when one is selected so the user has a clearer signal of where their message will go; otherwise falls back to the host-provided placeholder.\n */\n",
4246
+ "excerptTokens": [
4247
+ {
4248
+ "kind": "Content",
4249
+ "text": "get effectivePlaceholder(): "
4250
+ },
4251
+ {
4252
+ "kind": "Content",
4253
+ "text": "string"
4254
+ },
4255
+ {
4256
+ "kind": "Content",
4257
+ "text": ";"
4258
+ }
4259
+ ],
4260
+ "isReadonly": true,
4261
+ "isOptional": false,
4262
+ "releaseTag": "Beta",
4263
+ "name": "effectivePlaceholder",
4264
+ "propertyTypeTokenRange": {
4265
+ "startIndex": 1,
4266
+ "endIndex": 2
4267
+ },
4268
+ "isStatic": false,
4269
+ "isProtected": false,
4270
+ "isAbstract": false
4271
+ },
3559
4272
  {
3560
4273
  "kind": "Property",
3561
4274
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#enabledAnimations:member",
@@ -3647,12 +4360,21 @@
3647
4360
  },
3648
4361
  {
3649
4362
  "kind": "Content",
3650
- "text": "[];\n chatInputDuringExecution?: import(\"../config/config\")."
4363
+ "text": "[];\n chatInputDuringExecution?: "
3651
4364
  },
3652
4365
  {
3653
4366
  "kind": "Reference",
3654
4367
  "text": "ChatInputDuringExecutionMode",
3655
- "canonicalReference": "@genesislcap/ai-assistant!ChatInputDuringExecutionMode:type"
4368
+ "canonicalReference": "@genesislcap/foundation-ai!ChatInputDuringExecutionMode:type"
4369
+ },
4370
+ {
4371
+ "kind": "Content",
4372
+ "text": ";\n manualSelection?: import(\"../config/config\")."
4373
+ },
4374
+ {
4375
+ "kind": "Reference",
4376
+ "text": "ManualSelectionConfig",
4377
+ "canonicalReference": "@genesislcap/ai-assistant!ManualSelectionConfig:interface"
3656
4378
  },
3657
4379
  {
3658
4380
  "kind": "Content",
@@ -3683,12 +4405,21 @@
3683
4405
  },
3684
4406
  {
3685
4407
  "kind": "Content",
3686
- "text": "[];\n chatInputDuringExecution?: import(\"../config/config\")."
4408
+ "text": "[];\n chatInputDuringExecution?: "
3687
4409
  },
3688
4410
  {
3689
4411
  "kind": "Reference",
3690
4412
  "text": "ChatInputDuringExecutionMode",
3691
- "canonicalReference": "@genesislcap/ai-assistant!ChatInputDuringExecutionMode:type"
4413
+ "canonicalReference": "@genesislcap/foundation-ai!ChatInputDuringExecutionMode:type"
4414
+ },
4415
+ {
4416
+ "kind": "Content",
4417
+ "text": ";\n manualSelection?: import(\"../config/config\")."
4418
+ },
4419
+ {
4420
+ "kind": "Reference",
4421
+ "text": "ManualSelectionConfig",
4422
+ "canonicalReference": "@genesislcap/ai-assistant!ManualSelectionConfig:interface"
3692
4423
  },
3693
4424
  {
3694
4425
  "kind": "Content",
@@ -3711,7 +4442,7 @@
3711
4442
  "isStatic": false,
3712
4443
  "returnTypeTokenRange": {
3713
4444
  "startIndex": 1,
3714
- "endIndex": 22
4445
+ "endIndex": 26
3715
4446
  },
3716
4447
  "releaseTag": "Beta",
3717
4448
  "isProtected": false,
@@ -4244,38 +4975,128 @@
4244
4975
  },
4245
4976
  {
4246
4977
  "kind": "Content",
4247
- "text": "): "
4978
+ "text": "): "
4979
+ },
4980
+ {
4981
+ "kind": "Content",
4982
+ "text": "void"
4983
+ },
4984
+ {
4985
+ "kind": "Content",
4986
+ "text": ";"
4987
+ }
4988
+ ],
4989
+ "isStatic": false,
4990
+ "returnTypeTokenRange": {
4991
+ "startIndex": 3,
4992
+ "endIndex": 4
4993
+ },
4994
+ "releaseTag": "Beta",
4995
+ "isProtected": false,
4996
+ "overloadIndex": 1,
4997
+ "parameters": [
4998
+ {
4999
+ "parameterName": "e",
5000
+ "parameterTypeTokenRange": {
5001
+ "startIndex": 1,
5002
+ "endIndex": 2
5003
+ },
5004
+ "isOptional": false
5005
+ }
5006
+ ],
5007
+ "isOptional": false,
5008
+ "isAbstract": false,
5009
+ "name": "onChatHeaderMouseDown"
5010
+ },
5011
+ {
5012
+ "kind": "Property",
5013
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#pinnedAgentColour:member",
5014
+ "docComment": "/**\n * Tint applied to the pin icon when an agent is pinned. Picked from the brand palette by agent position (modulo the palette length), so each agent gets a consistent colour across renders. `undefined` when nothing is pinned, the agent isn't in the current array, or the host has opted out via `chatConfig.picker.disablePinColours`.\n */\n",
5015
+ "excerptTokens": [
5016
+ {
5017
+ "kind": "Content",
5018
+ "text": "get pinnedAgentColour(): "
5019
+ },
5020
+ {
5021
+ "kind": "Content",
5022
+ "text": "string | undefined"
5023
+ },
5024
+ {
5025
+ "kind": "Content",
5026
+ "text": ";"
5027
+ }
5028
+ ],
5029
+ "isReadonly": true,
5030
+ "isOptional": false,
5031
+ "releaseTag": "Beta",
5032
+ "name": "pinnedAgentColour",
5033
+ "propertyTypeTokenRange": {
5034
+ "startIndex": 1,
5035
+ "endIndex": 2
5036
+ },
5037
+ "isStatic": false,
5038
+ "isProtected": false,
5039
+ "isAbstract": false
5040
+ },
5041
+ {
5042
+ "kind": "Property",
5043
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#pinnedAgentHint:member",
5044
+ "docComment": "/**\n * Hint text for the currently pinned agent, if any. Used in the toggle button tooltip.\n */\n",
5045
+ "excerptTokens": [
5046
+ {
5047
+ "kind": "Content",
5048
+ "text": "get pinnedAgentHint(): "
5049
+ },
5050
+ {
5051
+ "kind": "Content",
5052
+ "text": "string | undefined"
5053
+ },
5054
+ {
5055
+ "kind": "Content",
5056
+ "text": ";"
5057
+ }
5058
+ ],
5059
+ "isReadonly": true,
5060
+ "isOptional": false,
5061
+ "releaseTag": "Beta",
5062
+ "name": "pinnedAgentHint",
5063
+ "propertyTypeTokenRange": {
5064
+ "startIndex": 1,
5065
+ "endIndex": 2
5066
+ },
5067
+ "isStatic": false,
5068
+ "isProtected": false,
5069
+ "isAbstract": false
5070
+ },
5071
+ {
5072
+ "kind": "Property",
5073
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#pinnedAgentName:member",
5074
+ "docComment": "/**\n * Name of the agent the user has pinned via the agent picker. `null` means automatic routing (Auto). Persisted on the session store, so it survives pop-in/pop-out but resets on page refresh.\n */\n",
5075
+ "excerptTokens": [
5076
+ {
5077
+ "kind": "Content",
5078
+ "text": "get pinnedAgentName(): "
4248
5079
  },
4249
5080
  {
4250
5081
  "kind": "Content",
4251
- "text": "void"
5082
+ "text": "string | null"
4252
5083
  },
4253
5084
  {
4254
5085
  "kind": "Content",
4255
- "text": ";"
5086
+ "text": ";\n\nset pinnedAgentName(value: string | null);"
4256
5087
  }
4257
5088
  ],
4258
- "isStatic": false,
4259
- "returnTypeTokenRange": {
4260
- "startIndex": 3,
4261
- "endIndex": 4
4262
- },
5089
+ "isReadonly": false,
5090
+ "isOptional": false,
4263
5091
  "releaseTag": "Beta",
5092
+ "name": "pinnedAgentName",
5093
+ "propertyTypeTokenRange": {
5094
+ "startIndex": 1,
5095
+ "endIndex": 2
5096
+ },
5097
+ "isStatic": false,
4264
5098
  "isProtected": false,
4265
- "overloadIndex": 1,
4266
- "parameters": [
4267
- {
4268
- "parameterName": "e",
4269
- "parameterTypeTokenRange": {
4270
- "startIndex": 1,
4271
- "endIndex": 2
4272
- },
4273
- "isOptional": false
4274
- }
4275
- ],
4276
- "isOptional": false,
4277
- "isAbstract": false,
4278
- "name": "onChatHeaderMouseDown"
5099
+ "isAbstract": false
4279
5100
  },
4280
5101
  {
4281
5102
  "kind": "Property",
@@ -4435,6 +5256,70 @@
4435
5256
  "isAbstract": false,
4436
5257
  "name": "removeAttachmentError"
4437
5258
  },
5259
+ {
5260
+ "kind": "Method",
5261
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#setAgent:member(1)",
5262
+ "docComment": "/**\n * Programmatically pin an agent by name. Returns `true` if the pin was applied, `false` if the agent isn't in the configured agents array or the call was suppressed by `force: false`.\n *\n * With `force: false`, the call is a no-op when a `picker.defaultAgent` is configured and the user has already moved away from it (either by picking another agent or by switching to Auto). This lets hosts seed an opinion without overriding an explicit user choice.\n *\n * @public\n */\n",
5263
+ "excerptTokens": [
5264
+ {
5265
+ "kind": "Content",
5266
+ "text": "setAgent(agentName: "
5267
+ },
5268
+ {
5269
+ "kind": "Content",
5270
+ "text": "string"
5271
+ },
5272
+ {
5273
+ "kind": "Content",
5274
+ "text": ", options?: "
5275
+ },
5276
+ {
5277
+ "kind": "Content",
5278
+ "text": "{\n force?: boolean;\n }"
5279
+ },
5280
+ {
5281
+ "kind": "Content",
5282
+ "text": "): "
5283
+ },
5284
+ {
5285
+ "kind": "Content",
5286
+ "text": "boolean"
5287
+ },
5288
+ {
5289
+ "kind": "Content",
5290
+ "text": ";"
5291
+ }
5292
+ ],
5293
+ "isStatic": false,
5294
+ "returnTypeTokenRange": {
5295
+ "startIndex": 5,
5296
+ "endIndex": 6
5297
+ },
5298
+ "releaseTag": "Public",
5299
+ "isProtected": false,
5300
+ "overloadIndex": 1,
5301
+ "parameters": [
5302
+ {
5303
+ "parameterName": "agentName",
5304
+ "parameterTypeTokenRange": {
5305
+ "startIndex": 1,
5306
+ "endIndex": 2
5307
+ },
5308
+ "isOptional": false
5309
+ },
5310
+ {
5311
+ "parameterName": "options",
5312
+ "parameterTypeTokenRange": {
5313
+ "startIndex": 3,
5314
+ "endIndex": 4
5315
+ },
5316
+ "isOptional": true
5317
+ }
5318
+ ],
5319
+ "isOptional": false,
5320
+ "isAbstract": false,
5321
+ "name": "setAgent"
5322
+ },
4438
5323
  {
4439
5324
  "kind": "Method",
4440
5325
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#setEnabledAnimations:member(1)",
@@ -4831,6 +5716,45 @@
4831
5716
  "isProtected": false,
4832
5717
  "isAbstract": false
4833
5718
  },
5719
+ {
5720
+ "kind": "Property",
5721
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#subAgentInputOverrides:member",
5722
+ "docComment": "/**\n * In-flight per-call chat-input overrides pushed by `requestSubAgent` invocations. Empty means no override is active.\n */\n",
5723
+ "excerptTokens": [
5724
+ {
5725
+ "kind": "Content",
5726
+ "text": "get subAgentInputOverrides(): "
5727
+ },
5728
+ {
5729
+ "kind": "Content",
5730
+ "text": "import(\"../state/ai-assistant-slice\")."
5731
+ },
5732
+ {
5733
+ "kind": "Reference",
5734
+ "text": "SubAgentInputOverride",
5735
+ "canonicalReference": "@genesislcap/ai-assistant!~SubAgentInputOverride:interface"
5736
+ },
5737
+ {
5738
+ "kind": "Content",
5739
+ "text": "[]"
5740
+ },
5741
+ {
5742
+ "kind": "Content",
5743
+ "text": ";"
5744
+ }
5745
+ ],
5746
+ "isReadonly": true,
5747
+ "isOptional": false,
5748
+ "releaseTag": "Beta",
5749
+ "name": "subAgentInputOverrides",
5750
+ "propertyTypeTokenRange": {
5751
+ "startIndex": 1,
5752
+ "endIndex": 4
5753
+ },
5754
+ "isStatic": false,
5755
+ "isProtected": false,
5756
+ "isAbstract": false
5757
+ },
4834
5758
  {
4835
5759
  "kind": "Property",
4836
5760
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#suggestionsState:member",
@@ -4871,6 +5795,37 @@
4871
5795
  "isProtected": false,
4872
5796
  "isAbstract": false
4873
5797
  },
5798
+ {
5799
+ "kind": "Method",
5800
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#toggleAgentPicker:member(1)",
5801
+ "docComment": "",
5802
+ "excerptTokens": [
5803
+ {
5804
+ "kind": "Content",
5805
+ "text": "toggleAgentPicker(): "
5806
+ },
5807
+ {
5808
+ "kind": "Content",
5809
+ "text": "void"
5810
+ },
5811
+ {
5812
+ "kind": "Content",
5813
+ "text": ";"
5814
+ }
5815
+ ],
5816
+ "isStatic": false,
5817
+ "returnTypeTokenRange": {
5818
+ "startIndex": 1,
5819
+ "endIndex": 2
5820
+ },
5821
+ "releaseTag": "Beta",
5822
+ "isProtected": false,
5823
+ "overloadIndex": 1,
5824
+ "parameters": [],
5825
+ "isOptional": false,
5826
+ "isAbstract": false,
5827
+ "name": "toggleAgentPicker"
5828
+ },
4874
5829
  {
4875
5830
  "kind": "Method",
4876
5831
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#toggleSettings:member(1)",
@@ -5396,6 +6351,78 @@
5396
6351
  "parameters": [],
5397
6352
  "name": "getAiPopoutManager"
5398
6353
  },
6354
+ {
6355
+ "kind": "Interface",
6356
+ "canonicalReference": "@genesislcap/ai-assistant!ManualSelectionConfig:interface",
6357
+ "docComment": "/**\n * Opts an agent in to manual selection from the assistant's agent picker.\n *\n * Only applies to top-level agents — sub-agents are never user-selectable. Has no effect unless the assistant's `agentPicker` is also enabled.\n *\n * @beta\n */\n",
6358
+ "excerptTokens": [
6359
+ {
6360
+ "kind": "Content",
6361
+ "text": "export interface ManualSelectionConfig "
6362
+ }
6363
+ ],
6364
+ "fileUrlPath": "src/config/config.ts",
6365
+ "releaseTag": "Beta",
6366
+ "name": "ManualSelectionConfig",
6367
+ "preserveMemberOrder": false,
6368
+ "members": [
6369
+ {
6370
+ "kind": "PropertySignature",
6371
+ "canonicalReference": "@genesislcap/ai-assistant!ManualSelectionConfig#enabled:member",
6372
+ "docComment": "/**\n * Whether this agent appears in the picker.\n */\n",
6373
+ "excerptTokens": [
6374
+ {
6375
+ "kind": "Content",
6376
+ "text": "enabled: "
6377
+ },
6378
+ {
6379
+ "kind": "Content",
6380
+ "text": "boolean"
6381
+ },
6382
+ {
6383
+ "kind": "Content",
6384
+ "text": ";"
6385
+ }
6386
+ ],
6387
+ "isReadonly": false,
6388
+ "isOptional": false,
6389
+ "releaseTag": "Beta",
6390
+ "name": "enabled",
6391
+ "propertyTypeTokenRange": {
6392
+ "startIndex": 1,
6393
+ "endIndex": 2
6394
+ }
6395
+ },
6396
+ {
6397
+ "kind": "PropertySignature",
6398
+ "canonicalReference": "@genesislcap/ai-assistant!ManualSelectionConfig#hint:member",
6399
+ "docComment": "/**\n * Optional short description shown as a tooltip on the picker entry, and as a secondary line in the dropdown variant.\n */\n",
6400
+ "excerptTokens": [
6401
+ {
6402
+ "kind": "Content",
6403
+ "text": "hint?: "
6404
+ },
6405
+ {
6406
+ "kind": "Content",
6407
+ "text": "string"
6408
+ },
6409
+ {
6410
+ "kind": "Content",
6411
+ "text": ";"
6412
+ }
6413
+ ],
6414
+ "isReadonly": false,
6415
+ "isOptional": true,
6416
+ "releaseTag": "Beta",
6417
+ "name": "hint",
6418
+ "propertyTypeTokenRange": {
6419
+ "startIndex": 1,
6420
+ "endIndex": 2
6421
+ }
6422
+ }
6423
+ ],
6424
+ "extendsTokenRanges": []
6425
+ },
5399
6426
  {
5400
6427
  "kind": "Class",
5401
6428
  "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver:class",
@@ -5979,6 +7006,54 @@
5979
7006
  "isOptional": false,
5980
7007
  "isAbstract": false,
5981
7008
  "name": "sendMessage"
7009
+ },
7010
+ {
7011
+ "kind": "Method",
7012
+ "canonicalReference": "@genesislcap/ai-assistant!OrchestratingDriver#setPinnedAgent:member(1)",
7013
+ "docComment": "/**\n * Pins routing to a specific agent by name. While pinned, the classifier is skipped and the continuation tool is hidden from the agent's tool list, so the agent cannot quietly hand back to the orchestrator. Pass `null` to return to automatic routing.\n */\n",
7014
+ "excerptTokens": [
7015
+ {
7016
+ "kind": "Content",
7017
+ "text": "setPinnedAgent(name: "
7018
+ },
7019
+ {
7020
+ "kind": "Content",
7021
+ "text": "string | null"
7022
+ },
7023
+ {
7024
+ "kind": "Content",
7025
+ "text": "): "
7026
+ },
7027
+ {
7028
+ "kind": "Content",
7029
+ "text": "void"
7030
+ },
7031
+ {
7032
+ "kind": "Content",
7033
+ "text": ";"
7034
+ }
7035
+ ],
7036
+ "isStatic": false,
7037
+ "returnTypeTokenRange": {
7038
+ "startIndex": 3,
7039
+ "endIndex": 4
7040
+ },
7041
+ "releaseTag": "Beta",
7042
+ "isProtected": false,
7043
+ "overloadIndex": 1,
7044
+ "parameters": [
7045
+ {
7046
+ "parameterName": "name",
7047
+ "parameterTypeTokenRange": {
7048
+ "startIndex": 1,
7049
+ "endIndex": 2
7050
+ },
7051
+ "isOptional": false
7052
+ }
7053
+ ],
7054
+ "isOptional": false,
7055
+ "isAbstract": false,
7056
+ "name": "setPinnedAgent"
5982
7057
  }
5983
7058
  ],
5984
7059
  "extendsTokenRange": {