@phosphorco/bb-thread-metrics 0.0.0-stage → 0.2.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.
@@ -0,0 +1,944 @@
1
+ export * from './recent.js';
2
+ import { z } from 'zod';
3
+ export type { UsageVector } from '@phosphorco/bb-usage-algebra/vector';
4
+ export declare const LIMITS: Readonly<{
5
+ threadIds: 200;
6
+ seriesPoints: 288;
7
+ detailRows: 200;
8
+ inputBytes: 65536;
9
+ outputBytes: 2097152;
10
+ describeBytes: 16384;
11
+ candidates: 128;
12
+ listedPlugins: 10000;
13
+ concurrency: 4;
14
+ callMs: 2000;
15
+ discoveryMs: 5000;
16
+ familyEdges: 50000;
17
+ familyMembers: 10000;
18
+ familyDepth: 256;
19
+ }>;
20
+ export declare const METRIC_BUCKET_MS = 300000;
21
+ /** Retained last-N fixed buckets; lifetime time rows still obey seven-day retention. */
22
+ export declare function retainedWindowStart(asOf: number, window: z.infer<typeof windowSchema>): number;
23
+ export declare const METHODS: Readonly<{
24
+ describe: "threadMetricsDescribe";
25
+ read: "threadMetricsReadV1";
26
+ detail: "threadMetricsDetailV1";
27
+ recentSnapshot: "threadMetricsRecentSnapshotV1";
28
+ }>;
29
+ export declare const windowSchema: z.ZodEnum<{
30
+ m20: "m20";
31
+ h24: "h24";
32
+ d7: "d7";
33
+ lifetime: "lifetime";
34
+ }>;
35
+ export declare const coverageSchema: z.ZodEnum<{
36
+ complete: "complete";
37
+ partial: "partial";
38
+ unknown: "unknown";
39
+ }>;
40
+ export declare const coverageReasonSchema: z.ZodEnum<{
41
+ "source-gap": "source-gap";
42
+ unpriced: "unpriced";
43
+ "root-unattested": "root-unattested";
44
+ "history-unavailable": "history-unavailable";
45
+ "missing-thread": "missing-thread";
46
+ "member-cap": "member-cap";
47
+ "depth-cap": "depth-cap";
48
+ "edge-cap": "edge-cap";
49
+ retention: "retention";
50
+ "row-cap": "row-cap";
51
+ pagination: "pagination";
52
+ "population-incomplete": "population-incomplete";
53
+ }>;
54
+ export declare const approximationSchema: z.ZodObject<{
55
+ approximate: z.ZodBoolean;
56
+ reasons: z.ZodArray<z.ZodEnum<{
57
+ "closest-model": "closest-model";
58
+ "provider-default": "provider-default";
59
+ "model-attribution": "model-attribution";
60
+ "bucket-boundary": "bucket-boundary";
61
+ "missing-price": "missing-price";
62
+ "source-gap": "source-gap";
63
+ }>>;
64
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
65
+ providerId: z.ZodString;
66
+ modelId: z.ZodString;
67
+ rateId: z.ZodNullable<z.ZodString>;
68
+ basis: z.ZodEnum<{
69
+ "closest-model": "closest-model";
70
+ "provider-default": "provider-default";
71
+ unpriced: "unpriced";
72
+ matched: "matched";
73
+ }>;
74
+ }, z.core.$strip>>>;
75
+ }, z.core.$strip>;
76
+ export declare const ranksSchema: z.ZodObject<{
77
+ m20: z.ZodNullable<z.ZodNumber>;
78
+ h24: z.ZodNullable<z.ZodNumber>;
79
+ d7: z.ZodNullable<z.ZodNumber>;
80
+ }, z.core.$strip>;
81
+ export declare const rankPopulationSchema: z.ZodObject<{
82
+ m20: z.ZodObject<{
83
+ asOf: z.ZodNumber;
84
+ count: z.ZodNumber;
85
+ coverage: z.ZodEnum<{
86
+ complete: "complete";
87
+ partial: "partial";
88
+ unknown: "unknown";
89
+ }>;
90
+ }, z.core.$strip>;
91
+ h24: z.ZodObject<{
92
+ asOf: z.ZodNumber;
93
+ count: z.ZodNumber;
94
+ coverage: z.ZodEnum<{
95
+ complete: "complete";
96
+ partial: "partial";
97
+ unknown: "unknown";
98
+ }>;
99
+ }, z.core.$strip>;
100
+ d7: z.ZodObject<{
101
+ asOf: z.ZodNumber;
102
+ count: z.ZodNumber;
103
+ coverage: z.ZodEnum<{
104
+ complete: "complete";
105
+ partial: "partial";
106
+ unknown: "unknown";
107
+ }>;
108
+ }, z.core.$strip>;
109
+ }, z.core.$strip>;
110
+ export declare const windowValueSchema: z.ZodObject<{
111
+ tokens: z.ZodObject<{
112
+ inputUncached: z.ZodNumber;
113
+ cacheRead: z.ZodNumber;
114
+ cacheWrite: z.ZodNumber;
115
+ output: z.ZodNumber;
116
+ }, z.core.$strip>;
117
+ amount: z.ZodNullable<z.ZodNumber>;
118
+ }, z.core.$strip>;
119
+ export declare const windowsSchema: z.ZodObject<{
120
+ m20: z.ZodObject<{
121
+ tokens: z.ZodObject<{
122
+ inputUncached: z.ZodNumber;
123
+ cacheRead: z.ZodNumber;
124
+ cacheWrite: z.ZodNumber;
125
+ output: z.ZodNumber;
126
+ }, z.core.$strip>;
127
+ amount: z.ZodNullable<z.ZodNumber>;
128
+ }, z.core.$strip>;
129
+ h24: z.ZodObject<{
130
+ tokens: z.ZodObject<{
131
+ inputUncached: z.ZodNumber;
132
+ cacheRead: z.ZodNumber;
133
+ cacheWrite: z.ZodNumber;
134
+ output: z.ZodNumber;
135
+ }, z.core.$strip>;
136
+ amount: z.ZodNullable<z.ZodNumber>;
137
+ }, z.core.$strip>;
138
+ d7: z.ZodObject<{
139
+ tokens: z.ZodObject<{
140
+ inputUncached: z.ZodNumber;
141
+ cacheRead: z.ZodNumber;
142
+ cacheWrite: z.ZodNumber;
143
+ output: z.ZodNumber;
144
+ }, z.core.$strip>;
145
+ amount: z.ZodNullable<z.ZodNumber>;
146
+ }, z.core.$strip>;
147
+ lifetime: z.ZodObject<{
148
+ tokens: z.ZodObject<{
149
+ inputUncached: z.ZodNumber;
150
+ cacheRead: z.ZodNumber;
151
+ cacheWrite: z.ZodNumber;
152
+ output: z.ZodNumber;
153
+ }, z.core.$strip>;
154
+ amount: z.ZodNullable<z.ZodNumber>;
155
+ }, z.core.$strip>;
156
+ }, z.core.$strip>;
157
+ export declare const bucketSchema: z.ZodObject<{
158
+ start: z.ZodNumber;
159
+ amount: z.ZodNullable<z.ZodNumber>;
160
+ }, z.core.$strip>;
161
+ export declare const summaryRowSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
162
+ changed: z.ZodLiteral<true>;
163
+ windows: z.ZodObject<{
164
+ m20: z.ZodObject<{
165
+ tokens: z.ZodObject<{
166
+ inputUncached: z.ZodNumber;
167
+ cacheRead: z.ZodNumber;
168
+ cacheWrite: z.ZodNumber;
169
+ output: z.ZodNumber;
170
+ }, z.core.$strip>;
171
+ amount: z.ZodNullable<z.ZodNumber>;
172
+ }, z.core.$strip>;
173
+ h24: z.ZodObject<{
174
+ tokens: z.ZodObject<{
175
+ inputUncached: z.ZodNumber;
176
+ cacheRead: z.ZodNumber;
177
+ cacheWrite: z.ZodNumber;
178
+ output: z.ZodNumber;
179
+ }, z.core.$strip>;
180
+ amount: z.ZodNullable<z.ZodNumber>;
181
+ }, z.core.$strip>;
182
+ d7: z.ZodObject<{
183
+ tokens: z.ZodObject<{
184
+ inputUncached: z.ZodNumber;
185
+ cacheRead: z.ZodNumber;
186
+ cacheWrite: z.ZodNumber;
187
+ output: z.ZodNumber;
188
+ }, z.core.$strip>;
189
+ amount: z.ZodNullable<z.ZodNumber>;
190
+ }, z.core.$strip>;
191
+ lifetime: z.ZodObject<{
192
+ tokens: z.ZodObject<{
193
+ inputUncached: z.ZodNumber;
194
+ cacheRead: z.ZodNumber;
195
+ cacheWrite: z.ZodNumber;
196
+ output: z.ZodNumber;
197
+ }, z.core.$strip>;
198
+ amount: z.ZodNullable<z.ZodNumber>;
199
+ }, z.core.$strip>;
200
+ }, z.core.$strip>;
201
+ buckets: z.ZodOptional<z.ZodArray<z.ZodObject<{
202
+ start: z.ZodNumber;
203
+ amount: z.ZodNullable<z.ZodNumber>;
204
+ }, z.core.$strip>>>;
205
+ threadId: z.ZodString;
206
+ scope: z.ZodEnum<{
207
+ own: "own";
208
+ family: "family";
209
+ }>;
210
+ memberCount: z.ZodNumber;
211
+ coverage: z.ZodEnum<{
212
+ complete: "complete";
213
+ partial: "partial";
214
+ unknown: "unknown";
215
+ }>;
216
+ coverageReasons: z.ZodArray<z.ZodEnum<{
217
+ "source-gap": "source-gap";
218
+ unpriced: "unpriced";
219
+ "root-unattested": "root-unattested";
220
+ "history-unavailable": "history-unavailable";
221
+ "missing-thread": "missing-thread";
222
+ "member-cap": "member-cap";
223
+ "depth-cap": "depth-cap";
224
+ "edge-cap": "edge-cap";
225
+ retention: "retention";
226
+ "row-cap": "row-cap";
227
+ pagination: "pagination";
228
+ "population-incomplete": "population-incomplete";
229
+ }>>;
230
+ excluded: z.ZodOptional<z.ZodNumber>;
231
+ asOf: z.ZodNumber;
232
+ revision: z.ZodString;
233
+ priceVersion: z.ZodString;
234
+ currency: z.ZodLiteral<"USD">;
235
+ estimated: z.ZodLiteral<true>;
236
+ approximation: z.ZodObject<{
237
+ approximate: z.ZodBoolean;
238
+ reasons: z.ZodArray<z.ZodEnum<{
239
+ "closest-model": "closest-model";
240
+ "provider-default": "provider-default";
241
+ "model-attribution": "model-attribution";
242
+ "bucket-boundary": "bucket-boundary";
243
+ "missing-price": "missing-price";
244
+ "source-gap": "source-gap";
245
+ }>>;
246
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
247
+ providerId: z.ZodString;
248
+ modelId: z.ZodString;
249
+ rateId: z.ZodNullable<z.ZodString>;
250
+ basis: z.ZodEnum<{
251
+ "closest-model": "closest-model";
252
+ "provider-default": "provider-default";
253
+ unpriced: "unpriced";
254
+ matched: "matched";
255
+ }>;
256
+ }, z.core.$strip>>>;
257
+ }, z.core.$strip>;
258
+ ranks: z.ZodObject<{
259
+ m20: z.ZodNullable<z.ZodNumber>;
260
+ h24: z.ZodNullable<z.ZodNumber>;
261
+ d7: z.ZodNullable<z.ZodNumber>;
262
+ }, z.core.$strip>;
263
+ rankPopulation: z.ZodObject<{
264
+ m20: z.ZodObject<{
265
+ asOf: z.ZodNumber;
266
+ count: z.ZodNumber;
267
+ coverage: z.ZodEnum<{
268
+ complete: "complete";
269
+ partial: "partial";
270
+ unknown: "unknown";
271
+ }>;
272
+ }, z.core.$strip>;
273
+ h24: z.ZodObject<{
274
+ asOf: z.ZodNumber;
275
+ count: z.ZodNumber;
276
+ coverage: z.ZodEnum<{
277
+ complete: "complete";
278
+ partial: "partial";
279
+ unknown: "unknown";
280
+ }>;
281
+ }, z.core.$strip>;
282
+ d7: z.ZodObject<{
283
+ asOf: z.ZodNumber;
284
+ count: z.ZodNumber;
285
+ coverage: z.ZodEnum<{
286
+ complete: "complete";
287
+ partial: "partial";
288
+ unknown: "unknown";
289
+ }>;
290
+ }, z.core.$strip>;
291
+ }, z.core.$strip>;
292
+ reported: z.ZodOptional<z.ZodObject<{
293
+ amount: z.ZodNumber;
294
+ currency: z.ZodString;
295
+ asOf: z.ZodNumber;
296
+ }, z.core.$strip>>;
297
+ }, z.core.$strip>, z.ZodObject<{
298
+ changed: z.ZodLiteral<false>;
299
+ windows: z.ZodOptional<z.ZodNever>;
300
+ buckets: z.ZodOptional<z.ZodNever>;
301
+ threadId: z.ZodString;
302
+ scope: z.ZodEnum<{
303
+ own: "own";
304
+ family: "family";
305
+ }>;
306
+ memberCount: z.ZodNumber;
307
+ coverage: z.ZodEnum<{
308
+ complete: "complete";
309
+ partial: "partial";
310
+ unknown: "unknown";
311
+ }>;
312
+ coverageReasons: z.ZodArray<z.ZodEnum<{
313
+ "source-gap": "source-gap";
314
+ unpriced: "unpriced";
315
+ "root-unattested": "root-unattested";
316
+ "history-unavailable": "history-unavailable";
317
+ "missing-thread": "missing-thread";
318
+ "member-cap": "member-cap";
319
+ "depth-cap": "depth-cap";
320
+ "edge-cap": "edge-cap";
321
+ retention: "retention";
322
+ "row-cap": "row-cap";
323
+ pagination: "pagination";
324
+ "population-incomplete": "population-incomplete";
325
+ }>>;
326
+ excluded: z.ZodOptional<z.ZodNumber>;
327
+ asOf: z.ZodNumber;
328
+ revision: z.ZodString;
329
+ priceVersion: z.ZodString;
330
+ currency: z.ZodLiteral<"USD">;
331
+ estimated: z.ZodLiteral<true>;
332
+ approximation: z.ZodObject<{
333
+ approximate: z.ZodBoolean;
334
+ reasons: z.ZodArray<z.ZodEnum<{
335
+ "closest-model": "closest-model";
336
+ "provider-default": "provider-default";
337
+ "model-attribution": "model-attribution";
338
+ "bucket-boundary": "bucket-boundary";
339
+ "missing-price": "missing-price";
340
+ "source-gap": "source-gap";
341
+ }>>;
342
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
343
+ providerId: z.ZodString;
344
+ modelId: z.ZodString;
345
+ rateId: z.ZodNullable<z.ZodString>;
346
+ basis: z.ZodEnum<{
347
+ "closest-model": "closest-model";
348
+ "provider-default": "provider-default";
349
+ unpriced: "unpriced";
350
+ matched: "matched";
351
+ }>;
352
+ }, z.core.$strip>>>;
353
+ }, z.core.$strip>;
354
+ ranks: z.ZodObject<{
355
+ m20: z.ZodNullable<z.ZodNumber>;
356
+ h24: z.ZodNullable<z.ZodNumber>;
357
+ d7: z.ZodNullable<z.ZodNumber>;
358
+ }, z.core.$strip>;
359
+ rankPopulation: z.ZodObject<{
360
+ m20: z.ZodObject<{
361
+ asOf: z.ZodNumber;
362
+ count: z.ZodNumber;
363
+ coverage: z.ZodEnum<{
364
+ complete: "complete";
365
+ partial: "partial";
366
+ unknown: "unknown";
367
+ }>;
368
+ }, z.core.$strip>;
369
+ h24: z.ZodObject<{
370
+ asOf: z.ZodNumber;
371
+ count: z.ZodNumber;
372
+ coverage: z.ZodEnum<{
373
+ complete: "complete";
374
+ partial: "partial";
375
+ unknown: "unknown";
376
+ }>;
377
+ }, z.core.$strip>;
378
+ d7: z.ZodObject<{
379
+ asOf: z.ZodNumber;
380
+ count: z.ZodNumber;
381
+ coverage: z.ZodEnum<{
382
+ complete: "complete";
383
+ partial: "partial";
384
+ unknown: "unknown";
385
+ }>;
386
+ }, z.core.$strip>;
387
+ }, z.core.$strip>;
388
+ reported: z.ZodOptional<z.ZodObject<{
389
+ amount: z.ZodNumber;
390
+ currency: z.ZodString;
391
+ asOf: z.ZodNumber;
392
+ }, z.core.$strip>>;
393
+ }, z.core.$strip>], "changed">;
394
+ export declare const readInputSchema: z.ZodObject<{
395
+ threadIds: z.ZodArray<z.ZodString>;
396
+ scope: z.ZodEnum<{
397
+ own: "own";
398
+ family: "family";
399
+ }>;
400
+ includeArchived: z.ZodOptional<z.ZodBoolean>;
401
+ knownRevisions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
402
+ series: z.ZodOptional<z.ZodObject<{
403
+ activeThreadId: z.ZodString;
404
+ maxPoints: z.ZodNumber;
405
+ }, z.core.$strict>>;
406
+ }, z.core.$strict>;
407
+ export declare const readResultSchema: z.ZodObject<{
408
+ version: z.ZodLiteral<1>;
409
+ rows: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
410
+ changed: z.ZodLiteral<true>;
411
+ windows: z.ZodObject<{
412
+ m20: z.ZodObject<{
413
+ tokens: z.ZodObject<{
414
+ inputUncached: z.ZodNumber;
415
+ cacheRead: z.ZodNumber;
416
+ cacheWrite: z.ZodNumber;
417
+ output: z.ZodNumber;
418
+ }, z.core.$strip>;
419
+ amount: z.ZodNullable<z.ZodNumber>;
420
+ }, z.core.$strip>;
421
+ h24: z.ZodObject<{
422
+ tokens: z.ZodObject<{
423
+ inputUncached: z.ZodNumber;
424
+ cacheRead: z.ZodNumber;
425
+ cacheWrite: z.ZodNumber;
426
+ output: z.ZodNumber;
427
+ }, z.core.$strip>;
428
+ amount: z.ZodNullable<z.ZodNumber>;
429
+ }, z.core.$strip>;
430
+ d7: z.ZodObject<{
431
+ tokens: z.ZodObject<{
432
+ inputUncached: z.ZodNumber;
433
+ cacheRead: z.ZodNumber;
434
+ cacheWrite: z.ZodNumber;
435
+ output: z.ZodNumber;
436
+ }, z.core.$strip>;
437
+ amount: z.ZodNullable<z.ZodNumber>;
438
+ }, z.core.$strip>;
439
+ lifetime: z.ZodObject<{
440
+ tokens: z.ZodObject<{
441
+ inputUncached: z.ZodNumber;
442
+ cacheRead: z.ZodNumber;
443
+ cacheWrite: z.ZodNumber;
444
+ output: z.ZodNumber;
445
+ }, z.core.$strip>;
446
+ amount: z.ZodNullable<z.ZodNumber>;
447
+ }, z.core.$strip>;
448
+ }, z.core.$strip>;
449
+ buckets: z.ZodOptional<z.ZodArray<z.ZodObject<{
450
+ start: z.ZodNumber;
451
+ amount: z.ZodNullable<z.ZodNumber>;
452
+ }, z.core.$strip>>>;
453
+ threadId: z.ZodString;
454
+ scope: z.ZodEnum<{
455
+ own: "own";
456
+ family: "family";
457
+ }>;
458
+ memberCount: z.ZodNumber;
459
+ coverage: z.ZodEnum<{
460
+ complete: "complete";
461
+ partial: "partial";
462
+ unknown: "unknown";
463
+ }>;
464
+ coverageReasons: z.ZodArray<z.ZodEnum<{
465
+ "source-gap": "source-gap";
466
+ unpriced: "unpriced";
467
+ "root-unattested": "root-unattested";
468
+ "history-unavailable": "history-unavailable";
469
+ "missing-thread": "missing-thread";
470
+ "member-cap": "member-cap";
471
+ "depth-cap": "depth-cap";
472
+ "edge-cap": "edge-cap";
473
+ retention: "retention";
474
+ "row-cap": "row-cap";
475
+ pagination: "pagination";
476
+ "population-incomplete": "population-incomplete";
477
+ }>>;
478
+ excluded: z.ZodOptional<z.ZodNumber>;
479
+ asOf: z.ZodNumber;
480
+ revision: z.ZodString;
481
+ priceVersion: z.ZodString;
482
+ currency: z.ZodLiteral<"USD">;
483
+ estimated: z.ZodLiteral<true>;
484
+ approximation: z.ZodObject<{
485
+ approximate: z.ZodBoolean;
486
+ reasons: z.ZodArray<z.ZodEnum<{
487
+ "closest-model": "closest-model";
488
+ "provider-default": "provider-default";
489
+ "model-attribution": "model-attribution";
490
+ "bucket-boundary": "bucket-boundary";
491
+ "missing-price": "missing-price";
492
+ "source-gap": "source-gap";
493
+ }>>;
494
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
495
+ providerId: z.ZodString;
496
+ modelId: z.ZodString;
497
+ rateId: z.ZodNullable<z.ZodString>;
498
+ basis: z.ZodEnum<{
499
+ "closest-model": "closest-model";
500
+ "provider-default": "provider-default";
501
+ unpriced: "unpriced";
502
+ matched: "matched";
503
+ }>;
504
+ }, z.core.$strip>>>;
505
+ }, z.core.$strip>;
506
+ ranks: z.ZodObject<{
507
+ m20: z.ZodNullable<z.ZodNumber>;
508
+ h24: z.ZodNullable<z.ZodNumber>;
509
+ d7: z.ZodNullable<z.ZodNumber>;
510
+ }, z.core.$strip>;
511
+ rankPopulation: z.ZodObject<{
512
+ m20: z.ZodObject<{
513
+ asOf: z.ZodNumber;
514
+ count: z.ZodNumber;
515
+ coverage: z.ZodEnum<{
516
+ complete: "complete";
517
+ partial: "partial";
518
+ unknown: "unknown";
519
+ }>;
520
+ }, z.core.$strip>;
521
+ h24: z.ZodObject<{
522
+ asOf: z.ZodNumber;
523
+ count: z.ZodNumber;
524
+ coverage: z.ZodEnum<{
525
+ complete: "complete";
526
+ partial: "partial";
527
+ unknown: "unknown";
528
+ }>;
529
+ }, z.core.$strip>;
530
+ d7: z.ZodObject<{
531
+ asOf: z.ZodNumber;
532
+ count: z.ZodNumber;
533
+ coverage: z.ZodEnum<{
534
+ complete: "complete";
535
+ partial: "partial";
536
+ unknown: "unknown";
537
+ }>;
538
+ }, z.core.$strip>;
539
+ }, z.core.$strip>;
540
+ reported: z.ZodOptional<z.ZodObject<{
541
+ amount: z.ZodNumber;
542
+ currency: z.ZodString;
543
+ asOf: z.ZodNumber;
544
+ }, z.core.$strip>>;
545
+ }, z.core.$strip>, z.ZodObject<{
546
+ changed: z.ZodLiteral<false>;
547
+ windows: z.ZodOptional<z.ZodNever>;
548
+ buckets: z.ZodOptional<z.ZodNever>;
549
+ threadId: z.ZodString;
550
+ scope: z.ZodEnum<{
551
+ own: "own";
552
+ family: "family";
553
+ }>;
554
+ memberCount: z.ZodNumber;
555
+ coverage: z.ZodEnum<{
556
+ complete: "complete";
557
+ partial: "partial";
558
+ unknown: "unknown";
559
+ }>;
560
+ coverageReasons: z.ZodArray<z.ZodEnum<{
561
+ "source-gap": "source-gap";
562
+ unpriced: "unpriced";
563
+ "root-unattested": "root-unattested";
564
+ "history-unavailable": "history-unavailable";
565
+ "missing-thread": "missing-thread";
566
+ "member-cap": "member-cap";
567
+ "depth-cap": "depth-cap";
568
+ "edge-cap": "edge-cap";
569
+ retention: "retention";
570
+ "row-cap": "row-cap";
571
+ pagination: "pagination";
572
+ "population-incomplete": "population-incomplete";
573
+ }>>;
574
+ excluded: z.ZodOptional<z.ZodNumber>;
575
+ asOf: z.ZodNumber;
576
+ revision: z.ZodString;
577
+ priceVersion: z.ZodString;
578
+ currency: z.ZodLiteral<"USD">;
579
+ estimated: z.ZodLiteral<true>;
580
+ approximation: z.ZodObject<{
581
+ approximate: z.ZodBoolean;
582
+ reasons: z.ZodArray<z.ZodEnum<{
583
+ "closest-model": "closest-model";
584
+ "provider-default": "provider-default";
585
+ "model-attribution": "model-attribution";
586
+ "bucket-boundary": "bucket-boundary";
587
+ "missing-price": "missing-price";
588
+ "source-gap": "source-gap";
589
+ }>>;
590
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
591
+ providerId: z.ZodString;
592
+ modelId: z.ZodString;
593
+ rateId: z.ZodNullable<z.ZodString>;
594
+ basis: z.ZodEnum<{
595
+ "closest-model": "closest-model";
596
+ "provider-default": "provider-default";
597
+ unpriced: "unpriced";
598
+ matched: "matched";
599
+ }>;
600
+ }, z.core.$strip>>>;
601
+ }, z.core.$strip>;
602
+ ranks: z.ZodObject<{
603
+ m20: z.ZodNullable<z.ZodNumber>;
604
+ h24: z.ZodNullable<z.ZodNumber>;
605
+ d7: z.ZodNullable<z.ZodNumber>;
606
+ }, z.core.$strip>;
607
+ rankPopulation: z.ZodObject<{
608
+ m20: z.ZodObject<{
609
+ asOf: z.ZodNumber;
610
+ count: z.ZodNumber;
611
+ coverage: z.ZodEnum<{
612
+ complete: "complete";
613
+ partial: "partial";
614
+ unknown: "unknown";
615
+ }>;
616
+ }, z.core.$strip>;
617
+ h24: z.ZodObject<{
618
+ asOf: z.ZodNumber;
619
+ count: z.ZodNumber;
620
+ coverage: z.ZodEnum<{
621
+ complete: "complete";
622
+ partial: "partial";
623
+ unknown: "unknown";
624
+ }>;
625
+ }, z.core.$strip>;
626
+ d7: z.ZodObject<{
627
+ asOf: z.ZodNumber;
628
+ count: z.ZodNumber;
629
+ coverage: z.ZodEnum<{
630
+ complete: "complete";
631
+ partial: "partial";
632
+ unknown: "unknown";
633
+ }>;
634
+ }, z.core.$strip>;
635
+ }, z.core.$strip>;
636
+ reported: z.ZodOptional<z.ZodObject<{
637
+ amount: z.ZodNumber;
638
+ currency: z.ZodString;
639
+ asOf: z.ZodNumber;
640
+ }, z.core.$strip>>;
641
+ }, z.core.$strip>], "changed">>;
642
+ }, z.core.$strip>;
643
+ export declare const detailInputSchema: z.ZodObject<{
644
+ threadId: z.ZodString;
645
+ scope: z.ZodEnum<{
646
+ own: "own";
647
+ family: "family";
648
+ }>;
649
+ includeArchived: z.ZodOptional<z.ZodBoolean>;
650
+ axis: z.ZodEnum<{
651
+ time: "time";
652
+ model: "model";
653
+ }>;
654
+ window: z.ZodEnum<{
655
+ m20: "m20";
656
+ h24: "h24";
657
+ d7: "d7";
658
+ lifetime: "lifetime";
659
+ }>;
660
+ cursor: z.ZodOptional<z.ZodString>;
661
+ limit: z.ZodOptional<z.ZodNumber>;
662
+ }, z.core.$strict>;
663
+ export declare const detailRowSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
664
+ axis: z.ZodLiteral<"model">;
665
+ providerId: z.ZodString;
666
+ modelId: z.ZodString;
667
+ amount: z.ZodNullable<z.ZodNumber>;
668
+ tokens: z.ZodObject<{
669
+ inputUncached: z.ZodNumber;
670
+ cacheRead: z.ZodNumber;
671
+ cacheWrite: z.ZodNumber;
672
+ output: z.ZodNumber;
673
+ }, z.core.$strip>;
674
+ approximation: z.ZodObject<{
675
+ approximate: z.ZodBoolean;
676
+ reasons: z.ZodArray<z.ZodEnum<{
677
+ "closest-model": "closest-model";
678
+ "provider-default": "provider-default";
679
+ "model-attribution": "model-attribution";
680
+ "bucket-boundary": "bucket-boundary";
681
+ "missing-price": "missing-price";
682
+ "source-gap": "source-gap";
683
+ }>>;
684
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
685
+ providerId: z.ZodString;
686
+ modelId: z.ZodString;
687
+ rateId: z.ZodNullable<z.ZodString>;
688
+ basis: z.ZodEnum<{
689
+ "closest-model": "closest-model";
690
+ "provider-default": "provider-default";
691
+ unpriced: "unpriced";
692
+ matched: "matched";
693
+ }>;
694
+ }, z.core.$strip>>>;
695
+ }, z.core.$strip>;
696
+ }, z.core.$strip>, z.ZodObject<{
697
+ axis: z.ZodLiteral<"time">;
698
+ start: z.ZodNumber;
699
+ end: z.ZodNumber;
700
+ amount: z.ZodNullable<z.ZodNumber>;
701
+ tokens: z.ZodObject<{
702
+ inputUncached: z.ZodNumber;
703
+ cacheRead: z.ZodNumber;
704
+ cacheWrite: z.ZodNumber;
705
+ output: z.ZodNumber;
706
+ }, z.core.$strip>;
707
+ approximation: z.ZodObject<{
708
+ approximate: z.ZodBoolean;
709
+ reasons: z.ZodArray<z.ZodEnum<{
710
+ "closest-model": "closest-model";
711
+ "provider-default": "provider-default";
712
+ "model-attribution": "model-attribution";
713
+ "bucket-boundary": "bucket-boundary";
714
+ "missing-price": "missing-price";
715
+ "source-gap": "source-gap";
716
+ }>>;
717
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
718
+ providerId: z.ZodString;
719
+ modelId: z.ZodString;
720
+ rateId: z.ZodNullable<z.ZodString>;
721
+ basis: z.ZodEnum<{
722
+ "closest-model": "closest-model";
723
+ "provider-default": "provider-default";
724
+ unpriced: "unpriced";
725
+ matched: "matched";
726
+ }>;
727
+ }, z.core.$strip>>>;
728
+ }, z.core.$strip>;
729
+ }, z.core.$strip>], "axis">;
730
+ export declare const detailResultSchema: z.ZodObject<{
731
+ version: z.ZodLiteral<1>;
732
+ threadId: z.ZodString;
733
+ scope: z.ZodEnum<{
734
+ own: "own";
735
+ family: "family";
736
+ }>;
737
+ axis: z.ZodEnum<{
738
+ time: "time";
739
+ model: "model";
740
+ }>;
741
+ window: z.ZodEnum<{
742
+ m20: "m20";
743
+ h24: "h24";
744
+ d7: "d7";
745
+ lifetime: "lifetime";
746
+ }>;
747
+ asOf: z.ZodNumber;
748
+ revision: z.ZodString;
749
+ priceVersion: z.ZodString;
750
+ currency: z.ZodLiteral<"USD">;
751
+ estimated: z.ZodLiteral<true>;
752
+ coverage: z.ZodEnum<{
753
+ complete: "complete";
754
+ partial: "partial";
755
+ unknown: "unknown";
756
+ }>;
757
+ coverageReasons: z.ZodArray<z.ZodEnum<{
758
+ "source-gap": "source-gap";
759
+ unpriced: "unpriced";
760
+ "root-unattested": "root-unattested";
761
+ "history-unavailable": "history-unavailable";
762
+ "missing-thread": "missing-thread";
763
+ "member-cap": "member-cap";
764
+ "depth-cap": "depth-cap";
765
+ "edge-cap": "edge-cap";
766
+ retention: "retention";
767
+ "row-cap": "row-cap";
768
+ pagination: "pagination";
769
+ "population-incomplete": "population-incomplete";
770
+ }>>;
771
+ excluded: z.ZodOptional<z.ZodNumber>;
772
+ approximation: z.ZodObject<{
773
+ approximate: z.ZodBoolean;
774
+ reasons: z.ZodArray<z.ZodEnum<{
775
+ "closest-model": "closest-model";
776
+ "provider-default": "provider-default";
777
+ "model-attribution": "model-attribution";
778
+ "bucket-boundary": "bucket-boundary";
779
+ "missing-price": "missing-price";
780
+ "source-gap": "source-gap";
781
+ }>>;
782
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
783
+ providerId: z.ZodString;
784
+ modelId: z.ZodString;
785
+ rateId: z.ZodNullable<z.ZodString>;
786
+ basis: z.ZodEnum<{
787
+ "closest-model": "closest-model";
788
+ "provider-default": "provider-default";
789
+ unpriced: "unpriced";
790
+ matched: "matched";
791
+ }>;
792
+ }, z.core.$strip>>>;
793
+ }, z.core.$strip>;
794
+ total: z.ZodObject<{
795
+ tokens: z.ZodObject<{
796
+ inputUncached: z.ZodNumber;
797
+ cacheRead: z.ZodNumber;
798
+ cacheWrite: z.ZodNumber;
799
+ output: z.ZodNumber;
800
+ }, z.core.$strip>;
801
+ amount: z.ZodNullable<z.ZodNumber>;
802
+ }, z.core.$strip>;
803
+ rows: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
804
+ axis: z.ZodLiteral<"model">;
805
+ providerId: z.ZodString;
806
+ modelId: z.ZodString;
807
+ amount: z.ZodNullable<z.ZodNumber>;
808
+ tokens: z.ZodObject<{
809
+ inputUncached: z.ZodNumber;
810
+ cacheRead: z.ZodNumber;
811
+ cacheWrite: z.ZodNumber;
812
+ output: z.ZodNumber;
813
+ }, z.core.$strip>;
814
+ approximation: z.ZodObject<{
815
+ approximate: z.ZodBoolean;
816
+ reasons: z.ZodArray<z.ZodEnum<{
817
+ "closest-model": "closest-model";
818
+ "provider-default": "provider-default";
819
+ "model-attribution": "model-attribution";
820
+ "bucket-boundary": "bucket-boundary";
821
+ "missing-price": "missing-price";
822
+ "source-gap": "source-gap";
823
+ }>>;
824
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
825
+ providerId: z.ZodString;
826
+ modelId: z.ZodString;
827
+ rateId: z.ZodNullable<z.ZodString>;
828
+ basis: z.ZodEnum<{
829
+ "closest-model": "closest-model";
830
+ "provider-default": "provider-default";
831
+ unpriced: "unpriced";
832
+ matched: "matched";
833
+ }>;
834
+ }, z.core.$strip>>>;
835
+ }, z.core.$strip>;
836
+ }, z.core.$strip>, z.ZodObject<{
837
+ axis: z.ZodLiteral<"time">;
838
+ start: z.ZodNumber;
839
+ end: z.ZodNumber;
840
+ amount: z.ZodNullable<z.ZodNumber>;
841
+ tokens: z.ZodObject<{
842
+ inputUncached: z.ZodNumber;
843
+ cacheRead: z.ZodNumber;
844
+ cacheWrite: z.ZodNumber;
845
+ output: z.ZodNumber;
846
+ }, z.core.$strip>;
847
+ approximation: z.ZodObject<{
848
+ approximate: z.ZodBoolean;
849
+ reasons: z.ZodArray<z.ZodEnum<{
850
+ "closest-model": "closest-model";
851
+ "provider-default": "provider-default";
852
+ "model-attribution": "model-attribution";
853
+ "bucket-boundary": "bucket-boundary";
854
+ "missing-price": "missing-price";
855
+ "source-gap": "source-gap";
856
+ }>>;
857
+ rates: z.ZodOptional<z.ZodArray<z.ZodObject<{
858
+ providerId: z.ZodString;
859
+ modelId: z.ZodString;
860
+ rateId: z.ZodNullable<z.ZodString>;
861
+ basis: z.ZodEnum<{
862
+ "closest-model": "closest-model";
863
+ "provider-default": "provider-default";
864
+ unpriced: "unpriced";
865
+ matched: "matched";
866
+ }>;
867
+ }, z.core.$strip>>>;
868
+ }, z.core.$strip>;
869
+ }, z.core.$strip>], "axis">>;
870
+ nextCursor: z.ZodOptional<z.ZodString>;
871
+ }, z.core.$strip>;
872
+ export declare const describeInputSchema: z.ZodObject<{}, z.core.$strict>;
873
+ export declare const describeEnvelopeSchema: z.ZodObject<{
874
+ protocol: z.ZodLiteral<"bb-thread-metrics">;
875
+ versions: z.ZodArray<z.ZodNumber>;
876
+ }, z.core.$loose>;
877
+ export declare const capabilitiesSchema: z.ZodObject<{
878
+ summary: z.ZodLiteral<true>;
879
+ series: z.ZodBoolean;
880
+ detail: z.ZodBoolean;
881
+ recentSnapshotV1: z.ZodOptional<z.ZodBoolean>;
882
+ }, z.core.$strip>;
883
+ export declare const describeV1Schema: z.ZodObject<{
884
+ protocol: z.ZodLiteral<"bb-thread-metrics">;
885
+ versions: z.ZodArray<z.ZodNumber>;
886
+ capabilities: z.ZodObject<{
887
+ summary: z.ZodLiteral<true>;
888
+ series: z.ZodBoolean;
889
+ detail: z.ZodBoolean;
890
+ recentSnapshotV1: z.ZodOptional<z.ZodBoolean>;
891
+ }, z.core.$strip>;
892
+ }, z.core.$loose>;
893
+ export type ReadInput = z.infer<typeof readInputSchema>;
894
+ export type ReadResult = z.infer<typeof readResultSchema>;
895
+ export type SummaryRow = z.infer<typeof summaryRowSchema>;
896
+ export type DetailInput = z.infer<typeof detailInputSchema>;
897
+ export type DetailResult = z.infer<typeof detailResultSchema>;
898
+ export type Capabilities = z.infer<typeof capabilitiesSchema>;
899
+ export type Ranks = z.infer<typeof ranksSchema>;
900
+ export type CoverageReason = z.infer<typeof coverageReasonSchema>;
901
+ export declare function parseBounded<T>(schema: z.ZodType<T>, value: unknown, maxBytes: number): T;
902
+ export declare function negotiateVersion(value: unknown): {
903
+ kind: 'ready';
904
+ version: 1;
905
+ capabilities: Capabilities;
906
+ } | {
907
+ kind: 'incompatible';
908
+ };
909
+ /** Host population must use the same scope/archive policy as the numerator. */
910
+ export declare function dollarPercentiles(population: readonly {
911
+ threadId: string;
912
+ amount: number | null;
913
+ }[]): Map<string, number | null>;
914
+ export declare function heat(ranks: Ranks, gates?: {
915
+ m20: number;
916
+ h24: number;
917
+ d7: number;
918
+ }): 'on-fire' | 'hot' | 'heavy' | null;
919
+ export interface ThreadEdge {
920
+ threadId: string;
921
+ parentThreadId?: string | null;
922
+ lifecycleOwnerThreadId?: string | null;
923
+ hidden?: boolean;
924
+ archived?: boolean;
925
+ deleted?: boolean;
926
+ }
927
+ export interface FamilyPolicy {
928
+ includeArchived?: boolean;
929
+ maxMembers?: number;
930
+ maxDepth?: number;
931
+ maxEdges?: number;
932
+ sourceCoverage?: 'complete' | 'partial' | 'unknown';
933
+ }
934
+ export interface FamilyResult {
935
+ members: string[];
936
+ coverage: 'complete' | 'partial' | 'unknown';
937
+ coverageReasons: CoverageReason[];
938
+ excluded?: number;
939
+ }
940
+ export declare function familyClosure(edges: readonly ThreadEdge[], roots: readonly string[], policy?: FamilyPolicy): FamilyResult;
941
+ export declare function validateReadResult(input: ReadInput, value: unknown): ReadResult;
942
+ export declare function validateDetailResult(input: DetailInput, value: unknown): DetailResult;
943
+ export type OwnerErrorKind = 'absent' | 'disabled' | 'timeout' | 'aborted' | 'malformed' | 'failed';
944
+ export declare function classifyOwnerError(error: unknown): OwnerErrorKind;