@genesislcap/ai-assistant 15.13.1 → 15.14.0-DCD-4786.2

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 (275) hide show
  1. package/dist/ai-assistant.d.ts +31 -13
  2. package/dist/dts/main/main.d.ts +31 -13
  3. package/dist/dts/main/main.d.ts.map +1 -1
  4. package/dist/esm/main/main.js +106 -27
  5. package/docs/migration-GENC-1464.md +19 -8
  6. package/package.json +17 -18
  7. package/api-extractor.json +0 -11
  8. package/dist/dts/components/chat-driver/chat-driver.compact.test.d.ts +0 -2
  9. package/dist/dts/components/chat-driver/chat-driver.compact.test.d.ts.map +0 -1
  10. package/dist/dts/components/chat-driver/chat-driver.invocation-scope.test.d.ts +0 -2
  11. package/dist/dts/components/chat-driver/chat-driver.invocation-scope.test.d.ts.map +0 -1
  12. package/dist/dts/components/chat-driver/chat-driver.test.d.ts +0 -2
  13. package/dist/dts/components/chat-driver/chat-driver.test.d.ts.map +0 -1
  14. package/dist/dts/components/chat-driver/chat-driver.thinking-policy.test.d.ts +0 -2
  15. package/dist/dts/components/chat-driver/chat-driver.thinking-policy.test.d.ts.map +0 -1
  16. package/dist/dts/components/chat-driver/chat-driver.trace-capture.test.d.ts +0 -2
  17. package/dist/dts/components/chat-driver/chat-driver.trace-capture.test.d.ts.map +0 -1
  18. package/dist/dts/components/chat-driver/chat-driver.turn-usage.test.d.ts +0 -2
  19. package/dist/dts/components/chat-driver/chat-driver.turn-usage.test.d.ts.map +0 -1
  20. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.test.d.ts +0 -2
  21. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.test.d.ts.map +0 -1
  22. package/dist/dts/components/orchestrating-driver/orchestrating-driver.budget.test.d.ts +0 -2
  23. package/dist/dts/components/orchestrating-driver/orchestrating-driver.budget.test.d.ts.map +0 -1
  24. package/dist/dts/components/orchestrating-driver/orchestrating-driver.pin.test.d.ts +0 -2
  25. package/dist/dts/components/orchestrating-driver/orchestrating-driver.pin.test.d.ts.map +0 -1
  26. package/dist/dts/components/settings-modal/settings-modal.styles.test.d.ts +0 -2
  27. package/dist/dts/components/settings-modal/settings-modal.styles.test.d.ts.map +0 -1
  28. package/dist/dts/components/settings-modal/settings-modal.template.test.d.ts +0 -2
  29. package/dist/dts/components/settings-modal/settings-modal.template.test.d.ts.map +0 -1
  30. package/dist/dts/config/define-stateful-agent.test.d.ts +0 -2
  31. package/dist/dts/config/define-stateful-agent.test.d.ts.map +0 -1
  32. package/dist/dts/config/validate-providers.test.d.ts +0 -2
  33. package/dist/dts/config/validate-providers.test.d.ts.map +0 -1
  34. package/dist/dts/main/blocked-state.test.d.ts +0 -2
  35. package/dist/dts/main/blocked-state.test.d.ts.map +0 -1
  36. package/dist/dts/main/budget-meter.test.d.ts +0 -2
  37. package/dist/dts/main/budget-meter.test.d.ts.map +0 -1
  38. package/dist/dts/main/cost-session-banking.test.d.ts +0 -2
  39. package/dist/dts/main/cost-session-banking.test.d.ts.map +0 -1
  40. package/dist/dts/main/main.styles.test.d.ts +0 -2
  41. package/dist/dts/main/main.styles.test.d.ts.map +0 -1
  42. package/dist/dts/main/popout-interaction-gate.test.d.ts +0 -2
  43. package/dist/dts/main/popout-interaction-gate.test.d.ts.map +0 -1
  44. package/dist/dts/state/ai-assistant-slice.test.d.ts +0 -2
  45. package/dist/dts/state/ai-assistant-slice.test.d.ts.map +0 -1
  46. package/dist/dts/state/debug-event-log.test.d.ts +0 -2
  47. package/dist/dts/state/debug-event-log.test.d.ts.map +0 -1
  48. package/dist/dts/state/driver-registry.test.d.ts +0 -2
  49. package/dist/dts/state/driver-registry.test.d.ts.map +0 -1
  50. package/dist/dts/state/interaction-context.test.d.ts +0 -2
  51. package/dist/dts/state/interaction-context.test.d.ts.map +0 -1
  52. package/dist/dts/state/persistence/diagnostics-cursors.test.d.ts +0 -2
  53. package/dist/dts/state/persistence/diagnostics-cursors.test.d.ts.map +0 -1
  54. package/dist/dts/state/persistence/diagnostics.test.d.ts +0 -2
  55. package/dist/dts/state/persistence/diagnostics.test.d.ts.map +0 -1
  56. package/dist/dts/state/persistence/session-persistence-provider.test.d.ts +0 -2
  57. package/dist/dts/state/persistence/session-persistence-provider.test.d.ts.map +0 -1
  58. package/dist/dts/state/persistence/session-persistence.integration.test.d.ts +0 -2
  59. package/dist/dts/state/persistence/session-persistence.integration.test.d.ts.map +0 -1
  60. package/dist/dts/state/persistence/session-persister.test.d.ts +0 -2
  61. package/dist/dts/state/persistence/session-persister.test.d.ts.map +0 -1
  62. package/dist/dts/state/persistence/session-snapshot.test.d.ts +0 -2
  63. package/dist/dts/state/persistence/session-snapshot.test.d.ts.map +0 -1
  64. package/dist/dts/state/persistence/stateful-restore.e2e.test.d.ts +0 -2
  65. package/dist/dts/state/persistence/stateful-restore.e2e.test.d.ts.map +0 -1
  66. package/dist/dts/utils/animation-exclusivity.test.d.ts +0 -2
  67. package/dist/dts/utils/animation-exclusivity.test.d.ts.map +0 -1
  68. package/dist/dts/utils/collect-session-models.test.d.ts +0 -2
  69. package/dist/dts/utils/collect-session-models.test.d.ts.map +0 -1
  70. package/dist/dts/utils/condense-history.test.d.ts +0 -2
  71. package/dist/dts/utils/condense-history.test.d.ts.map +0 -1
  72. package/dist/dts/utils/cost-session-history.test.d.ts +0 -2
  73. package/dist/dts/utils/cost-session-history.test.d.ts.map +0 -1
  74. package/dist/dts/utils/derive-cost-session-title.test.d.ts +0 -2
  75. package/dist/dts/utils/derive-cost-session-title.test.d.ts.map +0 -1
  76. package/dist/dts/utils/flatten-sub-agent-messages.test.d.ts +0 -2
  77. package/dist/dts/utils/flatten-sub-agent-messages.test.d.ts.map +0 -1
  78. package/dist/dts/utils/history-transform.test.d.ts +0 -2
  79. package/dist/dts/utils/history-transform.test.d.ts.map +0 -1
  80. package/dist/dts/utils/message-partition.test.d.ts +0 -2
  81. package/dist/dts/utils/message-partition.test.d.ts.map +0 -1
  82. package/dist/dts/utils/resolve-cost-history-config.test.d.ts +0 -2
  83. package/dist/dts/utils/resolve-cost-history-config.test.d.ts.map +0 -1
  84. package/dist/dts/utils/resolve-preference-baseline.test.d.ts +0 -2
  85. package/dist/dts/utils/resolve-preference-baseline.test.d.ts.map +0 -1
  86. package/dist/dts/utils/strip-agent-handlers.test.d.ts +0 -2
  87. package/dist/dts/utils/strip-agent-handlers.test.d.ts.map +0 -1
  88. package/dist/dts/utils/sum-costs.test.d.ts +0 -2
  89. package/dist/dts/utils/sum-costs.test.d.ts.map +0 -1
  90. package/dist/dts/utils/sum-tokens.test.d.ts +0 -2
  91. package/dist/dts/utils/sum-tokens.test.d.ts.map +0 -1
  92. package/dist/dts/utils/sum-usage.test.d.ts +0 -2
  93. package/dist/dts/utils/sum-usage.test.d.ts.map +0 -1
  94. package/dist/dts/utils/usage-rows.test.d.ts +0 -2
  95. package/dist/dts/utils/usage-rows.test.d.ts.map +0 -1
  96. package/dist/esm/components/chat-driver/chat-driver.compact.test.js +0 -93
  97. package/dist/esm/components/chat-driver/chat-driver.invocation-scope.test.js +0 -238
  98. package/dist/esm/components/chat-driver/chat-driver.test.js +0 -2471
  99. package/dist/esm/components/chat-driver/chat-driver.thinking-policy.test.js +0 -137
  100. package/dist/esm/components/chat-driver/chat-driver.trace-capture.test.js +0 -200
  101. package/dist/esm/components/chat-driver/chat-driver.turn-usage.test.js +0 -268
  102. package/dist/esm/components/chat-interaction-wrapper/chat-interaction-wrapper.test.js +0 -104
  103. package/dist/esm/components/orchestrating-driver/orchestrating-driver.budget.test.js +0 -312
  104. package/dist/esm/components/orchestrating-driver/orchestrating-driver.pin.test.js +0 -61
  105. package/dist/esm/components/settings-modal/settings-modal.styles.test.js +0 -80
  106. package/dist/esm/components/settings-modal/settings-modal.template.test.js +0 -91
  107. package/dist/esm/config/define-stateful-agent.test.js +0 -53
  108. package/dist/esm/config/validate-providers.test.js +0 -100
  109. package/dist/esm/main/blocked-state.test.js +0 -1014
  110. package/dist/esm/main/budget-meter.test.js +0 -359
  111. package/dist/esm/main/cost-session-banking.test.js +0 -538
  112. package/dist/esm/main/main.styles.test.js +0 -126
  113. package/dist/esm/main/popout-interaction-gate.test.js +0 -54
  114. package/dist/esm/state/ai-assistant-slice.test.js +0 -229
  115. package/dist/esm/state/debug-event-log.test.js +0 -115
  116. package/dist/esm/state/driver-registry.test.js +0 -55
  117. package/dist/esm/state/interaction-context.test.js +0 -78
  118. package/dist/esm/state/persistence/diagnostics-cursors.test.js +0 -30
  119. package/dist/esm/state/persistence/diagnostics.test.js +0 -280
  120. package/dist/esm/state/persistence/session-persistence-provider.test.js +0 -110
  121. package/dist/esm/state/persistence/session-persistence.integration.test.js +0 -113
  122. package/dist/esm/state/persistence/session-persister.test.js +0 -379
  123. package/dist/esm/state/persistence/session-snapshot.test.js +0 -256
  124. package/dist/esm/state/persistence/stateful-restore.e2e.test.js +0 -158
  125. package/dist/esm/utils/animation-exclusivity.test.js +0 -52
  126. package/dist/esm/utils/collect-session-models.test.js +0 -53
  127. package/dist/esm/utils/condense-history.test.js +0 -480
  128. package/dist/esm/utils/cost-session-history.test.js +0 -174
  129. package/dist/esm/utils/derive-cost-session-title.test.js +0 -37
  130. package/dist/esm/utils/flatten-sub-agent-messages.test.js +0 -139
  131. package/dist/esm/utils/history-transform.test.js +0 -137
  132. package/dist/esm/utils/message-partition.test.js +0 -90
  133. package/dist/esm/utils/resolve-cost-history-config.test.js +0 -32
  134. package/dist/esm/utils/resolve-preference-baseline.test.js +0 -69
  135. package/dist/esm/utils/strip-agent-handlers.test.js +0 -81
  136. package/dist/esm/utils/sum-costs.test.js +0 -114
  137. package/dist/esm/utils/sum-tokens.test.js +0 -51
  138. package/dist/esm/utils/sum-usage.test.js +0 -164
  139. package/dist/esm/utils/usage-rows.test.js +0 -189
  140. package/dist/tsconfig.tsbuildinfo +0 -1
  141. package/license.txt +0 -46
  142. package/src/channel/ai-activity-bus.ts +0 -209
  143. package/src/channel/ai-activity-channel.ts +0 -146
  144. package/src/chat-driver-node.ts +0 -142
  145. package/src/components/activity-halo/activity-halo.ts +0 -106
  146. package/src/components/agent-picker/agent-picker.constants.ts +0 -2
  147. package/src/components/agent-picker/agent-picker.styles.ts +0 -74
  148. package/src/components/agent-picker/agent-picker.template.ts +0 -89
  149. package/src/components/agent-picker/agent-picker.ts +0 -148
  150. package/src/components/agent-picker/index.ts +0 -1
  151. package/src/components/ai-driver/ai-driver.ts +0 -155
  152. package/src/components/ai-driver/index.ts +0 -1
  153. package/src/components/chat-bubble/chat-bubble.styles.ts +0 -194
  154. package/src/components/chat-bubble/chat-bubble.template.ts +0 -67
  155. package/src/components/chat-bubble/chat-bubble.ts +0 -436
  156. package/src/components/chat-bubble/index.ts +0 -1
  157. package/src/components/chat-driver/align-event-globals.ts +0 -23
  158. package/src/components/chat-driver/chat-driver.compact.test.ts +0 -131
  159. package/src/components/chat-driver/chat-driver.invocation-scope.test.ts +0 -285
  160. package/src/components/chat-driver/chat-driver.test.ts +0 -3276
  161. package/src/components/chat-driver/chat-driver.thinking-policy.test.ts +0 -185
  162. package/src/components/chat-driver/chat-driver.trace-capture.test.ts +0 -251
  163. package/src/components/chat-driver/chat-driver.ts +0 -3597
  164. package/src/components/chat-driver/chat-driver.turn-usage.test.ts +0 -362
  165. package/src/components/chat-driver/index.ts +0 -1
  166. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts +0 -7
  167. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts +0 -6
  168. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.test.ts +0 -144
  169. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts +0 -214
  170. package/src/components/chat-interaction-wrapper/index.ts +0 -3
  171. package/src/components/chat-markdown/chat-markdown.ts +0 -89
  172. package/src/components/chat-markdown/index.ts +0 -1
  173. package/src/components/flowing-waves-indicator.ts +0 -286
  174. package/src/components/halo-overlay.ts +0 -184
  175. package/src/components/orchestrating-driver/index.ts +0 -1
  176. package/src/components/orchestrating-driver/orchestrating-driver.budget.test.ts +0 -438
  177. package/src/components/orchestrating-driver/orchestrating-driver.pin.test.ts +0 -96
  178. package/src/components/orchestrating-driver/orchestrating-driver.ts +0 -796
  179. package/src/components/plasma-orb-indicator.ts +0 -281
  180. package/src/components/popout-manager/index.ts +0 -1
  181. package/src/components/popout-manager/popout-manager.ts +0 -212
  182. package/src/components/settings-modal/index.ts +0 -2
  183. package/src/components/settings-modal/settings-modal.styles.test.ts +0 -94
  184. package/src/components/settings-modal/settings-modal.styles.ts +0 -853
  185. package/src/components/settings-modal/settings-modal.template.test.ts +0 -124
  186. package/src/components/settings-modal/settings-modal.template.ts +0 -943
  187. package/src/components/waves-indicator.ts +0 -241
  188. package/src/config/config.ts +0 -608
  189. package/src/config/define-stateful-agent.test.ts +0 -64
  190. package/src/config/define-stateful-agent.ts +0 -642
  191. package/src/config/fallback-agents.ts +0 -29
  192. package/src/config/index.ts +0 -2
  193. package/src/config/validate-providers.test.ts +0 -148
  194. package/src/config/validate-providers.ts +0 -58
  195. package/src/index.ts +0 -26
  196. package/src/main/blocked-state.test.ts +0 -1376
  197. package/src/main/budget-meter.test.ts +0 -477
  198. package/src/main/cost-session-banking.test.ts +0 -679
  199. package/src/main/index.ts +0 -3
  200. package/src/main/main.styles.test.ts +0 -168
  201. package/src/main/main.styles.ts +0 -869
  202. package/src/main/main.template.ts +0 -948
  203. package/src/main/main.ts +0 -4743
  204. package/src/main/main.types.ts +0 -225
  205. package/src/main/popout-interaction-gate.test.ts +0 -87
  206. package/src/provider/ai-provider-switcher.ts +0 -40
  207. package/src/provider/assistant-app-settings.ts +0 -84
  208. package/src/state/ai-assistant-slice.test.ts +0 -336
  209. package/src/state/ai-assistant-slice.ts +0 -604
  210. package/src/state/debug-event-log.test.ts +0 -152
  211. package/src/state/debug-event-log.ts +0 -346
  212. package/src/state/driver-registry.test.ts +0 -70
  213. package/src/state/driver-registry.ts +0 -79
  214. package/src/state/interaction-context.test.ts +0 -90
  215. package/src/state/interaction-context.ts +0 -101
  216. package/src/state/persistence/build-timeline-entries.ts +0 -66
  217. package/src/state/persistence/diagnostics-cursors.test.ts +0 -53
  218. package/src/state/persistence/diagnostics-cursors.ts +0 -80
  219. package/src/state/persistence/diagnostics.test.ts +0 -346
  220. package/src/state/persistence/diagnostics.ts +0 -220
  221. package/src/state/persistence/index.ts +0 -10
  222. package/src/state/persistence/persister-registry.ts +0 -55
  223. package/src/state/persistence/session-persistence-provider.test.ts +0 -136
  224. package/src/state/persistence/session-persistence-provider.ts +0 -226
  225. package/src/state/persistence/session-persistence.integration.test.ts +0 -141
  226. package/src/state/persistence/session-persister.test.ts +0 -518
  227. package/src/state/persistence/session-persister.ts +0 -709
  228. package/src/state/persistence/session-snapshot.test.ts +0 -352
  229. package/src/state/persistence/session-snapshot.ts +0 -344
  230. package/src/state/persistence/stateful-restore.e2e.test.ts +0 -229
  231. package/src/state/session-store.ts +0 -56
  232. package/src/styles/ai-colours.ts +0 -9
  233. package/src/styles/settings-section.ts +0 -40
  234. package/src/suggestions/chat-suggestions.ts +0 -186
  235. package/src/tags/index.ts +0 -1
  236. package/src/types/ai-chat-widget.ts +0 -59
  237. package/src/types/interaction-context.ts +0 -82
  238. package/src/utils/animated-panel-toggle.ts +0 -62
  239. package/src/utils/animation-exclusivity.test.ts +0 -72
  240. package/src/utils/animation-exclusivity.ts +0 -40
  241. package/src/utils/banked-usage-baselines.ts +0 -90
  242. package/src/utils/collect-session-models.test.ts +0 -82
  243. package/src/utils/collect-session-models.ts +0 -65
  244. package/src/utils/condense-history.test.ts +0 -664
  245. package/src/utils/condense-history.ts +0 -425
  246. package/src/utils/cost-session-history.test.ts +0 -226
  247. package/src/utils/cost-session-history.ts +0 -218
  248. package/src/utils/derive-cost-session-title.test.ts +0 -63
  249. package/src/utils/derive-cost-session-title.ts +0 -76
  250. package/src/utils/flatten-sub-agent-messages.test.ts +0 -163
  251. package/src/utils/flatten-sub-agent-messages.ts +0 -88
  252. package/src/utils/format-usd.ts +0 -26
  253. package/src/utils/history-transform.test.ts +0 -197
  254. package/src/utils/history-transform.ts +0 -157
  255. package/src/utils/index.ts +0 -3
  256. package/src/utils/logger.ts +0 -3
  257. package/src/utils/message-partition.test.ts +0 -129
  258. package/src/utils/message-partition.ts +0 -115
  259. package/src/utils/resolve-cost-history-config.test.ts +0 -38
  260. package/src/utils/resolve-cost-history-config.ts +0 -38
  261. package/src/utils/resolve-preference-baseline.test.ts +0 -84
  262. package/src/utils/resolve-preference-baseline.ts +0 -80
  263. package/src/utils/strip-agent-handlers.test.ts +0 -99
  264. package/src/utils/strip-agent-handlers.ts +0 -53
  265. package/src/utils/sum-costs.test.ts +0 -136
  266. package/src/utils/sum-costs.ts +0 -18
  267. package/src/utils/sum-tokens.test.ts +0 -93
  268. package/src/utils/sum-tokens.ts +0 -68
  269. package/src/utils/sum-usage.test.ts +0 -191
  270. package/src/utils/sum-usage.ts +0 -208
  271. package/src/utils/tool-fold.ts +0 -181
  272. package/src/utils/usage-rows.test.ts +0 -237
  273. package/src/utils/usage-rows.ts +0 -187
  274. package/src/utils/with-timeout.ts +0 -24
  275. package/tsconfig.json +0 -9
@@ -2314,9 +2314,9 @@ export declare interface FallbackAgentConfig extends BaseAgentConfig {
2314
2314
  *
2315
2315
  * @internal
2316
2316
  */
2317
- export declare function formatBlockedReason(budget?: Extract<ChatDriverResult, {
2317
+ export declare function formatBlockedReason(budget?: Partial<Extract<ChatDriverResult, {
2318
2318
  reason: 'done';
2319
- }>['budget'], vendor?: AIProviderType): string | undefined;
2319
+ }>['budget']>, vendor?: AIProviderType): string | undefined;
2320
2320
 
2321
2321
  /**
2322
2322
  * Foundation AI Assistant component.
@@ -2778,11 +2778,18 @@ export declare class FoundationAiAssistant extends GenesisElement {
2778
2778
  */
2779
2779
  private get relevantBlockedVendors();
2780
2780
  /**
2781
- * Whether the blocked banner has anything to say — a vendor-agnostic block, OR
2782
- * at least one walled vendor the registry can still reach. Broader than
2783
- * {@link FoundationAiAssistant.blocked} on purpose: partial exhaustion leaves
2784
- * the composer live but still needs to be announced, because the next turn may
2785
- * route to the walled vendor and fail.
2781
+ * Whether the blocked banner has anything to say — a vendor-agnostic block, or
2782
+ * a partial wall that the NEXT send would actually hit.
2783
+ *
2784
+ * Partial exhaustion is announced only while the ACTIVE vendor (the registry
2785
+ * default the next send resolves to) is among the walled ones. A user who has
2786
+ * switched to a vendor with headroom has already acted on the advice —
2787
+ * keeping the banner up past that point nagged about a vendor they just left
2788
+ * (GENC-1464 tester feedback), while switching BACK to the walled vendor
2789
+ * brings the banner straight back. Two conservative fallbacks keep it
2790
+ * fail-informative: while the statuses are still loading the active vendor is
2791
+ * unknowable, so any reachable-and-walled vendor still announces; and a
2792
+ * vendor-agnostic block announces always, exactly as before.
2786
2793
  *
2787
2794
  * Reads the reachability-filtered list for the same reason the copy does — a
2788
2795
  * host that has swapped its registry away from the walled vendor has nothing
@@ -2809,6 +2816,15 @@ export declare class FoundationAiAssistant extends GenesisElement {
2809
2816
  * @internal
2810
2817
  */
2811
2818
  get suggestionsBlocked(): boolean;
2819
+ /**
2820
+ * The vendor the NEXT send resolves to — the registry default's provider, as
2821
+ * reported through `providerStatuses`. `undefined` while the statuses are
2822
+ * still loading (or when the default reports the `'none'` sentinel), which
2823
+ * every consumer treats conservatively.
2824
+ *
2825
+ * @internal
2826
+ */
2827
+ private get activeVendor();
2812
2828
  /**
2813
2829
  * Explanation shown in the blocked banner, or `null` for the element's default
2814
2830
  * copy. Only meaningful while {@link FoundationAiAssistant.blocked} is true;
@@ -2957,12 +2973,14 @@ export declare class FoundationAiAssistant extends GenesisElement {
2957
2973
  * vendors watched all of it vanish the moment a second one walled — replaced by
2958
2974
  * generic copy, at the exact moment the situation got worse.
2959
2975
  *
2960
- * The compact "AI usage limits are reached for A and B." list is kept for the
2961
- * case it was written for: NO walled vendor carries copy, so a statement per
2962
- * vendor would just repeat one boilerplate sentence per name. As soon as any of
2963
- * them does carry copy, the branch lists one statement per vendor instead —
2964
- * falling back to that same boilerplate for the ones that have none, so the
2965
- * sentence set stays complete rather than silently naming a subset.
2976
+ * The compact list is the DEFAULT shape for several walls, now carrying each
2977
+ * vendor's figures: "AI usage limits are reached for Gemini ($62.34 of $50.00)
2978
+ * and Anthropic ($31.10 of $30.00)." A driver latch stores no copy of its own
2979
+ * (it stores the figures, which this composes from), so that shape is what the
2980
+ * real budget flow produces. As soon as any walled vendor carries HOST copy,
2981
+ * which cannot be folded into a list item, the branch lists one statement per
2982
+ * vendor instead — falling back to composed copy for the ones that have none, so
2983
+ * the sentence set stays complete rather than silently naming a subset.
2966
2984
  *
2967
2985
  * @internal
2968
2986
  */
@@ -36,9 +36,9 @@ export declare const genesisIconSvg = "<svg viewBox=\"-4 0 30 26\" fill=\"none\"
36
36
  *
37
37
  * @internal
38
38
  */
39
- export declare function formatBlockedReason(budget?: Extract<ChatDriverResult, {
39
+ export declare function formatBlockedReason(budget?: Partial<Extract<ChatDriverResult, {
40
40
  reason: 'done';
41
- }>['budget'], vendor?: AIProviderType): string | undefined;
41
+ }>['budget']>, vendor?: AIProviderType): string | undefined;
42
42
  /**
43
43
  * Whole-number percentage of a budget consumed, for the meter (GENC-1464).
44
44
  *
@@ -513,11 +513,18 @@ export declare class FoundationAiAssistant extends GenesisElement {
513
513
  */
514
514
  private get relevantBlockedVendors();
515
515
  /**
516
- * Whether the blocked banner has anything to say — a vendor-agnostic block, OR
517
- * at least one walled vendor the registry can still reach. Broader than
518
- * {@link FoundationAiAssistant.blocked} on purpose: partial exhaustion leaves
519
- * the composer live but still needs to be announced, because the next turn may
520
- * route to the walled vendor and fail.
516
+ * Whether the blocked banner has anything to say — a vendor-agnostic block, or
517
+ * a partial wall that the NEXT send would actually hit.
518
+ *
519
+ * Partial exhaustion is announced only while the ACTIVE vendor (the registry
520
+ * default the next send resolves to) is among the walled ones. A user who has
521
+ * switched to a vendor with headroom has already acted on the advice —
522
+ * keeping the banner up past that point nagged about a vendor they just left
523
+ * (GENC-1464 tester feedback), while switching BACK to the walled vendor
524
+ * brings the banner straight back. Two conservative fallbacks keep it
525
+ * fail-informative: while the statuses are still loading the active vendor is
526
+ * unknowable, so any reachable-and-walled vendor still announces; and a
527
+ * vendor-agnostic block announces always, exactly as before.
521
528
  *
522
529
  * Reads the reachability-filtered list for the same reason the copy does — a
523
530
  * host that has swapped its registry away from the walled vendor has nothing
@@ -544,6 +551,15 @@ export declare class FoundationAiAssistant extends GenesisElement {
544
551
  * @internal
545
552
  */
546
553
  get suggestionsBlocked(): boolean;
554
+ /**
555
+ * The vendor the NEXT send resolves to — the registry default's provider, as
556
+ * reported through `providerStatuses`. `undefined` while the statuses are
557
+ * still loading (or when the default reports the `'none'` sentinel), which
558
+ * every consumer treats conservatively.
559
+ *
560
+ * @internal
561
+ */
562
+ private get activeVendor();
547
563
  /**
548
564
  * Explanation shown in the blocked banner, or `null` for the element's default
549
565
  * copy. Only meaningful while {@link FoundationAiAssistant.blocked} is true;
@@ -692,12 +708,14 @@ export declare class FoundationAiAssistant extends GenesisElement {
692
708
  * vendors watched all of it vanish the moment a second one walled — replaced by
693
709
  * generic copy, at the exact moment the situation got worse.
694
710
  *
695
- * The compact "AI usage limits are reached for A and B." list is kept for the
696
- * case it was written for: NO walled vendor carries copy, so a statement per
697
- * vendor would just repeat one boilerplate sentence per name. As soon as any of
698
- * them does carry copy, the branch lists one statement per vendor instead —
699
- * falling back to that same boilerplate for the ones that have none, so the
700
- * sentence set stays complete rather than silently naming a subset.
711
+ * The compact list is the DEFAULT shape for several walls, now carrying each
712
+ * vendor's figures: "AI usage limits are reached for Gemini ($62.34 of $50.00)
713
+ * and Anthropic ($31.10 of $30.00)." A driver latch stores no copy of its own
714
+ * (it stores the figures, which this composes from), so that shape is what the
715
+ * real budget flow produces. As soon as any walled vendor carries HOST copy,
716
+ * which cannot be folded into a list item, the branch lists one statement per
717
+ * vendor instead — falling back to composed copy for the ones that have none, so
718
+ * the sentence set stays complete rather than silently naming a subset.
701
719
  *
702
720
  * @internal
703
721
  */
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,cAAc,EACd,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAMnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAIL,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAc/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAgBvE,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,kCAAkC,CAAC;AAUlF,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,mDAAmD,CAAC;AAmB3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AASvE,OAAO,EAQL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,sCAAsC,CAAC;AAO9C,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAEhB,UAAU,EAEV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,sEAAsE;AACtE,KAAK,wBAAwB,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBpE,8FAA8F;AAC9F,eAAO,MAAM,cAAc,ugBAAqf,CAAC;AAEjhB,+CAA+C;AAC/C,eAAO,MAAM,WAAW,0OAAgO,CAAC;AAEzP,sFAAsF;AACtF,eAAO,MAAM,cAAc,yrBAA+qB,CAAC;AAgD3sB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,QAAQ,CAAC,EAChE,MAAM,CAAC,EAAE,cAAc,GACtB,MAAM,GAAG,SAAS,CAYpB;AAoCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAGpE;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAOa,qBAAsB,SAAQ,cAAc;IACnC,gBAAgB,EAAG,kBAAkB,CAAC;IAC5B,mBAAmB,EAAG,4BAA4B,CAAC;IAErE,kBAAkB,EAAE,MAAM,CAAW;IACZ,WAAW,EAAE,MAAM,CAAuB;IAC/E;;;;;;;;;;OAUG;IACiC,UAAU,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IAE7D;;;;;;OAMG;IACS,aAAa,CAAC,EAAE,MAAM,CAAC;IACnC,iGAAiG;IACrF,iBAAiB,EAAE,MAAM,CAAkB;IACvD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAMtC;;;;;OAKG;IACS,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC9B,2FAA2F;IAC/E,YAAY,EAAE,MAAM,CAAe;IAC/C,SAAS,CAAC,eAAe,IAAI,IAAI;IAIzB,WAAW,EAAE,MAAM,CAA0B;IACrD;;;;;OAKG;IACiC,UAAU,CAAC,EAAE,UAAU,CAAC;IAC5D;;;OAGG;IACS,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,UAAU,CAAM;IAExC;;;;;;;OAOG;IACS,WAAW,EAAE,wBAAwB,CAAM;IAEvD;;;OAGG;IACH,IAAI,WAAW,IAAI,eAAe,CAEjC;IAED;;;;;;OAMG;IACH,IACI,sBAAsB,IAAI,OAAO,CAKpC;IAEW,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9C,0EAA0E;IACrB,UAAU,UAAS;IAIxE;;;;;;;OAOG;IACS,OAAO,CAAC,WAAW,CAAC,CAAqB;IAErD,IAAI,QAAQ,IAAI,WAAW,EAAE,CAE5B;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAGhC;IAED,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAwBhC;IAED,iEAAiE;IACjE,OAAO,CAAC,WAAW;IAInB;;;;;;OAMG;IACH,IACI,IAAI,IAAI,OAAO,CAElB;IAED;;;;;;;;;OASG;IACH,OAAO,KAAK,WAAW,GAEtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IASlC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAQ/B,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,SAAS,CAE/D;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAQ7C;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAE3C;IAED,iEAAiE;IACjE,IAAI,aAAa,IAAI,OAAO,CAE3B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAS/B;IAED,qEAAqE;IACrE,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAInC;IAED,sFAAsF;IACtF,IAAI,aAAa,IAAI,OAAO,CAE3B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAI/B;IAED,8EAA8E;IAC9E,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IACD,IAAI,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAI1C;IAED,oCAAoC;IACpC,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAE9C;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAOlD;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAEjC;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAEjC;IAED;;;;OAIG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAE5B;IAED;;;;;OAKG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,IACI,OAAO,IAAI,OAAO,CAWrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IACI,gBAAgB,IAAI,SAAS,cAAc,EAAE,CA2BhD;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,cAAc,IAAI,SAAS,cAAc,EAAE,CAE9C;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAWxF;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB,CAAS;IAE1C,OAAO,CAAC,oBAAoB;IAM5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GACtD,OAAO;IAuCV;;;;;;;;;OASG;IACS,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvD,gFAAgF;IAChF,IACI,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAGnD;IAED;;;;;;;;;;OAUG;IACH,oBAAoB,IAAI,IAAI;IAY5B,6FAA6F;IAC7F,OAAO,CAAC,aAAa;IAIrB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IAEH,OAAO,KAAK,sBAAsB,GAQjC;IAED;;;;;;;;;;;;;OAaG;IACH,IACI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;;;;;;;;;;;;OAeG;IACH,IACI,kBAAkB,IAAI,OAAO,CAIhC;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAMrC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwFG;IACH,OAAO,CAAC,gBAAgB;IAyExB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,IACI,sBAAsB,IAAI,MAAM,CAyBnC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,KAAK,gCAAgC,GAE3C;IAED;;;;;;;;;OASG;IACH,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAavC;IAED;;;;;;;;OAQG;IACH,IAAI,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEtC;IACD,IAAI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAK1C;IAED,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAErC;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAEzC;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IAED;;;OAGG;IACH,IAAI,cAAc,0DAEjB;IAED;;;;;OAKG;IACH,IACI,iCAAiC,IAAI,4BAA4B,CAKpE;IAED,yEAAyE;IACzE,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAE1C;IAED,0DAA0D;IAC1D,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEzC;IAED;;;OAGG;IACH,IAAI,YAAY,IAAI,cAAc,CAEjC;IACD,IAAI,YAAY,CAAC,KAAK,EAAE,cAAc,EAErC;IAED;;;;;OAKG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;;;;;;;OAUG;IACH,IACI,oBAAoB,IAAI,qBAAqB,EAAE,CAiBlD;IAED;;;;;;OAMG;IACH,IACI,wBAAwB,IAAI,iBAAiB,EAAE,CAElD;IAED;;;;;;;;;OASG;IACH,IACI,eAAe,IAAI,cAAc,CASpC;IAED,8DAA8D;IAC9D,IACI,iBAAiB,IAAI,MAAM,CAE9B;IAED;;;;;;;OAOG;IACH,IACI,0BAA0B,IAAI,OAAO,CAExC;IAED,kFAAkF;IAClF,IACI,mBAAmB,IAAI,yBAAyB,CAGnD;IAED;;;OAGG;IACH,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,+FAA+F;IAC/F,IACI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAM7C;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA4CvD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,6BAA6B;IAyCrC,sBAAsB,CACpB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,IAAI,EACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,IAAI;IAeP,qDAAqD;IACrD,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAc9C,kEAAkE;IAClE,uBAAuB,IAAI,IAAI;IAgB/B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAgDhC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAalC,gEAAgE;IAChE,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAExC;IAED,4DAA4D;IAC5D,IAAI,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAE3C;IACD,IAAI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAE/C;IAED,+DAA+D;IAC/D,IAAI,gBAAgB,IAAI,6BAA6B,EAAE,CAEtD;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,6BAA6B,EAAE,EAE1D;IAID,OAAO,CAAC,sBAAsB,CAAK;IAEnC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IACW,WAAW,EAAE,cAAc,EAAE,CAAM;IACnC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAC5C,+FAA+F;IACnF,oBAAoB,UAAS;IACzC,uFAAuF;IAC3E,mBAAmB,SAAK;IACpC,0CAA0C;IAC9B,YAAY,UAAS;IACjC;;;;;;OAMG;IACS,mBAAmB,UAAS;IACxC,4CAA4C;IAChC,gBAAgB,EAAE,gBAAgB,CAAc;IAC5D,6DAA6D;IAC7D,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,mFAAmF;IACvE,oBAAoB,EAAE,WAAW,EAAE,CAAM;IACzC,kBAAkB,EAAE,WAAW,EAAE,CAAM;IACvC,0BAA0B,EAAE,WAAW,EAAE,CAAM;IAC/C,0BAA0B,EAAE,WAAW,EAAE,CAAM;IAC3D,mFAAmF;IACvE,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IACzD,6IAA6I;IACjI,aAAa,UAAS;IAElC,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,iGAAiG;IACjG,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,yFAAyF;IACzF,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,uFAAuF;IACvF,OAAO,CAAC,uBAAuB,CAAM;IACrC;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAAC,CAAS;IAIvC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAS;IACnC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAClC,iFAAiF;IACjF,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAO1D,OAAO,CAAC,eAAe,CAIrB;IACF,OAAO,CAAC,kBAAkB,CAAS;IACnC,yHAAyH;IACzH,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,mHAAmH;IACnH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,oEAAoE;IACpE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACS,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,kBAAkB,CAAK;IAC/B;iFAC6E;IAC7E,OAAO,CAAC,sBAAsB,CAAK;IACnC;2EACuE;IACvE,OAAO,CAAC,gBAAgB,CAA0B;IAClD;;;;;OAKG;IACS,SAAS,EAAE,OAAO,CAAQ;IACtC,OAAO,CAAC,wBAAwB,CAO9B;IACF,mGAAmG;IACnG,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAM;IACxD,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAM;IACxD,yFAAyF;IACzF,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,0FAA0F;IAC1F,OAAO,CAAC,wBAAwB,CAAS;IACzC;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAE3C;IACF;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB,CAAC,CAAa;IAC/C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAAS;IACrC;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAS;IAC/B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAW1B,QAAQ,EAAE,IAAI,GAAG,eAAe,GAAG,OAAO,CAAQ;IAE9D,OAAO,CAAC,YAAY;IAepB,6DAA6D;IAC7D,IAAI,2BAA2B,IAAI,OAAO,CAIzC;IAED,eAAe;IAWf,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;;;;;;OAcG;IACH,IACI,eAAe,IAAI,WAAW,EAAE,CAiBnC;IAED;;;;;OAKG;IACH,IAAI,oBAAoB,IAAI,WAAW,EAAE,CAExC;IAED,aAAa,IAAI,IAAI;IA6DrB,mGAAmG;IACnG,OAAO,CAAC,YAAY;IAmBpB;;;;OAIG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,YAAY;IA0CpB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAuLlB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAmFvB,iBAAiB;IAyEjB;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyCnD;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAWrF,oBAAoB;YA2DN,mBAAmB;YAgBnB,oBAAoB;IAQlC,iBAAiB;IAUjB;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAChB,QAAQ,EAAE,wBAAwB,GAAG,SAAS,EAC9C,QAAQ,EAAE,wBAAwB,GAAG,SAAS;IAShD,oBAAoB;IAWpB,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA4F5B,2BAA2B;IAQ3B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAK;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAK;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAQ;IAE7C,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IAKxB,qDAAqD;IACrD,YAAY,IAAI,IAAI;IAUpB,4FAA4F;IAC5F,OAAO,CAAC,WAAW;IASnB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAMhC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAQjC;IAEF,iBAAiB;IASjB,0FAA0F;IAC9E,eAAe,UAAS;IAExB,iBAAiB,UAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAQjC;IAEF;;;;;;;;OAQG;IACH,IACI,kBAAkB,IAAI,OAAO,CAEhC;IAED,6EAA6E;IAC7E,IACI,qBAAqB,IAAI,OAAO,CAEnC;IAED,kFAAkF;IAClF,IACI,iBAAiB,IAAI,OAAO,CAE/B;IAED;;;;;;OAMG;IACH,IACI,WAAW,IAAI,OAAO,CAEzB;IAED,iBAAiB;IAUjB;;;;;;;OAOG;IACH,qBAAqB,CAAC,OAAO,EAAE,OAAO;IAetC,uDAAuD;IACvD,iBAAiB;IAIjB,iFAAiF;IACjF,OAAO,CAAC,iBAAiB;IAWzB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,uBAAuB;IAyB/B;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCrC;;;;;;;;;;OAUG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA+CnC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAWnE,gGAAgG;IAChG,IACI,kBAAkB,IAAI,OAAO,CAIhC;IAED,4GAA4G;IAC5G,IACI,2BAA2B,IAAI,OAAO,CAMzC;IAED,oEAAoE;IACpE,IACI,2BAA2B,IAAI,OAAO,CAKzC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,IACI,0BAA0B,IAAI,OAAO,CASxC;IAED;;;;;;;OAOG;IACH,IACI,kBAAkB,IAAI,SAAS,iBAAiB,EAAE,CAkBrD;IAED,mEAAmE;IACnE,IACI,yBAAyB,IAAI,OAAO,CAEvC;IAED,4EAA4E;IAC5E,IACI,yBAAyB,IAAI,0BAA0B,EAAE,CAG5D;IAED;;;;OAIG;IACH,IACI,yBAAyB,IAAI,2BAA2B,GAAG,SAAS,CAIvE;IAED,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKvC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpD,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,yBAAyB;IAKjC,IACI,iCAAiC,IAAI,OAAO,CAE/C;IAED;;;;;;;;;;OAUG;IACH,IACI,iCAAiC,IAAI,OAAO,CAI/C;IAED;;;;;;;OAOG;IACH,IACI,iCAAiC,IAAI,OAAO,CAE/C;IAED,yEAAyE;IACzE,IACI,0BAA0B,IAAI,OAAO,CASxC;IAED;;;;;;OAMG;IACH,IACI,2BAA2B,IAAI,OAAO,CAczC;IAED,iEAAiE;IACjE,IACI,sBAAsB,IAAI,OAAO,CASpC;IAED,kEAAkE;IAClE,IACI,4BAA4B,IAAI,OAAO,CAG1C;IAED,gEAAgE;IAChE,IACI,kBAAkB,IAAI,OAAO,CAmBhC;IAED,iBAAiB,IAAI,IAAI;IAoBzB,kBAAkB,IAAI,IAAI;IAU1B,qBAAqB,IAAI,IAAI;IAM7B,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAKhD,iFAAiF;IACjF,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO7C,gEAAgE;IAChE,OAAO,CAAC,4BAA4B;IAwBpC,gEAAgE;IAChE,OAAO,CAAC,6BAA6B;IAcrC;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAuBrC,2FAA2F;IAC3F,IACI,eAAe,IAAI,MAAM,GAAG,SAAS,CAGxC;IAED;;;;;;;;OAQG;IACH,IACI,SAAS,IAAI,OAAO,CAEvB;IAED,iDAAiD;IACjD,IACI,gBAAgB,IAAI,MAAM,CAc7B;IAED;;;;;;OAMG;IACH,IACI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAM1C;IAED;;;;OAIG;IACH,IACI,oBAAoB,IAAI,MAAM,CAMjC;IAED,mBAAmB;IAInB,uBAAuB;IAIvB,mBAAmB;IAInB,8BAA8B;IAI9B,oBAAoB,CAAC,UAAU,EAAE,oBAAoB,EAAE;IAYvD,4FAA4F;IAC5F,WAAW,IAAI,QAAQ;IAIvB;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IA+FnB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBvC;;;;;;;;;;;;;;;;OAgBG;YACW,gBAAgB;IAqB9B;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAMjB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;;OAMG;YACW,0BAA0B;IAoCxC,gBAAgB,IAAI,IAAI;IAIxB,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAIhC,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IAIlD,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5C,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;YASR,YAAY;YAoCZ,iBAAiB;IAe/B,eAAe;IAIf;;;;OAIG;IACH,eAAe;IAOf,qBAAqB,CAAC,UAAU,EAAE,MAAM;IASxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,aAAa,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YA0C7E,gBAAgB;IA6E9B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAAS;YAEtB,IAAI;IA6DlB,qBAAqB,CAAC,CAAC,EAAE,UAAU;IAYnC,0BAA0B,CAAC,CAAC,EAAE,KAAK;IASnC;;;;;;OAMG;IACH,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI5E;iFAC6E;IAC7E,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;;iCAG6B;IAC7B,IAAI,mBAAmB,IAAI,MAAM,CAIhC;IAED;iEAC6D;IAC7D,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAoB5C;;;qDAGiD;IACjD,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAS3C,yDAAyD;IACzD,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;CAI3C"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
@@ -141,19 +141,28 @@ const RAISE_LIMITS_ACTION = 'Contact your administrator to raise them.';
141
141
  *
142
142
  * @internal
143
143
  */
144
- export function formatBlockedReason(budget, vendor) {
144
+ export function formatBlockedReason(
145
+ // `Partial`, so the store's `VendorBudgetFigures` satisfies it as well as a live
146
+ // 402's payload: the banner composes from stored figures and the latch from the
147
+ // fresh ones, and both carry the same dollars. One formatter for both means a
148
+ // remembered wall and a just-hit one cannot word themselves differently.
149
+ budget, vendor) {
145
150
  if (!budget || (budget.budgetUsd == null && budget.spentUsd == null))
146
151
  return undefined;
147
152
  const money = (v) => (v == null ? 'an unknown amount' : formatUsd(v));
148
153
  const figures = `(${money(budget.spentUsd)} of ${money(budget.budgetUsd)})`;
154
+ // No "you have $0.00 left" clause here, deliberately: "limit is reached" already
155
+ // says the allowance is gone, and a remainder clamped at zero CONTRADICTS the
156
+ // figures beside it — spend overshoots the cap on the last allowed call, so the
157
+ // words would read "$0.00 left" next to numbers showing $12.34 past it.
149
158
  // A per-vendor statement carries NO action clause, because the right action is
150
159
  // not knowable at latch time: whether "switch vendor" or "contact your
151
160
  // administrator" is the honest advice depends on whether any OTHER vendor still
152
161
  // has headroom, which only the composing getter can see. The vendor-agnostic
153
162
  // form keeps its historical trailing sentence — nothing composes onto it.
154
- return vendor
155
- ? `${vendorDisplayName(vendor)}'s AI usage limit is reached ${figures}.`
156
- : `AI usage limit reached ${figures}. Contact your administrator to raise it.`;
163
+ if (!vendor)
164
+ return `AI usage limit reached ${figures}. Contact your administrator to raise it.`;
165
+ return `${vendorDisplayName(vendor)}'s AI usage limit is reached ${figures}.`;
157
166
  }
158
167
  /**
159
168
  * Human-readable name for a vendor, falling back to its raw type.
@@ -184,8 +193,15 @@ function vendorDisplayName(vendor) {
184
193
  * excluded from both.
185
194
  */
186
195
  function formatVendorList(vendors) {
196
+ return joinList(vendors.map(vendorDisplayName));
197
+ }
198
+ /**
199
+ * `"A"`, `"A and B"`, `"A, B and C"` — over already-rendered labels, so a caller
200
+ * can annotate each name (the multi-vendor banner appends each vendor's figures)
201
+ * without duplicating the joining rules.
202
+ */
203
+ function joinList(names) {
187
204
  var _a;
188
- const names = vendors.map(vendorDisplayName);
189
205
  if (names.length <= 1)
190
206
  return (_a = names[0]) !== null && _a !== void 0 ? _a : '';
191
207
  return `${names.slice(0, -1).join(', ')} and ${names[names.length - 1]}`;
@@ -1065,11 +1081,18 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1065
1081
  return walled.filter((v) => reachable.includes(v));
1066
1082
  }
1067
1083
  /**
1068
- * Whether the blocked banner has anything to say — a vendor-agnostic block, OR
1069
- * at least one walled vendor the registry can still reach. Broader than
1070
- * {@link FoundationAiAssistant.blocked} on purpose: partial exhaustion leaves
1071
- * the composer live but still needs to be announced, because the next turn may
1072
- * route to the walled vendor and fail.
1084
+ * Whether the blocked banner has anything to say — a vendor-agnostic block, or
1085
+ * a partial wall that the NEXT send would actually hit.
1086
+ *
1087
+ * Partial exhaustion is announced only while the ACTIVE vendor (the registry
1088
+ * default the next send resolves to) is among the walled ones. A user who has
1089
+ * switched to a vendor with headroom has already acted on the advice —
1090
+ * keeping the banner up past that point nagged about a vendor they just left
1091
+ * (GENC-1464 tester feedback), while switching BACK to the walled vendor
1092
+ * brings the banner straight back. Two conservative fallbacks keep it
1093
+ * fail-informative: while the statuses are still loading the active vendor is
1094
+ * unknowable, so any reachable-and-walled vendor still announces; and a
1095
+ * vendor-agnostic block announces always, exactly as before.
1073
1096
  *
1074
1097
  * Reads the reachability-filtered list for the same reason the copy does — a
1075
1098
  * host that has swapped its registry away from the walled vendor has nothing
@@ -1079,7 +1102,15 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1079
1102
  * @internal
1080
1103
  */
1081
1104
  get bannerVisible() {
1082
- return this.blocked || this.relevantBlockedVendors.length > 0;
1105
+ if (this.blocked)
1106
+ return true;
1107
+ const walled = this.relevantBlockedVendors;
1108
+ if (walled.length === 0)
1109
+ return false;
1110
+ const active = this.activeVendor;
1111
+ if (!active)
1112
+ return true;
1113
+ return walled.includes(active);
1083
1114
  }
1084
1115
  /**
1085
1116
  * Whether a suggestions fetch would hit a wall.
@@ -1098,11 +1129,23 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1098
1129
  * @internal
1099
1130
  */
1100
1131
  get suggestionsBlocked() {
1101
- var _a, _b;
1102
1132
  if (this.blocked)
1103
1133
  return true;
1104
- const defaultVendor = (_b = (_a = this.providerStatuses.find((e) => e.isDefault)) === null || _a === void 0 ? void 0 : _a.status) === null || _b === void 0 ? void 0 : _b.provider;
1105
- return !!defaultVendor && defaultVendor !== 'none' && this.isVendorBlocked(defaultVendor);
1134
+ const active = this.activeVendor;
1135
+ return !!active && this.isVendorBlocked(active);
1136
+ }
1137
+ /**
1138
+ * The vendor the NEXT send resolves to — the registry default's provider, as
1139
+ * reported through `providerStatuses`. `undefined` while the statuses are
1140
+ * still loading (or when the default reports the `'none'` sentinel), which
1141
+ * every consumer treats conservatively.
1142
+ *
1143
+ * @internal
1144
+ */
1145
+ get activeVendor() {
1146
+ var _a, _b;
1147
+ const vendor = (_b = (_a = this.providerStatuses.find((e) => e.isDefault)) === null || _a === void 0 ? void 0 : _a.status) === null || _b === void 0 ? void 0 : _b.provider;
1148
+ return vendor && vendor !== 'none' ? vendor : undefined;
1106
1149
  }
1107
1150
  /**
1108
1151
  * Explanation shown in the blocked banner, or `null` for the element's default
@@ -1235,12 +1278,14 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1235
1278
  // are required (`VendorBudgetFigures` is total, and half a meter is a lie),
1236
1279
  // and the write goes through the captured `ref` like every other write here,
1237
1280
  // so a teardown race cannot land it in a new session's store.
1281
+ let metered = false;
1238
1282
  if (vendor && vendor !== 'none' && (budget === null || budget === void 0 ? void 0 : budget.budgetUsd) != null && (budget === null || budget === void 0 ? void 0 : budget.spentUsd) != null) {
1239
1283
  ref === null || ref === void 0 ? void 0 : ref.actions.aiAssistant.setVendorBudget({
1240
1284
  vendor,
1241
1285
  figures: { budgetUsd: budget.budgetUsd, spentUsd: budget.spentUsd },
1242
1286
  });
1243
1287
  this.budgetMeterLastFedAt = Date.now();
1288
+ metered = true;
1244
1289
  }
1245
1290
  if (!vendor || vendor === 'none') {
1246
1291
  if (!this.blocked) {
@@ -1265,7 +1310,15 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1265
1310
  ref === null || ref === void 0 ? void 0 : ref.actions.aiAssistant.setVendorBlocked({
1266
1311
  vendor,
1267
1312
  blocked: true,
1268
- reason: formatBlockedReason(budget, vendor),
1313
+ // No reason when the meter snap above already stored these figures: the
1314
+ // banner composes the same sentence from them, so carrying a copy here
1315
+ // would duplicate the dollars in two places that can drift apart. It would
1316
+ // also make this latch INDISTINGUISHABLE from host copy, which the banner
1317
+ // must preserve verbatim — and preserving boilerplate is what forced it to
1318
+ // repeat a sentence per walled vendor instead of folding them into one.
1319
+ // The partial-figures case still needs copy carried here: it has no meter
1320
+ // entry to compose from, and "an unknown amount of $50.00" is worth saying.
1321
+ reason: metered ? undefined : formatBlockedReason(budget, vendor),
1269
1322
  });
1270
1323
  }
1271
1324
  // Last, so the vendor that actually refused this turn heads the wall order the
@@ -1334,17 +1387,19 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1334
1387
  * vendors watched all of it vanish the moment a second one walled — replaced by
1335
1388
  * generic copy, at the exact moment the situation got worse.
1336
1389
  *
1337
- * The compact "AI usage limits are reached for A and B." list is kept for the
1338
- * case it was written for: NO walled vendor carries copy, so a statement per
1339
- * vendor would just repeat one boilerplate sentence per name. As soon as any of
1340
- * them does carry copy, the branch lists one statement per vendor instead —
1341
- * falling back to that same boilerplate for the ones that have none, so the
1342
- * sentence set stays complete rather than silently naming a subset.
1390
+ * The compact list is the DEFAULT shape for several walls, now carrying each
1391
+ * vendor's figures: "AI usage limits are reached for Gemini ($62.34 of $50.00)
1392
+ * and Anthropic ($31.10 of $30.00)." A driver latch stores no copy of its own
1393
+ * (it stores the figures, which this composes from), so that shape is what the
1394
+ * real budget flow produces. As soon as any walled vendor carries HOST copy,
1395
+ * which cannot be folded into a list item, the branch lists one statement per
1396
+ * vendor instead — falling back to composed copy for the ones that have none, so
1397
+ * the sentence set stays complete rather than silently naming a subset.
1343
1398
  *
1344
1399
  * @internal
1345
1400
  */
1346
1401
  get effectiveBlockedReason() {
1347
- var _a;
1402
+ var _a, _b;
1348
1403
  if (this.blockedReason)
1349
1404
  return this.blockedReason;
1350
1405
  const walled = this.relevantBlockedVendors;
@@ -1357,14 +1412,35 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
1357
1412
  ? RAISE_LIMITS_ACTION
1358
1413
  : RAISE_LIMIT_ACTION;
1359
1414
  const reasons = (_a = this._sessionRef) === null || _a === void 0 ? void 0 : _a.store.aiAssistant.blockedVendorReasons;
1360
- const statementFor = (v) => { var _a; return (_a = reasons === null || reasons === void 0 ? void 0 : reasons[v]) !== null && _a !== void 0 ? _a : `${vendorDisplayName(v)}'s AI usage limit is reached.`; };
1415
+ const budgets = (_b = this._sessionRef) === null || _b === void 0 ? void 0 : _b.store.aiAssistant.vendorBudgets;
1416
+ // The wall's own figures, read from the entry the METER renders, so the two
1417
+ // cannot state different dollars for the same vendor. A vendor with no entry
1418
+ // (a swept wall — the proxy's word, no figures of its own) contributes a bare
1419
+ // name rather than a gap where numbers should be.
1420
+ const statementFor = (v) => {
1421
+ var _a, _b;
1422
+ return (_b = (_a = reasons === null || reasons === void 0 ? void 0 : reasons[v]) !== null && _a !== void 0 ? _a : formatBlockedReason(budgets === null || budgets === void 0 ? void 0 : budgets[v], v)) !== null && _b !== void 0 ? _b : `${vendorDisplayName(v)}'s AI usage limit is reached.`;
1423
+ };
1424
+ const nameWithFigures = (v) => {
1425
+ const figures = budgets === null || budgets === void 0 ? void 0 : budgets[v];
1426
+ return figures
1427
+ ? `${vendorDisplayName(v)} (${formatUsd(figures.spentUsd)} of ${formatUsd(figures.budgetUsd)})`
1428
+ : vendorDisplayName(v);
1429
+ };
1361
1430
  if (walled.length === 1)
1362
1431
  return `${statementFor(walled[0])} ${action}`;
1363
- // Several walled vendors carry several sets of figures, which do not fit one
1364
- // sentence. With no per-vendor copy to preserve, name them in a list rather
1365
- // than repeat the same boilerplate sentence per vendor.
1432
+ // Several walled vendors: fold them into ONE sentence carrying each vendor's
1433
+ // figures, rather than repeating "X's AI usage limit is reached (…)." per
1434
+ // vendor — the same clause twice reads like a stutter, and the second copy of
1435
+ // the boilerplate adds nothing the first did not already say.
1436
+ //
1437
+ // Host copy is not foldable: `setVendorBlocked` promises it survives verbatim,
1438
+ // and it cannot be rewritten into a list item. So the moment any walled vendor
1439
+ // carries some, the branch below lists one statement per vendor instead —
1440
+ // falling back to composed copy for the ones that have none, so the sentence
1441
+ // set stays complete rather than silently naming a subset.
1366
1442
  if (!walled.some((v) => reasons === null || reasons === void 0 ? void 0 : reasons[v])) {
1367
- return `AI usage limits are reached for ${formatVendorList(walled)}. ${action}`;
1443
+ return `AI usage limits are reached for ${joinList(walled.map(nameWithFigures))}. ${action}`;
1368
1444
  }
1369
1445
  return `${walled.map(statementFor).join(' ')} ${action}`;
1370
1446
  }
@@ -4458,6 +4534,9 @@ __decorate([
4458
4534
  __decorate([
4459
4535
  volatile
4460
4536
  ], FoundationAiAssistant.prototype, "suggestionsBlocked", null);
4537
+ __decorate([
4538
+ volatile
4539
+ ], FoundationAiAssistant.prototype, "activeVendor", null);
4461
4540
  __decorate([
4462
4541
  volatile
4463
4542
  ], FoundationAiAssistant.prototype, "effectiveBlockedReason", null);
@@ -273,22 +273,33 @@ When every reachable vendor is walled the banner asks for a raise instead:
273
273
 
274
274
  > Anthropic's AI usage limit is reached ($25.40 of $25.00). Contact your administrator to raise it.
275
275
 
276
- …and with several walled vendors carrying no copy of their own, the figures do not
277
- fit one sentence, so it names them:
276
+ …and several walled vendors fold into ONE sentence, each carrying its own figures,
277
+ rather than repeating the same clause per vendor:
278
278
 
279
- > AI usage limits are reached for Anthropic and Gemini. Contact your administrator to raise them.
279
+ > AI usage limits are reached for Anthropic ($25.40 of $25.00) and Gemini ($62.34 of $50.00). Contact your administrator to raise them.
280
+
281
+ A vendor walled by the proxy's `otherVendorAvailable: false` verdict rather than by
282
+ a refusal of its own has no figures to show, so it contributes a bare name
283
+ (`… for Anthropic ($25.40 of $25.00) and Gemini.`).
280
284
 
281
285
  A host `blockedReason` still outranks all of it, and `setVendorBlocked(v, true,
282
286
  '…')` supplies per-vendor copy that is composed into the sentence — **however many
283
- vendors are walled**. As soon as any walled vendor carries copy, the banner reads
284
- one statement per vendor instead of the compact list above, so nothing you set is
285
- dropped when a second vendor goes:
287
+ vendors are walled**. Host copy is never folded into the list, because it cannot be
288
+ rewritten into a list item, so as soon as any walled vendor carries some, the banner
289
+ reads one statement per vendor and nothing you set is dropped when a second vendor
290
+ goes:
286
291
 
287
- > Anthropic spend is capped for this desk. Gemini's AI usage limit is reached. Contact your administrator to raise them.
292
+ > Anthropic spend is capped for this desk. Gemini's AI usage limit is reached ($25.40 of $25.00). Contact your administrator to raise them.
288
293
 
289
- A walled vendor with no copy falls back to the boilerplate sentence in that form
294
+ A walled vendor with no copy falls back to a composed sentence in that form
290
295
  (`Gemini's …` above), so the set of statements always covers every vendor named.
291
296
 
297
+ Note what the banner does **not** say: no "you have $0.00 left" clause. "Limit is
298
+ reached" already means the allowance is gone, and a remainder clamped at zero would
299
+ contradict the figures printed beside it — spend overshoots the cap on the last
300
+ allowed call, so the words would read "$0.00 left" next to numbers showing $12.34
301
+ past it.
302
+
292
303
  The **transcript bubble** stays vendor-neutral. The assistant element passes
293
304
  `blockedReason ?? DEFAULT_BUDGET_EXHAUSTED_MESSAGE` as
294
305
  `ChatDriverConfig.budgetExhaustedMessage` — deliberately NOT the composed banner
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/ai-assistant",
3
3
  "description": "Genesis AI Assistant micro-frontend",
4
- "version": "15.13.1",
4
+ "version": "15.14.0-DCD-4786.2",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/ai-assistant.d.ts",
@@ -73,26 +73,26 @@
73
73
  }
74
74
  },
75
75
  "devDependencies": {
76
- "@genesislcap/foundation-testing": "15.13.1",
77
- "@genesislcap/genx": "15.13.1",
78
- "@genesislcap/rollup-builder": "15.13.1",
79
- "@genesislcap/ts-builder": "15.13.1",
80
- "@genesislcap/uvu-playwright-builder": "15.13.1",
81
- "@genesislcap/vite-builder": "15.13.1",
82
- "@genesislcap/webpack-builder": "15.13.1",
76
+ "@genesislcap/foundation-testing": "workspace:*",
77
+ "@genesislcap/genx": "workspace:*",
78
+ "@genesislcap/rollup-builder": "workspace:*",
79
+ "@genesislcap/ts-builder": "workspace:*",
80
+ "@genesislcap/uvu-playwright-builder": "workspace:*",
81
+ "@genesislcap/vite-builder": "workspace:*",
82
+ "@genesislcap/webpack-builder": "workspace:*",
83
83
  "@types/dompurify": "^3.0.5",
84
84
  "@types/marked": "^5.0.2",
85
85
  "esbuild": "0.25.12"
86
86
  },
87
87
  "dependencies": {
88
- "@genesislcap/foundation-ai": "15.13.1",
89
- "@genesislcap/foundation-logger": "15.13.1",
90
- "@genesislcap/foundation-notifications": "15.13.1",
91
- "@genesislcap/foundation-redux": "15.13.1",
92
- "@genesislcap/foundation-ui": "15.13.1",
93
- "@genesislcap/foundation-utils": "15.13.1",
94
- "@genesislcap/rapid-design-system": "15.13.1",
95
- "@genesislcap/web-core": "15.13.1",
88
+ "@genesislcap/foundation-ai": "workspace:*",
89
+ "@genesislcap/foundation-logger": "workspace:*",
90
+ "@genesislcap/foundation-notifications": "workspace:*",
91
+ "@genesislcap/foundation-redux": "workspace:*",
92
+ "@genesislcap/foundation-ui": "workspace:*",
93
+ "@genesislcap/foundation-utils": "workspace:*",
94
+ "@genesislcap/rapid-design-system": "workspace:*",
95
+ "@genesislcap/web-core": "workspace:*",
96
96
  "dompurify": "^3.3.1",
97
97
  "marked": "^17.0.3"
98
98
  },
@@ -104,6 +104,5 @@
104
104
  "publishConfig": {
105
105
  "access": "public"
106
106
  },
107
- "customElements": "dist/custom-elements.json",
108
- "gitHead": "4ac0cfb22051b17da81586baf5166c9b605fae10"
107
+ "customElements": "dist/custom-elements.json"
109
108
  }
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "../../../../api-extractor.json",
4
- "messages": {
5
- "extractorMessageReporting": {
6
- "ae-wrong-input-file-type": {
7
- "logLevel": "none"
8
- }
9
- }
10
- }
11
- }
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.compact.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.compact.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.compact.test.ts"],"names":[],"mappings":"AAKA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.invocation-scope.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.invocation-scope.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.invocation-scope.test.ts"],"names":[],"mappings":"AAWA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.test.ts"],"names":[],"mappings":"AA8BA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.thinking-policy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.thinking-policy.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.thinking-policy.test.ts"],"names":[],"mappings":"AAWA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.trace-capture.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.trace-capture.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.trace-capture.test.ts"],"names":[],"mappings":"AAYA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- import './align-event-globals';
2
- //# sourceMappingURL=chat-driver.turn-usage.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-driver.turn-usage.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.turn-usage.test.ts"],"names":[],"mappings":"AAYA,OAAO,uBAAuB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=chat-interaction-wrapper.test.d.ts.map