@phosphorco/bb-thread-metrics 0.1.0 → 0.2.1

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,413 @@
1
+ import { z } from 'zod';
2
+ import type { ScoringConfigV2, ScoringConfigV3, StoredScoringConfig } from './recent.js';
3
+ /** Settings authority remains ledger-owned. No storage, SDK or React imports. */
4
+ export declare const HEAT_SETTINGS_METHODS: Readonly<{
5
+ read: "threadMetricsHeatSettingsReadV1";
6
+ save: "threadMetricsHeatSettingsSaveV1";
7
+ }>;
8
+ export declare const HEAT_SETTINGS_LIMITS: Readonly<{
9
+ configBytes: number;
10
+ inputBytes: number;
11
+ outputBytes: number;
12
+ operationKeys: 128;
13
+ }>;
14
+ export declare const heatConfigInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
15
+ schemaVersion: z.ZodLiteral<3>;
16
+ domain: z.ZodObject<{
17
+ version: z.ZodLiteral<1>;
18
+ kind: z.ZodLiteral<"root-family">;
19
+ }, z.core.$strict>;
20
+ mode: z.ZodLiteral<"percentile">;
21
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
22
+ gates: z.ZodObject<{
23
+ m20: z.ZodNumber;
24
+ h24: z.ZodNumber;
25
+ d7: z.ZodNumber;
26
+ }, z.core.$strict>;
27
+ }, z.core.$strict>, z.ZodObject<{
28
+ schemaVersion: z.ZodLiteral<3>;
29
+ domain: z.ZodObject<{
30
+ version: z.ZodLiteral<1>;
31
+ kind: z.ZodLiteral<"root-family">;
32
+ }, z.core.$strict>;
33
+ mode: z.ZodLiteral<"absolute">;
34
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
35
+ thresholds: z.ZodObject<{
36
+ m20: z.ZodNumber;
37
+ h24: z.ZodNumber;
38
+ d7: z.ZodNumber;
39
+ lifetime: z.ZodNumber;
40
+ }, z.core.$strict>;
41
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
42
+ }, z.core.$strict>], "mode">;
43
+ /** Byte-compatible V2 receipts; V3 canonicalization includes the domain. */
44
+ export declare function canonicalHeatConfig(value: StoredScoringConfig): string;
45
+ /** Stored legacy values are interpreted, never defaulted or migrated on read. */
46
+ export declare function validateHeatConfig(value: unknown): StoredScoringConfig;
47
+ export declare function validateRootFamilyHeatConfig(value: unknown): ScoringConfigV3;
48
+ export declare function prepareRootFamilyMigration(record: HeatConfigRecord, review?: {
49
+ disableLifetime?: boolean;
50
+ }): {
51
+ kind: 'review';
52
+ base: HeatConfigRecord;
53
+ candidate: ScoringConfigV3;
54
+ } | {
55
+ kind: 'blocked';
56
+ reason: string;
57
+ };
58
+ export declare const heatSettingsReadInputSchema: z.ZodObject<{
59
+ protocolVersion: z.ZodLiteral<1>;
60
+ operationKey: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strict>;
62
+ export declare const heatSettingsSaveInputSchema: z.ZodObject<{
63
+ protocolVersion: z.ZodLiteral<1>;
64
+ baseConfigVersion: z.ZodString;
65
+ operationKey: z.ZodString;
66
+ candidate: z.ZodDiscriminatedUnion<[z.ZodObject<{
67
+ schemaVersion: z.ZodLiteral<3>;
68
+ domain: z.ZodObject<{
69
+ version: z.ZodLiteral<1>;
70
+ kind: z.ZodLiteral<"root-family">;
71
+ }, z.core.$strict>;
72
+ mode: z.ZodLiteral<"percentile">;
73
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
74
+ gates: z.ZodObject<{
75
+ m20: z.ZodNumber;
76
+ h24: z.ZodNumber;
77
+ d7: z.ZodNumber;
78
+ }, z.core.$strict>;
79
+ }, z.core.$strict>, z.ZodObject<{
80
+ schemaVersion: z.ZodLiteral<3>;
81
+ domain: z.ZodObject<{
82
+ version: z.ZodLiteral<1>;
83
+ kind: z.ZodLiteral<"root-family">;
84
+ }, z.core.$strict>;
85
+ mode: z.ZodLiteral<"absolute">;
86
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
87
+ thresholds: z.ZodObject<{
88
+ m20: z.ZodNumber;
89
+ h24: z.ZodNumber;
90
+ d7: z.ZodNumber;
91
+ lifetime: z.ZodNumber;
92
+ }, z.core.$strict>;
93
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
94
+ }, z.core.$strict>], "mode">;
95
+ }, z.core.$strict>;
96
+ export type HeatSettingsReadInput = z.infer<typeof heatSettingsReadInputSchema>;
97
+ export type HeatSettingsSaveInput = z.infer<typeof heatSettingsSaveInputSchema>;
98
+ export declare const heatConfigRecordSchema: z.ZodObject<{
99
+ version: z.ZodString;
100
+ value: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
101
+ mode: z.ZodLiteral<"percentile">;
102
+ gates: z.ZodObject<{
103
+ m20: z.ZodNumber;
104
+ h24: z.ZodNumber;
105
+ d7: z.ZodNumber;
106
+ }, z.core.$strip>;
107
+ schemaVersion: z.ZodLiteral<2>;
108
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
109
+ }, z.core.$strip>, z.ZodObject<{
110
+ mode: z.ZodLiteral<"absolute">;
111
+ thresholds: z.ZodObject<{
112
+ m20: z.ZodNumber;
113
+ h24: z.ZodNumber;
114
+ d7: z.ZodNumber;
115
+ lifetime: z.ZodNumber;
116
+ }, z.core.$strip>;
117
+ lifetimeEnabled: z.ZodOptional<z.ZodBoolean>;
118
+ schemaVersion: z.ZodLiteral<2>;
119
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
120
+ }, z.core.$strip>], "mode">, z.ZodDiscriminatedUnion<[z.ZodObject<{
121
+ mode: z.ZodLiteral<"percentile">;
122
+ gates: z.ZodObject<{
123
+ m20: z.ZodNumber;
124
+ h24: z.ZodNumber;
125
+ d7: z.ZodNumber;
126
+ }, z.core.$strip>;
127
+ schemaVersion: z.ZodLiteral<3>;
128
+ domain: z.ZodObject<{
129
+ version: z.ZodLiteral<1>;
130
+ kind: z.ZodLiteral<"root-family">;
131
+ }, z.core.$strip>;
132
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ mode: z.ZodLiteral<"absolute">;
135
+ thresholds: z.ZodObject<{
136
+ m20: z.ZodNumber;
137
+ h24: z.ZodNumber;
138
+ d7: z.ZodNumber;
139
+ lifetime: z.ZodNumber;
140
+ }, z.core.$strip>;
141
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
142
+ schemaVersion: z.ZodLiteral<3>;
143
+ domain: z.ZodObject<{
144
+ version: z.ZodLiteral<1>;
145
+ kind: z.ZodLiteral<"root-family">;
146
+ }, z.core.$strip>;
147
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
148
+ }, z.core.$strip>], "mode">]>;
149
+ }, z.core.$strip>;
150
+ export type HeatConfigRecord = z.infer<typeof heatConfigRecordSchema>;
151
+ export declare const heatSettingsReadResultSchema: z.ZodObject<{
152
+ protocolVersion: z.ZodLiteral<1>;
153
+ current: z.ZodObject<{
154
+ version: z.ZodString;
155
+ value: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
156
+ mode: z.ZodLiteral<"percentile">;
157
+ gates: z.ZodObject<{
158
+ m20: z.ZodNumber;
159
+ h24: z.ZodNumber;
160
+ d7: z.ZodNumber;
161
+ }, z.core.$strip>;
162
+ schemaVersion: z.ZodLiteral<2>;
163
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
164
+ }, z.core.$strip>, z.ZodObject<{
165
+ mode: z.ZodLiteral<"absolute">;
166
+ thresholds: z.ZodObject<{
167
+ m20: z.ZodNumber;
168
+ h24: z.ZodNumber;
169
+ d7: z.ZodNumber;
170
+ lifetime: z.ZodNumber;
171
+ }, z.core.$strip>;
172
+ lifetimeEnabled: z.ZodOptional<z.ZodBoolean>;
173
+ schemaVersion: z.ZodLiteral<2>;
174
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
175
+ }, z.core.$strip>], "mode">, z.ZodDiscriminatedUnion<[z.ZodObject<{
176
+ mode: z.ZodLiteral<"percentile">;
177
+ gates: z.ZodObject<{
178
+ m20: z.ZodNumber;
179
+ h24: z.ZodNumber;
180
+ d7: z.ZodNumber;
181
+ }, z.core.$strip>;
182
+ schemaVersion: z.ZodLiteral<3>;
183
+ domain: z.ZodObject<{
184
+ version: z.ZodLiteral<1>;
185
+ kind: z.ZodLiteral<"root-family">;
186
+ }, z.core.$strip>;
187
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
188
+ }, z.core.$strip>, z.ZodObject<{
189
+ mode: z.ZodLiteral<"absolute">;
190
+ thresholds: z.ZodObject<{
191
+ m20: z.ZodNumber;
192
+ h24: z.ZodNumber;
193
+ d7: z.ZodNumber;
194
+ lifetime: z.ZodNumber;
195
+ }, z.core.$strip>;
196
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
197
+ schemaVersion: z.ZodLiteral<3>;
198
+ domain: z.ZodObject<{
199
+ version: z.ZodLiteral<1>;
200
+ kind: z.ZodLiteral<"root-family">;
201
+ }, z.core.$strip>;
202
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
203
+ }, z.core.$strip>], "mode">]>;
204
+ }, z.core.$strip>;
205
+ published: z.ZodObject<{
206
+ instance: z.ZodString;
207
+ sequence: z.ZodNumber;
208
+ configVersion: z.ZodNullable<z.ZodString>;
209
+ }, z.core.$strip>;
210
+ writable: z.ZodBoolean;
211
+ reason: z.ZodNullable<z.ZodString>;
212
+ migration: z.ZodOptional<z.ZodObject<{
213
+ kind: z.ZodLiteral<"domain-required">;
214
+ target: z.ZodObject<{
215
+ version: z.ZodLiteral<1>;
216
+ kind: z.ZodLiteral<"root-family">;
217
+ }, z.core.$strip>;
218
+ }, z.core.$strip>>;
219
+ outcome: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
220
+ kind: z.ZodLiteral<"saved">;
221
+ operationKey: z.ZodString;
222
+ record: z.ZodObject<{
223
+ version: z.ZodString;
224
+ value: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
225
+ mode: z.ZodLiteral<"percentile">;
226
+ gates: z.ZodObject<{
227
+ m20: z.ZodNumber;
228
+ h24: z.ZodNumber;
229
+ d7: z.ZodNumber;
230
+ }, z.core.$strip>;
231
+ schemaVersion: z.ZodLiteral<2>;
232
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
233
+ }, z.core.$strip>, z.ZodObject<{
234
+ mode: z.ZodLiteral<"absolute">;
235
+ thresholds: z.ZodObject<{
236
+ m20: z.ZodNumber;
237
+ h24: z.ZodNumber;
238
+ d7: z.ZodNumber;
239
+ lifetime: z.ZodNumber;
240
+ }, z.core.$strip>;
241
+ lifetimeEnabled: z.ZodOptional<z.ZodBoolean>;
242
+ schemaVersion: z.ZodLiteral<2>;
243
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
244
+ }, z.core.$strip>], "mode">, z.ZodDiscriminatedUnion<[z.ZodObject<{
245
+ mode: z.ZodLiteral<"percentile">;
246
+ gates: z.ZodObject<{
247
+ m20: z.ZodNumber;
248
+ h24: z.ZodNumber;
249
+ d7: z.ZodNumber;
250
+ }, z.core.$strip>;
251
+ schemaVersion: z.ZodLiteral<3>;
252
+ domain: z.ZodObject<{
253
+ version: z.ZodLiteral<1>;
254
+ kind: z.ZodLiteral<"root-family">;
255
+ }, z.core.$strip>;
256
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
257
+ }, z.core.$strip>, z.ZodObject<{
258
+ mode: z.ZodLiteral<"absolute">;
259
+ thresholds: z.ZodObject<{
260
+ m20: z.ZodNumber;
261
+ h24: z.ZodNumber;
262
+ d7: z.ZodNumber;
263
+ lifetime: z.ZodNumber;
264
+ }, z.core.$strip>;
265
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
266
+ schemaVersion: z.ZodLiteral<3>;
267
+ domain: z.ZodObject<{
268
+ version: z.ZodLiteral<1>;
269
+ kind: z.ZodLiteral<"root-family">;
270
+ }, z.core.$strip>;
271
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
272
+ }, z.core.$strip>], "mode">]>;
273
+ }, z.core.$strip>;
274
+ }, z.core.$strip>, z.ZodObject<{
275
+ kind: z.ZodLiteral<"conflict">;
276
+ operationKey: z.ZodString;
277
+ record: z.ZodObject<{
278
+ version: z.ZodString;
279
+ value: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
280
+ mode: z.ZodLiteral<"percentile">;
281
+ gates: z.ZodObject<{
282
+ m20: z.ZodNumber;
283
+ h24: z.ZodNumber;
284
+ d7: z.ZodNumber;
285
+ }, z.core.$strip>;
286
+ schemaVersion: z.ZodLiteral<2>;
287
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
288
+ }, z.core.$strip>, z.ZodObject<{
289
+ mode: z.ZodLiteral<"absolute">;
290
+ thresholds: z.ZodObject<{
291
+ m20: z.ZodNumber;
292
+ h24: z.ZodNumber;
293
+ d7: z.ZodNumber;
294
+ lifetime: z.ZodNumber;
295
+ }, z.core.$strip>;
296
+ lifetimeEnabled: z.ZodOptional<z.ZodBoolean>;
297
+ schemaVersion: z.ZodLiteral<2>;
298
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
299
+ }, z.core.$strip>], "mode">, z.ZodDiscriminatedUnion<[z.ZodObject<{
300
+ mode: z.ZodLiteral<"percentile">;
301
+ gates: z.ZodObject<{
302
+ m20: z.ZodNumber;
303
+ h24: z.ZodNumber;
304
+ d7: z.ZodNumber;
305
+ }, z.core.$strip>;
306
+ schemaVersion: z.ZodLiteral<3>;
307
+ domain: z.ZodObject<{
308
+ version: z.ZodLiteral<1>;
309
+ kind: z.ZodLiteral<"root-family">;
310
+ }, z.core.$strip>;
311
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
312
+ }, z.core.$strip>, z.ZodObject<{
313
+ mode: z.ZodLiteral<"absolute">;
314
+ thresholds: z.ZodObject<{
315
+ m20: z.ZodNumber;
316
+ h24: z.ZodNumber;
317
+ d7: z.ZodNumber;
318
+ lifetime: z.ZodNumber;
319
+ }, z.core.$strip>;
320
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
321
+ schemaVersion: z.ZodLiteral<3>;
322
+ domain: z.ZodObject<{
323
+ version: z.ZodLiteral<1>;
324
+ kind: z.ZodLiteral<"root-family">;
325
+ }, z.core.$strip>;
326
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
327
+ }, z.core.$strip>], "mode">]>;
328
+ }, z.core.$strip>;
329
+ }, z.core.$strip>, z.ZodObject<{
330
+ kind: z.ZodLiteral<"unknown">;
331
+ operationKey: z.ZodString;
332
+ }, z.core.$strip>], "kind">>;
333
+ }, z.core.$strip>;
334
+ export declare const heatSettingsSaveResultSchema: z.ZodObject<{
335
+ protocolVersion: z.ZodLiteral<1>;
336
+ kind: z.ZodEnum<{
337
+ saved: "saved";
338
+ conflict: "conflict";
339
+ }>;
340
+ operationKey: z.ZodString;
341
+ record: z.ZodObject<{
342
+ version: z.ZodString;
343
+ value: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
344
+ mode: z.ZodLiteral<"percentile">;
345
+ gates: z.ZodObject<{
346
+ m20: z.ZodNumber;
347
+ h24: z.ZodNumber;
348
+ d7: z.ZodNumber;
349
+ }, z.core.$strip>;
350
+ schemaVersion: z.ZodLiteral<2>;
351
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
352
+ }, z.core.$strip>, z.ZodObject<{
353
+ mode: z.ZodLiteral<"absolute">;
354
+ thresholds: z.ZodObject<{
355
+ m20: z.ZodNumber;
356
+ h24: z.ZodNumber;
357
+ d7: z.ZodNumber;
358
+ lifetime: z.ZodNumber;
359
+ }, z.core.$strip>;
360
+ lifetimeEnabled: z.ZodOptional<z.ZodBoolean>;
361
+ schemaVersion: z.ZodLiteral<2>;
362
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
363
+ }, z.core.$strip>], "mode">, z.ZodDiscriminatedUnion<[z.ZodObject<{
364
+ mode: z.ZodLiteral<"percentile">;
365
+ gates: z.ZodObject<{
366
+ m20: z.ZodNumber;
367
+ h24: z.ZodNumber;
368
+ d7: z.ZodNumber;
369
+ }, z.core.$strip>;
370
+ schemaVersion: z.ZodLiteral<3>;
371
+ domain: z.ZodObject<{
372
+ version: z.ZodLiteral<1>;
373
+ kind: z.ZodLiteral<"root-family">;
374
+ }, z.core.$strip>;
375
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
376
+ }, z.core.$strip>, z.ZodObject<{
377
+ mode: z.ZodLiteral<"absolute">;
378
+ thresholds: z.ZodObject<{
379
+ m20: z.ZodNumber;
380
+ h24: z.ZodNumber;
381
+ d7: z.ZodNumber;
382
+ lifetime: z.ZodNumber;
383
+ }, z.core.$strip>;
384
+ lifetimeEnabled: z.ZodOptional<z.ZodLiteral<false>>;
385
+ schemaVersion: z.ZodLiteral<3>;
386
+ domain: z.ZodObject<{
387
+ version: z.ZodLiteral<1>;
388
+ kind: z.ZodLiteral<"root-family">;
389
+ }, z.core.$strip>;
390
+ providerWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
391
+ }, z.core.$strip>], "mode">]>;
392
+ }, z.core.$strip>;
393
+ publicationPending: z.ZodBoolean;
394
+ }, z.core.$strip>;
395
+ export type HeatSettingsReadResult = z.infer<typeof heatSettingsReadResultSchema>;
396
+ export type HeatSettingsSaveResult = z.infer<typeof heatSettingsSaveResultSchema>;
397
+ export interface HeatSettingsPort {
398
+ read(input: HeatSettingsReadInput, signal?: AbortSignal): Promise<HeatSettingsReadResult>;
399
+ save(input: HeatSettingsSaveInput, signal?: AbortSignal): Promise<HeatSettingsSaveResult>;
400
+ }
401
+ type ScoreWindow = 'm20' | 'h24' | 'd7' | 'lifetime';
402
+ type RankWindow = Exclude<ScoreWindow, 'lifetime'>;
403
+ /** Population counts belong to the same rank epoch/scope/config as ranks.
404
+ * Owner ruling: singleton/empty percentile populations never heat, even gate0. */
405
+ export declare function scoringHeatV2(values: Record<ScoreWindow, {
406
+ amount: number | null;
407
+ }>, ranks: Record<RankWindow, number | null>, population: Record<RankWindow, number>, config: ScoringConfigV2): 'on-fire' | 'hot' | 'heavy' | null;
408
+ export declare function bounded<T>(schema: z.ZodType<T>, value: unknown, maxBytes: number): T;
409
+ export declare function validateHeatSaveInput(value: unknown): HeatSettingsSaveInput;
410
+ /** Unknown outcomes require an operation receipt AND candidate agreement. Equality
411
+ * alone cannot attribute another editor's write to this operation. */
412
+ export declare function reconcileHeatSave(input: HeatSettingsSaveInput, read: HeatSettingsReadResult): 'saved' | 'unchanged' | 'conflict' | 'unknown';
413
+ export {};