@genesislcap/ai-assistant 15.13.0 → 15.14.0-FUI-2595.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.
@@ -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
  */