@miradorlabs/web-grpc 3.3.0 → 3.5.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.
@@ -79,135 +79,122 @@ export function sessionSortToJSON(object: SessionSort): string {
79
79
  }
80
80
  }
81
81
 
82
- export enum AISessionEventKind {
83
- AI_SESSION_EVENT_KIND_UNSPECIFIED = 0,
84
- AI_SESSION_EVENT_KIND_SESSION_START = 1,
85
- AI_SESSION_EVENT_KIND_TURN_START = 2,
86
- AI_SESSION_EVENT_KIND_USER_MESSAGE = 3,
87
- AI_SESSION_EVENT_KIND_ASSISTANT_MESSAGE = 4,
88
- AI_SESSION_EVENT_KIND_MODEL_CALL = 5,
89
- AI_SESSION_EVENT_KIND_TOOL_CALL = 6,
90
- AI_SESSION_EVENT_KIND_TOOL_RESULT = 7,
91
- AI_SESSION_EVENT_KIND_TOOL_DECISION = 8,
92
- AI_SESSION_EVENT_KIND_COMPACTION = 9,
93
- AI_SESSION_EVENT_KIND_ERROR = 10,
94
- /** AI_SESSION_EVENT_KIND_SUBAGENT_RUN - One subagent run: what launched it, its parent and type, how it ended. Carries no usage. */
95
- AI_SESSION_EVENT_KIND_SUBAGENT_RUN = 11,
96
- /**
97
- * AI_SESSION_EVENT_KIND_AUTH - The harness's ambient records: no usage, and none of them makes a session on its own. Presence,
98
- * status and duration only; what they report stays in the stored event's attributes.
99
- */
100
- AI_SESSION_EVENT_KIND_AUTH = 12,
101
- AI_SESSION_EVENT_KIND_MCP_CONNECTION = 13,
102
- AI_SESSION_EVENT_KIND_SKILL_ACTIVATION = 14,
103
- AI_SESSION_EVENT_KIND_PERMISSION_CHANGE = 15,
104
- AI_SESSION_EVENT_KIND_CONTEXT_MENTION = 16,
105
- AI_SESSION_EVENT_KIND_USER_FEEDBACK = 17,
82
+ /**
83
+ * AISessionEventType is an event's category (core/telemetry/ai/event_type.go), read together with its subtype. The
84
+ * stored ClickHouse value is a string, so map by NAME, never by numeric cast.
85
+ */
86
+ export enum AISessionEventType {
87
+ AI_SESSION_EVENT_TYPE_UNSPECIFIED = 0,
88
+ AI_SESSION_EVENT_TYPE_SESSION = 1,
89
+ AI_SESSION_EVENT_TYPE_MESSAGE = 2,
90
+ AI_SESSION_EVENT_TYPE_MODEL = 3,
91
+ AI_SESSION_EVENT_TYPE_TOOL = 4,
92
+ AI_SESSION_EVENT_TYPE_AGENT = 5,
93
+ AI_SESSION_EVENT_TYPE_COMMAND = 6,
94
+ AI_SESSION_EVENT_TYPE_COMPACTION = 7,
95
+ AI_SESSION_EVENT_TYPE_AUTH = 8,
96
+ AI_SESSION_EVENT_TYPE_SKILL = 9,
97
+ AI_SESSION_EVENT_TYPE_MCP = 10,
98
+ AI_SESSION_EVENT_TYPE_MENTION = 11,
99
+ AI_SESSION_EVENT_TYPE_PERMISSION = 12,
100
+ AI_SESSION_EVENT_TYPE_FEEDBACK = 13,
101
+ AI_SESSION_EVENT_TYPE_ERROR = 14,
102
+ AI_SESSION_EVENT_TYPE_SUMMARY = 15,
106
103
  UNRECOGNIZED = -1,
107
104
  }
108
105
 
109
- export function aISessionEventKindFromJSON(object: any): AISessionEventKind {
106
+ export function aISessionEventTypeFromJSON(object: any): AISessionEventType {
110
107
  switch (object) {
111
108
  case 0:
112
- case "AI_SESSION_EVENT_KIND_UNSPECIFIED":
113
- return AISessionEventKind.AI_SESSION_EVENT_KIND_UNSPECIFIED;
109
+ case "AI_SESSION_EVENT_TYPE_UNSPECIFIED":
110
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_UNSPECIFIED;
114
111
  case 1:
115
- case "AI_SESSION_EVENT_KIND_SESSION_START":
116
- return AISessionEventKind.AI_SESSION_EVENT_KIND_SESSION_START;
112
+ case "AI_SESSION_EVENT_TYPE_SESSION":
113
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_SESSION;
117
114
  case 2:
118
- case "AI_SESSION_EVENT_KIND_TURN_START":
119
- return AISessionEventKind.AI_SESSION_EVENT_KIND_TURN_START;
115
+ case "AI_SESSION_EVENT_TYPE_MESSAGE":
116
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_MESSAGE;
120
117
  case 3:
121
- case "AI_SESSION_EVENT_KIND_USER_MESSAGE":
122
- return AISessionEventKind.AI_SESSION_EVENT_KIND_USER_MESSAGE;
118
+ case "AI_SESSION_EVENT_TYPE_MODEL":
119
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_MODEL;
123
120
  case 4:
124
- case "AI_SESSION_EVENT_KIND_ASSISTANT_MESSAGE":
125
- return AISessionEventKind.AI_SESSION_EVENT_KIND_ASSISTANT_MESSAGE;
121
+ case "AI_SESSION_EVENT_TYPE_TOOL":
122
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_TOOL;
126
123
  case 5:
127
- case "AI_SESSION_EVENT_KIND_MODEL_CALL":
128
- return AISessionEventKind.AI_SESSION_EVENT_KIND_MODEL_CALL;
124
+ case "AI_SESSION_EVENT_TYPE_AGENT":
125
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_AGENT;
129
126
  case 6:
130
- case "AI_SESSION_EVENT_KIND_TOOL_CALL":
131
- return AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_CALL;
127
+ case "AI_SESSION_EVENT_TYPE_COMMAND":
128
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_COMMAND;
132
129
  case 7:
133
- case "AI_SESSION_EVENT_KIND_TOOL_RESULT":
134
- return AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_RESULT;
130
+ case "AI_SESSION_EVENT_TYPE_COMPACTION":
131
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_COMPACTION;
135
132
  case 8:
136
- case "AI_SESSION_EVENT_KIND_TOOL_DECISION":
137
- return AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_DECISION;
133
+ case "AI_SESSION_EVENT_TYPE_AUTH":
134
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_AUTH;
138
135
  case 9:
139
- case "AI_SESSION_EVENT_KIND_COMPACTION":
140
- return AISessionEventKind.AI_SESSION_EVENT_KIND_COMPACTION;
136
+ case "AI_SESSION_EVENT_TYPE_SKILL":
137
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_SKILL;
141
138
  case 10:
142
- case "AI_SESSION_EVENT_KIND_ERROR":
143
- return AISessionEventKind.AI_SESSION_EVENT_KIND_ERROR;
139
+ case "AI_SESSION_EVENT_TYPE_MCP":
140
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_MCP;
144
141
  case 11:
145
- case "AI_SESSION_EVENT_KIND_SUBAGENT_RUN":
146
- return AISessionEventKind.AI_SESSION_EVENT_KIND_SUBAGENT_RUN;
142
+ case "AI_SESSION_EVENT_TYPE_MENTION":
143
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_MENTION;
147
144
  case 12:
148
- case "AI_SESSION_EVENT_KIND_AUTH":
149
- return AISessionEventKind.AI_SESSION_EVENT_KIND_AUTH;
145
+ case "AI_SESSION_EVENT_TYPE_PERMISSION":
146
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_PERMISSION;
150
147
  case 13:
151
- case "AI_SESSION_EVENT_KIND_MCP_CONNECTION":
152
- return AISessionEventKind.AI_SESSION_EVENT_KIND_MCP_CONNECTION;
148
+ case "AI_SESSION_EVENT_TYPE_FEEDBACK":
149
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_FEEDBACK;
153
150
  case 14:
154
- case "AI_SESSION_EVENT_KIND_SKILL_ACTIVATION":
155
- return AISessionEventKind.AI_SESSION_EVENT_KIND_SKILL_ACTIVATION;
151
+ case "AI_SESSION_EVENT_TYPE_ERROR":
152
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_ERROR;
156
153
  case 15:
157
- case "AI_SESSION_EVENT_KIND_PERMISSION_CHANGE":
158
- return AISessionEventKind.AI_SESSION_EVENT_KIND_PERMISSION_CHANGE;
159
- case 16:
160
- case "AI_SESSION_EVENT_KIND_CONTEXT_MENTION":
161
- return AISessionEventKind.AI_SESSION_EVENT_KIND_CONTEXT_MENTION;
162
- case 17:
163
- case "AI_SESSION_EVENT_KIND_USER_FEEDBACK":
164
- return AISessionEventKind.AI_SESSION_EVENT_KIND_USER_FEEDBACK;
154
+ case "AI_SESSION_EVENT_TYPE_SUMMARY":
155
+ return AISessionEventType.AI_SESSION_EVENT_TYPE_SUMMARY;
165
156
  case -1:
166
157
  case "UNRECOGNIZED":
167
158
  default:
168
- return AISessionEventKind.UNRECOGNIZED;
159
+ return AISessionEventType.UNRECOGNIZED;
169
160
  }
170
161
  }
171
162
 
172
- export function aISessionEventKindToJSON(object: AISessionEventKind): string {
163
+ export function aISessionEventTypeToJSON(object: AISessionEventType): string {
173
164
  switch (object) {
174
- case AISessionEventKind.AI_SESSION_EVENT_KIND_UNSPECIFIED:
175
- return "AI_SESSION_EVENT_KIND_UNSPECIFIED";
176
- case AISessionEventKind.AI_SESSION_EVENT_KIND_SESSION_START:
177
- return "AI_SESSION_EVENT_KIND_SESSION_START";
178
- case AISessionEventKind.AI_SESSION_EVENT_KIND_TURN_START:
179
- return "AI_SESSION_EVENT_KIND_TURN_START";
180
- case AISessionEventKind.AI_SESSION_EVENT_KIND_USER_MESSAGE:
181
- return "AI_SESSION_EVENT_KIND_USER_MESSAGE";
182
- case AISessionEventKind.AI_SESSION_EVENT_KIND_ASSISTANT_MESSAGE:
183
- return "AI_SESSION_EVENT_KIND_ASSISTANT_MESSAGE";
184
- case AISessionEventKind.AI_SESSION_EVENT_KIND_MODEL_CALL:
185
- return "AI_SESSION_EVENT_KIND_MODEL_CALL";
186
- case AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_CALL:
187
- return "AI_SESSION_EVENT_KIND_TOOL_CALL";
188
- case AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_RESULT:
189
- return "AI_SESSION_EVENT_KIND_TOOL_RESULT";
190
- case AISessionEventKind.AI_SESSION_EVENT_KIND_TOOL_DECISION:
191
- return "AI_SESSION_EVENT_KIND_TOOL_DECISION";
192
- case AISessionEventKind.AI_SESSION_EVENT_KIND_COMPACTION:
193
- return "AI_SESSION_EVENT_KIND_COMPACTION";
194
- case AISessionEventKind.AI_SESSION_EVENT_KIND_ERROR:
195
- return "AI_SESSION_EVENT_KIND_ERROR";
196
- case AISessionEventKind.AI_SESSION_EVENT_KIND_SUBAGENT_RUN:
197
- return "AI_SESSION_EVENT_KIND_SUBAGENT_RUN";
198
- case AISessionEventKind.AI_SESSION_EVENT_KIND_AUTH:
199
- return "AI_SESSION_EVENT_KIND_AUTH";
200
- case AISessionEventKind.AI_SESSION_EVENT_KIND_MCP_CONNECTION:
201
- return "AI_SESSION_EVENT_KIND_MCP_CONNECTION";
202
- case AISessionEventKind.AI_SESSION_EVENT_KIND_SKILL_ACTIVATION:
203
- return "AI_SESSION_EVENT_KIND_SKILL_ACTIVATION";
204
- case AISessionEventKind.AI_SESSION_EVENT_KIND_PERMISSION_CHANGE:
205
- return "AI_SESSION_EVENT_KIND_PERMISSION_CHANGE";
206
- case AISessionEventKind.AI_SESSION_EVENT_KIND_CONTEXT_MENTION:
207
- return "AI_SESSION_EVENT_KIND_CONTEXT_MENTION";
208
- case AISessionEventKind.AI_SESSION_EVENT_KIND_USER_FEEDBACK:
209
- return "AI_SESSION_EVENT_KIND_USER_FEEDBACK";
210
- case AISessionEventKind.UNRECOGNIZED:
165
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_UNSPECIFIED:
166
+ return "AI_SESSION_EVENT_TYPE_UNSPECIFIED";
167
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_SESSION:
168
+ return "AI_SESSION_EVENT_TYPE_SESSION";
169
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_MESSAGE:
170
+ return "AI_SESSION_EVENT_TYPE_MESSAGE";
171
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_MODEL:
172
+ return "AI_SESSION_EVENT_TYPE_MODEL";
173
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_TOOL:
174
+ return "AI_SESSION_EVENT_TYPE_TOOL";
175
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_AGENT:
176
+ return "AI_SESSION_EVENT_TYPE_AGENT";
177
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_COMMAND:
178
+ return "AI_SESSION_EVENT_TYPE_COMMAND";
179
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_COMPACTION:
180
+ return "AI_SESSION_EVENT_TYPE_COMPACTION";
181
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_AUTH:
182
+ return "AI_SESSION_EVENT_TYPE_AUTH";
183
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_SKILL:
184
+ return "AI_SESSION_EVENT_TYPE_SKILL";
185
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_MCP:
186
+ return "AI_SESSION_EVENT_TYPE_MCP";
187
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_MENTION:
188
+ return "AI_SESSION_EVENT_TYPE_MENTION";
189
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_PERMISSION:
190
+ return "AI_SESSION_EVENT_TYPE_PERMISSION";
191
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_FEEDBACK:
192
+ return "AI_SESSION_EVENT_TYPE_FEEDBACK";
193
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_ERROR:
194
+ return "AI_SESSION_EVENT_TYPE_ERROR";
195
+ case AISessionEventType.AI_SESSION_EVENT_TYPE_SUMMARY:
196
+ return "AI_SESSION_EVENT_TYPE_SUMMARY";
197
+ case AISessionEventType.UNRECOGNIZED:
211
198
  default:
212
199
  return "UNRECOGNIZED";
213
200
  }
@@ -878,7 +865,7 @@ export interface AISessionSummary {
878
865
  /** The efforts the session's model calls ran at; "" when a call reported none. */
879
866
  efforts: string[];
880
867
  /** Who billed the session's model calls (stored names; map them through ReferenceGatewayService). */
881
- billingParties: string[];
868
+ billers: string[];
882
869
  /** How the session's model-call costs were obtained: 'reported' by the source, 'estimated' by Mirador. */
883
870
  costSources: string[];
884
871
  /** The seats the session's model calls drew on (an account can change mid-session). */
@@ -889,6 +876,10 @@ export interface AISessionSummary {
889
876
  clients: string[];
890
877
  /** The versions those apps reported, verbatim. */
891
878
  clientVersions: string[];
879
+ /** The harness's latest title for the session (summary · session_title); "" when it named none. */
880
+ title: string;
881
+ /** The harness's latest "while you were away" recap (summary · recap); "" when it wrote none. */
882
+ recap: string;
892
883
  }
893
884
 
894
885
  export interface StreamSessionsRequest {
@@ -971,7 +962,7 @@ export interface SnapshotCompleted {
971
962
  }
972
963
 
973
964
  export interface AISessionEvent {
974
- kind: AISessionEventKind;
965
+ type: AISessionEventType;
975
966
  sequence?: number | undefined;
976
967
  eventTime: Date | undefined;
977
968
  turnId: string;
@@ -1010,6 +1001,30 @@ export interface AISessionEvent {
1010
1001
  agentName: string;
1011
1002
  /** The reasoning effort the call reported; "" when none. */
1012
1003
  effort: string;
1004
+ /**
1005
+ * The event inside its type, from one closed vocabulary per type:
1006
+ * session: start | turn message: user | assistant model: call
1007
+ * tool: call | result | decision agent: run (one subagent run)
1008
+ * command: compact | clear | resume | exit | model | effort | login | logout | usage | status | plugin | review
1009
+ * compaction: manual | auto auth: login | logout | recovery
1010
+ * skill (who activated it): user | model | nested mcp: connection
1011
+ * mention: file | directory | agent | mcp_resource | peer
1012
+ * permission (the mode entered): default | accept_edits | plan | auto | bypass
1013
+ * feedback: survey error: harness
1014
+ * summary: session_title | recap | agent_progress | compaction (text in content)
1015
+ * "" = not reported; "other" = the source named something outside the vocabulary. Values are only ever added;
1016
+ * keep an unfamiliar one as it is.
1017
+ */
1018
+ subtype: string;
1019
+ /** The harness's own label for the record the event was mapped from (api_request, /compact), for reference only. */
1020
+ context: string;
1021
+ /**
1022
+ * conversation | auxiliary (the harness's own housekeeping: titles, summaries, suggestions) | "" (not reported),
1023
+ * on model calls and assistant replies.
1024
+ */
1025
+ callCategory: string;
1026
+ /** commentary | final | "" (not reported), on assistant replies. */
1027
+ replyPhase: string;
1013
1028
  }
1014
1029
 
1015
1030
  export interface AIContentPart {
@@ -1110,7 +1125,7 @@ export interface SessionModelUsage {
1110
1125
  export interface SessionTimelinePoint {
1111
1126
  logicalEventId: string;
1112
1127
  cursor: string;
1113
- kind: AISessionEventKind;
1128
+ type: AISessionEventType;
1114
1129
  eventTime: Date | undefined;
1115
1130
  model: string;
1116
1131
  provider: string;
@@ -1122,6 +1137,8 @@ export interface SessionTimelinePoint {
1122
1137
  /** Funding facility observed on this event (lens, not reconciled) so the timeline can tint by facility. */
1123
1138
  fundingMode: AIFundingMode;
1124
1139
  effort: string;
1140
+ /** The event inside its type; see AISessionEvent.subtype. */
1141
+ subtype: string;
1125
1142
  }
1126
1143
 
1127
1144
  /**
@@ -1733,10 +1750,15 @@ export interface ListModelPricesRequest {
1733
1750
  pageToken: string;
1734
1751
  }
1735
1752
 
1753
+ /**
1754
+ * AIModelPriceFilter selects prices by stored name, matched exactly (any-of within a field, AND across
1755
+ * fields). Filter on a display name by sending every stored name the reference registry maps onto it.
1756
+ */
1736
1757
  export interface AIModelPriceFilter {
1737
1758
  source: string[];
1738
- provider: string[];
1739
- model: string[];
1759
+ biller: string[];
1760
+ modelRaw: string[];
1761
+ providerRaw: string[];
1740
1762
  }
1741
1763
 
1742
1764
  export interface ListModelPricesResponse {
@@ -1749,7 +1771,7 @@ export interface ListModelPricesResponse {
1749
1771
  export interface ListModelPriceHistoryRequest {
1750
1772
  organizationId: string;
1751
1773
  projectId: string;
1752
- /** model is required; source and provider narrow it further. */
1774
+ /** model_raw is required; source, biller and provider_raw narrow it further. */
1753
1775
  filter:
1754
1776
  | AIModelPriceFilter
1755
1777
  | undefined;
@@ -1766,15 +1788,29 @@ export interface ListModelPriceHistoryResponse {
1766
1788
  truncated: boolean;
1767
1789
  }
1768
1790
 
1791
+ /**
1792
+ * AIModelPrice is one catalog listing's latest list price, under stored names the caller maps through
1793
+ * the reference registry (ListAIModels / ListAIProviders / ListAIBillers).
1794
+ */
1769
1795
  export interface AIModelPrice {
1770
1796
  source: string;
1771
- provider: string;
1772
- model: string;
1797
+ /** The company that bills for the model (openrouter, anthropic, amazon-bedrock). */
1798
+ biller: string;
1799
+ /** The model exactly as the catalog spells it (anthropic/claude-sonnet-4.5 on OpenRouter), never cut. */
1800
+ modelRaw: string;
1773
1801
  scrapedAt: Date | undefined;
1774
1802
  inputUsdPerMtok: number;
1775
1803
  outputUsdPerMtok: number;
1776
1804
  cacheReadUsdPerMtok: number;
1777
1805
  cacheWriteUsdPerMtok: number;
1806
+ /** The model vendor the listing names ("anthropic"), "" when it names none. */
1807
+ providerRaw: string;
1808
+ /** The effort the listing prices, "" when the catalog states none (every source today). */
1809
+ effortRaw: string;
1810
+ /** The catalog's exact model id: tells apart two listings of one model at one biller. */
1811
+ listingId: string;
1812
+ /** Normalized geography the price applies to (global, us, eu, ...), "" unscoped. */
1813
+ region: string;
1778
1814
  }
1779
1815
 
1780
1816
  export interface AITokenUsage {
@@ -1828,11 +1864,11 @@ export interface EntitlementsSnapshot {
1828
1864
  * SeatEntitlement mirrors telemetry.api.v1.SeatEntitlement: one entitlement owner's latest observed
1829
1865
  * funding state. Seat-scoped ((source_system, account_id)); principal_id/name best-effort. Seat-scoped:
1830
1866
  * windows are one seat's usage bars, never a team-pool sum. credits_balance_raw is verbatim, not USD.
1831
- * A seat is an entitlement owner (billing_party, account_id), linked to a person through its principal and
1867
+ * A seat is an entitlement owner (biller, account_id), linked to a person through its principal and
1832
1868
  * the org member an admin linked that principal to. Mirrors telemetry.api.v1.SeatEntitlement.
1833
1869
  */
1834
1870
  export interface SeatEntitlement {
1835
- billingParty: string;
1871
+ biller: string;
1836
1872
  accountId: string;
1837
1873
  principalId: string;
1838
1874
  principalName: string;
@@ -2473,12 +2509,14 @@ function createBaseAISessionSummary(): AISessionSummary {
2473
2509
  sessionVersion: 0,
2474
2510
  subagents: 0,
2475
2511
  efforts: [],
2476
- billingParties: [],
2512
+ billers: [],
2477
2513
  costSources: [],
2478
2514
  accountIds: [],
2479
2515
  observer: "",
2480
2516
  clients: [],
2481
2517
  clientVersions: [],
2518
+ title: "",
2519
+ recap: "",
2482
2520
  };
2483
2521
  }
2484
2522
 
@@ -2562,7 +2600,7 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2562
2600
  for (const v of message.efforts) {
2563
2601
  writer.uint32(210).string(v!);
2564
2602
  }
2565
- for (const v of message.billingParties) {
2603
+ for (const v of message.billers) {
2566
2604
  writer.uint32(218).string(v!);
2567
2605
  }
2568
2606
  for (const v of message.costSources) {
@@ -2580,6 +2618,12 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2580
2618
  for (const v of message.clientVersions) {
2581
2619
  writer.uint32(258).string(v!);
2582
2620
  }
2621
+ if (message.title !== "") {
2622
+ writer.uint32(266).string(message.title);
2623
+ }
2624
+ if (message.recap !== "") {
2625
+ writer.uint32(274).string(message.recap);
2626
+ }
2583
2627
  return writer;
2584
2628
  },
2585
2629
 
@@ -2809,7 +2853,7 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2809
2853
  break;
2810
2854
  }
2811
2855
 
2812
- message.billingParties.push(reader.string());
2856
+ message.billers.push(reader.string());
2813
2857
  continue;
2814
2858
  }
2815
2859
  case 28: {
@@ -2852,6 +2896,22 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2852
2896
  message.clientVersions.push(reader.string());
2853
2897
  continue;
2854
2898
  }
2899
+ case 33: {
2900
+ if (tag !== 266) {
2901
+ break;
2902
+ }
2903
+
2904
+ message.title = reader.string();
2905
+ continue;
2906
+ }
2907
+ case 34: {
2908
+ if (tag !== 274) {
2909
+ break;
2910
+ }
2911
+
2912
+ message.recap = reader.string();
2913
+ continue;
2914
+ }
2855
2915
  }
2856
2916
  if ((tag & 7) === 4 || tag === 0) {
2857
2917
  break;
@@ -2972,10 +3032,8 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2972
3032
  efforts: globalThis.Array.isArray(object?.efforts)
2973
3033
  ? object.efforts.map((e: any) => globalThis.String(e))
2974
3034
  : [],
2975
- billingParties: globalThis.Array.isArray(object?.billingParties)
2976
- ? object.billingParties.map((e: any) => globalThis.String(e))
2977
- : globalThis.Array.isArray(object?.billing_parties)
2978
- ? object.billing_parties.map((e: any) => globalThis.String(e))
3035
+ billers: globalThis.Array.isArray(object?.billers)
3036
+ ? object.billers.map((e: any) => globalThis.String(e))
2979
3037
  : [],
2980
3038
  costSources: globalThis.Array.isArray(object?.costSources)
2981
3039
  ? object.costSources.map((e: any) => globalThis.String(e))
@@ -2996,6 +3054,8 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2996
3054
  : globalThis.Array.isArray(object?.client_versions)
2997
3055
  ? object.client_versions.map((e: any) => globalThis.String(e))
2998
3056
  : [],
3057
+ title: isSet(object.title) ? globalThis.String(object.title) : "",
3058
+ recap: isSet(object.recap) ? globalThis.String(object.recap) : "",
2999
3059
  };
3000
3060
  },
3001
3061
 
@@ -3079,8 +3139,8 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
3079
3139
  if (message.efforts?.length) {
3080
3140
  obj.efforts = message.efforts;
3081
3141
  }
3082
- if (message.billingParties?.length) {
3083
- obj.billingParties = message.billingParties;
3142
+ if (message.billers?.length) {
3143
+ obj.billers = message.billers;
3084
3144
  }
3085
3145
  if (message.costSources?.length) {
3086
3146
  obj.costSources = message.costSources;
@@ -3097,6 +3157,12 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
3097
3157
  if (message.clientVersions?.length) {
3098
3158
  obj.clientVersions = message.clientVersions;
3099
3159
  }
3160
+ if (message.title !== "") {
3161
+ obj.title = message.title;
3162
+ }
3163
+ if (message.recap !== "") {
3164
+ obj.recap = message.recap;
3165
+ }
3100
3166
  return obj;
3101
3167
  },
3102
3168
 
@@ -3133,12 +3199,14 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
3133
3199
  message.sessionVersion = object.sessionVersion ?? 0;
3134
3200
  message.subagents = object.subagents ?? 0;
3135
3201
  message.efforts = object.efforts?.map((e) => e) || [];
3136
- message.billingParties = object.billingParties?.map((e) => e) || [];
3202
+ message.billers = object.billers?.map((e) => e) || [];
3137
3203
  message.costSources = object.costSources?.map((e) => e) || [];
3138
3204
  message.accountIds = object.accountIds?.map((e) => e) || [];
3139
3205
  message.observer = object.observer ?? "";
3140
3206
  message.clients = object.clients?.map((e) => e) || [];
3141
3207
  message.clientVersions = object.clientVersions?.map((e) => e) || [];
3208
+ message.title = object.title ?? "";
3209
+ message.recap = object.recap ?? "";
3142
3210
  return message;
3143
3211
  },
3144
3212
  };
@@ -4150,7 +4218,7 @@ export const SnapshotCompleted: MessageFns<SnapshotCompleted> = {
4150
4218
 
4151
4219
  function createBaseAISessionEvent(): AISessionEvent {
4152
4220
  return {
4153
- kind: 0,
4221
+ type: 0,
4154
4222
  sequence: undefined,
4155
4223
  eventTime: undefined,
4156
4224
  turnId: "",
@@ -4174,13 +4242,17 @@ function createBaseAISessionEvent(): AISessionEvent {
4174
4242
  isSubagent: false,
4175
4243
  agentName: "",
4176
4244
  effort: "",
4245
+ subtype: "",
4246
+ context: "",
4247
+ callCategory: "",
4248
+ replyPhase: "",
4177
4249
  };
4178
4250
  }
4179
4251
 
4180
4252
  export const AISessionEvent: MessageFns<AISessionEvent> = {
4181
4253
  encode(message: AISessionEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
4182
- if (message.kind !== 0) {
4183
- writer.uint32(8).int32(message.kind);
4254
+ if (message.type !== 0) {
4255
+ writer.uint32(8).int32(message.type);
4184
4256
  }
4185
4257
  if (message.sequence !== undefined) {
4186
4258
  writer.uint32(16).int64(message.sequence);
@@ -4251,6 +4323,18 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4251
4323
  if (message.effort !== "") {
4252
4324
  writer.uint32(194).string(message.effort);
4253
4325
  }
4326
+ if (message.subtype !== "") {
4327
+ writer.uint32(202).string(message.subtype);
4328
+ }
4329
+ if (message.context !== "") {
4330
+ writer.uint32(210).string(message.context);
4331
+ }
4332
+ if (message.callCategory !== "") {
4333
+ writer.uint32(218).string(message.callCategory);
4334
+ }
4335
+ if (message.replyPhase !== "") {
4336
+ writer.uint32(226).string(message.replyPhase);
4337
+ }
4254
4338
  return writer;
4255
4339
  },
4256
4340
 
@@ -4272,7 +4356,7 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4272
4356
  break;
4273
4357
  }
4274
4358
 
4275
- message.kind = reader.int32() as any;
4359
+ message.type = reader.int32() as any;
4276
4360
  continue;
4277
4361
  }
4278
4362
  case 2: {
@@ -4459,6 +4543,38 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4459
4543
  message.effort = reader.string();
4460
4544
  continue;
4461
4545
  }
4546
+ case 25: {
4547
+ if (tag !== 202) {
4548
+ break;
4549
+ }
4550
+
4551
+ message.subtype = reader.string();
4552
+ continue;
4553
+ }
4554
+ case 26: {
4555
+ if (tag !== 210) {
4556
+ break;
4557
+ }
4558
+
4559
+ message.context = reader.string();
4560
+ continue;
4561
+ }
4562
+ case 27: {
4563
+ if (tag !== 218) {
4564
+ break;
4565
+ }
4566
+
4567
+ message.callCategory = reader.string();
4568
+ continue;
4569
+ }
4570
+ case 28: {
4571
+ if (tag !== 226) {
4572
+ break;
4573
+ }
4574
+
4575
+ message.replyPhase = reader.string();
4576
+ continue;
4577
+ }
4462
4578
  }
4463
4579
  if ((tag & 7) === 4 || tag === 0) {
4464
4580
  break;
@@ -4473,7 +4589,7 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4473
4589
 
4474
4590
  fromJSON(object: any): AISessionEvent {
4475
4591
  return {
4476
- kind: isSet(object.kind) ? aISessionEventKindFromJSON(object.kind) : 0,
4592
+ type: isSet(object.type) ? aISessionEventTypeFromJSON(object.type) : 0,
4477
4593
  sequence: isSet(object.sequence) ? globalThis.Number(object.sequence) : undefined,
4478
4594
  eventTime: isSet(object.eventTime)
4479
4595
  ? fromJsonTimestamp(object.eventTime)
@@ -4555,13 +4671,25 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4555
4671
  ? globalThis.String(object.agent_name)
4556
4672
  : "",
4557
4673
  effort: isSet(object.effort) ? globalThis.String(object.effort) : "",
4674
+ subtype: isSet(object.subtype) ? globalThis.String(object.subtype) : "",
4675
+ context: isSet(object.context) ? globalThis.String(object.context) : "",
4676
+ callCategory: isSet(object.callCategory)
4677
+ ? globalThis.String(object.callCategory)
4678
+ : isSet(object.call_category)
4679
+ ? globalThis.String(object.call_category)
4680
+ : "",
4681
+ replyPhase: isSet(object.replyPhase)
4682
+ ? globalThis.String(object.replyPhase)
4683
+ : isSet(object.reply_phase)
4684
+ ? globalThis.String(object.reply_phase)
4685
+ : "",
4558
4686
  };
4559
4687
  },
4560
4688
 
4561
4689
  toJSON(message: AISessionEvent): unknown {
4562
4690
  const obj: any = {};
4563
- if (message.kind !== 0) {
4564
- obj.kind = aISessionEventKindToJSON(message.kind);
4691
+ if (message.type !== 0) {
4692
+ obj.type = aISessionEventTypeToJSON(message.type);
4565
4693
  }
4566
4694
  if (message.sequence !== undefined) {
4567
4695
  obj.sequence = Math.round(message.sequence);
@@ -4632,6 +4760,18 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4632
4760
  if (message.effort !== "") {
4633
4761
  obj.effort = message.effort;
4634
4762
  }
4763
+ if (message.subtype !== "") {
4764
+ obj.subtype = message.subtype;
4765
+ }
4766
+ if (message.context !== "") {
4767
+ obj.context = message.context;
4768
+ }
4769
+ if (message.callCategory !== "") {
4770
+ obj.callCategory = message.callCategory;
4771
+ }
4772
+ if (message.replyPhase !== "") {
4773
+ obj.replyPhase = message.replyPhase;
4774
+ }
4635
4775
  return obj;
4636
4776
  },
4637
4777
 
@@ -4640,7 +4780,7 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4640
4780
  },
4641
4781
  fromPartial<I extends Exact<DeepPartial<AISessionEvent>, I>>(object: I): AISessionEvent {
4642
4782
  const message = createBaseAISessionEvent();
4643
- message.kind = object.kind ?? 0;
4783
+ message.type = object.type ?? 0;
4644
4784
  message.sequence = object.sequence ?? undefined;
4645
4785
  message.eventTime = object.eventTime ?? undefined;
4646
4786
  message.turnId = object.turnId ?? "";
@@ -4666,6 +4806,10 @@ export const AISessionEvent: MessageFns<AISessionEvent> = {
4666
4806
  message.isSubagent = object.isSubagent ?? false;
4667
4807
  message.agentName = object.agentName ?? "";
4668
4808
  message.effort = object.effort ?? "";
4809
+ message.subtype = object.subtype ?? "";
4810
+ message.context = object.context ?? "";
4811
+ message.callCategory = object.callCategory ?? "";
4812
+ message.replyPhase = object.replyPhase ?? "";
4669
4813
  return message;
4670
4814
  },
4671
4815
  };
@@ -5851,7 +5995,7 @@ function createBaseSessionTimelinePoint(): SessionTimelinePoint {
5851
5995
  return {
5852
5996
  logicalEventId: "",
5853
5997
  cursor: "",
5854
- kind: 0,
5998
+ type: 0,
5855
5999
  eventTime: undefined,
5856
6000
  model: "",
5857
6001
  provider: "",
@@ -5860,6 +6004,7 @@ function createBaseSessionTimelinePoint(): SessionTimelinePoint {
5860
6004
  usage: undefined,
5861
6005
  fundingMode: 0,
5862
6006
  effort: "",
6007
+ subtype: "",
5863
6008
  };
5864
6009
  }
5865
6010
 
@@ -5871,8 +6016,8 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
5871
6016
  if (message.cursor !== "") {
5872
6017
  writer.uint32(18).string(message.cursor);
5873
6018
  }
5874
- if (message.kind !== 0) {
5875
- writer.uint32(24).int32(message.kind);
6019
+ if (message.type !== 0) {
6020
+ writer.uint32(24).int32(message.type);
5876
6021
  }
5877
6022
  if (message.eventTime !== undefined) {
5878
6023
  Timestamp.encode(toTimestamp(message.eventTime), writer.uint32(34).fork()).join();
@@ -5898,6 +6043,9 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
5898
6043
  if (message.effort !== "") {
5899
6044
  writer.uint32(90).string(message.effort);
5900
6045
  }
6046
+ if (message.subtype !== "") {
6047
+ writer.uint32(98).string(message.subtype);
6048
+ }
5901
6049
  return writer;
5902
6050
  },
5903
6051
 
@@ -5935,7 +6083,7 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
5935
6083
  break;
5936
6084
  }
5937
6085
 
5938
- message.kind = reader.int32() as any;
6086
+ message.type = reader.int32() as any;
5939
6087
  continue;
5940
6088
  }
5941
6089
  case 4: {
@@ -6002,6 +6150,14 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6002
6150
  message.effort = reader.string();
6003
6151
  continue;
6004
6152
  }
6153
+ case 12: {
6154
+ if (tag !== 98) {
6155
+ break;
6156
+ }
6157
+
6158
+ message.subtype = reader.string();
6159
+ continue;
6160
+ }
6005
6161
  }
6006
6162
  if ((tag & 7) === 4 || tag === 0) {
6007
6163
  break;
@@ -6022,7 +6178,7 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6022
6178
  ? globalThis.String(object.logical_event_id)
6023
6179
  : "",
6024
6180
  cursor: isSet(object.cursor) ? globalThis.String(object.cursor) : "",
6025
- kind: isSet(object.kind) ? aISessionEventKindFromJSON(object.kind) : 0,
6181
+ type: isSet(object.type) ? aISessionEventTypeFromJSON(object.type) : 0,
6026
6182
  eventTime: isSet(object.eventTime)
6027
6183
  ? fromJsonTimestamp(object.eventTime)
6028
6184
  : isSet(object.event_time)
@@ -6047,6 +6203,7 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6047
6203
  ? aIFundingModeFromJSON(object.funding_mode)
6048
6204
  : 0,
6049
6205
  effort: isSet(object.effort) ? globalThis.String(object.effort) : "",
6206
+ subtype: isSet(object.subtype) ? globalThis.String(object.subtype) : "",
6050
6207
  };
6051
6208
  },
6052
6209
 
@@ -6058,8 +6215,8 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6058
6215
  if (message.cursor !== "") {
6059
6216
  obj.cursor = message.cursor;
6060
6217
  }
6061
- if (message.kind !== 0) {
6062
- obj.kind = aISessionEventKindToJSON(message.kind);
6218
+ if (message.type !== 0) {
6219
+ obj.type = aISessionEventTypeToJSON(message.type);
6063
6220
  }
6064
6221
  if (message.eventTime !== undefined) {
6065
6222
  obj.eventTime = message.eventTime.toISOString();
@@ -6085,6 +6242,9 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6085
6242
  if (message.effort !== "") {
6086
6243
  obj.effort = message.effort;
6087
6244
  }
6245
+ if (message.subtype !== "") {
6246
+ obj.subtype = message.subtype;
6247
+ }
6088
6248
  return obj;
6089
6249
  },
6090
6250
 
@@ -6095,7 +6255,7 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6095
6255
  const message = createBaseSessionTimelinePoint();
6096
6256
  message.logicalEventId = object.logicalEventId ?? "";
6097
6257
  message.cursor = object.cursor ?? "";
6098
- message.kind = object.kind ?? 0;
6258
+ message.type = object.type ?? 0;
6099
6259
  message.eventTime = object.eventTime ?? undefined;
6100
6260
  message.model = object.model ?? "";
6101
6261
  message.provider = object.provider ?? "";
@@ -6106,6 +6266,7 @@ export const SessionTimelinePoint: MessageFns<SessionTimelinePoint> = {
6106
6266
  : undefined;
6107
6267
  message.fundingMode = object.fundingMode ?? 0;
6108
6268
  message.effort = object.effort ?? "";
6269
+ message.subtype = object.subtype ?? "";
6109
6270
  return message;
6110
6271
  },
6111
6272
  };
@@ -15551,7 +15712,7 @@ export const ListModelPricesRequest: MessageFns<ListModelPricesRequest> = {
15551
15712
  };
15552
15713
 
15553
15714
  function createBaseAIModelPriceFilter(): AIModelPriceFilter {
15554
- return { source: [], provider: [], model: [] };
15715
+ return { source: [], biller: [], modelRaw: [], providerRaw: [] };
15555
15716
  }
15556
15717
 
15557
15718
  export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
@@ -15559,12 +15720,15 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15559
15720
  for (const v of message.source) {
15560
15721
  writer.uint32(10).string(v!);
15561
15722
  }
15562
- for (const v of message.provider) {
15723
+ for (const v of message.biller) {
15563
15724
  writer.uint32(18).string(v!);
15564
15725
  }
15565
- for (const v of message.model) {
15726
+ for (const v of message.modelRaw) {
15566
15727
  writer.uint32(26).string(v!);
15567
15728
  }
15729
+ for (const v of message.providerRaw) {
15730
+ writer.uint32(34).string(v!);
15731
+ }
15568
15732
  return writer;
15569
15733
  },
15570
15734
 
@@ -15594,7 +15758,7 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15594
15758
  break;
15595
15759
  }
15596
15760
 
15597
- message.provider.push(reader.string());
15761
+ message.biller.push(reader.string());
15598
15762
  continue;
15599
15763
  }
15600
15764
  case 3: {
@@ -15602,7 +15766,15 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15602
15766
  break;
15603
15767
  }
15604
15768
 
15605
- message.model.push(reader.string());
15769
+ message.modelRaw.push(reader.string());
15770
+ continue;
15771
+ }
15772
+ case 4: {
15773
+ if (tag !== 34) {
15774
+ break;
15775
+ }
15776
+
15777
+ message.providerRaw.push(reader.string());
15606
15778
  continue;
15607
15779
  }
15608
15780
  }
@@ -15620,8 +15792,17 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15620
15792
  fromJSON(object: any): AIModelPriceFilter {
15621
15793
  return {
15622
15794
  source: globalThis.Array.isArray(object?.source) ? object.source.map((e: any) => globalThis.String(e)) : [],
15623
- provider: globalThis.Array.isArray(object?.provider) ? object.provider.map((e: any) => globalThis.String(e)) : [],
15624
- model: globalThis.Array.isArray(object?.model) ? object.model.map((e: any) => globalThis.String(e)) : [],
15795
+ biller: globalThis.Array.isArray(object?.biller) ? object.biller.map((e: any) => globalThis.String(e)) : [],
15796
+ modelRaw: globalThis.Array.isArray(object?.modelRaw)
15797
+ ? object.modelRaw.map((e: any) => globalThis.String(e))
15798
+ : globalThis.Array.isArray(object?.model_raw)
15799
+ ? object.model_raw.map((e: any) => globalThis.String(e))
15800
+ : [],
15801
+ providerRaw: globalThis.Array.isArray(object?.providerRaw)
15802
+ ? object.providerRaw.map((e: any) => globalThis.String(e))
15803
+ : globalThis.Array.isArray(object?.provider_raw)
15804
+ ? object.provider_raw.map((e: any) => globalThis.String(e))
15805
+ : [],
15625
15806
  };
15626
15807
  },
15627
15808
 
@@ -15630,11 +15811,14 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15630
15811
  if (message.source?.length) {
15631
15812
  obj.source = message.source;
15632
15813
  }
15633
- if (message.provider?.length) {
15634
- obj.provider = message.provider;
15814
+ if (message.biller?.length) {
15815
+ obj.biller = message.biller;
15635
15816
  }
15636
- if (message.model?.length) {
15637
- obj.model = message.model;
15817
+ if (message.modelRaw?.length) {
15818
+ obj.modelRaw = message.modelRaw;
15819
+ }
15820
+ if (message.providerRaw?.length) {
15821
+ obj.providerRaw = message.providerRaw;
15638
15822
  }
15639
15823
  return obj;
15640
15824
  },
@@ -15645,8 +15829,9 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15645
15829
  fromPartial<I extends Exact<DeepPartial<AIModelPriceFilter>, I>>(object: I): AIModelPriceFilter {
15646
15830
  const message = createBaseAIModelPriceFilter();
15647
15831
  message.source = object.source?.map((e) => e) || [];
15648
- message.provider = object.provider?.map((e) => e) || [];
15649
- message.model = object.model?.map((e) => e) || [];
15832
+ message.biller = object.biller?.map((e) => e) || [];
15833
+ message.modelRaw = object.modelRaw?.map((e) => e) || [];
15834
+ message.providerRaw = object.providerRaw?.map((e) => e) || [];
15650
15835
  return message;
15651
15836
  },
15652
15837
  };
@@ -16064,13 +16249,17 @@ export const ListModelPriceHistoryResponse: MessageFns<ListModelPriceHistoryResp
16064
16249
  function createBaseAIModelPrice(): AIModelPrice {
16065
16250
  return {
16066
16251
  source: "",
16067
- provider: "",
16068
- model: "",
16252
+ biller: "",
16253
+ modelRaw: "",
16069
16254
  scrapedAt: undefined,
16070
16255
  inputUsdPerMtok: 0,
16071
16256
  outputUsdPerMtok: 0,
16072
16257
  cacheReadUsdPerMtok: 0,
16073
16258
  cacheWriteUsdPerMtok: 0,
16259
+ providerRaw: "",
16260
+ effortRaw: "",
16261
+ listingId: "",
16262
+ region: "",
16074
16263
  };
16075
16264
  }
16076
16265
 
@@ -16079,11 +16268,11 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16079
16268
  if (message.source !== "") {
16080
16269
  writer.uint32(10).string(message.source);
16081
16270
  }
16082
- if (message.provider !== "") {
16083
- writer.uint32(18).string(message.provider);
16271
+ if (message.biller !== "") {
16272
+ writer.uint32(18).string(message.biller);
16084
16273
  }
16085
- if (message.model !== "") {
16086
- writer.uint32(26).string(message.model);
16274
+ if (message.modelRaw !== "") {
16275
+ writer.uint32(26).string(message.modelRaw);
16087
16276
  }
16088
16277
  if (message.scrapedAt !== undefined) {
16089
16278
  Timestamp.encode(toTimestamp(message.scrapedAt), writer.uint32(34).fork()).join();
@@ -16100,6 +16289,18 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16100
16289
  if (message.cacheWriteUsdPerMtok !== 0) {
16101
16290
  writer.uint32(65).double(message.cacheWriteUsdPerMtok);
16102
16291
  }
16292
+ if (message.providerRaw !== "") {
16293
+ writer.uint32(74).string(message.providerRaw);
16294
+ }
16295
+ if (message.effortRaw !== "") {
16296
+ writer.uint32(82).string(message.effortRaw);
16297
+ }
16298
+ if (message.listingId !== "") {
16299
+ writer.uint32(90).string(message.listingId);
16300
+ }
16301
+ if (message.region !== "") {
16302
+ writer.uint32(98).string(message.region);
16303
+ }
16103
16304
  return writer;
16104
16305
  },
16105
16306
 
@@ -16129,7 +16330,7 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16129
16330
  break;
16130
16331
  }
16131
16332
 
16132
- message.provider = reader.string();
16333
+ message.biller = reader.string();
16133
16334
  continue;
16134
16335
  }
16135
16336
  case 3: {
@@ -16137,7 +16338,7 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16137
16338
  break;
16138
16339
  }
16139
16340
 
16140
- message.model = reader.string();
16341
+ message.modelRaw = reader.string();
16141
16342
  continue;
16142
16343
  }
16143
16344
  case 4: {
@@ -16180,6 +16381,38 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16180
16381
  message.cacheWriteUsdPerMtok = reader.double();
16181
16382
  continue;
16182
16383
  }
16384
+ case 9: {
16385
+ if (tag !== 74) {
16386
+ break;
16387
+ }
16388
+
16389
+ message.providerRaw = reader.string();
16390
+ continue;
16391
+ }
16392
+ case 10: {
16393
+ if (tag !== 82) {
16394
+ break;
16395
+ }
16396
+
16397
+ message.effortRaw = reader.string();
16398
+ continue;
16399
+ }
16400
+ case 11: {
16401
+ if (tag !== 90) {
16402
+ break;
16403
+ }
16404
+
16405
+ message.listingId = reader.string();
16406
+ continue;
16407
+ }
16408
+ case 12: {
16409
+ if (tag !== 98) {
16410
+ break;
16411
+ }
16412
+
16413
+ message.region = reader.string();
16414
+ continue;
16415
+ }
16183
16416
  }
16184
16417
  if ((tag & 7) === 4 || tag === 0) {
16185
16418
  break;
@@ -16195,8 +16428,12 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16195
16428
  fromJSON(object: any): AIModelPrice {
16196
16429
  return {
16197
16430
  source: isSet(object.source) ? globalThis.String(object.source) : "",
16198
- provider: isSet(object.provider) ? globalThis.String(object.provider) : "",
16199
- model: isSet(object.model) ? globalThis.String(object.model) : "",
16431
+ biller: isSet(object.biller) ? globalThis.String(object.biller) : "",
16432
+ modelRaw: isSet(object.modelRaw)
16433
+ ? globalThis.String(object.modelRaw)
16434
+ : isSet(object.model_raw)
16435
+ ? globalThis.String(object.model_raw)
16436
+ : "",
16200
16437
  scrapedAt: isSet(object.scrapedAt)
16201
16438
  ? fromJsonTimestamp(object.scrapedAt)
16202
16439
  : isSet(object.scraped_at)
@@ -16222,6 +16459,22 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16222
16459
  : isSet(object.cache_write_usd_per_mtok)
16223
16460
  ? globalThis.Number(object.cache_write_usd_per_mtok)
16224
16461
  : 0,
16462
+ providerRaw: isSet(object.providerRaw)
16463
+ ? globalThis.String(object.providerRaw)
16464
+ : isSet(object.provider_raw)
16465
+ ? globalThis.String(object.provider_raw)
16466
+ : "",
16467
+ effortRaw: isSet(object.effortRaw)
16468
+ ? globalThis.String(object.effortRaw)
16469
+ : isSet(object.effort_raw)
16470
+ ? globalThis.String(object.effort_raw)
16471
+ : "",
16472
+ listingId: isSet(object.listingId)
16473
+ ? globalThis.String(object.listingId)
16474
+ : isSet(object.listing_id)
16475
+ ? globalThis.String(object.listing_id)
16476
+ : "",
16477
+ region: isSet(object.region) ? globalThis.String(object.region) : "",
16225
16478
  };
16226
16479
  },
16227
16480
 
@@ -16230,11 +16483,11 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16230
16483
  if (message.source !== "") {
16231
16484
  obj.source = message.source;
16232
16485
  }
16233
- if (message.provider !== "") {
16234
- obj.provider = message.provider;
16486
+ if (message.biller !== "") {
16487
+ obj.biller = message.biller;
16235
16488
  }
16236
- if (message.model !== "") {
16237
- obj.model = message.model;
16489
+ if (message.modelRaw !== "") {
16490
+ obj.modelRaw = message.modelRaw;
16238
16491
  }
16239
16492
  if (message.scrapedAt !== undefined) {
16240
16493
  obj.scrapedAt = message.scrapedAt.toISOString();
@@ -16251,6 +16504,18 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16251
16504
  if (message.cacheWriteUsdPerMtok !== 0) {
16252
16505
  obj.cacheWriteUsdPerMtok = message.cacheWriteUsdPerMtok;
16253
16506
  }
16507
+ if (message.providerRaw !== "") {
16508
+ obj.providerRaw = message.providerRaw;
16509
+ }
16510
+ if (message.effortRaw !== "") {
16511
+ obj.effortRaw = message.effortRaw;
16512
+ }
16513
+ if (message.listingId !== "") {
16514
+ obj.listingId = message.listingId;
16515
+ }
16516
+ if (message.region !== "") {
16517
+ obj.region = message.region;
16518
+ }
16254
16519
  return obj;
16255
16520
  },
16256
16521
 
@@ -16260,13 +16525,17 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16260
16525
  fromPartial<I extends Exact<DeepPartial<AIModelPrice>, I>>(object: I): AIModelPrice {
16261
16526
  const message = createBaseAIModelPrice();
16262
16527
  message.source = object.source ?? "";
16263
- message.provider = object.provider ?? "";
16264
- message.model = object.model ?? "";
16528
+ message.biller = object.biller ?? "";
16529
+ message.modelRaw = object.modelRaw ?? "";
16265
16530
  message.scrapedAt = object.scrapedAt ?? undefined;
16266
16531
  message.inputUsdPerMtok = object.inputUsdPerMtok ?? 0;
16267
16532
  message.outputUsdPerMtok = object.outputUsdPerMtok ?? 0;
16268
16533
  message.cacheReadUsdPerMtok = object.cacheReadUsdPerMtok ?? 0;
16269
16534
  message.cacheWriteUsdPerMtok = object.cacheWriteUsdPerMtok ?? 0;
16535
+ message.providerRaw = object.providerRaw ?? "";
16536
+ message.effortRaw = object.effortRaw ?? "";
16537
+ message.listingId = object.listingId ?? "";
16538
+ message.region = object.region ?? "";
16270
16539
  return message;
16271
16540
  },
16272
16541
  };
@@ -16839,7 +17108,7 @@ export const EntitlementsSnapshot: MessageFns<EntitlementsSnapshot> = {
16839
17108
 
16840
17109
  function createBaseSeatEntitlement(): SeatEntitlement {
16841
17110
  return {
16842
- billingParty: "",
17111
+ biller: "",
16843
17112
  accountId: "",
16844
17113
  principalId: "",
16845
17114
  principalName: "",
@@ -16859,8 +17128,8 @@ function createBaseSeatEntitlement(): SeatEntitlement {
16859
17128
 
16860
17129
  export const SeatEntitlement: MessageFns<SeatEntitlement> = {
16861
17130
  encode(message: SeatEntitlement, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
16862
- if (message.billingParty !== "") {
16863
- writer.uint32(10).string(message.billingParty);
17131
+ if (message.biller !== "") {
17132
+ writer.uint32(10).string(message.biller);
16864
17133
  }
16865
17134
  if (message.accountId !== "") {
16866
17135
  writer.uint32(18).string(message.accountId);
@@ -16925,7 +17194,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
16925
17194
  break;
16926
17195
  }
16927
17196
 
16928
- message.billingParty = reader.string();
17197
+ message.biller = reader.string();
16929
17198
  continue;
16930
17199
  }
16931
17200
  case 2: {
@@ -17054,11 +17323,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17054
17323
 
17055
17324
  fromJSON(object: any): SeatEntitlement {
17056
17325
  return {
17057
- billingParty: isSet(object.billingParty)
17058
- ? globalThis.String(object.billingParty)
17059
- : isSet(object.billing_party)
17060
- ? globalThis.String(object.billing_party)
17061
- : "",
17326
+ biller: isSet(object.biller) ? globalThis.String(object.biller) : "",
17062
17327
  accountId: isSet(object.accountId)
17063
17328
  ? globalThis.String(object.accountId)
17064
17329
  : isSet(object.account_id)
@@ -17132,8 +17397,8 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17132
17397
 
17133
17398
  toJSON(message: SeatEntitlement): unknown {
17134
17399
  const obj: any = {};
17135
- if (message.billingParty !== "") {
17136
- obj.billingParty = message.billingParty;
17400
+ if (message.biller !== "") {
17401
+ obj.biller = message.biller;
17137
17402
  }
17138
17403
  if (message.accountId !== "") {
17139
17404
  obj.accountId = message.accountId;
@@ -17185,7 +17450,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17185
17450
  },
17186
17451
  fromPartial<I extends Exact<DeepPartial<SeatEntitlement>, I>>(object: I): SeatEntitlement {
17187
17452
  const message = createBaseSeatEntitlement();
17188
- message.billingParty = object.billingParty ?? "";
17453
+ message.biller = object.biller ?? "";
17189
17454
  message.accountId = object.accountId ?? "";
17190
17455
  message.principalId = object.principalId ?? "";
17191
17456
  message.principalName = object.principalName ?? "";
@@ -17428,11 +17693,11 @@ export interface AIGatewayService {
17428
17693
  * unverified, a complete snapshot re-derived each tick.
17429
17694
  */
17430
17695
  StreamFilesSummary(request: FilesSummaryRequest, metadata?: Metadata): Observable<FilesSummary>;
17431
- /** Latest observed list price per (source, provider, model) from the global catalog. */
17696
+ /** Latest observed list price per catalog listing from the global catalog, under stored names. */
17432
17697
  ListModelPrices(request: ListModelPricesRequest, metadata?: Metadata): Promise<ListModelPricesResponse>;
17433
17698
  /**
17434
17699
  * Every stored observation for the filtered models over a time range, oldest first —
17435
- * the rows ListModelPrices collapses. filter.model is required.
17700
+ * the rows ListModelPrices collapses. filter.model_raw is required.
17436
17701
  */
17437
17702
  ListModelPriceHistory(
17438
17703
  request: ListModelPriceHistoryRequest,