@bivelio/savings-layer 0.4.33 → 0.4.34

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/index.d.ts CHANGED
@@ -48,11 +48,11 @@ interface CostModel {
48
48
  cachedInputPer1k?: number;
49
49
  }
50
50
  /** Oldest provider counter a repeat can be valued against: one billing period. */
51
- declare const REFERENCE_MAX_AGE_MS: number;
51
+ declare const REFERENCE_MAX_AGE_MS$1: number;
52
52
  /** Share of the counted output credited to a repeat: only under deterministic sampling, on a catalog model that does not reason and honors it, when the call that ran carried no hidden reasoning. */
53
- declare const REFERENCE_OUTPUT_SHARE = 0.95;
53
+ declare const REFERENCE_OUTPUT_SHARE$1 = 0.95;
54
54
  /** Input tokens deducted per piece the layer inserted in the call that ran: a message, the wrapper around a native output schema, or half of the empty parameters given to a tool that had none. */
55
- declare const REFERENCE_MESSAGE_ALLOWANCE = 8;
55
+ declare const REFERENCE_MESSAGE_ALLOWANCE$1 = 8;
56
56
  /**
57
57
  * Why an avoided call (a cache or coalesced hit) could not be valued by
58
58
  * reference, and so stays `estimated`.
@@ -102,7 +102,7 @@ interface ReferenceCredit {
102
102
  /** Fraction of the standard price applied: 1, or the discounted tier the call ran on or this request declared. */
103
103
  tierFactor: number;
104
104
  }
105
- declare class SavingsLedger {
105
+ declare class SavingsLedger$1 {
106
106
  avoidedLlm: number;
107
107
  baselineLlm: number;
108
108
  actualLlm: number;
@@ -339,7 +339,7 @@ declare function precioDeLista$1(model: string, at?: Date | number): CostModel |
339
339
  * on the customer's machine. `test/version-declarada.test.ts` ties this
340
340
  * constant to package.json so the two can never drift.
341
341
  */
342
- declare const BV_SALA_VERSION = "0.4.33";
342
+ declare const BV_SALA_VERSION = "0.4.34";
343
343
 
344
344
  /**
345
345
  * Environment-agnostic UUID generation.
@@ -349,7 +349,7 @@ declare const BV_SALA_VERSION = "0.4.33";
349
349
  * Deno and edge runtimes) and fall back to a v4-shaped id when it is absent, so
350
350
  * BV-SALA runs everywhere without a `node:crypto` import that breaks bundlers.
351
351
  */
352
- declare function randomId(): string;
352
+ declare function randomId$1(): string;
353
353
 
354
354
  /** How the layer served a request that is eligible for a verification check. */
355
355
  type VerificationStratum =
@@ -1418,8 +1418,21 @@ interface QualityRepairCheck {
1418
1418
  interface QualityTruncationCheck {
1419
1419
  /** True when the provider reported `finishReason: "length"`. A truncated answer is never cached. */
1420
1420
  truncated: boolean;
1421
- /** The stop reason exactly as the provider named it; absent when it reported none. */
1421
+ /**
1422
+ * Why the provider stopped, as `SavingsResult.finishReason` reports it;
1423
+ * absent when it reported none.
1424
+ *
1425
+ * In 0.5 this becomes the same CLOSED set as `SavingsResult.finishReason` —
1426
+ * `"stop"`, `"length"`, `"tool_calls"`, `"content_filter"` or `"other"` — and
1427
+ * the provider's own value moves to {@link finishReasonDetail}. Compare
1428
+ * against those five values only; see the 0.5 migration guide.
1429
+ */
1422
1430
  finishReason?: string;
1431
+ /**
1432
+ * The provider's own reason behind `finishReason`, when it gave one: the same
1433
+ * value as `SavingsResult.finishReasonDetail` for the answer that was served.
1434
+ */
1435
+ finishReasonDetail?: string;
1423
1436
  /**
1424
1437
  * Whether you set the limit (`maxOutputTokens` on the request or on
1425
1438
  * `response`). When false, any
@@ -2092,7 +2105,7 @@ declare class InMemoryExactCache implements ExactCache {
2092
2105
  * requests that mean the same thing must canonicalize identically, and two
2093
2106
  * requests that differ in any way that could change the answer must not.
2094
2107
  */
2095
- interface CanonicalRequest {
2108
+ interface CanonicalRequest$1 {
2096
2109
  model: string;
2097
2110
  modelFamily: string;
2098
2111
  messages: ChatMessage[];
@@ -2157,10 +2170,10 @@ interface CanonicalRequest {
2157
2170
  * thousands separators, times, dates, units, negations, math operators and any
2158
2171
  * combining mark outside the Latin alphabet.
2159
2172
  */
2160
- declare function normalizeText(text: string): string;
2161
- declare function sha256(input: string): string;
2173
+ declare function normalizeText$1(text: string): string;
2174
+ declare function sha256$1(input: string): string;
2162
2175
  /** Stable JSON stringify with sorted keys so hashes are order-independent. */
2163
- declare function stableStringify(value: unknown): string;
2176
+ declare function stableStringify$1(value: unknown): string;
2164
2177
  /**
2165
2178
  * The version-and-size-independent family of a model id.
2166
2179
  *
@@ -2168,8 +2181,8 @@ declare function stableStringify(value: unknown): string;
2168
2181
  * ANSWER, which is not always the one the caller named. Deriving the family a
2169
2182
  * second time somewhere else is how two rulers start to disagree.
2170
2183
  */
2171
- declare function modelFamilyOf(model: string): string;
2172
- declare function canonicalize(request: SavingsRequest): CanonicalRequest;
2184
+ declare function modelFamilyOf$1(model: string): string;
2185
+ declare function canonicalize$1(request: SavingsRequest): CanonicalRequest$1;
2173
2186
 
2174
2187
  /**
2175
2188
  * Thrown by `importCalibration` / `exportCalibration` when a calibration state
@@ -2323,7 +2336,7 @@ interface SemanticCalibrationStatus {
2323
2336
  nextTestAt?: number;
2324
2337
  }
2325
2338
  /** Default {@link AnswerJudge}: the stored answer counts as right only if it is the same answer. */
2326
- declare function sameAnswer(stored: CachedAnswer, fresh: CachedAnswer): boolean;
2339
+ declare function sameAnswer$1(stored: CachedAnswer, fresh: CachedAnswer): boolean;
2327
2340
  /**
2328
2341
  * Certifies an acceptance floor from labels you already have (your own traffic,
2329
2342
  * or a labeled set scored with your embedder), with the same test the cache
@@ -2504,13 +2517,13 @@ interface SemanticCacheOptions {
2504
2517
  */
2505
2518
  calibration?: SemanticCalibrationOptions;
2506
2519
  }
2507
- declare function cosine(a: number[], b: number[]): number;
2508
- declare function numericTokens(s: string): string[];
2509
- declare function multisetEqual(a: string[], b: string[]): boolean;
2510
- declare function words(s: string): string[];
2511
- declare function negationCount(tokens: string[]): number;
2520
+ declare function cosine$1(a: number[], b: number[]): number;
2521
+ declare function numericTokens$1(s: string): string[];
2522
+ declare function multisetEqual$1(a: string[], b: string[]): boolean;
2523
+ declare function words$1(s: string): string[];
2524
+ declare function negationCount$1(tokens: string[]): number;
2512
2525
  /** True when two normalized queries agree on the facts an embedding tends to blur. */
2513
- declare function keyTokensMatch(a: string, b: string): boolean;
2526
+ declare function keyTokensMatch$1(a: string, b: string): boolean;
2514
2527
  /**
2515
2528
  * In-memory reference implementation. A production build would back this with a
2516
2529
  * real vector store and metadata filters pushed down
@@ -2544,7 +2557,7 @@ declare class InMemorySemanticCache {
2544
2557
  * and labels nothing: without {@link lookup} and {@link observe} (the layer
2545
2558
  * calls both) the calibration never gets a label and never certifies.
2546
2559
  */
2547
- find(c: CanonicalRequest): Promise<SemanticHit | null>;
2560
+ find(c: CanonicalRequest$1): Promise<SemanticHit | null>;
2548
2561
  /**
2549
2562
  * The best candidate that passes every hard filter, the similarity floor and
2550
2563
  * the fact guard. With `conAceptacion`, also the confidence floor (the path
@@ -2559,7 +2572,7 @@ declare class InMemorySemanticCache {
2559
2572
  * `agentic` picks the traffic segment: calibrations are kept apart for
2560
2573
  * single-shot and agentic requests.
2561
2574
  */
2562
- lookup(c: CanonicalRequest, opts?: {
2575
+ lookup(c: CanonicalRequest$1, opts?: {
2563
2576
  agentic?: boolean;
2564
2577
  }): Promise<SemanticLookup>;
2565
2578
  /**
@@ -2607,7 +2620,7 @@ declare class InMemorySemanticCache {
2607
2620
  importCalibration(state: SemanticCalibrationState | string | unknown): void;
2608
2621
  private identidad;
2609
2622
  private estadoDe;
2610
- store(c: CanonicalRequest, answer: CachedAnswer): Promise<void>;
2623
+ store(c: CanonicalRequest$1, answer: CachedAnswer): Promise<void>;
2611
2624
  /** Drop every record for a knowledge epoch (invalidation on re-index). */
2612
2625
  invalidateEpoch(knowledgeEpoch: string): number;
2613
2626
  get size(): number;
@@ -2710,12 +2723,12 @@ interface ResolverResult {
2710
2723
  }
2711
2724
  interface DeterministicResolver {
2712
2725
  readonly name: string;
2713
- try(c: CanonicalRequest): ResolverResult | null;
2726
+ try(c: CanonicalRequest$1): ResolverResult | null;
2714
2727
  }
2715
2728
  declare class ResolverRegistry {
2716
2729
  private readonly resolvers;
2717
2730
  register(resolver: DeterministicResolver): this;
2718
- try(c: CanonicalRequest): ResolverResult | null;
2731
+ try(c: CanonicalRequest$1): ResolverResult | null;
2719
2732
  get size(): number;
2720
2733
  }
2721
2734
  /**
@@ -2725,7 +2738,7 @@ declare class ResolverRegistry {
2725
2738
  */
2726
2739
  declare const arithmeticResolver: DeterministicResolver;
2727
2740
  /** Shunting-yard evaluation of a numeric expression. Returns null on any parse issue. */
2728
- declare function evalArithmetic(expr: string): number | null;
2741
+ declare function evalArithmetic$1(expr: string): number | null;
2729
2742
  /** A registry seeded with the built-in safe resolvers. */
2730
2743
  declare function createDefaultResolvers(): ResolverRegistry;
2731
2744
 
@@ -2766,7 +2779,7 @@ declare class ExecutionRouter {
2766
2779
  classifier?: LocalClassifier;
2767
2780
  maxRounds?: number;
2768
2781
  });
2769
- classify(c: CanonicalRequest): RouteDecision;
2782
+ classify(c: CanonicalRequest$1): RouteDecision;
2770
2783
  }
2771
2784
 
2772
2785
  /**
@@ -2999,7 +3012,7 @@ interface ConstraintPlan {
2999
3012
  * backend which *claims* support actually enforces every constraint — declared
3000
3013
  * support and empirical coverage are not the same thing.
3001
3014
  */
3002
- declare function resolveConstraintBackend(model: string, schema: JsonSchema, backends: ConstraintBackend[]): ConstraintPlan;
3015
+ declare function resolveConstraintBackend$1(model: string, schema: JsonSchema, backends: ConstraintBackend[]): ConstraintPlan;
3003
3016
  /** A permissive backend used when the provider validates structured output natively. */
3004
3017
  declare function providerNativeBackend(isSupported?: (model: string, schema: JsonSchema) => boolean): ConstraintBackend;
3005
3018
 
@@ -3061,7 +3074,7 @@ interface CompressionPolicyInput {
3061
3074
  * Here we model the token side; latency/quality penalties are folded into
3062
3075
  * `compressorCostTokens` and `minimumNetTokens` by the caller.
3063
3076
  */
3064
- declare function shouldCompress(input: CompressionPolicyInput): {
3077
+ declare function shouldCompress$1(input: CompressionPolicyInput): {
3065
3078
  compress: boolean;
3066
3079
  reason: string;
3067
3080
  };
@@ -3072,7 +3085,7 @@ declare function shouldCompress(input: CompressionPolicyInput): {
3072
3085
  * back to the ORIGINAL text — a compressor that drops a negation or a number is
3073
3086
  * worse than no compressor at all.
3074
3087
  */
3075
- declare function withProtectedSpans(inner: Compressor): Compressor;
3088
+ declare function withProtectedSpans$1(inner: Compressor): Compressor;
3076
3089
  /** No-op compressor: the safe default until a real compressor sidecar is wired in. */
3077
3090
  declare const noopCompressor: Compressor;
3078
3091
  /**
@@ -3233,13 +3246,13 @@ interface RetrievalOutcome {
3233
3246
  keptCount: number;
3234
3247
  }
3235
3248
  /** Remove exact and near-duplicate docs by normalized text / hash. */
3236
- declare function dedupe(docs: EvidenceDoc[]): EvidenceDoc[];
3249
+ declare function dedupe$1(docs: EvidenceDoc[]): EvidenceDoc[];
3237
3250
  /**
3238
3251
  * Adaptive-k: choose how many documents to keep based on the score distribution
3239
3252
  * rather than a fixed cutoff. When the top document dominates, keep fewer; when
3240
3253
  * scores are flat, keep up to the cap. This directly trims input tokens.
3241
3254
  */
3242
- declare function adaptiveK(docs: EvidenceDoc[], opts?: {
3255
+ declare function adaptiveK$1(docs: EvidenceDoc[], opts?: {
3243
3256
  maxDocuments: number;
3244
3257
  minDocuments?: number;
3245
3258
  }): EvidenceDoc[];
@@ -3247,7 +3260,7 @@ declare function adaptiveK(docs: EvidenceDoc[], opts?: {
3247
3260
  * Execute a retrieval plan. NO_RETRIEVAL / TOOL_ACTION classes retrieve nothing.
3248
3261
  * Otherwise: retrieve -> dedupe -> rerank -> adaptive-k, bounded by maxRounds.
3249
3262
  */
3250
- declare function executeRetrievalPlan(plan: RetrievalPlan, deps: {
3263
+ declare function executeRetrievalPlan$1(plan: RetrievalPlan, deps: {
3251
3264
  retriever?: Retriever;
3252
3265
  reranker?: Reranker;
3253
3266
  }): Promise<RetrievalOutcome>;
@@ -3617,10 +3630,10 @@ interface Provider {
3617
3630
  * `licenseKey: " "` (an empty environment variable, a blank secret file) used
3618
3631
  * to tell the customer their key "does not verify" — there was no key.
3619
3632
  */
3620
- type LicenseStatus = "active" | "grace" | "expired" | "invalid" | "revoked" | "stale" | "none";
3633
+ type LicenseStatus$1 = "active" | "grace" | "expired" | "invalid" | "revoked" | "stale" | "none";
3621
3634
  /** Decoded license token body (mirror of `@bivelio/protocol`'s LicensePayload,
3622
3635
  * declared locally so the SDK stays free of a control-plane dependency). */
3623
- interface LicenseTokenPayload {
3636
+ interface LicenseTokenPayload$1 {
3624
3637
  jti: string;
3625
3638
  org_id: string;
3626
3639
  plan: string;
@@ -3634,14 +3647,14 @@ interface LicenseTokenPayload {
3634
3647
  measure_expires_at?: number;
3635
3648
  measure_grace_days?: number;
3636
3649
  }
3637
- interface ResolvedLicense {
3638
- status: LicenseStatus;
3639
- payload?: LicenseTokenPayload;
3650
+ interface ResolvedLicense$1 {
3651
+ status: LicenseStatus$1;
3652
+ payload?: LicenseTokenPayload$1;
3640
3653
  reason?: string;
3641
3654
  }
3642
- declare const EMBEDDED_PUBLIC_KEY: string;
3655
+ declare const EMBEDDED_PUBLIC_KEY$1: string;
3643
3656
  /** Result of verifying a compact `head.body.sig` token's signature. */
3644
- interface CompactVerification {
3657
+ interface CompactVerification$1 {
3645
3658
  /** True only if the signature is valid for the given public key. */
3646
3659
  ok: boolean;
3647
3660
  /** Decoded header (present when `ok`), e.g. `{ alg, typ, v }`. */
@@ -3664,7 +3677,7 @@ interface LicenseKeyset {
3664
3677
  defaultKid: string;
3665
3678
  }
3666
3679
  /** Narrow a verification key to a {@link LicenseKeyset} (vs a bare SPKI PEM string). */
3667
- declare function isKeyset(k: string | LicenseKeyset): k is LicenseKeyset;
3680
+ declare function isKeyset$1(k: string | LicenseKeyset): k is LicenseKeyset;
3668
3681
  /**
3669
3682
  * Normalize a license key the way it arrives from the real world — ONCE, at the
3670
3683
  * entry point, never inside the verifier.
@@ -3689,7 +3702,7 @@ declare function isKeyset(k: string | LicenseKeyset): k is LicenseKeyset;
3689
3702
  * Anything INSIDE the key is left alone: an interior space is not wrapping, it
3690
3703
  * is a broken key, and {@link licenseKeyShape} reports it as `malformed`.
3691
3704
  */
3692
- declare function normalizeLicenseKey(raw: string): string;
3705
+ declare function normalizeLicenseKey$1(raw: string): string;
3693
3706
  /**
3694
3707
  * The SHAPE of an already-normalized key, so the error message can tell apart
3695
3708
  * three problems that used to get the same text:
@@ -3704,9 +3717,9 @@ declare function normalizeLicenseKey(raw: string): string;
3704
3717
  * It is the SAME shape rule {@link verifyCompactSignature} enforces, so that "has
3705
3718
  * the shape" and "verification was attempted" mean the same thing.
3706
3719
  */
3707
- type LicenseKeyShape = "empty" | "malformed" | "token";
3720
+ type LicenseKeyShape$1 = "empty" | "malformed" | "token";
3708
3721
  /** Classify a normalized key. See {@link LicenseKeyShape}. */
3709
- declare function licenseKeyShape(normalizedKey: string): LicenseKeyShape;
3722
+ declare function licenseKeyShape$1(normalizedKey: string): LicenseKeyShape$1;
3710
3723
  /**
3711
3724
  * Verify the Ed25519 signature of any BV-SALA compact token
3712
3725
  * (`base64url(header).base64url(body).base64url(sig)`, sig over `${head}.${body}`)
@@ -3723,11 +3736,11 @@ declare function licenseKeyShape(normalizedKey: string): LicenseKeyShape;
3723
3736
  * the same answer to the same input, always; a caller that wants to tolerate
3724
3737
  * wrapping normalizes BEFORE calling.
3725
3738
  */
3726
- declare function verifyCompactSignature(token: string, publicKey: string | LicenseKeyset): CompactVerification;
3739
+ declare function verifyCompactSignature$1(token: string, publicKey: string | LicenseKeyset): CompactVerification$1;
3727
3740
  /** Verify a token's signature and decode its payload. Does not check expiry. */
3728
- declare function verifyLicenseToken(token: string, publicKey: string | LicenseKeyset): {
3741
+ declare function verifyLicenseToken$1(token: string, publicKey: string | LicenseKeyset): {
3729
3742
  signatureValid: boolean;
3730
- payload?: LicenseTokenPayload;
3743
+ payload?: LicenseTokenPayload$1;
3731
3744
  reason?: string;
3732
3745
  };
3733
3746
  /**
@@ -3740,11 +3753,11 @@ declare function verifyLicenseToken(token: string, publicKey: string | LicenseKe
3740
3753
  * expires_at < now <= +grace_days → grace (still entitled)
3741
3754
  * now > expires_at + grace_days → expired
3742
3755
  */
3743
- declare function deriveStatus(payload: {
3756
+ declare function deriveStatus$1(payload: {
3744
3757
  jti: string;
3745
3758
  expires_at: number;
3746
3759
  grace_days: number;
3747
- }, nowSeconds: number, revoked?: ReadonlySet<string>): LicenseStatus;
3760
+ }, nowSeconds: number, revoked?: ReadonlySet<string>): LicenseStatus$1;
3748
3761
  /**
3749
3762
  * Verify + apply the grace policy → a resolved status. Mirrors what the issuing
3750
3763
  * control plane resolves for the same token. Bad signature / malformed
@@ -3753,10 +3766,10 @@ declare function deriveStatus(payload: {
3753
3766
  * A public entry point, so it normalizes like the others (gate and refresher):
3754
3767
  * the same key must resolve the same whichever way it comes in.
3755
3768
  */
3756
- declare function resolveLicense(token: string, publicKey: string | LicenseKeyset, opts?: {
3769
+ declare function resolveLicense$1(token: string, publicKey: string | LicenseKeyset, opts?: {
3757
3770
  nowSeconds?: number;
3758
3771
  revoked?: ReadonlySet<string>;
3759
- }): ResolvedLicense;
3772
+ }): ResolvedLicense$1;
3760
3773
 
3761
3774
  /**
3762
3775
  * Everything the pipeline depends on. All fields except `provider` and
@@ -3796,7 +3809,8 @@ interface SavingsLayerConfig {
3796
3809
  /**
3797
3810
  * @deprecated Renamed {@link semanticCacheStore} in 0.4.33, so that the store
3798
3811
  * and the per-request switch (`savings.semanticCache`) no longer share a name.
3799
- * It still works, with a one-time warning (silenced by `silenceWarnings`);
3812
+ * It still works, with a one-time warning (silenced by `silenceWarnings` or
3813
+ * `BVSALA_SILENCE_DEPRECATIONS=1`);
3800
3814
  * when both are given, `semanticCacheStore` wins. Removed in 0.5: see the 0.5
3801
3815
  * migration guide.
3802
3816
  */
@@ -3930,7 +3944,9 @@ interface SavingsLayerConfig {
3930
3944
  * build-embedded BiVelio key.
3931
3945
  *
3932
3946
  * @deprecated Has no effect in the published package, which always verifies
3933
- * against the embedded BiVelio key. Removed from the public type in 0.5.
3947
+ * against the embedded BiVelio key; passing it there logs a one-time warning
3948
+ * (silenced by `silenceWarnings` or `BVSALA_SILENCE_DEPRECATIONS=1`). Removed
3949
+ * from the public type in 0.5: delete it from your config.
3934
3950
  */
3935
3951
  licensePublicKey?: string | LicenseKeyset;
3936
3952
  /**
@@ -4062,7 +4078,7 @@ interface SavingsLayerConfig {
4062
4078
  * requires a valid `licenseKey`. It is not a way to run the product for free.
4063
4079
  *
4064
4080
  * @deprecated No effect in the published package. Removed from the public type
4065
- * in 0.5.
4081
+ * in 0.5: delete it from your config.
4066
4082
  */
4067
4083
  devUnlicensed?: boolean;
4068
4084
  /** Per-model cost models; falls back to `defaultCostModel`. */
@@ -4527,7 +4543,7 @@ declare const registrarTokenizadorExacto: typeof registerExactTokenizer;
4527
4543
  * `modelFamily` is derived from whichever id is used, for the same reason: it is
4528
4544
  * part of the identity of whoever answers.
4529
4545
  */
4530
- declare function buildExactKey(c: CanonicalRequest, opciones?: {
4546
+ declare function buildExactKey$1(c: CanonicalRequest$1, opciones?: {
4531
4547
  servedModel?: string;
4532
4548
  }): string;
4533
4549
  /**
@@ -4567,7 +4583,7 @@ declare function buildExactKey(c: CanonicalRequest, opciones?: {
4567
4583
  * A caller who never set `savings.deferrable` must not be made to wait for one
4568
4584
  * who did.
4569
4585
  */
4570
- declare function buildInflightKey(c: CanonicalRequest, opciones?: {
4586
+ declare function buildInflightKey$1(c: CanonicalRequest$1, opciones?: {
4571
4587
  servedModel?: string;
4572
4588
  deferrable?: boolean;
4573
4589
  toolDiscovery?: boolean;
@@ -4634,7 +4650,7 @@ interface Policy {
4634
4650
  sensitiveTopic: "self-harm" | "mental-health-crisis" | "medical-emergency" | null;
4635
4651
  reasons: string[];
4636
4652
  }
4637
- declare function evaluatePolicy(c: CanonicalRequest): Policy;
4653
+ declare function evaluatePolicy$1(c: CanonicalRequest$1): Policy;
4638
4654
 
4639
4655
  /**
4640
4656
  * A LOCAL EMBEDDING FUNCTION — no network, no API key, no per-call cost.
@@ -4734,7 +4750,7 @@ declare function mergeDelta(state: ConversationState, delta: MemoryDelta): Conve
4734
4750
  * relevant, non-empty state is serialized, then the last `rawTurns` messages,
4735
4751
  * then the current message.
4736
4752
  */
4737
- declare function projectContext(opts: {
4753
+ declare function projectContext$1(opts: {
4738
4754
  state: ConversationState;
4739
4755
  history: ChatMessage[];
4740
4756
  current: ChatMessage;
@@ -4772,7 +4788,7 @@ interface CompactRowsOptions {
4772
4788
  }
4773
4789
  declare function encodeCompactRows(value: unknown, options?: CompactRowsOptions): string;
4774
4790
  /** Return shared column names iff every element is a flat, scalar-valued object with identical keys. */
4775
- declare function uniformColumns(arr: unknown[]): string[] | null;
4791
+ declare function uniformColumns$1(arr: unknown[]): string[] | null;
4776
4792
  /**
4777
4793
  * The instruction a model needs to read the compact encoder. Kept short on purpose — this text
4778
4794
  * is the per-request overhead the selector must amortize before it wins.
@@ -4984,7 +5000,7 @@ interface OpenAICompatibleOptions {
4984
5000
  * incumple la segunda y el proveedor responde 400. No es un fallo del cliente:
4985
5001
  * es una restricción de OpenAI que JSON Schema no tiene.
4986
5002
  */
4987
- declare function isStrictCompatible(schema: unknown): boolean;
5003
+ declare function isStrictCompatible$1(schema: unknown): boolean;
4988
5004
  /**
4989
5005
  * Decides the id that travels on the wire. Explicit option wins; otherwise the
4990
5006
  * endpoint decides: OpenAI/Azure and Google's own Gemini API get the bare id,
@@ -5246,7 +5262,7 @@ declare class GoogleProvider implements Provider {
5246
5262
  * Every stage records why it did what it did, so a SavingsReport can be audited
5247
5263
  * and so ablations can attribute savings to a specific module.
5248
5264
  */
5249
- declare class TraceCollector {
5265
+ declare class TraceCollector$1 {
5250
5266
  private readonly events;
5251
5267
  private readonly start;
5252
5268
  private readonly now;
@@ -5280,14 +5296,14 @@ declare class LicenseError extends Error {
5280
5296
  }
5281
5297
 
5282
5298
  /** Decoded revocation-list body (mirror of @bivelio/protocol's RevocationListPayload). */
5283
- interface RevocationListBody {
5299
+ interface RevocationListBody$1 {
5284
5300
  v: number;
5285
5301
  asOf: number;
5286
5302
  seq: number;
5287
5303
  revoked: string[];
5288
5304
  iss?: string;
5289
5305
  }
5290
- interface RevocationListVerification {
5306
+ interface RevocationListVerification$1 {
5291
5307
  /** True only if signature + typ + monotonic-seq + skew all pass. */
5292
5308
  ok: boolean;
5293
5309
  /** List revision (monotonic). -1 when not ok. */
@@ -5306,11 +5322,11 @@ interface RevocationListVerification {
5306
5322
  * ANY failure returns `ok:false` with an empty set; the poller then keeps its
5307
5323
  * sticky last-known-good (fail-open), never dropping known revocations.
5308
5324
  */
5309
- declare function verifyRevocationList(token: string, publicKey: string | LicenseKeyset, opts?: {
5325
+ declare function verifyRevocationList$1(token: string, publicKey: string | LicenseKeyset, opts?: {
5310
5326
  minSeq?: number;
5311
5327
  nowSeconds?: number;
5312
5328
  maxSkewSeconds?: number;
5313
- }): RevocationListVerification;
5329
+ }): RevocationListVerification$1;
5314
5330
  /**
5315
5331
  * The SDK's live, sticky, monotonic view of the revocation set. It only ever
5316
5332
  * GROWS (a jti, once seen revoked, stays revoked for the process lifetime) and
@@ -5318,7 +5334,7 @@ declare function verifyRevocationList(token: string, publicKey: string | License
5318
5334
  * list can never un-revoke a license. The live gate reads {@link snapshot} on
5319
5335
  * every request; the poller feeds it via {@link apply}.
5320
5336
  */
5321
- declare class RevocationSnapshot {
5337
+ declare class RevocationSnapshot$1 {
5322
5338
  private _seq;
5323
5339
  private _asOf;
5324
5340
  private _lastContactAt;
@@ -5346,9 +5362,9 @@ declare class RevocationSnapshot {
5346
5362
  }
5347
5363
 
5348
5364
  /** A resolved gate that also exposes overall status + a refresh horizon. */
5349
- interface ResolvedGate extends LicenseGate {
5365
+ interface ResolvedGate$1 extends LicenseGate {
5350
5366
  isActive(): boolean;
5351
- status(): LicenseStatus;
5367
+ status(): LicenseStatus$1;
5352
5368
  /**
5353
5369
  * Why the key does not open, when it does not; `undefined` when it verified.
5354
5370
  * Under `status() === "invalid"` it tells a key that does NOT EVEN HAVE THE
@@ -5375,8 +5391,8 @@ interface ResolvedGate extends LicenseGate {
5375
5391
  * The offline path passes a fresh, never-updated snapshot (live clock, zero
5376
5392
  * network); the online path passes a snapshot a {@link RevocationPoller} feeds.
5377
5393
  */
5378
- declare function liveGateFromKey(licenseKey: string, publicKey: string | LicenseKeyset, opts: {
5379
- revocation: RevocationSnapshot;
5394
+ declare function liveGateFromKey$1(licenseKey: string, publicKey: string | LicenseKeyset, opts: {
5395
+ revocation: RevocationSnapshot$1;
5380
5396
  now?: () => number;
5381
5397
  /** Online staleness ceiling, seconds. If the gate goes this long without a
5382
5398
  * confirmed authorized heartbeat, it stops granting (closes the block-egress
@@ -5384,7 +5400,7 @@ declare function liveGateFromKey(licenseKey: string, publicKey: string | License
5384
5400
  maxStalenessSeconds?: number;
5385
5401
  /** Freshness anchor (unix seconds); defaults to construction time (boot). */
5386
5402
  startedAt?: number;
5387
- }): ResolvedGate;
5403
+ }): ResolvedGate$1;
5388
5404
 
5389
5405
  /**
5390
5406
  * Build the SDK's structural {@link import("../contracts/types.js").LicenseGate}
@@ -5399,9 +5415,9 @@ declare function liveGateFromKey(licenseKey: string, publicKey: string | License
5399
5415
  * Online revocation is added by pairing {@link liveGateFromKey} with a
5400
5416
  * poller-fed snapshot, which `createSavingsLayer` wires up for you.
5401
5417
  */
5402
- declare function gateFromKey(licenseKey: string, publicKey: string | LicenseKeyset, now?: () => number): ResolvedGate;
5418
+ declare function gateFromKey$1(licenseKey: string, publicKey: string | LicenseKeyset, now?: () => number): ResolvedGate$1;
5403
5419
 
5404
- type RevocationPollEvent = {
5420
+ type RevocationPollEvent$1 = {
5405
5421
  type: "applied";
5406
5422
  seq: number;
5407
5423
  size: number;
@@ -5417,14 +5433,14 @@ type RevocationPollEvent = {
5417
5433
  } | {
5418
5434
  type: "no-fetch";
5419
5435
  };
5420
- interface RevocationPollerOptions {
5436
+ interface RevocationPollerOptions$1 {
5421
5437
  /** Absolute URL of GET /licenses/revocations. */
5422
5438
  url: string;
5423
5439
  /** SPKI PEM (or a kid-addressed {@link LicenseKeyset}) used to verify the signed
5424
5440
  * list — the same key/keyset that verifies license tokens. */
5425
5441
  publicKeyPem: string | LicenseKeyset;
5426
5442
  /** The sticky snapshot to feed. */
5427
- snapshot: RevocationSnapshot;
5443
+ snapshot: RevocationSnapshot$1;
5428
5444
  /** Anchor cadence to the license refresh horizon (unix seconds). */
5429
5445
  getRefreshAfter?: () => number | undefined;
5430
5446
  /** Injectable clock (unix seconds). */
@@ -5440,7 +5456,7 @@ interface RevocationPollerOptions {
5440
5456
  /** Injectable RNG in [0,1) for jitter. Default Math.random. */
5441
5457
  random?: () => number;
5442
5458
  /** Optional observer (telemetry/tests). */
5443
- onEvent?: (e: RevocationPollEvent) => void;
5459
+ onEvent?: (e: RevocationPollEvent$1) => void;
5444
5460
  /**
5445
5461
  * Silencia los avisos por consola. Por defecto están ENCENDIDOS, y ese defecto
5446
5462
  * es la corrección: el sondeo es fail-open, así que un call-home roto no rompe
@@ -5462,7 +5478,7 @@ interface RevocationPollerOptions {
5462
5478
  * failure it backs off exponentially (a revocation can't land during an outage
5463
5479
  * anyway), capped, still jittered, never below the floor.
5464
5480
  */
5465
- declare function computeNextDelay(opts: {
5481
+ declare function computeNextDelay$1(opts: {
5466
5482
  refreshAfter?: number;
5467
5483
  nowSeconds: number;
5468
5484
  consecutiveFailures: number;
@@ -5472,7 +5488,7 @@ declare function computeNextDelay(opts: {
5472
5488
  jitterRatio: number;
5473
5489
  random?: () => number;
5474
5490
  }): number;
5475
- declare class RevocationPoller {
5491
+ declare class RevocationPoller$1 {
5476
5492
  private readonly opts;
5477
5493
  private timer;
5478
5494
  private controller;
@@ -5483,7 +5499,7 @@ declare class RevocationPoller {
5483
5499
  private lastEtag;
5484
5500
  /** 304 seguidos; al llegar al tope se fuerza una descarga firmada. */
5485
5501
  private consecutive304;
5486
- constructor(opts: RevocationPollerOptions);
5502
+ constructor(opts: RevocationPollerOptions$1);
5487
5503
  private now;
5488
5504
  private resolveFetch;
5489
5505
  /**
@@ -5517,7 +5533,7 @@ declare class RevocationPoller {
5517
5533
  stop(): void;
5518
5534
  }
5519
5535
 
5520
- interface UsageEmitterOptions {
5536
+ interface UsageEmitterOptions$1 {
5521
5537
  /** Full ingest URL, e.g. `https://savings.bivelio.com/api/metering/usage`. */
5522
5538
  url: string;
5523
5539
  /** Service-account key (`bvk_…`) sent as a Bearer token; the server derives the org from it. */
@@ -5568,7 +5584,7 @@ interface UsageEmitterOptions {
5568
5584
  * neither block nor crash the customer's request path. The buffer is hard-capped
5569
5585
  * so a sustained outage can never grow memory without bound.
5570
5586
  */
5571
- declare class UsageEmitter {
5587
+ declare class UsageEmitter$1 {
5572
5588
  private readonly options;
5573
5589
  private readonly now;
5574
5590
  private readonly flushIntervalMs;
@@ -5586,7 +5602,7 @@ declare class UsageEmitter {
5586
5602
  * only confuse whoever reads the logs.
5587
5603
  */
5588
5604
  private fallosSeguidos;
5589
- constructor(options: UsageEmitterOptions);
5605
+ constructor(options: UsageEmitterOptions$1);
5590
5606
  /** Set the resolved seat identity (derivation is async; records emitted before
5591
5607
  * it resolves are stamped at flush time, so none are lost). */
5592
5608
  setSeat(seatId: string | undefined, ci: boolean): void;
@@ -5627,17 +5643,17 @@ declare class UsageEmitter {
5627
5643
  }
5628
5644
 
5629
5645
  /** True when running in a CI / ephemeral environment. */
5630
- declare function detectCi(): boolean;
5646
+ declare function detectCi$1(): boolean;
5631
5647
  /**
5632
5648
  * Derive the machine seat id for a service-account key. Resolves to `undefined`
5633
5649
  * when no machine fingerprint is available (e.g. a browser) — the caller then
5634
5650
  * reports no seatId and the server counts the request under an "unknown" seat.
5635
5651
  * The id (`m-<32 hex>`) matches the control plane's identity charset.
5636
5652
  */
5637
- declare function deriveSeatId(serviceAccountKey: string): Promise<string | undefined>;
5653
+ declare function deriveSeatId$1(serviceAccountKey: string): Promise<string | undefined>;
5638
5654
 
5639
5655
  /** Fully-resolved, non-optional dependency set the pipeline runs against. */
5640
- interface ResolvedDeps {
5656
+ interface ResolvedDeps$1 {
5641
5657
  exactCache: ExactCache;
5642
5658
  semanticCache: InMemorySemanticCache | undefined;
5643
5659
  singleflight: Singleflight;
@@ -5653,9 +5669,9 @@ interface ResolvedDeps {
5653
5669
  * in-memory, dependency-free implementation, so `createSavingsLayer({ provider,
5654
5670
  * tokenizer })` is a working layer, and each piece can be replaced à la carte.
5655
5671
  */
5656
- declare function resolveDependencies(config: SavingsLayerConfig): ResolvedDeps;
5672
+ declare function resolveDependencies$1(config: SavingsLayerConfig): ResolvedDeps$1;
5657
5673
 
5658
- declare const DEFAULT_MAX_STALENESS_SECONDS: number;
5674
+ declare const DEFAULT_MAX_STALENESS_SECONDS$1: number;
5659
5675
  /** The public handle returned by {@link createSavingsLayer}. */
5660
5676
  interface SavingsLayer {
5661
5677
  generate<T = unknown>(request: SavingsRequest): Promise<SavingsResult<T>>;
@@ -6116,6 +6132,143 @@ declare function toCsv(rows: readonly Readonly<Record<string, CsvValue>>[], opti
6116
6132
  columns?: readonly string[];
6117
6133
  }): string;
6118
6134
 
6135
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6136
+ type CanonicalRequest = CanonicalRequest$1;
6137
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6138
+ declare const canonicalize: typeof canonicalize$1;
6139
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6140
+ declare const modelFamilyOf: typeof modelFamilyOf$1;
6141
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6142
+ declare const normalizeText: typeof normalizeText$1;
6143
+ /** @deprecated Internal helper, removed from the public API in 0.5. Use `createHash("sha256").update(text).digest("hex")` from `node:crypto`. */
6144
+ declare const sha256: typeof sha256$1;
6145
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6146
+ declare const stableStringify: typeof stableStringify$1;
6147
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6148
+ declare const buildExactKey: typeof buildExactKey$1;
6149
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6150
+ declare const buildInflightKey: typeof buildInflightKey$1;
6151
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6152
+ type CompactVerification = CompactVerification$1;
6153
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6154
+ declare const EMBEDDED_PUBLIC_KEY: typeof EMBEDDED_PUBLIC_KEY$1;
6155
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6156
+ type LicenseKeyShape = LicenseKeyShape$1;
6157
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6158
+ type LicenseStatus = LicenseStatus$1;
6159
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6160
+ type LicenseTokenPayload = LicenseTokenPayload$1;
6161
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6162
+ type ResolvedGate = ResolvedGate$1;
6163
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6164
+ type ResolvedLicense = ResolvedLicense$1;
6165
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6166
+ type RevocationListBody = RevocationListBody$1;
6167
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6168
+ type RevocationListVerification = RevocationListVerification$1;
6169
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6170
+ type RevocationPollEvent = RevocationPollEvent$1;
6171
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6172
+ declare const RevocationPoller: typeof RevocationPoller$1;
6173
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6174
+ type RevocationPoller = RevocationPoller$1;
6175
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6176
+ type RevocationPollerOptions = RevocationPollerOptions$1;
6177
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6178
+ declare const RevocationSnapshot: typeof RevocationSnapshot$1;
6179
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6180
+ type RevocationSnapshot = RevocationSnapshot$1;
6181
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6182
+ declare const computeNextDelay: typeof computeNextDelay$1;
6183
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6184
+ declare const deriveStatus: typeof deriveStatus$1;
6185
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6186
+ declare const gateFromKey: typeof gateFromKey$1;
6187
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6188
+ declare const isKeyset: typeof isKeyset$1;
6189
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6190
+ declare const licenseKeyShape: typeof licenseKeyShape$1;
6191
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6192
+ declare const liveGateFromKey: typeof liveGateFromKey$1;
6193
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6194
+ declare const normalizeLicenseKey: typeof normalizeLicenseKey$1;
6195
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6196
+ declare const resolveLicense: typeof resolveLicense$1;
6197
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6198
+ declare const verifyCompactSignature: typeof verifyCompactSignature$1;
6199
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6200
+ declare const verifyLicenseToken: typeof verifyLicenseToken$1;
6201
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6202
+ declare const verifyRevocationList: typeof verifyRevocationList$1;
6203
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6204
+ declare const UsageEmitter: typeof UsageEmitter$1;
6205
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6206
+ type UsageEmitter = UsageEmitter$1;
6207
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6208
+ type UsageEmitterOptions = UsageEmitterOptions$1;
6209
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6210
+ declare const deriveSeatId: typeof deriveSeatId$1;
6211
+ /** @deprecated Internal license machinery, removed from the public API in 0.5: no replacement. In the published package a license enters only through `licenseKey` / `serviceAccountKey`. */
6212
+ declare const detectCi: typeof detectCi$1;
6213
+ /** @deprecated Internal constant, removed from the public API in 0.5. The default is documented on `licenseRevocation.maxStalenessSeconds`; set that option to change it. */
6214
+ declare const DEFAULT_MAX_STALENESS_SECONDS: typeof DEFAULT_MAX_STALENESS_SECONDS$1;
6215
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6216
+ type ResolvedDeps = ResolvedDeps$1;
6217
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6218
+ declare const resolveDependencies: typeof resolveDependencies$1;
6219
+ /** @deprecated Internal constant of the reference-commission rule, removed from the public API in 0.5: no replacement (the rule is described in the documentation, not frozen as API). */
6220
+ declare const REFERENCE_MAX_AGE_MS: typeof REFERENCE_MAX_AGE_MS$1;
6221
+ /** @deprecated Internal constant of the reference-commission rule, removed from the public API in 0.5: no replacement (the rule is described in the documentation, not frozen as API). */
6222
+ declare const REFERENCE_MESSAGE_ALLOWANCE: typeof REFERENCE_MESSAGE_ALLOWANCE$1;
6223
+ /** @deprecated Internal constant of the reference-commission rule, removed from the public API in 0.5: no replacement (the rule is described in the documentation, not frozen as API). */
6224
+ declare const REFERENCE_OUTPUT_SHARE: typeof REFERENCE_OUTPUT_SHARE$1;
6225
+ /** @deprecated Internal ledger of the pipeline, removed from the public API in 0.5. Read the four ledgers from the `SavingsReport` each call returns. */
6226
+ declare const SavingsLedger: typeof SavingsLedger$1;
6227
+ /** @deprecated Internal ledger of the pipeline, removed from the public API in 0.5. Read the four ledgers from the `SavingsReport` each call returns. */
6228
+ type SavingsLedger = SavingsLedger$1;
6229
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5. Read the stage traces from `report.traces`. */
6230
+ declare const TraceCollector: typeof TraceCollector$1;
6231
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5. Read the stage traces from `report.traces`. */
6232
+ type TraceCollector = TraceCollector$1;
6233
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6234
+ declare const adaptiveK: typeof adaptiveK$1;
6235
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6236
+ declare const dedupe: typeof dedupe$1;
6237
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6238
+ declare const executeRetrievalPlan: typeof executeRetrievalPlan$1;
6239
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6240
+ declare const cosine: typeof cosine$1;
6241
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6242
+ declare const keyTokensMatch: typeof keyTokensMatch$1;
6243
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6244
+ declare const multisetEqual: typeof multisetEqual$1;
6245
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6246
+ declare const negationCount: typeof negationCount$1;
6247
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6248
+ declare const numericTokens: typeof numericTokens$1;
6249
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6250
+ declare const words: typeof words$1;
6251
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6252
+ declare const sameAnswer: typeof sameAnswer$1;
6253
+ /** @deprecated Internal helper, removed from the public API in 0.5. Arithmetic questions are still answered locally by `arithmeticResolver` / `createDefaultResolvers()`. */
6254
+ declare const evalArithmetic: typeof evalArithmetic$1;
6255
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6256
+ declare const evaluatePolicy: typeof evaluatePolicy$1;
6257
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6258
+ declare const isStrictCompatible: typeof isStrictCompatible$1;
6259
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6260
+ declare const projectContext: typeof projectContext$1;
6261
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6262
+ declare const resolveConstraintBackend: typeof resolveConstraintBackend$1;
6263
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6264
+ declare const shouldCompress: typeof shouldCompress$1;
6265
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6266
+ declare const withProtectedSpans: typeof withProtectedSpans$1;
6267
+ /** @deprecated Internal pipeline helper, removed from the public API in 0.5: no replacement. */
6268
+ declare const uniformColumns: typeof uniformColumns$1;
6269
+ /** @deprecated Internal helper, removed from the public API in 0.5. Use `crypto.randomUUID()`. */
6270
+ declare const randomId: typeof randomId$1;
6271
+
6119
6272
  /**
6120
6273
  * bivelio-savings-layer (BV-SALA)
6121
6274
  * ---------------------------------------------------------------------------