@iblai/data-layer 1.18.1 → 1.19.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.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/data-layer",
3
- "version": "1.18.0",
3
+ "version": "1.18.1",
4
4
  "description": "ibl.ai data layer",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,488 @@
1
+ import type { BaseQueryApi } from '@reduxjs/toolkit/query';
2
+ import { type ExtendedFetchBaseQueryError } from '@data-layer/features/utils';
3
+ import type { UserLlmUsageEnvelope, UserLlmUsageMetricsParams, UserLlmUsageMetricsResponse, UserLlmUsageObservationsParams, UserLlmUsageObservationsResponse, UserLlmUsageParams, UserLlmUsageResource, UserLlmUsageTracesParams, UserLlmUsageTracesResponse } from './types';
4
+ type QueryResult<T> = {
5
+ data: T;
6
+ } | {
7
+ error: ExtendedFetchBaseQueryError;
8
+ };
9
+ /**
10
+ * One request through the app's standard base query (auth header, token
11
+ * refresh, registered 401 handler). `iblFetchBaseQuery` throws on HTTP
12
+ * errors, and a thrown error would reach RTK as a SerializedError with the
13
+ * status stripped; catching it here keeps `{ status, data }` intact so the
14
+ * view can tell a 403 from a 404.
15
+ */
16
+ export declare function fetchUserLlmUsage<R extends UserLlmUsageResource, Row>(params: UserLlmUsageParams & {
17
+ resource: R;
18
+ }, api: BaseQueryApi, extraOptions: Record<string, unknown>): Promise<QueryResult<UserLlmUsageEnvelope<R, Row>>>;
19
+ /**
20
+ * Per-user llm-usage queries. Registered in the mentor and skills stores.
21
+ * Cache entries are keyed on the full param object, so `platform_key`,
22
+ * `username`, `resource` and every filter take part in the key.
23
+ */
24
+ export declare const userLlmUsageApiSlice: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
25
+ attempt?: number;
26
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, {
27
+ getUserLlmUsageMetrics: import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
28
+ attempt?: number;
29
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>;
30
+ getUserLlmUsageTraces: import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
31
+ attempt?: number;
32
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>;
33
+ getUserLlmUsageObservations: import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
34
+ attempt?: number;
35
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>;
36
+ }, "userLlmUsageApiSlice", string, typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
37
+ export declare const useGetUserLlmUsageMetricsQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
38
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
39
+ originalArgs?: undefined | undefined;
40
+ data?: undefined | undefined;
41
+ error?: undefined | undefined;
42
+ requestId?: undefined | undefined;
43
+ endpointName?: string | undefined;
44
+ startedTimeStamp?: undefined | undefined;
45
+ fulfilledTimeStamp?: undefined | undefined;
46
+ } & {
47
+ currentData?: UserLlmUsageMetricsResponse | undefined;
48
+ isUninitialized: false;
49
+ isLoading: false;
50
+ isFetching: false;
51
+ isSuccess: false;
52
+ isError: false;
53
+ }, "isUninitialized"> & {
54
+ isUninitialized: true;
55
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
56
+ attempt?: number;
57
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
58
+ currentData?: UserLlmUsageMetricsResponse | undefined;
59
+ isUninitialized: false;
60
+ isLoading: false;
61
+ isFetching: false;
62
+ isSuccess: false;
63
+ isError: false;
64
+ }, {
65
+ isLoading: true;
66
+ isFetching: boolean;
67
+ data: undefined;
68
+ } | ({
69
+ isSuccess: true;
70
+ isFetching: true;
71
+ error: undefined;
72
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
73
+ attempt?: number;
74
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
75
+ currentData?: UserLlmUsageMetricsResponse | undefined;
76
+ isUninitialized: false;
77
+ isLoading: false;
78
+ isFetching: false;
79
+ isSuccess: false;
80
+ isError: false;
81
+ }, "data" | "fulfilledTimeStamp">>) | ({
82
+ isSuccess: true;
83
+ isFetching: false;
84
+ error: undefined;
85
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
86
+ attempt?: number;
87
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
88
+ currentData?: UserLlmUsageMetricsResponse | undefined;
89
+ isUninitialized: false;
90
+ isLoading: false;
91
+ isFetching: false;
92
+ isSuccess: false;
93
+ isError: false;
94
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
95
+ isError: true;
96
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
97
+ attempt?: number;
98
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
99
+ currentData?: UserLlmUsageMetricsResponse | undefined;
100
+ isUninitialized: false;
101
+ isLoading: false;
102
+ isFetching: false;
103
+ isSuccess: false;
104
+ isError: false;
105
+ }, "error">>)>> & {
106
+ status: import("@reduxjs/toolkit/query").QueryStatus;
107
+ }>(arg: UserLlmUsageMetricsParams | typeof import("@reduxjs/toolkit/query").skipToken, options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & {
108
+ skip?: boolean;
109
+ refetchOnMountOrArgChange?: boolean | number;
110
+ } & {
111
+ skip?: boolean;
112
+ selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
113
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
114
+ originalArgs?: undefined | undefined;
115
+ data?: undefined | undefined;
116
+ error?: undefined | undefined;
117
+ requestId?: undefined | undefined;
118
+ endpointName?: string | undefined;
119
+ startedTimeStamp?: undefined | undefined;
120
+ fulfilledTimeStamp?: undefined | undefined;
121
+ } & {
122
+ currentData?: UserLlmUsageMetricsResponse | undefined;
123
+ isUninitialized: false;
124
+ isLoading: false;
125
+ isFetching: false;
126
+ isSuccess: false;
127
+ isError: false;
128
+ }, "isUninitialized"> & {
129
+ isUninitialized: true;
130
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
131
+ attempt?: number;
132
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
133
+ currentData?: UserLlmUsageMetricsResponse | undefined;
134
+ isUninitialized: false;
135
+ isLoading: false;
136
+ isFetching: false;
137
+ isSuccess: false;
138
+ isError: false;
139
+ }, {
140
+ isLoading: true;
141
+ isFetching: boolean;
142
+ data: undefined;
143
+ } | ({
144
+ isSuccess: true;
145
+ isFetching: true;
146
+ error: undefined;
147
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
148
+ attempt?: number;
149
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
150
+ currentData?: UserLlmUsageMetricsResponse | undefined;
151
+ isUninitialized: false;
152
+ isLoading: false;
153
+ isFetching: false;
154
+ isSuccess: false;
155
+ isError: false;
156
+ }, "data" | "fulfilledTimeStamp">>) | ({
157
+ isSuccess: true;
158
+ isFetching: false;
159
+ error: undefined;
160
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
161
+ attempt?: number;
162
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
163
+ currentData?: UserLlmUsageMetricsResponse | undefined;
164
+ isUninitialized: false;
165
+ isLoading: false;
166
+ isFetching: false;
167
+ isSuccess: false;
168
+ isError: false;
169
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
170
+ isError: true;
171
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
172
+ attempt?: number;
173
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>> & {
174
+ currentData?: UserLlmUsageMetricsResponse | undefined;
175
+ isUninitialized: false;
176
+ isLoading: false;
177
+ isFetching: false;
178
+ isSuccess: false;
179
+ isError: false;
180
+ }, "error">>)>> & {
181
+ status: import("@reduxjs/toolkit/query").QueryStatus;
182
+ }) => R) | undefined;
183
+ }) | undefined) => [R][R extends any ? 0 : never] & {
184
+ refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageMetricsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
185
+ attempt?: number;
186
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageMetricsResponse, "userLlmUsageApiSlice", unknown>>;
187
+ }, useGetUserLlmUsageTracesQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
188
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
189
+ originalArgs?: undefined | undefined;
190
+ data?: undefined | undefined;
191
+ error?: undefined | undefined;
192
+ requestId?: undefined | undefined;
193
+ endpointName?: string | undefined;
194
+ startedTimeStamp?: undefined | undefined;
195
+ fulfilledTimeStamp?: undefined | undefined;
196
+ } & {
197
+ currentData?: UserLlmUsageTracesResponse | undefined;
198
+ isUninitialized: false;
199
+ isLoading: false;
200
+ isFetching: false;
201
+ isSuccess: false;
202
+ isError: false;
203
+ }, "isUninitialized"> & {
204
+ isUninitialized: true;
205
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
206
+ attempt?: number;
207
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
208
+ currentData?: UserLlmUsageTracesResponse | undefined;
209
+ isUninitialized: false;
210
+ isLoading: false;
211
+ isFetching: false;
212
+ isSuccess: false;
213
+ isError: false;
214
+ }, {
215
+ isLoading: true;
216
+ isFetching: boolean;
217
+ data: undefined;
218
+ } | ({
219
+ isSuccess: true;
220
+ isFetching: true;
221
+ error: undefined;
222
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
223
+ attempt?: number;
224
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
225
+ currentData?: UserLlmUsageTracesResponse | undefined;
226
+ isUninitialized: false;
227
+ isLoading: false;
228
+ isFetching: false;
229
+ isSuccess: false;
230
+ isError: false;
231
+ }, "data" | "fulfilledTimeStamp">>) | ({
232
+ isSuccess: true;
233
+ isFetching: false;
234
+ error: undefined;
235
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
236
+ attempt?: number;
237
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
238
+ currentData?: UserLlmUsageTracesResponse | undefined;
239
+ isUninitialized: false;
240
+ isLoading: false;
241
+ isFetching: false;
242
+ isSuccess: false;
243
+ isError: false;
244
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
245
+ isError: true;
246
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
247
+ attempt?: number;
248
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
249
+ currentData?: UserLlmUsageTracesResponse | undefined;
250
+ isUninitialized: false;
251
+ isLoading: false;
252
+ isFetching: false;
253
+ isSuccess: false;
254
+ isError: false;
255
+ }, "error">>)>> & {
256
+ status: import("@reduxjs/toolkit/query").QueryStatus;
257
+ }>(arg: UserLlmUsageTracesParams | typeof import("@reduxjs/toolkit/query").skipToken, options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & {
258
+ skip?: boolean;
259
+ refetchOnMountOrArgChange?: boolean | number;
260
+ } & {
261
+ skip?: boolean;
262
+ selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
263
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
264
+ originalArgs?: undefined | undefined;
265
+ data?: undefined | undefined;
266
+ error?: undefined | undefined;
267
+ requestId?: undefined | undefined;
268
+ endpointName?: string | undefined;
269
+ startedTimeStamp?: undefined | undefined;
270
+ fulfilledTimeStamp?: undefined | undefined;
271
+ } & {
272
+ currentData?: UserLlmUsageTracesResponse | undefined;
273
+ isUninitialized: false;
274
+ isLoading: false;
275
+ isFetching: false;
276
+ isSuccess: false;
277
+ isError: false;
278
+ }, "isUninitialized"> & {
279
+ isUninitialized: true;
280
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
281
+ attempt?: number;
282
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
283
+ currentData?: UserLlmUsageTracesResponse | undefined;
284
+ isUninitialized: false;
285
+ isLoading: false;
286
+ isFetching: false;
287
+ isSuccess: false;
288
+ isError: false;
289
+ }, {
290
+ isLoading: true;
291
+ isFetching: boolean;
292
+ data: undefined;
293
+ } | ({
294
+ isSuccess: true;
295
+ isFetching: true;
296
+ error: undefined;
297
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
298
+ attempt?: number;
299
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
300
+ currentData?: UserLlmUsageTracesResponse | undefined;
301
+ isUninitialized: false;
302
+ isLoading: false;
303
+ isFetching: false;
304
+ isSuccess: false;
305
+ isError: false;
306
+ }, "data" | "fulfilledTimeStamp">>) | ({
307
+ isSuccess: true;
308
+ isFetching: false;
309
+ error: undefined;
310
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
311
+ attempt?: number;
312
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
313
+ currentData?: UserLlmUsageTracesResponse | undefined;
314
+ isUninitialized: false;
315
+ isLoading: false;
316
+ isFetching: false;
317
+ isSuccess: false;
318
+ isError: false;
319
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
320
+ isError: true;
321
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
322
+ attempt?: number;
323
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>> & {
324
+ currentData?: UserLlmUsageTracesResponse | undefined;
325
+ isUninitialized: false;
326
+ isLoading: false;
327
+ isFetching: false;
328
+ isSuccess: false;
329
+ isError: false;
330
+ }, "error">>)>> & {
331
+ status: import("@reduxjs/toolkit/query").QueryStatus;
332
+ }) => R) | undefined;
333
+ }) | undefined) => [R][R extends any ? 0 : never] & {
334
+ refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageTracesParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
335
+ attempt?: number;
336
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageTracesResponse, "userLlmUsageApiSlice", unknown>>;
337
+ }, useGetUserLlmUsageObservationsQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
338
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
339
+ originalArgs?: undefined | undefined;
340
+ data?: undefined | undefined;
341
+ error?: undefined | undefined;
342
+ requestId?: undefined | undefined;
343
+ endpointName?: string | undefined;
344
+ startedTimeStamp?: undefined | undefined;
345
+ fulfilledTimeStamp?: undefined | undefined;
346
+ } & {
347
+ currentData?: UserLlmUsageObservationsResponse | undefined;
348
+ isUninitialized: false;
349
+ isLoading: false;
350
+ isFetching: false;
351
+ isSuccess: false;
352
+ isError: false;
353
+ }, "isUninitialized"> & {
354
+ isUninitialized: true;
355
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
356
+ attempt?: number;
357
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
358
+ currentData?: UserLlmUsageObservationsResponse | undefined;
359
+ isUninitialized: false;
360
+ isLoading: false;
361
+ isFetching: false;
362
+ isSuccess: false;
363
+ isError: false;
364
+ }, {
365
+ isLoading: true;
366
+ isFetching: boolean;
367
+ data: undefined;
368
+ } | ({
369
+ isSuccess: true;
370
+ isFetching: true;
371
+ error: undefined;
372
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
373
+ attempt?: number;
374
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
375
+ currentData?: UserLlmUsageObservationsResponse | undefined;
376
+ isUninitialized: false;
377
+ isLoading: false;
378
+ isFetching: false;
379
+ isSuccess: false;
380
+ isError: false;
381
+ }, "data" | "fulfilledTimeStamp">>) | ({
382
+ isSuccess: true;
383
+ isFetching: false;
384
+ error: undefined;
385
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
386
+ attempt?: number;
387
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
388
+ currentData?: UserLlmUsageObservationsResponse | undefined;
389
+ isUninitialized: false;
390
+ isLoading: false;
391
+ isFetching: false;
392
+ isSuccess: false;
393
+ isError: false;
394
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
395
+ isError: true;
396
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
397
+ attempt?: number;
398
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
399
+ currentData?: UserLlmUsageObservationsResponse | undefined;
400
+ isUninitialized: false;
401
+ isLoading: false;
402
+ isFetching: false;
403
+ isSuccess: false;
404
+ isError: false;
405
+ }, "error">>)>> & {
406
+ status: import("@reduxjs/toolkit/query").QueryStatus;
407
+ }>(arg: UserLlmUsageObservationsParams | typeof import("@reduxjs/toolkit/query").skipToken, options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & {
408
+ skip?: boolean;
409
+ refetchOnMountOrArgChange?: boolean | number;
410
+ } & {
411
+ skip?: boolean;
412
+ selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
413
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
414
+ originalArgs?: undefined | undefined;
415
+ data?: undefined | undefined;
416
+ error?: undefined | undefined;
417
+ requestId?: undefined | undefined;
418
+ endpointName?: string | undefined;
419
+ startedTimeStamp?: undefined | undefined;
420
+ fulfilledTimeStamp?: undefined | undefined;
421
+ } & {
422
+ currentData?: UserLlmUsageObservationsResponse | undefined;
423
+ isUninitialized: false;
424
+ isLoading: false;
425
+ isFetching: false;
426
+ isSuccess: false;
427
+ isError: false;
428
+ }, "isUninitialized"> & {
429
+ isUninitialized: true;
430
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
431
+ attempt?: number;
432
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
433
+ currentData?: UserLlmUsageObservationsResponse | undefined;
434
+ isUninitialized: false;
435
+ isLoading: false;
436
+ isFetching: false;
437
+ isSuccess: false;
438
+ isError: false;
439
+ }, {
440
+ isLoading: true;
441
+ isFetching: boolean;
442
+ data: undefined;
443
+ } | ({
444
+ isSuccess: true;
445
+ isFetching: true;
446
+ error: undefined;
447
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
448
+ attempt?: number;
449
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
450
+ currentData?: UserLlmUsageObservationsResponse | undefined;
451
+ isUninitialized: false;
452
+ isLoading: false;
453
+ isFetching: false;
454
+ isSuccess: false;
455
+ isError: false;
456
+ }, "data" | "fulfilledTimeStamp">>) | ({
457
+ isSuccess: true;
458
+ isFetching: false;
459
+ error: undefined;
460
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
461
+ attempt?: number;
462
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
463
+ currentData?: UserLlmUsageObservationsResponse | undefined;
464
+ isUninitialized: false;
465
+ isLoading: false;
466
+ isFetching: false;
467
+ isSuccess: false;
468
+ isError: false;
469
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
470
+ isError: true;
471
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
472
+ attempt?: number;
473
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>> & {
474
+ currentData?: UserLlmUsageObservationsResponse | undefined;
475
+ isUninitialized: false;
476
+ isLoading: false;
477
+ isFetching: false;
478
+ isSuccess: false;
479
+ isError: false;
480
+ }, "error">>)>> & {
481
+ status: import("@reduxjs/toolkit/query").QueryStatus;
482
+ }) => R) | undefined;
483
+ }) | undefined) => [R][R extends any ? 0 : never] & {
484
+ refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<UserLlmUsageObservationsParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, unknown, unknown, {
485
+ attempt?: number;
486
+ } & import("@reduxjs/toolkit/query").RetryOptions, {}>, string, UserLlmUsageObservationsResponse, "userLlmUsageApiSlice", unknown>>;
487
+ };
488
+ export {};
@@ -0,0 +1,25 @@
1
+ import { SERVICES } from '@data-layer/constants';
2
+ import type { UserLlmUsageErrorKind, UserLlmUsageParams } from './types';
3
+ export declare const USER_LLM_USAGE_REDUCER_PATH = "userLlmUsageApiSlice";
4
+ export declare const USER_LLM_USAGE_QUERY_KEYS: {
5
+ GET_USER_LLM_USAGE: () => string[];
6
+ };
7
+ /** Upstream cap on `limit`. */
8
+ export declare const USER_LLM_USAGE_MAX_LIMIT = 1000;
9
+ /**
10
+ * The same llm-usage endpoint the admin analytics use, always scoped to one
11
+ * `username`. The path builder is the admin one, so array params (`measures`)
12
+ * serialize identically — comma-joined — and empty values are dropped the
13
+ * same way.
14
+ */
15
+ export declare const USER_LLM_USAGE_ENDPOINTS: {
16
+ GET_USER_LLM_USAGE: {
17
+ service: SERVICES;
18
+ path: ({ resource, ...rest }: UserLlmUsageParams) => string;
19
+ };
20
+ };
21
+ /**
22
+ * User-safe fallbacks per error kind. None of them echo the backend's detail,
23
+ * so a 403 or 404 never tells the viewer whether another user or tenant exists.
24
+ */
25
+ export declare const USER_LLM_USAGE_ERROR_MESSAGES: Record<UserLlmUsageErrorKind, string>;
@@ -0,0 +1,43 @@
1
+ import type { LlmUsageMetricsRow, LlmUsageTrace } from '../analytics/types';
2
+ import type { UserLlmCostByModelRow, UserLlmCostByServiceRow, UserLlmSpendPoint, UserLlmUsageMetricsParams, UserLlmUsageObservation, UserLlmUsageObservationsParams, UserLlmUsageQueryState, UserLlmUsageScope, UserLlmUsageSummary, UserLlmUsageTracesParams } from './types';
3
+ export interface UserLlmUsageHookOptions {
4
+ /** Extra switch on top of the built-in platform-key guard. */
5
+ skip?: boolean;
6
+ }
7
+ /** Any metrics query. Idle until `platform_key` and `username` are set. */
8
+ export declare function useUserLlmUsageMetrics(params: UserLlmUsageMetricsParams | null | undefined, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageMetricsRow>;
9
+ /** Any traces query. Idle until `platform_key` and `username` are set. */
10
+ export declare function useUserLlmUsageTraces(params: UserLlmUsageTracesParams | null | undefined, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageTrace>;
11
+ /** Any observations query. Idle until `platform_key` and `username` are set. */
12
+ export declare function useUserLlmUsageObservations(params: UserLlmUsageObservationsParams | null | undefined, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<UserLlmUsageObservation>;
13
+ /** Headline totals for the user: `measures=total_cost,total_tokens,count`, summed. */
14
+ export declare function useUserLlmUsageSummary(scope: UserLlmUsageScope, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageMetricsRow> & {
15
+ summary: UserLlmUsageSummary | null;
16
+ };
17
+ /** The user's spend per time bucket (`granularity=day` unless told otherwise). */
18
+ export declare function useUserLlmSpendOverTime(scope: UserLlmUsageScope & {
19
+ granularity?: UserLlmUsageMetricsParams['granularity'];
20
+ }, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageMetricsRow> & {
21
+ points: UserLlmSpendPoint[];
22
+ };
23
+ /** The user's spend and call count per model, most expensive first. */
24
+ export declare function useUserLlmCostByModel(scope: UserLlmUsageScope & {
25
+ limit?: number;
26
+ }, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageMetricsRow> & {
27
+ models: UserLlmCostByModelRow[];
28
+ };
29
+ /** The user's spend and call count per service (the trace name: chat, memory, …). */
30
+ export declare function useUserLlmCostByService(scope: UserLlmUsageScope, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageMetricsRow> & {
31
+ services: UserLlmCostByServiceRow[];
32
+ };
33
+ export declare const USER_LLM_RECENT_ACTIVITY_PAGE_SIZE = 10;
34
+ /** The user's traces, newest first, one page at a time. */
35
+ export declare function useUserLlmRecentActivity(scope: UserLlmUsageScope & {
36
+ page?: number;
37
+ limit?: number;
38
+ }, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<LlmUsageTrace>;
39
+ /** The steps (observations) inside one trace. Idle until a trace is picked. */
40
+ export declare function useUserLlmTraceObservations(scope: UserLlmUsageScope & {
41
+ traceId: string | null | undefined;
42
+ limit?: number;
43
+ }, options?: UserLlmUsageHookOptions): UserLlmUsageQueryState<UserLlmUsageObservation>;