@genesislcap/ai-assistant 15.33.1-GENC-1601.2 → 15.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24530,7 +24530,7 @@
24530
24530
  {
24531
24531
  "kind": "PropertySignature",
24532
24532
  "canonicalReference": "@genesislcap/ai-assistant!VendorBudgetFigures#segments:member",
24533
- "docComment": "/**\n * Optional breakdown of {@link VendorBudgetFigures.spentUsd} by whatever the host meters spend by — a surface, a team, an environment. Given, the vendor's bar is drawn stacked with a legend; omitted, it is the single bar it has always been.\n *\n * Host-named, with no platform vocabulary: the assistant has no idea what a host's spend sources are, and inventing labels for them is how a product word ends up in the platform. Segments may cover less than the total (the remainder simply draws unlabelled); they may not cover more, which would be a breakdown of a figure other than the one on screen.\n */\n",
24533
+ "docComment": "/**\n * Optional breakdown of {@link VendorBudgetFigures.spentUsd} by whatever the host meters spend by — a surface, a team, an environment. Given, the vendor's bar is drawn stacked with a legend; omitted, it is the single bar it has always been.\n *\n * Host-named, with no platform vocabulary: the assistant has no idea what a host's spend sources are, and inventing labels for them is how a product word ends up in the platform. Segments may cover less than the total (the remainder simply draws unlabelled); they may not cover more, which would be a breakdown of a figure other than the one on screen.\n *\n * ORDER IS SIGNIFICANT: the bar and legend are drawn in array order, and the first segment gets the strongest tone (full strength whenever the whole spend is attributed). Feed the sources in a fixed, meaningful order — the one you want drawn first, first — and keep it across re-feeds; a host that re-sorts its sources per response moves the strongest tone between them with no change in the money.\n */\n",
24534
24534
  "excerptTokens": [
24535
24535
  {
24536
24536
  "kind": "Content",
@@ -24607,7 +24607,7 @@
24607
24607
  {
24608
24608
  "kind": "PropertySignature",
24609
24609
  "canonicalReference": "@genesislcap/ai-assistant!VendorBudgetSegment#id:member",
24610
- "docComment": "/**\n * Stable id, used to key the bar and legend across re-feeds.\n */\n",
24610
+ "docComment": "/**\n * Identifies the source. Must be unique within a breakdown, and must not be `__remainder__`, which the meter reserves for unattributed spend; a breakdown that breaks either rule is dropped. It does not decide drawing order or tone — array order does.\n */\n",
24611
24611
  "excerptTokens": [
24612
24612
  {
24613
24613
  "kind": "Content",
@@ -6488,6 +6488,12 @@ export declare interface VendorBudgetFigures {
6488
6488
  * sources are, and inventing labels for them is how a product word ends up in the platform.
6489
6489
  * Segments may cover less than the total (the remainder simply draws unlabelled); they may
6490
6490
  * not cover more, which would be a breakdown of a figure other than the one on screen.
6491
+ *
6492
+ * ORDER IS SIGNIFICANT: the bar and legend are drawn in array order, and the first segment
6493
+ * gets the strongest tone (full strength whenever the whole spend is attributed). Feed the
6494
+ * sources in a fixed, meaningful order — the one you want drawn first, first — and keep it
6495
+ * across re-feeds; a host that re-sorts its sources per response moves the strongest tone
6496
+ * between them with no change in the money.
6491
6497
  */
6492
6498
  segments?: VendorBudgetSegment[];
6493
6499
  }
@@ -6498,7 +6504,11 @@ export declare interface VendorBudgetFigures {
6498
6504
  * @beta
6499
6505
  */
6500
6506
  export declare interface VendorBudgetSegment {
6501
- /** Stable id, used to key the bar and legend across re-feeds. */
6507
+ /**
6508
+ * Identifies the source. Must be unique within a breakdown, and must not be
6509
+ * `__remainder__`, which the meter reserves for unattributed spend; a breakdown that breaks
6510
+ * either rule is dropped. It does not decide drawing order or tone — array order does.
6511
+ */
6502
6512
  id: string;
6503
6513
  /** What the host calls this slice of the spend; rendered verbatim in the legend. */
6504
6514
  label: string;
@@ -3570,8 +3570,12 @@ var DEFAULT_AI_TIERS = Object.freeze({
3570
3570
  }),
3571
3571
  // One-shot judgement calls rather than tool loops, so a smaller ceiling is ample:
3572
3572
  // `max_tokens` is only a cap, and this tier never emits a whole file.
3573
+ //
3574
+ // Opus 4.8 rather than the 4.7 Create benched: the same price ($5 / $25) and the same 1M
3575
+ // window, but 4.8 supports native structured output where 4.7 takes the forced-tool
3576
+ // fallback — and structured judgement is what this tier is asked for most (review of #2540).
3573
3577
  reasoning: Object.freeze({
3574
- model: "claude-opus-4-7",
3578
+ model: "claude-opus-4-8",
3575
3579
  maxTokens: 32e3,
3576
3580
  stallTimeoutMs: AI_STALL_TIMEOUT_MS,
3577
3581
  timeoutMs: AI_NO_RESPONSE_TIMEOUT_MS
@@ -3583,11 +3587,18 @@ var DEFAULT_AI_TIERS = Object.freeze({
3583
3587
  stallTimeoutMs: AI_STALL_TIMEOUT_MS,
3584
3588
  timeoutMs: AI_NO_RESPONSE_TIMEOUT_MS
3585
3589
  }),
3590
+ // On an INTRODUCTORY rate that doubles to $1.50 / $7.50 on 2027-01-01, from which point it
3591
+ // is dearer on input than the gemini-3.5-flash it replaced. Chosen at the introductory rate
3592
+ // knowingly; `ai-tiers.test.ts` fails that day to force the re-bench.
3586
3593
  high: Object.freeze({
3587
3594
  model: "gemini-3.8-flash",
3588
3595
  stallTimeoutMs: AI_STALL_TIMEOUT_MS,
3589
3596
  timeoutMs: AI_NO_RESPONSE_TIMEOUT_MS
3590
3597
  }),
3598
+ // A PREVIEW model: no stability guarantee, and it may be withdrawn at short notice (its
3599
+ // transport warns on every construction). Accepted knowingly as the platform default because
3600
+ // no stable Gemini Pro was on offer when the tiers were benched; revisit as soon as Google
3601
+ // promotes, deprecates or withdraws it, since every app on this default inherits the risk.
3591
3602
  reasoning: Object.freeze({
3592
3603
  model: "gemini-3.1-pro-preview",
3593
3604
  stallTimeoutMs: AI_STALL_TIMEOUT_MS,
@@ -3598,16 +3609,21 @@ var DEFAULT_AI_TIERS = Object.freeze({
3598
3609
  function resolveAITiers(overrides) {
3599
3610
  if (!(overrides === null || overrides === void 0 ? void 0 : overrides.anthropic) && !(overrides === null || overrides === void 0 ? void 0 : overrides.gemini))
3600
3611
  return DEFAULT_AI_TIERS;
3601
- return {
3612
+ return Object.freeze({
3602
3613
  anthropic: mergeVendor(DEFAULT_AI_TIERS.anthropic, overrides.anthropic),
3603
3614
  gemini: mergeVendor(DEFAULT_AI_TIERS.gemini, overrides.gemini)
3604
- };
3615
+ });
3605
3616
  }
3606
3617
  function mergeVendor(defaults, overrides) {
3618
+ var _a;
3607
3619
  const merged = {};
3608
3620
  for (const tier of AI_TIER_IDS) {
3609
- merged[tier] = Object.assign(Object.assign({}, defaults[tier]), overrides === null || overrides === void 0 ? void 0 : overrides[tier]);
3621
+ const defined = Object.fromEntries(Object.entries((_a = overrides === null || overrides === void 0 ? void 0 : overrides[tier]) !== null && _a !== void 0 ? _a : {}).filter(([, value]) => value !== void 0));
3622
+ const entry = Object.assign(Object.assign({}, defaults[tier]), defined);
3623
+ Object.freeze(entry);
3624
+ merged[tier] = entry;
3610
3625
  }
3626
+ Object.freeze(merged);
3611
3627
  return merged;
3612
3628
  }
3613
3629