@usagetap/sdk 1.3.1 → 1.4.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.
Files changed (60) hide show
  1. package/README.md +1058 -863
  2. package/dist/adapters/anthropic.cjs +990 -24
  3. package/dist/adapters/anthropic.cjs.map +1 -1
  4. package/dist/adapters/anthropic.d.cts +45 -3
  5. package/dist/adapters/anthropic.d.ts +45 -3
  6. package/dist/adapters/anthropic.mjs +990 -25
  7. package/dist/adapters/anthropic.mjs.map +1 -1
  8. package/dist/adapters/openai.cjs +1164 -44
  9. package/dist/adapters/openai.cjs.map +1 -1
  10. package/dist/adapters/openai.d.cts +46 -3
  11. package/dist/adapters/openai.d.ts +46 -3
  12. package/dist/adapters/openai.mjs +1164 -45
  13. package/dist/adapters/openai.mjs.map +1 -1
  14. package/dist/adapters/openrouter.cjs +3899 -22
  15. package/dist/adapters/openrouter.cjs.map +1 -1
  16. package/dist/adapters/openrouter.d.cts +6 -3
  17. package/dist/adapters/openrouter.d.ts +6 -3
  18. package/dist/adapters/openrouter.mjs +3897 -23
  19. package/dist/adapters/openrouter.mjs.map +1 -1
  20. package/dist/anthropic/index.cjs +990 -24
  21. package/dist/anthropic/index.cjs.map +1 -1
  22. package/dist/anthropic/index.d.cts +2 -2
  23. package/dist/anthropic/index.d.ts +2 -2
  24. package/dist/anthropic/index.mjs +990 -25
  25. package/dist/anthropic/index.mjs.map +1 -1
  26. package/dist/client-CExQ8e1T.d.cts +1225 -0
  27. package/dist/client-CExQ8e1T.d.ts +1225 -0
  28. package/dist/express/index.cjs +421 -29
  29. package/dist/express/index.cjs.map +1 -1
  30. package/dist/express/index.d.cts +2 -2
  31. package/dist/express/index.d.ts +2 -2
  32. package/dist/express/index.mjs +421 -29
  33. package/dist/express/index.mjs.map +1 -1
  34. package/dist/index.cjs +680 -15
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +5 -3
  37. package/dist/index.d.ts +5 -3
  38. package/dist/index.mjs +680 -15
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/openai/index.cjs +1165 -45
  41. package/dist/openai/index.cjs.map +1 -1
  42. package/dist/openai/index.d.cts +2 -2
  43. package/dist/openai/index.d.ts +2 -2
  44. package/dist/openai/index.mjs +1165 -46
  45. package/dist/openai/index.mjs.map +1 -1
  46. package/dist/openrouter/index.cjs +1182 -47
  47. package/dist/openrouter/index.cjs.map +1 -1
  48. package/dist/openrouter/index.d.cts +3 -3
  49. package/dist/openrouter/index.d.ts +3 -3
  50. package/dist/openrouter/index.mjs +1180 -46
  51. package/dist/openrouter/index.mjs.map +1 -1
  52. package/dist/react/index.cjs +19 -1
  53. package/dist/react/index.cjs.map +1 -1
  54. package/dist/react/index.d.cts +17 -4
  55. package/dist/react/index.d.ts +17 -4
  56. package/dist/react/index.mjs +19 -1
  57. package/dist/react/index.mjs.map +1 -1
  58. package/package.json +84 -84
  59. package/dist/client-BD8O2J8Z.d.cts +0 -668
  60. package/dist/client-BD8O2J8Z.d.ts +0 -668
@@ -1,668 +0,0 @@
1
- type ReasoningLevel = "NONE" | "LOW" | "MEDIUM" | "HIGH";
2
- type LimitType = "NONE" | "BLOCK" | "DOWNGRADE";
3
- interface RequestedEntitlements {
4
- standard?: boolean;
5
- premium?: boolean;
6
- audio?: boolean;
7
- image?: boolean;
8
- search?: boolean;
9
- reasoningLevel?: ReasoningLevel;
10
- }
11
- type AllowedEntitlements = Required<RequestedEntitlements>;
12
- type ModelTier = "premium" | "standard" | "none";
13
- interface EntitlementDowngradeHint {
14
- reason: string;
15
- fallbackTier?: ModelTier;
16
- }
17
- interface EntitlementHints {
18
- suggestedModelTier: ModelTier;
19
- reasoningLevel: ReasoningLevel;
20
- policy: LimitType;
21
- downgrade?: EntitlementDowngradeHint;
22
- }
23
- interface MeterSummary {
24
- /** Always numeric. Check the `unlimited` flag to detect unbounded meters. */
25
- remaining: number;
26
- limit: number | null;
27
- /** Always numeric (0 when no usage recorded). */
28
- used: number;
29
- /** When true this meter is unbounded; `remaining` is informational only. */
30
- unlimited: boolean;
31
- /** remaining / limit (0-1). null when unlimited or limit is null/0. */
32
- ratio: number | null;
33
- label?: string;
34
- }
35
- type MeterSnapshot = Record<string, MeterSummary>;
36
- type RemainingRatios = Record<string, number | null | undefined>;
37
- interface RollingCallsRateLimitState {
38
- windowType: "rolling_calls";
39
- limit: number;
40
- used: number;
41
- remaining: number;
42
- windowSeconds: number;
43
- state: "fresh" | "estimated" | "stale" | "unknown";
44
- source?: "current_rolling_check" | "call_records";
45
- nextAvailableAt?: string;
46
- scope?: {
47
- callType?: "standard" | "API";
48
- tier?: "standard" | "premium";
49
- };
50
- }
51
- interface RateLimitsSnapshot {
52
- rollingCalls?: RollingCallsRateLimitState | Record<string, RollingCallsRateLimitState>;
53
- }
54
- interface SubscriptionSnapshot {
55
- id: string | null;
56
- usagePlanVersionId: string | null;
57
- planName: string | null;
58
- planVersion: string | null;
59
- limitType: LimitType;
60
- reasoningLevel: ReasoningLevel;
61
- lastReplenishedAt: string | null;
62
- nextReplenishAt: string | null;
63
- subscriptionVersion: number | null;
64
- customerFriendlyName?: string | null;
65
- customerEmail?: string | null;
66
- pending?: {
67
- usagePlanVersionId: string | null;
68
- strategy: string | null;
69
- effectiveAt: string | null;
70
- };
71
- stripeCustomerId?: string | null;
72
- }
73
- type ModelHints = Record<string, string[]>;
74
- interface IdempotencyMetadata {
75
- key: string;
76
- source: "explicit" | "derived";
77
- }
78
- interface VendorHints {
79
- preferredModel?: string;
80
- reasoning?: ReasoningLevel;
81
- maxInputTokens?: number;
82
- maxResponseTokens?: number;
83
- }
84
- interface PromptCompressionRequest {
85
- callId: string;
86
- input?: unknown;
87
- text?: string;
88
- provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
89
- model?: string;
90
- tokenCompanyModel?: string;
91
- /** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
92
- aggressiveness?: number;
93
- /** @deprecated Use aggressiveness instead. */
94
- tokenCompanyAggressiveness?: number;
95
- tokenCompanyAppId?: string;
96
- usageTapCompressionModel?: string;
97
- /** @deprecated Use aggressiveness instead. */
98
- usageTapCompressionAggressiveness?: number;
99
- }
100
- interface PromptCompressionTelemetry {
101
- provider: "heuristic" | "toon" | "thetokencompany" | "usagetap";
102
- originalCharacters: number;
103
- compressedCharacters: number;
104
- savedCharacters: number;
105
- originalTokens?: number;
106
- compressedTokens?: number;
107
- savedTokens?: number;
108
- tokenSavingsRatio?: number;
109
- savingsRatio: number;
110
- techniques: string[];
111
- }
112
- interface BeginCallRequest {
113
- customerId: string;
114
- requested?: RequestedEntitlements;
115
- feature?: string;
116
- tags?: string[];
117
- /**
118
- * Optional PAYG hold hint (USD) to authorize upfront during call_begin.
119
- * When provided, overrides the plan's default hold for this call only.
120
- */
121
- holdUsd?: number;
122
- /**
123
- * Idempotency key for safe retries. When omitted, UsageTap derives a key deterministically.
124
- * @deprecated Use idempotencyKey instead
125
- */
126
- idempotency?: string;
127
- /**
128
- * Idempotency key for safe retries. When omitted, UsageTap derives a key deterministically.
129
- */
130
- idempotencyKey?: string;
131
- customerName?: string;
132
- customerEmail?: string;
133
- stripeCustomerId?: string;
134
- /**
135
- * Whether this call uses batch pricing (typically 50% of standard rates).
136
- */
137
- batch?: boolean;
138
- /**
139
- * Explicit pricing mode for this call.
140
- */
141
- pricingMode?: "batch" | "standard";
142
- }
143
- interface BalanceSummary {
144
- standardCallsRemaining?: number;
145
- premiumCallsRemaining?: number;
146
- tokensRemaining?: number;
147
- searchesRemaining?: number;
148
- audioSecondsRemaining?: number;
149
- customMeter1Remaining?: number;
150
- customMeter2Remaining?: number;
151
- }
152
- type SpendVelocityWindowKey = "hour" | "day";
153
- interface SpendVelocityWindow {
154
- bucket: string;
155
- windowMinutes: number;
156
- startedAt: string;
157
- endedAt: string;
158
- completedCostUsd: number;
159
- completedCalls: number;
160
- }
161
- interface SpendVelocitySnapshot {
162
- currency: "USD";
163
- source: "usage_aggregate";
164
- generatedAt: string;
165
- customerId: string;
166
- currentCallCostUsd: number;
167
- windows: Record<SpendVelocityWindowKey, SpendVelocityWindow>;
168
- }
169
- interface PlanSummary {
170
- id: string | null;
171
- name: string | null;
172
- version: string | null;
173
- }
174
- interface BeginCallResponseBody {
175
- callId: string;
176
- startTime: string;
177
- feature?: string;
178
- tags?: string[];
179
- newCustomer: boolean;
180
- canceled: boolean;
181
- policy: LimitType;
182
- allowed: AllowedEntitlements;
183
- entitlementHints: EntitlementHints;
184
- rateLimits?: RateLimitsSnapshot;
185
- meters: MeterSnapshot;
186
- remainingRatios: RemainingRatios;
187
- subscription: SubscriptionSnapshot;
188
- models?: ModelHints;
189
- idempotency?: IdempotencyMetadata;
190
- vendorHints?: VendorHints;
191
- plan?: PlanSummary;
192
- balances?: BalanceSummary;
193
- stripeCustomerId?: string | null;
194
- batch?: boolean;
195
- pricingMode?: "batch" | "standard";
196
- }
197
- interface EndCallRequest {
198
- callId: string;
199
- /** Optional customer ID for metric tracking. Not sent to API, used for onUsageMetric callback. */
200
- customerId?: string;
201
- /** Optional feature for metric tracking. Not sent to API, used for onUsageMetric callback. */
202
- feature?: string;
203
- /** Optional tags for metric tracking. Not sent to API, used for onUsageMetric callback. */
204
- tags?: string[];
205
- modelUsed?: string;
206
- /**
207
- * Total prompt/input tokens for the call (including any cached prompt tokens).
208
- */
209
- inputTokens?: number;
210
- responseTokens?: number;
211
- /**
212
- * Prompt/input tokens served from cache.
213
- * Preferred over legacy aliases.
214
- */
215
- cachedInputTokens?: number;
216
- reasoningTokens?: number;
217
- searches?: number;
218
- audio?: number;
219
- audioSeconds?: number;
220
- error?: {
221
- code: string;
222
- message: string;
223
- };
224
- stripeCustomerId?: string;
225
- /**
226
- * Whether this call uses batch pricing (typically 50% of standard rates).
227
- */
228
- batch?: boolean;
229
- /**
230
- * Explicit pricing mode for this call.
231
- */
232
- pricingMode?: "batch" | "standard";
233
- }
234
- interface MeteredUsage {
235
- calls?: number;
236
- tokens?: number;
237
- reasoningTokens?: number;
238
- searches?: number;
239
- audio?: number;
240
- audioSeconds?: number;
241
- }
242
- interface EndCallResponseBody {
243
- callId: string;
244
- costUSD: number;
245
- usage?: {
246
- inputTokens: number;
247
- cachedInputTokens: number;
248
- billableInputTokens: number;
249
- responseTokens: number;
250
- reasoningTokens: number;
251
- };
252
- metered?: MeteredUsage;
253
- spendVelocity?: SpendVelocitySnapshot;
254
- balances?: BalanceSummary;
255
- stripeCustomerId?: string | null;
256
- batch?: boolean;
257
- pricingMode?: "batch" | "standard";
258
- }
259
- type UsageTapResultStatus = "ACCEPTED" | "ERROR";
260
- interface UsageTapResultEnvelope {
261
- status: UsageTapResultStatus;
262
- code?: string;
263
- message?: string;
264
- timestamp?: string;
265
- }
266
- interface UsageTapErrorPayload {
267
- code: string;
268
- message: string;
269
- details?: Record<string, unknown>;
270
- }
271
- interface UsageTapSuccessResponse<TData> {
272
- result: UsageTapResultEnvelope;
273
- data: TData;
274
- correlationId: string;
275
- }
276
- interface UsageTapErrorResponse {
277
- result: UsageTapResultEnvelope;
278
- error: UsageTapErrorPayload;
279
- correlationId: string;
280
- }
281
- interface RetryOptions {
282
- /**
283
- * Maximum number of attempts including the initial try.
284
- * @default 3
285
- */
286
- maxAttempts?: number;
287
- /**
288
- * Base backoff delay in milliseconds.
289
- * @default 250
290
- */
291
- baseDelayMs?: number;
292
- /**
293
- * Maximum backoff delay in milliseconds.
294
- * @default 5000
295
- */
296
- maxDelayMs?: number;
297
- /**
298
- * Jitter ratio between 0 and 1 applied to the computed delay.
299
- * @default 0.2
300
- */
301
- jitterRatio?: number;
302
- }
303
- interface UsageTapLogEntry {
304
- event: "request:start" | "request:success" | "request:error" | "retry:scheduled" | "retry:exhausted";
305
- path: string;
306
- attempt: number;
307
- elapsedMs?: number;
308
- idempotencyKey?: string;
309
- correlationId?: string;
310
- error?: unknown;
311
- }
312
- interface UsageTapClientOptions {
313
- /**
314
- * UsageTap API key. Defaults to the server-side USAGETAP_API_KEY environment variable.
315
- */
316
- apiKey?: string;
317
- /**
318
- * UsageTap API base URL. Defaults to USAGETAP_BASE_URL, then https://api.usagetap.com.
319
- */
320
- baseUrl?: string;
321
- defaultFeature?: string;
322
- defaultTags?: string[];
323
- fetchImpl?: typeof fetch;
324
- headers?: Record<string, string>;
325
- retries?: RetryOptions;
326
- idempotencyGenerator?: () => string;
327
- /**
328
- * When true (default), the client auto-generates an idempotency key when one is not provided.
329
- * Set to false to rely on the backend's deterministic fallback.
330
- */
331
- autoIdempotency?: boolean;
332
- onLog?: (entry: UsageTapLogEntry) => void;
333
- /**
334
- * Callback invoked when usage metrics are recorded (call_end, custom_meter).
335
- * Use this to export metrics to OpenTelemetry or other observability systems.
336
- */
337
- onUsageMetric?: (event: UsageMetricEvent) => void;
338
- /**
339
- * Override the default Authorization header with x-api-key when true.
340
- */
341
- useApiKeyHeader?: boolean;
342
- /**
343
- * Allow constructing the client in browser-like environments for testing.
344
- */
345
- allowBrowser?: boolean;
346
- /** API key for The Token Company Bear compression API. */
347
- tokenCompanyApiKey?: string;
348
- /** Override endpoint for The Token Company compatible compression APIs. */
349
- tokenCompanyEndpoint?: string;
350
- /** Default model for The Token Company compression. */
351
- model?: string;
352
- tokenCompanyModel?: string;
353
- /** Default compression aggressiveness, from 0.0 to 1.0. */
354
- aggressiveness?: number;
355
- /** @deprecated Use aggressiveness instead. */
356
- tokenCompanyAggressiveness?: number;
357
- /** Optional application identifier sent to The Token Company. */
358
- tokenCompanyAppId?: string;
359
- /** API key for UsageTap prompt compression. Defaults to apiKey when omitted. */
360
- usageTapCompressionApiKey?: string;
361
- /** Override endpoint for UsageTap-compatible prompt compression APIs. */
362
- usageTapCompressionEndpoint?: string;
363
- /** Override endpoint for UsageTap-compatible message/request compression APIs. */
364
- usageTapCompressionMessagesEndpoint?: string;
365
- /** Default model for UsageTap prompt compression. */
366
- usageTapCompressionModel?: string;
367
- /** @deprecated Use aggressiveness instead. */
368
- usageTapCompressionAggressiveness?: number;
369
- }
370
- interface RequestOptions {
371
- signal?: AbortSignal;
372
- headers?: Record<string, string>;
373
- retries?: RetryOptions;
374
- }
375
- interface PromptCompressionStandaloneOptions {
376
- signal?: AbortSignal;
377
- provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
378
- failOpen?: boolean;
379
- model?: string;
380
- tokenCompanyModel?: string;
381
- /** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
382
- aggressiveness?: number;
383
- /** @deprecated Use aggressiveness instead. */
384
- tokenCompanyAggressiveness?: number;
385
- tokenCompanyAppId?: string;
386
- usageTapCompressionModel?: string;
387
- /** @deprecated Use aggressiveness instead. */
388
- usageTapCompressionAggressiveness?: number;
389
- }
390
- type PromptCompressionMessageRole$1 = "system" | "user" | "tool" | "assistant";
391
- type PromptCompressionRoleAggressiveness$1 = Partial<Record<PromptCompressionMessageRole$1, number>>;
392
- type PromptCompressionMessagesAggressiveness$1 = number | PromptCompressionRoleAggressiveness$1;
393
- interface PromptCompressionMessagesOptions extends RequestOptions {
394
- provider?: "usagetap";
395
- failOpen?: boolean;
396
- /** Provider-neutral scalar or per-role compression aggressiveness. */
397
- aggressiveness?: PromptCompressionMessagesAggressiveness$1;
398
- /** @deprecated Use aggressiveness instead. */
399
- usageTapCompressionAggressiveness?: PromptCompressionMessagesAggressiveness$1;
400
- }
401
- interface RecordPromptCompressionRequest {
402
- callId: string;
403
- promptCompression: PromptCompressionTelemetry;
404
- }
405
- interface BeginCallOptions extends RequestOptions {
406
- correlationId?: string;
407
- }
408
- interface EndCallOptions extends RequestOptions {
409
- correlationId?: string;
410
- }
411
- interface PromptCompressionOptions extends RequestOptions {
412
- correlationId?: string;
413
- }
414
- interface PromptCompressionResponseBody extends PromptCompressionTelemetry {
415
- callId: string;
416
- updated: boolean;
417
- }
418
- interface WithUsageContext {
419
- begin: UsageTapSuccessResponse<BeginCallResponseBody>;
420
- setUsage: (usage: Partial<Omit<EndCallRequest, "callId" | "error">>) => void;
421
- setError: (error: EndCallRequest["error"]) => void;
422
- }
423
- interface WithUsageOptions {
424
- signal?: AbortSignal;
425
- headers?: Record<string, string>;
426
- retries?: RetryOptions;
427
- correlationId?: string;
428
- /**
429
- * Default error payload applied when the handler throws and setError was never invoked.
430
- */
431
- defaultErrorCode?: string;
432
- }
433
- interface CheckUsageRequest {
434
- customerId: string;
435
- }
436
- interface CheckUsageOptions extends RequestOptions {
437
- correlationId?: string;
438
- }
439
- interface CheckUsageResponseBody {
440
- customerId: string;
441
- canceled: boolean;
442
- policy: LimitType;
443
- allowed: AllowedEntitlements;
444
- entitlementHints: EntitlementHints;
445
- rateLimits?: RateLimitsSnapshot;
446
- meters: MeterSnapshot;
447
- remainingRatios: RemainingRatios;
448
- subscription: SubscriptionSnapshot;
449
- models?: ModelHints;
450
- plan?: PlanSummary;
451
- balances?: BalanceSummary;
452
- stripeCustomerId?: string | null;
453
- }
454
- interface CreateCustomerRequest {
455
- customerId: string;
456
- customerFriendlyName?: string;
457
- customerName?: string;
458
- customerEmail?: string;
459
- stripeCustomerId?: string;
460
- }
461
- interface CreateCustomerOptions extends RequestOptions {
462
- correlationId?: string;
463
- idempotencyKey?: string;
464
- }
465
- interface CreateCustomerResponseBody extends CheckUsageResponseBody {
466
- newCustomer: boolean;
467
- }
468
- type ChangePlanStrategy = "IMMEDIATE_RESET" | "IMMEDIATE_PRORATED" | "AT_NEXT_REPLENISH";
469
- interface ChangePlanRequest {
470
- customerId: string;
471
- planId: string;
472
- strategy?: ChangePlanStrategy;
473
- }
474
- interface ChangePlanOptions extends RequestOptions {
475
- correlationId?: string;
476
- idempotencyKey?: string;
477
- }
478
- interface ChangePlanResponseBody {
479
- success: boolean;
480
- subscription: SubscriptionSnapshot;
481
- }
482
- type CustomMeterSlot = "CUSTOM1" | "CUSTOM2";
483
- interface IncrementCustomMeterRequest {
484
- customerId: string;
485
- meterSlot: CustomMeterSlot;
486
- amount: number;
487
- feature?: string;
488
- tags?: string[];
489
- metadata?: Record<string, unknown>;
490
- }
491
- interface IncrementCustomMeterOptions extends RequestOptions {
492
- correlationId?: string;
493
- idempotencyKey?: string;
494
- }
495
- interface IncrementCustomMeterResponseBody {
496
- success: boolean;
497
- eventId: string;
498
- meterSlot: CustomMeterSlot;
499
- amount: number;
500
- meter: MeterSummary;
501
- blocked: boolean;
502
- }
503
- /**
504
- * Event emitted when usage metrics are recorded.
505
- * Use with `onUsageMetric` callback to export to OpenTelemetry or other observability systems.
506
- */
507
- interface UsageMetricEvent {
508
- /** Type of metric event */
509
- type: "call_end" | "custom_meter";
510
- /** Timestamp in ISO 8601 format */
511
- timestamp: string;
512
- /** Customer identifier */
513
- customerId: string;
514
- /** Unique call identifier (for call_end events) */
515
- callId?: string;
516
- /** Feature tag */
517
- feature?: string;
518
- /** Additional tags */
519
- tags?: string[];
520
- /** Model used for the call */
521
- modelUsed?: string;
522
- /** Usage metrics */
523
- metrics: {
524
- inputTokens?: number;
525
- cachedInputTokens?: number;
526
- responseTokens?: number;
527
- reasoningTokens?: number;
528
- searches?: number;
529
- audioSeconds?: number;
530
- costUsd?: number;
531
- /** Custom meter slot (for custom_meter events) */
532
- customMeterSlot?: CustomMeterSlot;
533
- /** Custom meter amount (for custom_meter events) */
534
- customMeterAmount?: number;
535
- };
536
- /** Correlation ID for tracing */
537
- correlationId?: string;
538
- }
539
-
540
- type PromptCompressionProvider = "heuristic" | "toon" | "thetokencompany" | "usagetap";
541
- type PromptCompressionMessageRole = "system" | "user" | "tool" | "assistant";
542
- type PromptCompressionRoleAggressiveness = Partial<Record<PromptCompressionMessageRole, number>>;
543
- type PromptCompressionMessagesAggressiveness = number | PromptCompressionRoleAggressiveness;
544
- interface PromptCompressionInput {
545
- input?: unknown;
546
- text?: string;
547
- provider?: PromptCompressionProvider;
548
- tokenCompanyApiKey?: string;
549
- tokenCompanyEndpoint?: string;
550
- model?: string;
551
- tokenCompanyModel?: string;
552
- aggressiveness?: number;
553
- tokenCompanyAggressiveness?: number;
554
- tokenCompanyAppId?: string;
555
- usageTapCompressionApiKey?: string;
556
- usageTapCompressionEndpoint?: string;
557
- usageTapCompressionModel?: string;
558
- usageTapCompressionAggressiveness?: number;
559
- fetchImpl?: typeof fetch;
560
- signal?: AbortSignal;
561
- failOpen?: boolean;
562
- }
563
- interface PromptCompressionMessagesInput<TInput = unknown> {
564
- input: TInput;
565
- provider?: Extract<PromptCompressionProvider, "usagetap">;
566
- usageTapCompressionApiKey?: string;
567
- usageTapCompressionMessagesEndpoint?: string;
568
- aggressiveness?: PromptCompressionMessagesAggressiveness;
569
- usageTapCompressionAggressiveness?: PromptCompressionMessagesAggressiveness;
570
- fetchImpl?: typeof fetch;
571
- signal?: AbortSignal;
572
- failOpen?: boolean;
573
- }
574
- interface PromptCompressionResult<TInput = unknown> {
575
- input: TInput;
576
- compressedInput: unknown;
577
- provider: PromptCompressionProvider;
578
- originalCharacters: number;
579
- compressedCharacters: number;
580
- savedCharacters: number;
581
- originalTokens: number;
582
- compressedTokens: number;
583
- savedTokens: number;
584
- tokenSavingsRatio: number;
585
- savingsRatio: number;
586
- techniques: string[];
587
- }
588
- declare function protectPromptText(text: string): string;
589
- declare const protect: typeof protectPromptText;
590
- declare function compressPrompt<TInput = unknown>(options: PromptCompressionInput): Promise<PromptCompressionResult<TInput>>;
591
- declare function compressPromptHeuristic<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
592
- declare function compressPromptToon<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
593
- declare function compressPromptMessages<TInput = unknown>(options: PromptCompressionMessagesInput<TInput>): Promise<PromptCompressionResult<TInput>>;
594
- declare function estimatePromptTokens(input: unknown): number;
595
-
596
- type UsageTapCompressOptions = Omit<PromptCompressionStandaloneOptions, "provider">;
597
- type UsageTapCompressResult = Omit<PromptCompressionResult<string>, "compressedInput"> & {
598
- /** The compressed text, ready to pass to an LLM. */
599
- output: string;
600
- /** Alias retained for consistency with the lower-level compression APIs. */
601
- compressedInput: string;
602
- };
603
- type MeterRequest = string | BeginCallRequest;
604
- declare class UsageTapClient {
605
- private readonly apiKey;
606
- private readonly baseUrl;
607
- private readonly fetchImpl;
608
- private readonly defaultFeature?;
609
- private readonly defaultTags?;
610
- private readonly defaultHeaders;
611
- private readonly retryDefaults;
612
- private readonly idempotencyGenerator;
613
- private readonly logFn?;
614
- private readonly metricFn?;
615
- private readonly authHeader;
616
- private readonly autoIdempotency;
617
- private readonly tokenCompanyApiKey?;
618
- private readonly tokenCompanyEndpoint?;
619
- private readonly model?;
620
- private readonly tokenCompanyModel?;
621
- private readonly aggressiveness?;
622
- private readonly tokenCompanyAggressiveness?;
623
- private readonly tokenCompanyAppId?;
624
- private readonly usageTapCompressionApiKey?;
625
- private readonly usageTapCompressionEndpoint?;
626
- private readonly usageTapCompressionMessagesEndpoint?;
627
- private readonly usageTapCompressionModel?;
628
- private readonly usageTapCompressionAggressiveness?;
629
- constructor(options?: UsageTapClientOptions);
630
- beginCall(request: BeginCallRequest, options?: BeginCallOptions): Promise<UsageTapSuccessResponse<BeginCallResponseBody>>;
631
- promptCompress(request: PromptCompressionRequest, options?: PromptCompressionOptions): Promise<PromptCompressionResult & {
632
- callId: string;
633
- }>;
634
- compressPromptInput<TInput = unknown>(input: TInput, options?: PromptCompressionStandaloneOptions): Promise<PromptCompressionResult<TInput>>;
635
- /**
636
- * Compress text with UsageTap's hosted compression service.
637
- *
638
- * This is the short, standalone path. It does not create a metered call and
639
- * fails open to the original text unless failOpen is explicitly disabled.
640
- */
641
- compress(text: string, options?: UsageTapCompressOptions): Promise<UsageTapCompressResult>;
642
- compressPromptMessages<TInput = unknown>(input: TInput, options?: PromptCompressionMessagesOptions): Promise<PromptCompressionResult<TInput>>;
643
- recordPromptCompression(request: RecordPromptCompressionRequest, options?: PromptCompressionOptions): Promise<UsageTapSuccessResponse<PromptCompressionResponseBody>>;
644
- endCall(request: EndCallRequest, options?: EndCallOptions): Promise<UsageTapSuccessResponse<EndCallResponseBody>>;
645
- checkUsage(request: CheckUsageRequest, options?: CheckUsageOptions): Promise<UsageTapSuccessResponse<CheckUsageResponseBody>>;
646
- createCustomer(request: CreateCustomerRequest, options?: CreateCustomerOptions): Promise<UsageTapSuccessResponse<CreateCustomerResponseBody>>;
647
- changePlan(request: ChangePlanRequest, options?: ChangePlanOptions): Promise<UsageTapSuccessResponse<ChangePlanResponseBody>>;
648
- incrementCustomMeter(request: IncrementCustomMeterRequest, options?: IncrementCustomMeterOptions): Promise<UsageTapSuccessResponse<IncrementCustomMeterResponseBody>>;
649
- withUsage<T>(beginRequest: BeginCallRequest, handler: (context: WithUsageContext) => Promise<T>, options?: WithUsageOptions): Promise<T>;
650
- /**
651
- * Meter one operation. Pass only a customer ID for the common path, or the
652
- * existing begin-call request object when feature, tags, or entitlements are needed.
653
- */
654
- meter<T>(request: MeterRequest, handler: (context: WithUsageContext) => Promise<T>, options?: WithUsageOptions): Promise<T>;
655
- private toPromptCompressionTelemetry;
656
- private request;
657
- private requestGet;
658
- private performFetch;
659
- private composeHeaders;
660
- private log;
661
- private emitUsageMetric;
662
- private mergeTags;
663
- private shouldRetry;
664
- private toHttpError;
665
- private toApiError;
666
- }
667
-
668
- export { type PlanSummary as $, type CheckUsageOptions as A, type BeginCallRequest as B, type CreateCustomerOptions as C, type CheckUsageRequest as D, type EndCallRequest as E, type CheckUsageResponseBody as F, type ChangePlanOptions as G, type ChangePlanRequest as H, type ChangePlanResponseBody as I, type ChangePlanStrategy as J, type IncrementCustomMeterOptions as K, type IncrementCustomMeterRequest as L, type MeterRequest as M, type IncrementCustomMeterResponseBody as N, type CustomMeterSlot as O, type PromptCompressionProvider as P, type EndCallOptions as Q, type RecordPromptCompressionRequest as R, type EndCallResponseBody as S, type BalanceSummary as T, UsageTapClient as U, type VendorHints as V, type WithUsageOptions as W, type SpendVelocitySnapshot as X, type SpendVelocityWindow as Y, type SpendVelocityWindowKey as Z, type EntitlementHints as _, type PromptCompressionTelemetry as a, type MeterSummary as a0, type MeterSnapshot as a1, type MeteredUsage as a2, type RateLimitsSnapshot as a3, type RemainingRatios as a4, type RollingCallsRateLimitState as a5, type RequestedEntitlements as a6, type AllowedEntitlements as a7, type RetryOptions as a8, type UsageTapClientOptions as a9, type UsageTapErrorResponse as aa, type UsageTapResultEnvelope as ab, type UsageTapResultStatus as ac, type UsageTapLogEntry as ad, type WithUsageContext as ae, type LimitType as af, type SubscriptionSnapshot as ag, type ModelHints as ah, type IdempotencyMetadata as ai, type UsageMetricEvent as aj, type UsageTapSuccessResponse as b, type BeginCallResponseBody as c, type UsageTapCompressOptions as d, type UsageTapCompressResult as e, compressPrompt as f, compressPromptMessages as g, compressPromptHeuristic as h, compressPromptToon as i, estimatePromptTokens as j, protectPromptText as k, type PromptCompressionInput as l, type PromptCompressionMessagesAggressiveness as m, type PromptCompressionMessagesInput as n, type PromptCompressionMessageRole as o, protect as p, type PromptCompressionResult as q, type PromptCompressionRoleAggressiveness as r, type BeginCallOptions as s, type PromptCompressionRequest as t, type PromptCompressionOptions as u, type PromptCompressionMessagesOptions as v, type PromptCompressionResponseBody as w, type PromptCompressionStandaloneOptions as x, type CreateCustomerRequest as y, type CreateCustomerResponseBody as z };