@genesislcap/ai-assistant 15.18.0 → 15.19.0-DCD-4786.3

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 (322) hide show
  1. package/dist/ai-assistant.api.json +124 -139
  2. package/dist/ai-assistant.d.ts +98 -38
  3. package/dist/custom-elements.json +200 -61
  4. package/dist/dts/components/agent-picker/agent-picker.constants.d.ts +1 -1
  5. package/dist/dts/components/agent-picker/agent-picker.constants.d.ts.map +1 -1
  6. package/dist/dts/components/agent-picker/agent-picker.d.ts +29 -37
  7. package/dist/dts/components/agent-picker/agent-picker.d.ts.map +1 -1
  8. package/dist/dts/components/agent-picker/agent-picker.styles.d.ts.map +1 -1
  9. package/dist/dts/components/agent-picker/agent-picker.template.d.ts +1 -1
  10. package/dist/dts/components/agent-picker/agent-picker.template.d.ts.map +1 -1
  11. package/dist/dts/main/main.d.ts +69 -0
  12. package/dist/dts/main/main.d.ts.map +1 -1
  13. package/dist/dts/main/main.styles.d.ts.map +1 -1
  14. package/dist/dts/main/main.template.d.ts.map +1 -1
  15. package/dist/dts/styles/ai-colours.d.ts +13 -0
  16. package/dist/dts/styles/ai-colours.d.ts.map +1 -1
  17. package/dist/dts/styles/menu.d.ts +35 -0
  18. package/dist/dts/styles/menu.d.ts.map +1 -0
  19. package/dist/esm/components/agent-picker/agent-picker.constants.js +1 -1
  20. package/dist/esm/components/agent-picker/agent-picker.js +40 -75
  21. package/dist/esm/components/agent-picker/agent-picker.styles.js +9 -59
  22. package/dist/esm/components/agent-picker/agent-picker.template.js +49 -70
  23. package/dist/esm/main/main.js +192 -13
  24. package/dist/esm/main/main.styles.js +223 -98
  25. package/dist/esm/main/main.template.js +177 -99
  26. package/dist/esm/styles/ai-colours.js +18 -0
  27. package/dist/esm/styles/menu.js +186 -0
  28. package/docs/migration-GENC-1557.md +126 -0
  29. package/docs/styling.md +44 -1
  30. package/package.json +18 -18
  31. package/sandbox/README.md +72 -0
  32. package/sandbox/controls.ts +154 -0
  33. package/sandbox/fixtures.ts +315 -0
  34. package/sandbox/index.html +31 -0
  35. package/sandbox/sandbox.css +237 -0
  36. package/sandbox/sandbox.ts +559 -0
  37. package/sandbox/vite.config.mts +44 -0
  38. package/api-extractor.json +0 -11
  39. package/dist/dts/components/chat-driver/chat-driver.compact.test.d.ts +0 -2
  40. package/dist/dts/components/chat-driver/chat-driver.compact.test.d.ts.map +0 -1
  41. package/dist/dts/components/chat-driver/chat-driver.invocation-scope.test.d.ts +0 -2
  42. package/dist/dts/components/chat-driver/chat-driver.invocation-scope.test.d.ts.map +0 -1
  43. package/dist/dts/components/chat-driver/chat-driver.test.d.ts +0 -2
  44. package/dist/dts/components/chat-driver/chat-driver.test.d.ts.map +0 -1
  45. package/dist/dts/components/chat-driver/chat-driver.thinking-policy.test.d.ts +0 -2
  46. package/dist/dts/components/chat-driver/chat-driver.thinking-policy.test.d.ts.map +0 -1
  47. package/dist/dts/components/chat-driver/chat-driver.trace-capture.test.d.ts +0 -2
  48. package/dist/dts/components/chat-driver/chat-driver.trace-capture.test.d.ts.map +0 -1
  49. package/dist/dts/components/chat-driver/chat-driver.turn-usage.test.d.ts +0 -2
  50. package/dist/dts/components/chat-driver/chat-driver.turn-usage.test.d.ts.map +0 -1
  51. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.test.d.ts +0 -2
  52. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.test.d.ts.map +0 -1
  53. package/dist/dts/components/orchestrating-driver/orchestrating-driver.budget.test.d.ts +0 -2
  54. package/dist/dts/components/orchestrating-driver/orchestrating-driver.budget.test.d.ts.map +0 -1
  55. package/dist/dts/components/orchestrating-driver/orchestrating-driver.cost.test.d.ts +0 -2
  56. package/dist/dts/components/orchestrating-driver/orchestrating-driver.cost.test.d.ts.map +0 -1
  57. package/dist/dts/components/orchestrating-driver/orchestrating-driver.pin.test.d.ts +0 -2
  58. package/dist/dts/components/orchestrating-driver/orchestrating-driver.pin.test.d.ts.map +0 -1
  59. package/dist/dts/components/settings-modal/settings-modal.styles.test.d.ts +0 -2
  60. package/dist/dts/components/settings-modal/settings-modal.styles.test.d.ts.map +0 -1
  61. package/dist/dts/components/settings-modal/settings-modal.template.test.d.ts +0 -2
  62. package/dist/dts/components/settings-modal/settings-modal.template.test.d.ts.map +0 -1
  63. package/dist/dts/config/define-stateful-agent.test.d.ts +0 -2
  64. package/dist/dts/config/define-stateful-agent.test.d.ts.map +0 -1
  65. package/dist/dts/config/validate-providers.test.d.ts +0 -2
  66. package/dist/dts/config/validate-providers.test.d.ts.map +0 -1
  67. package/dist/dts/main/blocked-state.test.d.ts +0 -2
  68. package/dist/dts/main/blocked-state.test.d.ts.map +0 -1
  69. package/dist/dts/main/budget-meter.test.d.ts +0 -2
  70. package/dist/dts/main/budget-meter.test.d.ts.map +0 -1
  71. package/dist/dts/main/cost-session-banking.test.d.ts +0 -2
  72. package/dist/dts/main/cost-session-banking.test.d.ts.map +0 -1
  73. package/dist/dts/main/file-attachments.test.d.ts +0 -2
  74. package/dist/dts/main/file-attachments.test.d.ts.map +0 -1
  75. package/dist/dts/main/interaction-cost.test.d.ts +0 -2
  76. package/dist/dts/main/interaction-cost.test.d.ts.map +0 -1
  77. package/dist/dts/main/main.styles.test.d.ts +0 -2
  78. package/dist/dts/main/main.styles.test.d.ts.map +0 -1
  79. package/dist/dts/main/persistence-broken-sources.test.d.ts +0 -2
  80. package/dist/dts/main/persistence-broken-sources.test.d.ts.map +0 -1
  81. package/dist/dts/main/popout-interaction-gate.test.d.ts +0 -2
  82. package/dist/dts/main/popout-interaction-gate.test.d.ts.map +0 -1
  83. package/dist/dts/state/ai-assistant-slice.test.d.ts +0 -2
  84. package/dist/dts/state/ai-assistant-slice.test.d.ts.map +0 -1
  85. package/dist/dts/state/debug-event-log.test.d.ts +0 -2
  86. package/dist/dts/state/debug-event-log.test.d.ts.map +0 -1
  87. package/dist/dts/state/driver-registry.test.d.ts +0 -2
  88. package/dist/dts/state/driver-registry.test.d.ts.map +0 -1
  89. package/dist/dts/state/interaction-context.test.d.ts +0 -2
  90. package/dist/dts/state/interaction-context.test.d.ts.map +0 -1
  91. package/dist/dts/state/persistence/diagnostics-cursors.test.d.ts +0 -2
  92. package/dist/dts/state/persistence/diagnostics-cursors.test.d.ts.map +0 -1
  93. package/dist/dts/state/persistence/diagnostics.test.d.ts +0 -2
  94. package/dist/dts/state/persistence/diagnostics.test.d.ts.map +0 -1
  95. package/dist/dts/state/persistence/session-persistence-provider.test.d.ts +0 -2
  96. package/dist/dts/state/persistence/session-persistence-provider.test.d.ts.map +0 -1
  97. package/dist/dts/state/persistence/session-persistence.integration.test.d.ts +0 -2
  98. package/dist/dts/state/persistence/session-persistence.integration.test.d.ts.map +0 -1
  99. package/dist/dts/state/persistence/session-persister.test.d.ts +0 -2
  100. package/dist/dts/state/persistence/session-persister.test.d.ts.map +0 -1
  101. package/dist/dts/state/persistence/session-snapshot.test.d.ts +0 -2
  102. package/dist/dts/state/persistence/session-snapshot.test.d.ts.map +0 -1
  103. package/dist/dts/state/persistence/stateful-restore.e2e.test.d.ts +0 -2
  104. package/dist/dts/state/persistence/stateful-restore.e2e.test.d.ts.map +0 -1
  105. package/dist/dts/utils/animation-exclusivity.test.d.ts +0 -2
  106. package/dist/dts/utils/animation-exclusivity.test.d.ts.map +0 -1
  107. package/dist/dts/utils/collect-session-models.test.d.ts +0 -2
  108. package/dist/dts/utils/collect-session-models.test.d.ts.map +0 -1
  109. package/dist/dts/utils/condense-history.test.d.ts +0 -2
  110. package/dist/dts/utils/condense-history.test.d.ts.map +0 -1
  111. package/dist/dts/utils/cost-session-history.test.d.ts +0 -2
  112. package/dist/dts/utils/cost-session-history.test.d.ts.map +0 -1
  113. package/dist/dts/utils/derive-cost-session-title.test.d.ts +0 -2
  114. package/dist/dts/utils/derive-cost-session-title.test.d.ts.map +0 -1
  115. package/dist/dts/utils/flatten-sub-agent-messages.test.d.ts +0 -2
  116. package/dist/dts/utils/flatten-sub-agent-messages.test.d.ts.map +0 -1
  117. package/dist/dts/utils/history-transform.test.d.ts +0 -2
  118. package/dist/dts/utils/history-transform.test.d.ts.map +0 -1
  119. package/dist/dts/utils/message-partition.test.d.ts +0 -2
  120. package/dist/dts/utils/message-partition.test.d.ts.map +0 -1
  121. package/dist/dts/utils/resolve-cost-history-config.test.d.ts +0 -2
  122. package/dist/dts/utils/resolve-cost-history-config.test.d.ts.map +0 -1
  123. package/dist/dts/utils/resolve-preference-baseline.test.d.ts +0 -2
  124. package/dist/dts/utils/resolve-preference-baseline.test.d.ts.map +0 -1
  125. package/dist/dts/utils/strip-agent-handlers.test.d.ts +0 -2
  126. package/dist/dts/utils/strip-agent-handlers.test.d.ts.map +0 -1
  127. package/dist/dts/utils/sum-costs.test.d.ts +0 -2
  128. package/dist/dts/utils/sum-costs.test.d.ts.map +0 -1
  129. package/dist/dts/utils/sum-tokens.test.d.ts +0 -2
  130. package/dist/dts/utils/sum-tokens.test.d.ts.map +0 -1
  131. package/dist/dts/utils/sum-usage.test.d.ts +0 -2
  132. package/dist/dts/utils/sum-usage.test.d.ts.map +0 -1
  133. package/dist/dts/utils/usage-rows.test.d.ts +0 -2
  134. package/dist/dts/utils/usage-rows.test.d.ts.map +0 -1
  135. package/dist/esm/components/chat-driver/chat-driver.compact.test.js +0 -93
  136. package/dist/esm/components/chat-driver/chat-driver.invocation-scope.test.js +0 -238
  137. package/dist/esm/components/chat-driver/chat-driver.test.js +0 -2770
  138. package/dist/esm/components/chat-driver/chat-driver.thinking-policy.test.js +0 -137
  139. package/dist/esm/components/chat-driver/chat-driver.trace-capture.test.js +0 -200
  140. package/dist/esm/components/chat-driver/chat-driver.turn-usage.test.js +0 -268
  141. package/dist/esm/components/chat-interaction-wrapper/chat-interaction-wrapper.test.js +0 -104
  142. package/dist/esm/components/orchestrating-driver/orchestrating-driver.budget.test.js +0 -312
  143. package/dist/esm/components/orchestrating-driver/orchestrating-driver.cost.test.js +0 -76
  144. package/dist/esm/components/orchestrating-driver/orchestrating-driver.pin.test.js +0 -61
  145. package/dist/esm/components/settings-modal/settings-modal.styles.test.js +0 -80
  146. package/dist/esm/components/settings-modal/settings-modal.template.test.js +0 -91
  147. package/dist/esm/config/define-stateful-agent.test.js +0 -53
  148. package/dist/esm/config/validate-providers.test.js +0 -100
  149. package/dist/esm/main/blocked-state.test.js +0 -1065
  150. package/dist/esm/main/budget-meter.test.js +0 -359
  151. package/dist/esm/main/cost-session-banking.test.js +0 -538
  152. package/dist/esm/main/file-attachments.test.js +0 -164
  153. package/dist/esm/main/interaction-cost.test.js +0 -107
  154. package/dist/esm/main/main.styles.test.js +0 -126
  155. package/dist/esm/main/persistence-broken-sources.test.js +0 -180
  156. package/dist/esm/main/popout-interaction-gate.test.js +0 -54
  157. package/dist/esm/state/ai-assistant-slice.test.js +0 -229
  158. package/dist/esm/state/debug-event-log.test.js +0 -117
  159. package/dist/esm/state/driver-registry.test.js +0 -55
  160. package/dist/esm/state/interaction-context.test.js +0 -78
  161. package/dist/esm/state/persistence/diagnostics-cursors.test.js +0 -30
  162. package/dist/esm/state/persistence/diagnostics.test.js +0 -280
  163. package/dist/esm/state/persistence/session-persistence-provider.test.js +0 -110
  164. package/dist/esm/state/persistence/session-persistence.integration.test.js +0 -113
  165. package/dist/esm/state/persistence/session-persister.test.js +0 -613
  166. package/dist/esm/state/persistence/session-snapshot.test.js +0 -256
  167. package/dist/esm/state/persistence/stateful-restore.e2e.test.js +0 -158
  168. package/dist/esm/utils/animation-exclusivity.test.js +0 -52
  169. package/dist/esm/utils/collect-session-models.test.js +0 -53
  170. package/dist/esm/utils/condense-history.test.js +0 -547
  171. package/dist/esm/utils/cost-session-history.test.js +0 -174
  172. package/dist/esm/utils/derive-cost-session-title.test.js +0 -37
  173. package/dist/esm/utils/flatten-sub-agent-messages.test.js +0 -139
  174. package/dist/esm/utils/history-transform.test.js +0 -158
  175. package/dist/esm/utils/message-partition.test.js +0 -90
  176. package/dist/esm/utils/resolve-cost-history-config.test.js +0 -32
  177. package/dist/esm/utils/resolve-preference-baseline.test.js +0 -69
  178. package/dist/esm/utils/strip-agent-handlers.test.js +0 -81
  179. package/dist/esm/utils/sum-costs.test.js +0 -114
  180. package/dist/esm/utils/sum-tokens.test.js +0 -51
  181. package/dist/esm/utils/sum-usage.test.js +0 -164
  182. package/dist/esm/utils/usage-rows.test.js +0 -189
  183. package/dist/tsconfig.tsbuildinfo +0 -1
  184. package/license.txt +0 -46
  185. package/src/channel/ai-activity-bus.ts +0 -209
  186. package/src/channel/ai-activity-channel.ts +0 -146
  187. package/src/chat-driver-node.ts +0 -159
  188. package/src/components/activity-halo/activity-halo.ts +0 -106
  189. package/src/components/agent-picker/agent-picker.constants.ts +0 -2
  190. package/src/components/agent-picker/agent-picker.styles.ts +0 -74
  191. package/src/components/agent-picker/agent-picker.template.ts +0 -89
  192. package/src/components/agent-picker/agent-picker.ts +0 -148
  193. package/src/components/agent-picker/index.ts +0 -1
  194. package/src/components/ai-driver/ai-driver.ts +0 -166
  195. package/src/components/ai-driver/index.ts +0 -1
  196. package/src/components/chat-bubble/chat-bubble.styles.ts +0 -194
  197. package/src/components/chat-bubble/chat-bubble.template.ts +0 -67
  198. package/src/components/chat-bubble/chat-bubble.ts +0 -436
  199. package/src/components/chat-bubble/index.ts +0 -1
  200. package/src/components/chat-driver/align-event-globals.ts +0 -23
  201. package/src/components/chat-driver/chat-driver.compact.test.ts +0 -131
  202. package/src/components/chat-driver/chat-driver.invocation-scope.test.ts +0 -285
  203. package/src/components/chat-driver/chat-driver.test.ts +0 -3679
  204. package/src/components/chat-driver/chat-driver.thinking-policy.test.ts +0 -185
  205. package/src/components/chat-driver/chat-driver.trace-capture.test.ts +0 -251
  206. package/src/components/chat-driver/chat-driver.ts +0 -3925
  207. package/src/components/chat-driver/chat-driver.turn-usage.test.ts +0 -362
  208. package/src/components/chat-driver/index.ts +0 -1
  209. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts +0 -7
  210. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts +0 -6
  211. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.test.ts +0 -144
  212. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts +0 -243
  213. package/src/components/chat-interaction-wrapper/index.ts +0 -3
  214. package/src/components/chat-markdown/chat-markdown.ts +0 -89
  215. package/src/components/chat-markdown/index.ts +0 -1
  216. package/src/components/flowing-waves-indicator.ts +0 -286
  217. package/src/components/halo-overlay.ts +0 -184
  218. package/src/components/orchestrating-driver/index.ts +0 -1
  219. package/src/components/orchestrating-driver/orchestrating-driver.budget.test.ts +0 -438
  220. package/src/components/orchestrating-driver/orchestrating-driver.cost.test.ts +0 -107
  221. package/src/components/orchestrating-driver/orchestrating-driver.pin.test.ts +0 -96
  222. package/src/components/orchestrating-driver/orchestrating-driver.ts +0 -813
  223. package/src/components/plasma-orb-indicator.ts +0 -281
  224. package/src/components/popout-manager/index.ts +0 -1
  225. package/src/components/popout-manager/popout-manager.ts +0 -212
  226. package/src/components/settings-modal/index.ts +0 -2
  227. package/src/components/settings-modal/settings-modal.styles.test.ts +0 -94
  228. package/src/components/settings-modal/settings-modal.styles.ts +0 -853
  229. package/src/components/settings-modal/settings-modal.template.test.ts +0 -124
  230. package/src/components/settings-modal/settings-modal.template.ts +0 -943
  231. package/src/components/waves-indicator.ts +0 -241
  232. package/src/config/config.ts +0 -608
  233. package/src/config/define-stateful-agent.test.ts +0 -64
  234. package/src/config/define-stateful-agent.ts +0 -642
  235. package/src/config/fallback-agents.ts +0 -29
  236. package/src/config/index.ts +0 -2
  237. package/src/config/validate-providers.test.ts +0 -148
  238. package/src/config/validate-providers.ts +0 -58
  239. package/src/index.ts +0 -29
  240. package/src/main/blocked-state.test.ts +0 -1444
  241. package/src/main/budget-meter.test.ts +0 -477
  242. package/src/main/cost-session-banking.test.ts +0 -679
  243. package/src/main/file-attachments.test.ts +0 -215
  244. package/src/main/index.ts +0 -3
  245. package/src/main/interaction-cost.test.ts +0 -140
  246. package/src/main/main.styles.test.ts +0 -168
  247. package/src/main/main.styles.ts +0 -869
  248. package/src/main/main.template.ts +0 -1050
  249. package/src/main/main.ts +0 -5228
  250. package/src/main/main.types.ts +0 -225
  251. package/src/main/persistence-broken-sources.test.ts +0 -219
  252. package/src/main/popout-interaction-gate.test.ts +0 -87
  253. package/src/provider/ai-provider-switcher.ts +0 -40
  254. package/src/provider/assistant-app-settings.ts +0 -84
  255. package/src/state/ai-assistant-slice.test.ts +0 -336
  256. package/src/state/ai-assistant-slice.ts +0 -604
  257. package/src/state/debug-event-log.test.ts +0 -154
  258. package/src/state/debug-event-log.ts +0 -358
  259. package/src/state/driver-registry.test.ts +0 -70
  260. package/src/state/driver-registry.ts +0 -79
  261. package/src/state/interaction-context.test.ts +0 -90
  262. package/src/state/interaction-context.ts +0 -101
  263. package/src/state/persistence/build-timeline-entries.ts +0 -66
  264. package/src/state/persistence/diagnostics-cursors.test.ts +0 -53
  265. package/src/state/persistence/diagnostics-cursors.ts +0 -80
  266. package/src/state/persistence/diagnostics.test.ts +0 -346
  267. package/src/state/persistence/diagnostics.ts +0 -220
  268. package/src/state/persistence/index.ts +0 -10
  269. package/src/state/persistence/persister-registry.ts +0 -55
  270. package/src/state/persistence/session-persistence-provider.test.ts +0 -136
  271. package/src/state/persistence/session-persistence-provider.ts +0 -226
  272. package/src/state/persistence/session-persistence.integration.test.ts +0 -141
  273. package/src/state/persistence/session-persister.test.ts +0 -787
  274. package/src/state/persistence/session-persister.ts +0 -917
  275. package/src/state/persistence/session-snapshot.test.ts +0 -352
  276. package/src/state/persistence/session-snapshot.ts +0 -344
  277. package/src/state/persistence/stateful-restore.e2e.test.ts +0 -229
  278. package/src/state/session-store.ts +0 -56
  279. package/src/styles/ai-colours.ts +0 -9
  280. package/src/styles/settings-section.ts +0 -40
  281. package/src/suggestions/chat-suggestions.ts +0 -186
  282. package/src/tags/index.ts +0 -1
  283. package/src/types/ai-chat-widget.ts +0 -67
  284. package/src/types/interaction-context.ts +0 -82
  285. package/src/utils/animated-panel-toggle.ts +0 -62
  286. package/src/utils/animation-exclusivity.test.ts +0 -72
  287. package/src/utils/animation-exclusivity.ts +0 -40
  288. package/src/utils/banked-usage-baselines.ts +0 -90
  289. package/src/utils/collect-session-models.test.ts +0 -82
  290. package/src/utils/collect-session-models.ts +0 -65
  291. package/src/utils/condense-history.test.ts +0 -746
  292. package/src/utils/condense-history.ts +0 -448
  293. package/src/utils/cost-session-history.test.ts +0 -226
  294. package/src/utils/cost-session-history.ts +0 -218
  295. package/src/utils/derive-cost-session-title.test.ts +0 -63
  296. package/src/utils/derive-cost-session-title.ts +0 -76
  297. package/src/utils/flatten-sub-agent-messages.test.ts +0 -163
  298. package/src/utils/flatten-sub-agent-messages.ts +0 -88
  299. package/src/utils/format-usd.ts +0 -26
  300. package/src/utils/history-transform.test.ts +0 -228
  301. package/src/utils/history-transform.ts +0 -163
  302. package/src/utils/index.ts +0 -3
  303. package/src/utils/logger.ts +0 -3
  304. package/src/utils/message-partition.test.ts +0 -129
  305. package/src/utils/message-partition.ts +0 -115
  306. package/src/utils/resolve-cost-history-config.test.ts +0 -38
  307. package/src/utils/resolve-cost-history-config.ts +0 -38
  308. package/src/utils/resolve-preference-baseline.test.ts +0 -84
  309. package/src/utils/resolve-preference-baseline.ts +0 -80
  310. package/src/utils/strip-agent-handlers.test.ts +0 -99
  311. package/src/utils/strip-agent-handlers.ts +0 -53
  312. package/src/utils/sum-costs.test.ts +0 -136
  313. package/src/utils/sum-costs.ts +0 -18
  314. package/src/utils/sum-tokens.test.ts +0 -93
  315. package/src/utils/sum-tokens.ts +0 -68
  316. package/src/utils/sum-usage.test.ts +0 -191
  317. package/src/utils/sum-usage.ts +0 -208
  318. package/src/utils/tool-fold.ts +0 -181
  319. package/src/utils/usage-rows.test.ts +0 -237
  320. package/src/utils/usage-rows.ts +0 -187
  321. package/src/utils/with-timeout.ts +0 -24
  322. package/tsconfig.json +0 -9
@@ -291,7 +291,7 @@
291
291
  {
292
292
  "kind": "Variable",
293
293
  "canonicalReference": "@genesislcap/ai-assistant!AGENT_PICKER_AUTO_VALUE:var",
294
- "docComment": "/**\n * Sentinel value used by the segmented control / select to represent \"Auto\".\n */\n",
294
+ "docComment": "/**\n * Sentinel value representing \"Auto\" where a menu row needs a string value.\n */\n",
295
295
  "excerptTokens": [
296
296
  {
297
297
  "kind": "Content",
@@ -1398,7 +1398,7 @@
1398
1398
  {
1399
1399
  "kind": "Class",
1400
1400
  "canonicalReference": "@genesislcap/ai-assistant!AgentPicker:class",
1401
- "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\n *\n * agent-pinned - Fired when the user changes selection with the agent name or `null` for Auto. detail: `string | null`\n *\n * @beta\n */\n",
1401
+ "docComment": "/**\n * The agent menu shown from the composer's agent button.\n *\n * Renders `Auto` plus each top-level agent with `manualSelection.enabled`, one row apiece, tinted with the same pin colour the composer button shows once that agent is pinned. Sub-agents and non-selectable specialists are excluded. Hidden when fewer than two agents are configured or none are manually selectable.\n *\n * The rows are all this element owns. The panel around them — surface, border, position, open/close animation — belongs to the assistant, which renders this menu and the session (⋮) menu into the same container so the two match.\n *\n * @fires\n *\n * agent-pinned - Fired when the user changes selection with the agent name or `null` for Auto. detail: `string | null`\n *\n * @beta\n */\n",
1402
1402
  "excerptTokens": [
1403
1403
  {
1404
1404
  "kind": "Content",
@@ -1455,72 +1455,10 @@
1455
1455
  "isProtected": false,
1456
1456
  "isAbstract": false
1457
1457
  },
1458
- {
1459
- "kind": "Method",
1460
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#agentsChanged:member(1)",
1461
- "docComment": "/**\n * Re-measure when agents change — newly added selectable agents may push the segmented row past the container's width.\n */\n",
1462
- "excerptTokens": [
1463
- {
1464
- "kind": "Content",
1465
- "text": "agentsChanged(): "
1466
- },
1467
- {
1468
- "kind": "Content",
1469
- "text": "void"
1470
- },
1471
- {
1472
- "kind": "Content",
1473
- "text": ";"
1474
- }
1475
- ],
1476
- "isStatic": false,
1477
- "returnTypeTokenRange": {
1478
- "startIndex": 1,
1479
- "endIndex": 2
1480
- },
1481
- "releaseTag": "Beta",
1482
- "isProtected": false,
1483
- "overloadIndex": 1,
1484
- "parameters": [],
1485
- "isOptional": false,
1486
- "isAbstract": false,
1487
- "name": "agentsChanged"
1488
- },
1489
- {
1490
- "kind": "Method",
1491
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#connectedCallback:member(1)",
1492
- "docComment": "",
1493
- "excerptTokens": [
1494
- {
1495
- "kind": "Content",
1496
- "text": "connectedCallback(): "
1497
- },
1498
- {
1499
- "kind": "Content",
1500
- "text": "void"
1501
- },
1502
- {
1503
- "kind": "Content",
1504
- "text": ";"
1505
- }
1506
- ],
1507
- "isStatic": false,
1508
- "returnTypeTokenRange": {
1509
- "startIndex": 1,
1510
- "endIndex": 2
1511
- },
1512
- "releaseTag": "Beta",
1513
- "isProtected": false,
1514
- "overloadIndex": 1,
1515
- "parameters": [],
1516
- "isOptional": false,
1517
- "isAbstract": false,
1518
- "name": "connectedCallback"
1519
- },
1520
1458
  {
1521
1459
  "kind": "Property",
1522
1460
  "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#currentValue:member",
1523
- "docComment": "/**\n * Current pinned agent name as a value the segmented-control / select can bind to.\n */\n",
1461
+ "docComment": "/**\n * Current pinned agent name as a bindable value.\n */\n",
1524
1462
  "excerptTokens": [
1525
1463
  {
1526
1464
  "kind": "Content",
@@ -1549,16 +1487,16 @@
1549
1487
  },
1550
1488
  {
1551
1489
  "kind": "Property",
1552
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#designSystemPrefix:member",
1553
- "docComment": "/**\n * Design-system tag prefix, e.g. `'rapid'` for `rapid-segmented-control`.\n */\n",
1490
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#disablePinColours:member",
1491
+ "docComment": "/**\n * When true, rows show a neutral dot instead of the per-agent brand tint.\n */\n",
1554
1492
  "excerptTokens": [
1555
1493
  {
1556
1494
  "kind": "Content",
1557
- "text": "designSystemPrefix: "
1495
+ "text": "disablePinColours: "
1558
1496
  },
1559
1497
  {
1560
1498
  "kind": "Content",
1561
- "text": "string"
1499
+ "text": "boolean"
1562
1500
  },
1563
1501
  {
1564
1502
  "kind": "Content",
@@ -1568,7 +1506,7 @@
1568
1506
  "isReadonly": false,
1569
1507
  "isOptional": false,
1570
1508
  "releaseTag": "Beta",
1571
- "name": "designSystemPrefix",
1509
+ "name": "disablePinColours",
1572
1510
  "propertyTypeTokenRange": {
1573
1511
  "startIndex": 1,
1574
1512
  "endIndex": 2
@@ -1579,16 +1517,25 @@
1579
1517
  },
1580
1518
  {
1581
1519
  "kind": "Method",
1582
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#disconnectedCallback:member(1)",
1583
- "docComment": "",
1520
+ "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#markStyleFor:member(1)",
1521
+ "docComment": "/**\n * Inline `--menu-item-mark` for one row, or `''` to leave the dot neutral.\n *\n * Indexed against the FULL agents array rather than `selectableAgents` so a row's tint matches what the composer button shows when that agent is pinned — the assistant resolves its pin colour the same way, and the two disagreeing is exactly the bug this shares `pinColourAt` to avoid.\n */\n",
1584
1522
  "excerptTokens": [
1585
1523
  {
1586
1524
  "kind": "Content",
1587
- "text": "disconnectedCallback(): "
1525
+ "text": "markStyleFor(agent: "
1526
+ },
1527
+ {
1528
+ "kind": "Reference",
1529
+ "text": "AgentConfig",
1530
+ "canonicalReference": "@genesislcap/ai-assistant!AgentConfig:type"
1588
1531
  },
1589
1532
  {
1590
1533
  "kind": "Content",
1591
- "text": "void"
1534
+ "text": "): "
1535
+ },
1536
+ {
1537
+ "kind": "Content",
1538
+ "text": "string"
1592
1539
  },
1593
1540
  {
1594
1541
  "kind": "Content",
@@ -1597,51 +1544,30 @@
1597
1544
  ],
1598
1545
  "isStatic": false,
1599
1546
  "returnTypeTokenRange": {
1600
- "startIndex": 1,
1601
- "endIndex": 2
1547
+ "startIndex": 3,
1548
+ "endIndex": 4
1602
1549
  },
1603
1550
  "releaseTag": "Beta",
1604
1551
  "isProtected": false,
1605
1552
  "overloadIndex": 1,
1606
- "parameters": [],
1607
- "isOptional": false,
1608
- "isAbstract": false,
1609
- "name": "disconnectedCallback"
1610
- },
1611
- {
1612
- "kind": "Property",
1613
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#effectiveMode:member",
1614
- "docComment": "/**\n * The variant actually rendered: `'select'` if user-configured or if the segmented row currently overflows; `'segmented-control'` otherwise.\n */\n",
1615
- "excerptTokens": [
1616
- {
1617
- "kind": "Content",
1618
- "text": "get effectiveMode(): "
1619
- },
1620
- {
1621
- "kind": "Content",
1622
- "text": "'select' | 'segmented-control'"
1623
- },
1553
+ "parameters": [
1624
1554
  {
1625
- "kind": "Content",
1626
- "text": ";"
1555
+ "parameterName": "agent",
1556
+ "parameterTypeTokenRange": {
1557
+ "startIndex": 1,
1558
+ "endIndex": 2
1559
+ },
1560
+ "isOptional": false
1627
1561
  }
1628
1562
  ],
1629
- "isReadonly": true,
1630
1563
  "isOptional": false,
1631
- "releaseTag": "Beta",
1632
- "name": "effectiveMode",
1633
- "propertyTypeTokenRange": {
1634
- "startIndex": 1,
1635
- "endIndex": 2
1636
- },
1637
- "isStatic": false,
1638
- "isProtected": false,
1639
- "isAbstract": false
1564
+ "isAbstract": false,
1565
+ "name": "markStyleFor"
1640
1566
  },
1641
1567
  {
1642
1568
  "kind": "Property",
1643
1569
  "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#mode:member",
1644
- "docComment": "/**\n * Picker variant, sourced from the assistant's `chatConfig.agentPicker`.\n */\n",
1570
+ "docComment": "/**\n * Picker variant, sourced from the assistant's `chatConfig.picker.mode`. `'disabled'` hides the picker; every other value renders the same menu — `'select'` and `'segmented-control'` are retained so existing configuration stays valid, but no longer select between two layouts.\n */\n",
1645
1571
  "excerptTokens": [
1646
1572
  {
1647
1573
  "kind": "Content",
@@ -1669,37 +1595,6 @@
1669
1595
  "isProtected": false,
1670
1596
  "isAbstract": false
1671
1597
  },
1672
- {
1673
- "kind": "Method",
1674
- "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#modeChanged:member(1)",
1675
- "docComment": "",
1676
- "excerptTokens": [
1677
- {
1678
- "kind": "Content",
1679
- "text": "modeChanged(): "
1680
- },
1681
- {
1682
- "kind": "Content",
1683
- "text": "void"
1684
- },
1685
- {
1686
- "kind": "Content",
1687
- "text": ";"
1688
- }
1689
- ],
1690
- "isStatic": false,
1691
- "returnTypeTokenRange": {
1692
- "startIndex": 1,
1693
- "endIndex": 2
1694
- },
1695
- "releaseTag": "Beta",
1696
- "isProtected": false,
1697
- "overloadIndex": 1,
1698
- "parameters": [],
1699
- "isOptional": false,
1700
- "isAbstract": false,
1701
- "name": "modeChanged"
1702
- },
1703
1598
  {
1704
1599
  "kind": "Property",
1705
1600
  "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#pinnedAgentName:member",
@@ -1816,7 +1711,7 @@
1816
1711
  {
1817
1712
  "kind": "Method",
1818
1713
  "canonicalReference": "@genesislcap/ai-assistant!AgentPicker#selectByValue:member(1)",
1819
- "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",
1714
+ "docComment": "/**\n * Maps a value using {@link AGENT_PICKER_AUTO_VALUE} for Auto back to the `string | null` form {@link AgentPicker.selectAgent} expects. Retained for hosts driving the picker from a value rather than a name.\n */\n",
1820
1715
  "excerptTokens": [
1821
1716
  {
1822
1717
  "kind": "Content",
@@ -7462,6 +7357,36 @@
7462
7357
  "isProtected": false,
7463
7358
  "isAbstract": false
7464
7359
  },
7360
+ {
7361
+ "kind": "Property",
7362
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agentButtonLabel:member",
7363
+ "docComment": "/**\n * Label beside the composer's agent glyph: `AUTO` while the orchestrator is routing, otherwise the pinned agent's name. The name is NOT shortened here — the button truncates with an ellipsis in CSS, so the full name stays available to a screen reader and to the `title` tooltip.\n */\n",
7364
+ "excerptTokens": [
7365
+ {
7366
+ "kind": "Content",
7367
+ "text": "get agentButtonLabel(): "
7368
+ },
7369
+ {
7370
+ "kind": "Content",
7371
+ "text": "string"
7372
+ },
7373
+ {
7374
+ "kind": "Content",
7375
+ "text": ";"
7376
+ }
7377
+ ],
7378
+ "isReadonly": true,
7379
+ "isOptional": false,
7380
+ "releaseTag": "Beta",
7381
+ "name": "agentButtonLabel",
7382
+ "propertyTypeTokenRange": {
7383
+ "startIndex": 1,
7384
+ "endIndex": 2
7385
+ },
7386
+ "isStatic": false,
7387
+ "isProtected": false,
7388
+ "isAbstract": false
7389
+ },
7465
7390
  {
7466
7391
  "kind": "Property",
7467
7392
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#agentPicker:member",
@@ -11185,6 +11110,36 @@
11185
11110
  "isProtected": false,
11186
11111
  "isAbstract": false
11187
11112
  },
11113
+ {
11114
+ "kind": "Property",
11115
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#sendButtonVisible:member",
11116
+ "docComment": "/**\n * Whether Send is rendered at all. Hidden exactly when Stop has taken its place — so a host that suppressed Stop via `hideStopButton` keeps Send throughout, disabled for the duration, and the slot is never left empty mid-turn.\n */\n",
11117
+ "excerptTokens": [
11118
+ {
11119
+ "kind": "Content",
11120
+ "text": "get sendButtonVisible(): "
11121
+ },
11122
+ {
11123
+ "kind": "Content",
11124
+ "text": "boolean"
11125
+ },
11126
+ {
11127
+ "kind": "Content",
11128
+ "text": ";"
11129
+ }
11130
+ ],
11131
+ "isReadonly": true,
11132
+ "isOptional": false,
11133
+ "releaseTag": "Beta",
11134
+ "name": "sendButtonVisible",
11135
+ "propertyTypeTokenRange": {
11136
+ "startIndex": 1,
11137
+ "endIndex": 2
11138
+ },
11139
+ "isStatic": false,
11140
+ "isProtected": false,
11141
+ "isAbstract": false
11142
+ },
11188
11143
  {
11189
11144
  "kind": "Property",
11190
11145
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#sessionCostUsd:member",
@@ -13024,6 +12979,36 @@
13024
12979
  "isProtected": false,
13025
12980
  "isAbstract": false
13026
12981
  },
12982
+ {
12983
+ "kind": "Property",
12984
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#stopButtonVisible:member",
12985
+ "docComment": "/**\n * Whether the Stop control is showing.\n *\n * While a turn runs Stop REPLACES Send rather than sitting beside it: the two are mutually exclusive actions, and a disabled Send next to a live Stop just gives the eye a dead control to skip past. Reads `busy`, so `cancelling` keeps it up (in its \"Stopping…\" state) until the turn actually winds down.\n */\n",
12986
+ "excerptTokens": [
12987
+ {
12988
+ "kind": "Content",
12989
+ "text": "get stopButtonVisible(): "
12990
+ },
12991
+ {
12992
+ "kind": "Content",
12993
+ "text": "boolean"
12994
+ },
12995
+ {
12996
+ "kind": "Content",
12997
+ "text": ";"
12998
+ }
12999
+ ],
13000
+ "isReadonly": true,
13001
+ "isOptional": false,
13002
+ "releaseTag": "Beta",
13003
+ "name": "stopButtonVisible",
13004
+ "propertyTypeTokenRange": {
13005
+ "startIndex": 1,
13006
+ "endIndex": 2
13007
+ },
13008
+ "isStatic": false,
13009
+ "isProtected": false,
13010
+ "isAbstract": false
13011
+ },
13027
13012
  {
13028
13013
  "kind": "Method",
13029
13014
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#submitMessage:member(1)",
@@ -38,7 +38,7 @@ export declare interface ActivityBus {
38
38
  publish<K extends keyof AgenticActivityEvents>(type: K, detail: AgenticActivityEvents[K]): void;
39
39
  }
40
40
 
41
- /** Sentinel value used by the segmented control / select to represent "Auto". */
41
+ /** Sentinel value representing "Auto" where a menu row needs a string value. */
42
42
  export declare const AGENT_PICKER_AUTO_VALUE = "__auto__";
43
43
 
44
44
  /**
@@ -348,11 +348,17 @@ export declare interface AgentPersistenceContext {
348
348
  }
349
349
 
350
350
  /**
351
- * User-facing agent picker rendered above the chat input.
351
+ * The agent menu shown from the composer's agent button.
352
352
  *
353
- * Renders `Auto` plus each top-level agent that has `manualSelection.enabled`.
354
- * Sub-agents and non-selectable specialists are excluded. Hidden when fewer
355
- * than two agents are configured or none are manually selectable.
353
+ * Renders `Auto` plus each top-level agent with `manualSelection.enabled`, one
354
+ * row apiece, tinted with the same pin colour the composer button shows once
355
+ * that agent is pinned. Sub-agents and non-selectable specialists are excluded.
356
+ * Hidden when fewer than two agents are configured or none are manually
357
+ * selectable.
358
+ *
359
+ * The rows are all this element owns. The panel around them — surface, border,
360
+ * position, open/close animation — belongs to the assistant, which renders this
361
+ * menu and the session (⋮) menu into the same container so the two match.
356
362
  *
357
363
  * @fires agent-pinned - Fired when the user changes selection with the
358
364
  * agent name or `null` for Auto. detail: `string | null`
@@ -360,54 +366,40 @@ export declare interface AgentPersistenceContext {
360
366
  * @beta
361
367
  */
362
368
  export declare class AgentPicker extends GenesisElement {
363
- /** Design-system tag prefix, e.g. `'rapid'` for `rapid-segmented-control`. */
364
- designSystemPrefix: string;
365
- /** Picker variant, sourced from the assistant's `chatConfig.agentPicker`. */
369
+ /**
370
+ * Picker variant, sourced from the assistant's `chatConfig.picker.mode`.
371
+ * `'disabled'` hides the picker; every other value renders the same menu —
372
+ * `'select'` and `'segmented-control'` are retained so existing configuration
373
+ * stays valid, but no longer select between two layouts.
374
+ */
366
375
  mode: AgentPickerMode;
367
376
  /** Top-level agents passed to the assistant. */
368
377
  agents: AgentConfig[];
369
378
  /** Currently pinned agent name, or `null` for Auto. */
370
379
  pinnedAgentName: string | null;
371
- /** @internal — set via the template `${ref(...)}` binding. */
372
- segmentedRowEl?: HTMLElement;
373
- /**
374
- * @internal — true when the segmented row's content overflows its container.
375
- * Drives the fallback to `select` rendering. Only meaningful when
376
- * `mode === 'segmented-control'`.
377
- */
378
- overflowing: boolean;
379
- private resizeObserver?;
380
+ /** When true, rows show a neutral dot instead of the per-agent brand tint. */
381
+ disablePinColours: boolean;
380
382
  /** Top-level agents that opted in to manual selection. */
381
383
  get selectableAgents(): AgentConfig[];
382
384
  /** Whether the picker should render at all. */
383
385
  get visible(): boolean;
384
386
  /**
385
- * The variant actually rendered: `'select'` if user-configured or if the
386
- * segmented row currently overflows; `'segmented-control'` otherwise.
387
- */
388
- get effectiveMode(): 'select' | 'segmented-control';
389
- connectedCallback(): void;
390
- disconnectedCallback(): void;
391
- /**
392
- * Re-measure when agents change — newly added selectable agents may push the
393
- * segmented row past the container's width.
394
- */
395
- agentsChanged(): void;
396
- modeChanged(): void;
397
- /**
398
- * Measures whether the segmented row's natural content width exceeds the
399
- * container's visible width. Bails when the row isn't currently rendered
400
- * (e.g. when `mode !== 'segmented-control'`).
387
+ * Inline `--menu-item-mark` for one row, or `''` to leave the dot neutral.
388
+ *
389
+ * Indexed against the FULL agents array rather than `selectableAgents` so a
390
+ * row's tint matches what the composer button shows when that agent is
391
+ * pinned — the assistant resolves its pin colour the same way, and the two
392
+ * disagreeing is exactly the bug this shares `pinColourAt` to avoid.
401
393
  */
402
- private measureOverflow;
394
+ markStyleFor(agent: AgentConfig): string;
403
395
  selectAgent(name: string | null): void;
404
396
  /**
405
- * Maps a value from the segmented-control or select (which uses
406
- * {@link AGENT_PICKER_AUTO_VALUE} for Auto) back to the `string | null` form
407
- * expected by `selectAgent`.
397
+ * Maps a value using {@link AGENT_PICKER_AUTO_VALUE} for Auto back to the
398
+ * `string | null` form {@link AgentPicker.selectAgent} expects. Retained for
399
+ * hosts driving the picker from a value rather than a name.
408
400
  */
409
401
  selectByValue(value: string): void;
410
- /** Current pinned agent name as a value the segmented-control / select can bind to. */
402
+ /** Current pinned agent name as a bindable value. */
411
403
  get currentValue(): string;
412
404
  }
413
405
 
@@ -3742,6 +3734,51 @@ export declare class FoundationAiAssistant extends GenesisElement {
3742
3734
  * shared across pop-in/pop-out and survives driver rebuilds.
3743
3735
  */
3744
3736
  private logMeta;
3737
+ /**
3738
+ * Document-level dismissal for whichever composer menu is open. Bound only
3739
+ * while one IS open — a permanently-attached listener on a component that can
3740
+ * be mounted twice (bubble + popout panel) is a cost every click on the page
3741
+ * pays for a menu that is usually closed.
3742
+ *
3743
+ * Uses `composedPath()` rather than `event.target`: the click lands on a node
3744
+ * inside this element's shadow root, which retargets to the host, so a plain
3745
+ * `contains()` check cannot tell "clicked the menu" from "clicked the
3746
+ * transcript". The path crosses the boundary and carries both.
3747
+ */
3748
+ private _dismissPointerHandler?;
3749
+ private _dismissKeyHandler?;
3750
+ private _dismissResizeHandler?;
3751
+ private closeOpenComposerMenus;
3752
+ /**
3753
+ * Places an open composer menu directly above the control that opened it.
3754
+ *
3755
+ * CSS alone cannot: the menu is a child of `.composer` — which is what lets its
3756
+ * width be capped against the composer rather than against a button — while its
3757
+ * anchor is a button several levels down the bar, and no selector can read a
3758
+ * sibling's offset. So the left edge is measured on open and written as a
3759
+ * custom property.
3760
+ *
3761
+ * Clamped to the composer, so a menu opened from a control near the right edge
3762
+ * of a narrow panel slides back inside instead of overhanging. The animation
3763
+ * origin is written separately and keeps pointing at the button's centre even
3764
+ * after such a shift — the menu still grows out of the thing that opened it,
3765
+ * which is the whole point of anchoring it there.
3766
+ */
3767
+ private positionComposerMenu;
3768
+ /** Re-place whichever menu is open. Cheap enough to run from a resize. */
3769
+ private repositionOpenComposerMenu;
3770
+ private syncComposerMenuDismissal;
3771
+ private teardownComposerMenuDismissal;
3772
+ /**
3773
+ * Vertical space an open menu must leave free above the button, covering BOTH
3774
+ * the gap the menu sits off the button by (8px, declared in design units in
3775
+ * main.styles.ts) and the breathing room wanted above it. The two are lumped
3776
+ * together because only the second half is a free choice: the first is fixed by
3777
+ * the stylesheet and simply has to be subtracted from the headroom, and a
3778
+ * constant named for only one of them invites someone to "fix" a gap that is
3779
+ * doing exactly what it should.
3780
+ */
3781
+ private static readonly MENU_HEADROOM_RESERVE;
3745
3782
  private readonly _agentPickerToggle;
3746
3783
  toggleAgentPicker(): void;
3747
3784
  /** Two-step confirm for the destructive Clear action; reset whenever the menu toggles. */
@@ -3974,6 +4011,13 @@ export declare class FoundationAiAssistant extends GenesisElement {
3974
4011
  * via `chatConfig.picker.disablePinColours`.
3975
4012
  */
3976
4013
  get pinnedAgentColour(): string | undefined;
4014
+ /**
4015
+ * Label beside the composer's agent glyph: `AUTO` while the orchestrator is
4016
+ * routing, otherwise the pinned agent's name. The name is NOT shortened here —
4017
+ * the button truncates with an ellipsis in CSS, so the full name stays
4018
+ * available to a screen reader and to the `title` tooltip.
4019
+ */
4020
+ get agentButtonLabel(): string;
3977
4021
  /**
3978
4022
  * Placeholder shown in the chat input. Substitutes the pinned agent's name
3979
4023
  * when one is selected so the user has a clearer signal of where their
@@ -4177,6 +4221,22 @@ export declare class FoundationAiAssistant extends GenesisElement {
4177
4221
  * @internal
4178
4222
  */
4179
4223
  getInteractionContext(interactionId: string): InteractionContext | undefined;
4224
+ /**
4225
+ * Whether the Stop control is showing.
4226
+ *
4227
+ * While a turn runs Stop REPLACES Send rather than sitting beside it: the two
4228
+ * are mutually exclusive actions, and a disabled Send next to a live Stop just
4229
+ * gives the eye a dead control to skip past. Reads `busy`, so `cancelling`
4230
+ * keeps it up (in its "Stopping…" state) until the turn actually winds down.
4231
+ */
4232
+ get stopButtonVisible(): boolean;
4233
+ /**
4234
+ * Whether Send is rendered at all. Hidden exactly when Stop has taken its
4235
+ * place — so a host that suppressed Stop via `hideStopButton` keeps Send
4236
+ * throughout, disabled for the duration, and the slot is never left empty
4237
+ * mid-turn.
4238
+ */
4239
+ get sendButtonVisible(): boolean;
4180
4240
  /** Whether the message input shows a drag handle to resize its height.
4181
4241
  * On by default; hosts opt out via `chatConfig.ui.resizableInput: false`. */
4182
4242
  get isComposerResizable(): boolean;