@usagetap/sdk 1.1.0 → 1.3.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.
- package/README.md +200 -201
- package/dist/adapters/anthropic.cjs +1676 -6
- package/dist/adapters/anthropic.cjs.map +1 -1
- package/dist/adapters/anthropic.d.cts +39 -2
- package/dist/adapters/anthropic.d.ts +39 -2
- package/dist/adapters/anthropic.mjs +1675 -7
- package/dist/adapters/anthropic.mjs.map +1 -1
- package/dist/adapters/openai.cjs +1726 -6
- package/dist/adapters/openai.cjs.map +1 -1
- package/dist/adapters/openai.d.cts +46 -2
- package/dist/adapters/openai.d.ts +46 -2
- package/dist/adapters/openai.mjs +1725 -7
- package/dist/adapters/openai.mjs.map +1 -1
- package/dist/adapters/openrouter.cjs.map +1 -1
- package/dist/adapters/openrouter.d.cts +1 -1
- package/dist/adapters/openrouter.d.ts +1 -1
- package/dist/adapters/openrouter.mjs.map +1 -1
- package/dist/anthropic/index.cjs +1676 -6
- package/dist/anthropic/index.cjs.map +1 -1
- package/dist/anthropic/index.d.cts +2 -2
- package/dist/anthropic/index.d.ts +2 -2
- package/dist/anthropic/index.mjs +1675 -7
- package/dist/anthropic/index.mjs.map +1 -1
- package/dist/{client-BA-QlnRq.d.cts → client-BD8O2J8Z.d.cts} +106 -11
- package/dist/{client-BA-QlnRq.d.ts → client-BD8O2J8Z.d.ts} +106 -11
- package/dist/express/index.cjs +86 -1
- package/dist/express/index.cjs.map +1 -1
- package/dist/express/index.d.cts +1 -1
- package/dist/express/index.d.ts +1 -1
- package/dist/express/index.mjs +86 -1
- package/dist/express/index.mjs.map +1 -1
- package/dist/index.cjs +263 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +262 -40
- package/dist/index.mjs.map +1 -1
- package/dist/openai/index.cjs +1726 -6
- package/dist/openai/index.cjs.map +1 -1
- package/dist/openai/index.d.cts +2 -2
- package/dist/openai/index.d.ts +2 -2
- package/dist/openai/index.mjs +1725 -7
- package/dist/openai/index.mjs.map +1 -1
- package/dist/openrouter/index.cjs +3024 -0
- package/dist/openrouter/index.cjs.map +1 -0
- package/dist/openrouter/index.d.cts +4 -0
- package/dist/openrouter/index.d.ts +4 -0
- package/dist/openrouter/index.mjs +3019 -0
- package/dist/openrouter/index.mjs.map +1 -0
- package/package.json +102 -44
|
@@ -83,14 +83,22 @@ interface VendorHints {
|
|
|
83
83
|
}
|
|
84
84
|
interface PromptCompressionRequest {
|
|
85
85
|
callId: string;
|
|
86
|
-
input
|
|
87
|
-
|
|
86
|
+
input?: unknown;
|
|
87
|
+
text?: string;
|
|
88
|
+
provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
89
|
+
model?: string;
|
|
88
90
|
tokenCompanyModel?: string;
|
|
91
|
+
/** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
|
|
92
|
+
aggressiveness?: number;
|
|
93
|
+
/** @deprecated Use aggressiveness instead. */
|
|
89
94
|
tokenCompanyAggressiveness?: number;
|
|
90
95
|
tokenCompanyAppId?: string;
|
|
96
|
+
usageTapCompressionModel?: string;
|
|
97
|
+
/** @deprecated Use aggressiveness instead. */
|
|
98
|
+
usageTapCompressionAggressiveness?: number;
|
|
91
99
|
}
|
|
92
100
|
interface PromptCompressionTelemetry {
|
|
93
|
-
provider: "heuristic" | "toon" | "thetokencompany";
|
|
101
|
+
provider: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
94
102
|
originalCharacters: number;
|
|
95
103
|
compressedCharacters: number;
|
|
96
104
|
savedCharacters: number;
|
|
@@ -302,8 +310,14 @@ interface UsageTapLogEntry {
|
|
|
302
310
|
error?: unknown;
|
|
303
311
|
}
|
|
304
312
|
interface UsageTapClientOptions {
|
|
305
|
-
|
|
306
|
-
|
|
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;
|
|
307
321
|
defaultFeature?: string;
|
|
308
322
|
defaultTags?: string[];
|
|
309
323
|
fetchImpl?: typeof fetch;
|
|
@@ -334,11 +348,24 @@ interface UsageTapClientOptions {
|
|
|
334
348
|
/** Override endpoint for The Token Company compatible compression APIs. */
|
|
335
349
|
tokenCompanyEndpoint?: string;
|
|
336
350
|
/** Default model for The Token Company compression. */
|
|
351
|
+
model?: string;
|
|
337
352
|
tokenCompanyModel?: string;
|
|
338
|
-
/** Default aggressiveness
|
|
353
|
+
/** Default compression aggressiveness, from 0.0 to 1.0. */
|
|
354
|
+
aggressiveness?: number;
|
|
355
|
+
/** @deprecated Use aggressiveness instead. */
|
|
339
356
|
tokenCompanyAggressiveness?: number;
|
|
340
357
|
/** Optional application identifier sent to The Token Company. */
|
|
341
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;
|
|
342
369
|
}
|
|
343
370
|
interface RequestOptions {
|
|
344
371
|
signal?: AbortSignal;
|
|
@@ -347,11 +374,29 @@ interface RequestOptions {
|
|
|
347
374
|
}
|
|
348
375
|
interface PromptCompressionStandaloneOptions {
|
|
349
376
|
signal?: AbortSignal;
|
|
350
|
-
provider?: "heuristic" | "toon" | "thetokencompany";
|
|
377
|
+
provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
351
378
|
failOpen?: boolean;
|
|
379
|
+
model?: string;
|
|
352
380
|
tokenCompanyModel?: string;
|
|
381
|
+
/** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
|
|
382
|
+
aggressiveness?: number;
|
|
383
|
+
/** @deprecated Use aggressiveness instead. */
|
|
353
384
|
tokenCompanyAggressiveness?: number;
|
|
354
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;
|
|
355
400
|
}
|
|
356
401
|
interface RecordPromptCompressionRequest {
|
|
357
402
|
callId: string;
|
|
@@ -492,15 +537,36 @@ interface UsageMetricEvent {
|
|
|
492
537
|
correlationId?: string;
|
|
493
538
|
}
|
|
494
539
|
|
|
495
|
-
type PromptCompressionProvider = "heuristic" | "toon" | "thetokencompany";
|
|
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;
|
|
496
544
|
interface PromptCompressionInput {
|
|
497
|
-
input
|
|
545
|
+
input?: unknown;
|
|
546
|
+
text?: string;
|
|
498
547
|
provider?: PromptCompressionProvider;
|
|
499
548
|
tokenCompanyApiKey?: string;
|
|
500
549
|
tokenCompanyEndpoint?: string;
|
|
550
|
+
model?: string;
|
|
501
551
|
tokenCompanyModel?: string;
|
|
552
|
+
aggressiveness?: number;
|
|
502
553
|
tokenCompanyAggressiveness?: number;
|
|
503
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;
|
|
504
570
|
fetchImpl?: typeof fetch;
|
|
505
571
|
signal?: AbortSignal;
|
|
506
572
|
failOpen?: boolean;
|
|
@@ -524,8 +590,17 @@ declare const protect: typeof protectPromptText;
|
|
|
524
590
|
declare function compressPrompt<TInput = unknown>(options: PromptCompressionInput): Promise<PromptCompressionResult<TInput>>;
|
|
525
591
|
declare function compressPromptHeuristic<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
|
|
526
592
|
declare function compressPromptToon<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
|
|
593
|
+
declare function compressPromptMessages<TInput = unknown>(options: PromptCompressionMessagesInput<TInput>): Promise<PromptCompressionResult<TInput>>;
|
|
527
594
|
declare function estimatePromptTokens(input: unknown): number;
|
|
528
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;
|
|
529
604
|
declare class UsageTapClient {
|
|
530
605
|
private readonly apiKey;
|
|
531
606
|
private readonly baseUrl;
|
|
@@ -541,15 +616,30 @@ declare class UsageTapClient {
|
|
|
541
616
|
private readonly autoIdempotency;
|
|
542
617
|
private readonly tokenCompanyApiKey?;
|
|
543
618
|
private readonly tokenCompanyEndpoint?;
|
|
619
|
+
private readonly model?;
|
|
544
620
|
private readonly tokenCompanyModel?;
|
|
621
|
+
private readonly aggressiveness?;
|
|
545
622
|
private readonly tokenCompanyAggressiveness?;
|
|
546
623
|
private readonly tokenCompanyAppId?;
|
|
547
|
-
|
|
624
|
+
private readonly usageTapCompressionApiKey?;
|
|
625
|
+
private readonly usageTapCompressionEndpoint?;
|
|
626
|
+
private readonly usageTapCompressionMessagesEndpoint?;
|
|
627
|
+
private readonly usageTapCompressionModel?;
|
|
628
|
+
private readonly usageTapCompressionAggressiveness?;
|
|
629
|
+
constructor(options?: UsageTapClientOptions);
|
|
548
630
|
beginCall(request: BeginCallRequest, options?: BeginCallOptions): Promise<UsageTapSuccessResponse<BeginCallResponseBody>>;
|
|
549
631
|
promptCompress(request: PromptCompressionRequest, options?: PromptCompressionOptions): Promise<PromptCompressionResult & {
|
|
550
632
|
callId: string;
|
|
551
633
|
}>;
|
|
552
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>>;
|
|
553
643
|
recordPromptCompression(request: RecordPromptCompressionRequest, options?: PromptCompressionOptions): Promise<UsageTapSuccessResponse<PromptCompressionResponseBody>>;
|
|
554
644
|
endCall(request: EndCallRequest, options?: EndCallOptions): Promise<UsageTapSuccessResponse<EndCallResponseBody>>;
|
|
555
645
|
checkUsage(request: CheckUsageRequest, options?: CheckUsageOptions): Promise<UsageTapSuccessResponse<CheckUsageResponseBody>>;
|
|
@@ -557,6 +647,11 @@ declare class UsageTapClient {
|
|
|
557
647
|
changePlan(request: ChangePlanRequest, options?: ChangePlanOptions): Promise<UsageTapSuccessResponse<ChangePlanResponseBody>>;
|
|
558
648
|
incrementCustomMeter(request: IncrementCustomMeterRequest, options?: IncrementCustomMeterOptions): Promise<UsageTapSuccessResponse<IncrementCustomMeterResponseBody>>;
|
|
559
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>;
|
|
560
655
|
private toPromptCompressionTelemetry;
|
|
561
656
|
private request;
|
|
562
657
|
private requestGet;
|
|
@@ -570,4 +665,4 @@ declare class UsageTapClient {
|
|
|
570
665
|
private toApiError;
|
|
571
666
|
}
|
|
572
667
|
|
|
573
|
-
export { type
|
|
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 };
|
|
@@ -83,14 +83,22 @@ interface VendorHints {
|
|
|
83
83
|
}
|
|
84
84
|
interface PromptCompressionRequest {
|
|
85
85
|
callId: string;
|
|
86
|
-
input
|
|
87
|
-
|
|
86
|
+
input?: unknown;
|
|
87
|
+
text?: string;
|
|
88
|
+
provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
89
|
+
model?: string;
|
|
88
90
|
tokenCompanyModel?: string;
|
|
91
|
+
/** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
|
|
92
|
+
aggressiveness?: number;
|
|
93
|
+
/** @deprecated Use aggressiveness instead. */
|
|
89
94
|
tokenCompanyAggressiveness?: number;
|
|
90
95
|
tokenCompanyAppId?: string;
|
|
96
|
+
usageTapCompressionModel?: string;
|
|
97
|
+
/** @deprecated Use aggressiveness instead. */
|
|
98
|
+
usageTapCompressionAggressiveness?: number;
|
|
91
99
|
}
|
|
92
100
|
interface PromptCompressionTelemetry {
|
|
93
|
-
provider: "heuristic" | "toon" | "thetokencompany";
|
|
101
|
+
provider: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
94
102
|
originalCharacters: number;
|
|
95
103
|
compressedCharacters: number;
|
|
96
104
|
savedCharacters: number;
|
|
@@ -302,8 +310,14 @@ interface UsageTapLogEntry {
|
|
|
302
310
|
error?: unknown;
|
|
303
311
|
}
|
|
304
312
|
interface UsageTapClientOptions {
|
|
305
|
-
|
|
306
|
-
|
|
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;
|
|
307
321
|
defaultFeature?: string;
|
|
308
322
|
defaultTags?: string[];
|
|
309
323
|
fetchImpl?: typeof fetch;
|
|
@@ -334,11 +348,24 @@ interface UsageTapClientOptions {
|
|
|
334
348
|
/** Override endpoint for The Token Company compatible compression APIs. */
|
|
335
349
|
tokenCompanyEndpoint?: string;
|
|
336
350
|
/** Default model for The Token Company compression. */
|
|
351
|
+
model?: string;
|
|
337
352
|
tokenCompanyModel?: string;
|
|
338
|
-
/** Default aggressiveness
|
|
353
|
+
/** Default compression aggressiveness, from 0.0 to 1.0. */
|
|
354
|
+
aggressiveness?: number;
|
|
355
|
+
/** @deprecated Use aggressiveness instead. */
|
|
339
356
|
tokenCompanyAggressiveness?: number;
|
|
340
357
|
/** Optional application identifier sent to The Token Company. */
|
|
341
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;
|
|
342
369
|
}
|
|
343
370
|
interface RequestOptions {
|
|
344
371
|
signal?: AbortSignal;
|
|
@@ -347,11 +374,29 @@ interface RequestOptions {
|
|
|
347
374
|
}
|
|
348
375
|
interface PromptCompressionStandaloneOptions {
|
|
349
376
|
signal?: AbortSignal;
|
|
350
|
-
provider?: "heuristic" | "toon" | "thetokencompany";
|
|
377
|
+
provider?: "heuristic" | "toon" | "thetokencompany" | "usagetap";
|
|
351
378
|
failOpen?: boolean;
|
|
379
|
+
model?: string;
|
|
352
380
|
tokenCompanyModel?: string;
|
|
381
|
+
/** Provider-neutral compression aggressiveness from 0.0 to 1.0. */
|
|
382
|
+
aggressiveness?: number;
|
|
383
|
+
/** @deprecated Use aggressiveness instead. */
|
|
353
384
|
tokenCompanyAggressiveness?: number;
|
|
354
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;
|
|
355
400
|
}
|
|
356
401
|
interface RecordPromptCompressionRequest {
|
|
357
402
|
callId: string;
|
|
@@ -492,15 +537,36 @@ interface UsageMetricEvent {
|
|
|
492
537
|
correlationId?: string;
|
|
493
538
|
}
|
|
494
539
|
|
|
495
|
-
type PromptCompressionProvider = "heuristic" | "toon" | "thetokencompany";
|
|
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;
|
|
496
544
|
interface PromptCompressionInput {
|
|
497
|
-
input
|
|
545
|
+
input?: unknown;
|
|
546
|
+
text?: string;
|
|
498
547
|
provider?: PromptCompressionProvider;
|
|
499
548
|
tokenCompanyApiKey?: string;
|
|
500
549
|
tokenCompanyEndpoint?: string;
|
|
550
|
+
model?: string;
|
|
501
551
|
tokenCompanyModel?: string;
|
|
552
|
+
aggressiveness?: number;
|
|
502
553
|
tokenCompanyAggressiveness?: number;
|
|
503
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;
|
|
504
570
|
fetchImpl?: typeof fetch;
|
|
505
571
|
signal?: AbortSignal;
|
|
506
572
|
failOpen?: boolean;
|
|
@@ -524,8 +590,17 @@ declare const protect: typeof protectPromptText;
|
|
|
524
590
|
declare function compressPrompt<TInput = unknown>(options: PromptCompressionInput): Promise<PromptCompressionResult<TInput>>;
|
|
525
591
|
declare function compressPromptHeuristic<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
|
|
526
592
|
declare function compressPromptToon<TInput = unknown>(input: TInput): PromptCompressionResult<TInput>;
|
|
593
|
+
declare function compressPromptMessages<TInput = unknown>(options: PromptCompressionMessagesInput<TInput>): Promise<PromptCompressionResult<TInput>>;
|
|
527
594
|
declare function estimatePromptTokens(input: unknown): number;
|
|
528
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;
|
|
529
604
|
declare class UsageTapClient {
|
|
530
605
|
private readonly apiKey;
|
|
531
606
|
private readonly baseUrl;
|
|
@@ -541,15 +616,30 @@ declare class UsageTapClient {
|
|
|
541
616
|
private readonly autoIdempotency;
|
|
542
617
|
private readonly tokenCompanyApiKey?;
|
|
543
618
|
private readonly tokenCompanyEndpoint?;
|
|
619
|
+
private readonly model?;
|
|
544
620
|
private readonly tokenCompanyModel?;
|
|
621
|
+
private readonly aggressiveness?;
|
|
545
622
|
private readonly tokenCompanyAggressiveness?;
|
|
546
623
|
private readonly tokenCompanyAppId?;
|
|
547
|
-
|
|
624
|
+
private readonly usageTapCompressionApiKey?;
|
|
625
|
+
private readonly usageTapCompressionEndpoint?;
|
|
626
|
+
private readonly usageTapCompressionMessagesEndpoint?;
|
|
627
|
+
private readonly usageTapCompressionModel?;
|
|
628
|
+
private readonly usageTapCompressionAggressiveness?;
|
|
629
|
+
constructor(options?: UsageTapClientOptions);
|
|
548
630
|
beginCall(request: BeginCallRequest, options?: BeginCallOptions): Promise<UsageTapSuccessResponse<BeginCallResponseBody>>;
|
|
549
631
|
promptCompress(request: PromptCompressionRequest, options?: PromptCompressionOptions): Promise<PromptCompressionResult & {
|
|
550
632
|
callId: string;
|
|
551
633
|
}>;
|
|
552
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>>;
|
|
553
643
|
recordPromptCompression(request: RecordPromptCompressionRequest, options?: PromptCompressionOptions): Promise<UsageTapSuccessResponse<PromptCompressionResponseBody>>;
|
|
554
644
|
endCall(request: EndCallRequest, options?: EndCallOptions): Promise<UsageTapSuccessResponse<EndCallResponseBody>>;
|
|
555
645
|
checkUsage(request: CheckUsageRequest, options?: CheckUsageOptions): Promise<UsageTapSuccessResponse<CheckUsageResponseBody>>;
|
|
@@ -557,6 +647,11 @@ declare class UsageTapClient {
|
|
|
557
647
|
changePlan(request: ChangePlanRequest, options?: ChangePlanOptions): Promise<UsageTapSuccessResponse<ChangePlanResponseBody>>;
|
|
558
648
|
incrementCustomMeter(request: IncrementCustomMeterRequest, options?: IncrementCustomMeterOptions): Promise<UsageTapSuccessResponse<IncrementCustomMeterResponseBody>>;
|
|
559
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>;
|
|
560
655
|
private toPromptCompressionTelemetry;
|
|
561
656
|
private request;
|
|
562
657
|
private requestGet;
|
|
@@ -570,4 +665,4 @@ declare class UsageTapClient {
|
|
|
570
665
|
private toApiError;
|
|
571
666
|
}
|
|
572
667
|
|
|
573
|
-
export { type
|
|
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 };
|
package/dist/express/index.cjs
CHANGED
|
@@ -495,6 +495,24 @@ async function compressChatParams(params, usageTap, compression, signal) {
|
|
|
495
495
|
if (!messages) {
|
|
496
496
|
return { params, segments: [] };
|
|
497
497
|
}
|
|
498
|
+
if (isBelowMinContextTokens(
|
|
499
|
+
{ messages, tools: source.tools },
|
|
500
|
+
compression.minContextTokens
|
|
501
|
+
)) {
|
|
502
|
+
return { params, segments: [] };
|
|
503
|
+
}
|
|
504
|
+
if (shouldUseUsageTapMessageEndpoint(compression)) {
|
|
505
|
+
const result = await usageTap.compressPromptMessages(source, {
|
|
506
|
+
provider: "usagetap",
|
|
507
|
+
failOpen: compression.failOpen,
|
|
508
|
+
aggressiveness: resolveMessageEndpointAggressiveness(compression),
|
|
509
|
+
signal
|
|
510
|
+
});
|
|
511
|
+
return {
|
|
512
|
+
params: result.compressedInput,
|
|
513
|
+
segments: [{ role: "user", result }]
|
|
514
|
+
};
|
|
515
|
+
}
|
|
498
516
|
const messageResults = await Promise.all(
|
|
499
517
|
messages.map(
|
|
500
518
|
(message) => compressOpenAIMessage(message, usageTap, compression, signal)
|
|
@@ -514,6 +532,16 @@ async function compressResponsesParams(params, usageTap, compression, signal) {
|
|
|
514
532
|
}
|
|
515
533
|
const source = cloneRecord(params);
|
|
516
534
|
const segments = [];
|
|
535
|
+
if (isBelowMinContextTokens(
|
|
536
|
+
{
|
|
537
|
+
instructions: source.instructions,
|
|
538
|
+
input: source.input,
|
|
539
|
+
tools: source.tools
|
|
540
|
+
},
|
|
541
|
+
compression.minContextTokens
|
|
542
|
+
)) {
|
|
543
|
+
return { params, segments };
|
|
544
|
+
}
|
|
517
545
|
if (typeof source.instructions === "string") {
|
|
518
546
|
const compressed = await compressTextForRole(
|
|
519
547
|
source.instructions,
|
|
@@ -718,8 +746,11 @@ async function compressTextForRole(text, role, usageTap, compression, signal) {
|
|
|
718
746
|
provider: roleOptions.provider,
|
|
719
747
|
failOpen: roleOptions.failOpen,
|
|
720
748
|
tokenCompanyModel: roleOptions.tokenCompanyModel,
|
|
749
|
+
aggressiveness: roleOptions.aggressiveness,
|
|
721
750
|
tokenCompanyAggressiveness: roleOptions.tokenCompanyAggressiveness,
|
|
722
751
|
tokenCompanyAppId: roleOptions.tokenCompanyAppId,
|
|
752
|
+
usageTapCompressionModel: roleOptions.usageTapCompressionModel,
|
|
753
|
+
usageTapCompressionAggressiveness: roleOptions.usageTapCompressionAggressiveness,
|
|
723
754
|
signal
|
|
724
755
|
});
|
|
725
756
|
const compressedText = typeof result.compressedInput === "string" ? result.compressedInput : String(result.compressedInput);
|
|
@@ -740,6 +771,9 @@ function normalizePromptCompressionOptions(options) {
|
|
|
740
771
|
}
|
|
741
772
|
return options;
|
|
742
773
|
}
|
|
774
|
+
function isBelowMinContextTokens(context, minContextTokens) {
|
|
775
|
+
return typeof minContextTokens === "number" && estimatePromptTokens(context) < Math.max(0, minContextTokens);
|
|
776
|
+
}
|
|
743
777
|
function resolveEffectivePromptCompressionOptions(defaults, override) {
|
|
744
778
|
if (override === false) {
|
|
745
779
|
return void 0;
|
|
@@ -778,16 +812,67 @@ function resolveRoleCompressionOptions(compression, role) {
|
|
|
778
812
|
minTokens: roleOptions?.minTokens ?? compression.minTokens,
|
|
779
813
|
failOpen: compression.failOpen,
|
|
780
814
|
tokenCompanyModel: compression.tokenCompanyModel,
|
|
815
|
+
aggressiveness: roleOptions?.aggressiveness ?? resolveAggressiveness(compression, role),
|
|
781
816
|
tokenCompanyAggressiveness: roleOptions?.tokenCompanyAggressiveness ?? resolveTokenCompanyAggressiveness(compression, role),
|
|
782
|
-
tokenCompanyAppId: compression.tokenCompanyAppId
|
|
817
|
+
tokenCompanyAppId: compression.tokenCompanyAppId,
|
|
818
|
+
usageTapCompressionModel: compression.usageTapCompressionModel,
|
|
819
|
+
usageTapCompressionAggressiveness: roleOptions?.usageTapCompressionAggressiveness ?? resolveUsageTapCompressionAggressiveness(compression, role)
|
|
783
820
|
};
|
|
784
821
|
}
|
|
822
|
+
function resolveAggressiveness(compression, role) {
|
|
823
|
+
if (typeof compression.aggressiveness === "number") {
|
|
824
|
+
return compression.aggressiveness;
|
|
825
|
+
}
|
|
826
|
+
return compression.aggressiveness?.[role];
|
|
827
|
+
}
|
|
785
828
|
function resolveTokenCompanyAggressiveness(compression, role) {
|
|
786
829
|
if (typeof compression.tokenCompanyAggressiveness === "number") {
|
|
787
830
|
return compression.tokenCompanyAggressiveness;
|
|
788
831
|
}
|
|
789
832
|
return compression.tokenCompanyAggressiveness?.[role];
|
|
790
833
|
}
|
|
834
|
+
function resolveUsageTapCompressionAggressiveness(compression, role) {
|
|
835
|
+
if (typeof compression.usageTapCompressionAggressiveness === "number") {
|
|
836
|
+
return compression.usageTapCompressionAggressiveness;
|
|
837
|
+
}
|
|
838
|
+
return compression.usageTapCompressionAggressiveness?.[role];
|
|
839
|
+
}
|
|
840
|
+
function shouldUseUsageTapMessageEndpoint(compression) {
|
|
841
|
+
if (compression.provider !== "usagetap") {
|
|
842
|
+
return false;
|
|
843
|
+
}
|
|
844
|
+
return Object.values(compression.roles ?? {}).every((setting) => {
|
|
845
|
+
if (typeof setting !== "object" || setting === null) {
|
|
846
|
+
return true;
|
|
847
|
+
}
|
|
848
|
+
return setting.provider === void 0 || setting.provider === "usagetap";
|
|
849
|
+
});
|
|
850
|
+
}
|
|
851
|
+
function resolveMessageEndpointAggressiveness(compression) {
|
|
852
|
+
const base = compression.aggressiveness ?? compression.usageTapCompressionAggressiveness ?? compression.tokenCompanyAggressiveness;
|
|
853
|
+
if (typeof base === "number" || base === void 0) {
|
|
854
|
+
return hasExplicitEnabledRoles(compression) ? buildRoleAggressiveness(compression, base) : base;
|
|
855
|
+
}
|
|
856
|
+
return buildRoleAggressiveness(compression, void 0, base);
|
|
857
|
+
}
|
|
858
|
+
function hasExplicitEnabledRoles(compression) {
|
|
859
|
+
return Object.values(compression.roles ?? {}).some((setting) => setting !== false);
|
|
860
|
+
}
|
|
861
|
+
function buildRoleAggressiveness(compression, fallback, base = {}) {
|
|
862
|
+
const roles = ["system", "user", "tool", "assistant"];
|
|
863
|
+
const result = {};
|
|
864
|
+
for (const role of roles) {
|
|
865
|
+
const roleOptions = resolveRoleCompressionOptions(compression, role);
|
|
866
|
+
if (!roleOptions) {
|
|
867
|
+
continue;
|
|
868
|
+
}
|
|
869
|
+
const roleAggressiveness = roleOptions.aggressiveness ?? roleOptions.usageTapCompressionAggressiveness ?? roleOptions.tokenCompanyAggressiveness ?? base[role] ?? fallback;
|
|
870
|
+
if (roleAggressiveness !== void 0) {
|
|
871
|
+
result[role] = roleAggressiveness;
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
return result;
|
|
875
|
+
}
|
|
791
876
|
function buildPromptCompressionTelemetry(segments) {
|
|
792
877
|
if (!segments.length) {
|
|
793
878
|
return void 0;
|