@usagetap/sdk 1.2.0 → 1.3.2

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 (52) hide show
  1. package/README.md +710 -735
  2. package/dist/adapters/anthropic.cjs +1609 -5
  3. package/dist/adapters/anthropic.cjs.map +1 -1
  4. package/dist/adapters/anthropic.d.cts +30 -2
  5. package/dist/adapters/anthropic.d.ts +30 -2
  6. package/dist/adapters/anthropic.mjs +1608 -6
  7. package/dist/adapters/anthropic.mjs.map +1 -1
  8. package/dist/adapters/openai.cjs +1659 -5
  9. package/dist/adapters/openai.cjs.map +1 -1
  10. package/dist/adapters/openai.d.cts +37 -2
  11. package/dist/adapters/openai.d.ts +37 -2
  12. package/dist/adapters/openai.mjs +1658 -6
  13. package/dist/adapters/openai.mjs.map +1 -1
  14. package/dist/adapters/openrouter.cjs.map +1 -1
  15. package/dist/adapters/openrouter.d.cts +1 -1
  16. package/dist/adapters/openrouter.d.ts +1 -1
  17. package/dist/adapters/openrouter.mjs.map +1 -1
  18. package/dist/anthropic/index.cjs +1609 -5
  19. package/dist/anthropic/index.cjs.map +1 -1
  20. package/dist/anthropic/index.d.cts +2 -2
  21. package/dist/anthropic/index.d.ts +2 -2
  22. package/dist/anthropic/index.mjs +1608 -6
  23. package/dist/anthropic/index.mjs.map +1 -1
  24. package/dist/{client-EMXt9_fA.d.cts → client-BD8O2J8Z.d.cts} +30 -4
  25. package/dist/{client-EMXt9_fA.d.ts → client-BD8O2J8Z.d.ts} +30 -4
  26. package/dist/express/index.cjs +19 -0
  27. package/dist/express/index.cjs.map +1 -1
  28. package/dist/express/index.d.cts +1 -1
  29. package/dist/express/index.d.ts +1 -1
  30. package/dist/express/index.mjs +19 -0
  31. package/dist/express/index.mjs.map +1 -1
  32. package/dist/index.cjs +48 -19
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +3 -3
  35. package/dist/index.d.ts +3 -3
  36. package/dist/index.mjs +48 -20
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/openai/index.cjs +1659 -5
  39. package/dist/openai/index.cjs.map +1 -1
  40. package/dist/openai/index.d.cts +2 -2
  41. package/dist/openai/index.d.ts +2 -2
  42. package/dist/openai/index.mjs +1658 -6
  43. package/dist/openai/index.mjs.map +1 -1
  44. package/dist/openrouter/index.cjs +3024 -0
  45. package/dist/openrouter/index.cjs.map +1 -0
  46. package/dist/openrouter/index.d.cts +4 -0
  47. package/dist/openrouter/index.d.ts +4 -0
  48. package/dist/openrouter/index.mjs +3019 -0
  49. package/dist/openrouter/index.mjs.map +1 -0
  50. package/dist/react/index.cjs.map +1 -1
  51. package/dist/react/index.mjs.map +1 -1
  52. package/package.json +182 -124
@@ -310,8 +310,14 @@ interface UsageTapLogEntry {
310
310
  error?: unknown;
311
311
  }
312
312
  interface UsageTapClientOptions {
313
- apiKey: string;
314
- baseUrl: string;
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;
315
321
  defaultFeature?: string;
316
322
  defaultTags?: string[];
317
323
  fetchImpl?: typeof fetch;
@@ -587,6 +593,14 @@ declare function compressPromptToon<TInput = unknown>(input: TInput): PromptComp
587
593
  declare function compressPromptMessages<TInput = unknown>(options: PromptCompressionMessagesInput<TInput>): Promise<PromptCompressionResult<TInput>>;
588
594
  declare function estimatePromptTokens(input: unknown): number;
589
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;
590
604
  declare class UsageTapClient {
591
605
  private readonly apiKey;
592
606
  private readonly baseUrl;
@@ -612,12 +626,19 @@ declare class UsageTapClient {
612
626
  private readonly usageTapCompressionMessagesEndpoint?;
613
627
  private readonly usageTapCompressionModel?;
614
628
  private readonly usageTapCompressionAggressiveness?;
615
- constructor(options: UsageTapClientOptions);
629
+ constructor(options?: UsageTapClientOptions);
616
630
  beginCall(request: BeginCallRequest, options?: BeginCallOptions): Promise<UsageTapSuccessResponse<BeginCallResponseBody>>;
617
631
  promptCompress(request: PromptCompressionRequest, options?: PromptCompressionOptions): Promise<PromptCompressionResult & {
618
632
  callId: string;
619
633
  }>;
620
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>;
621
642
  compressPromptMessages<TInput = unknown>(input: TInput, options?: PromptCompressionMessagesOptions): Promise<PromptCompressionResult<TInput>>;
622
643
  recordPromptCompression(request: RecordPromptCompressionRequest, options?: PromptCompressionOptions): Promise<UsageTapSuccessResponse<PromptCompressionResponseBody>>;
623
644
  endCall(request: EndCallRequest, options?: EndCallOptions): Promise<UsageTapSuccessResponse<EndCallResponseBody>>;
@@ -626,6 +647,11 @@ declare class UsageTapClient {
626
647
  changePlan(request: ChangePlanRequest, options?: ChangePlanOptions): Promise<UsageTapSuccessResponse<ChangePlanResponseBody>>;
627
648
  incrementCustomMeter(request: IncrementCustomMeterRequest, options?: IncrementCustomMeterOptions): Promise<UsageTapSuccessResponse<IncrementCustomMeterResponseBody>>;
628
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>;
629
655
  private toPromptCompressionTelemetry;
630
656
  private request;
631
657
  private requestGet;
@@ -639,4 +665,4 @@ declare class UsageTapClient {
639
665
  private toApiError;
640
666
  }
641
667
 
642
- export { type MeteredUsage as $, type CheckUsageResponseBody as A, type BeginCallRequest as B, type CreateCustomerOptions as C, type ChangePlanOptions as D, type EndCallRequest as E, type ChangePlanRequest as F, type ChangePlanResponseBody as G, type ChangePlanStrategy as H, type IncrementCustomMeterOptions as I, type IncrementCustomMeterRequest as J, type IncrementCustomMeterResponseBody as K, type CustomMeterSlot as L, type EndCallOptions as M, type EndCallResponseBody as N, type BalanceSummary as O, type PromptCompressionProvider as P, type SpendVelocityWindow as Q, type RecordPromptCompressionRequest as R, type SpendVelocitySnapshot as S, type SpendVelocityWindowKey as T, UsageTapClient as U, type VendorHints as V, type WithUsageOptions as W, type EntitlementHints as X, type PlanSummary as Y, type MeterSummary as Z, type MeterSnapshot as _, type PromptCompressionTelemetry as a, type RateLimitsSnapshot as a0, type RemainingRatios as a1, type RollingCallsRateLimitState as a2, type RequestedEntitlements as a3, type AllowedEntitlements as a4, type RetryOptions as a5, type UsageTapClientOptions as a6, type UsageTapErrorResponse as a7, type UsageTapResultEnvelope as a8, type UsageTapResultStatus as a9, type UsageTapLogEntry as aa, type WithUsageContext as ab, type LimitType as ac, type SubscriptionSnapshot as ad, type ModelHints as ae, type IdempotencyMetadata as af, type UsageMetricEvent as ag, type UsageTapSuccessResponse as b, type BeginCallResponseBody as c, compressPrompt as d, compressPromptMessages as e, compressPromptHeuristic as f, compressPromptToon as g, estimatePromptTokens as h, protectPromptText as i, type PromptCompressionInput as j, type PromptCompressionMessagesAggressiveness as k, type PromptCompressionMessagesInput as l, type PromptCompressionMessageRole as m, type PromptCompressionResult as n, type PromptCompressionRoleAggressiveness as o, protect as p, type BeginCallOptions as q, type PromptCompressionRequest as r, type PromptCompressionOptions as s, type PromptCompressionMessagesOptions as t, type PromptCompressionResponseBody as u, type PromptCompressionStandaloneOptions as v, type CreateCustomerRequest as w, type CreateCustomerResponseBody as x, type CheckUsageOptions as y, type CheckUsageRequest as z };
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 };
@@ -310,8 +310,14 @@ interface UsageTapLogEntry {
310
310
  error?: unknown;
311
311
  }
312
312
  interface UsageTapClientOptions {
313
- apiKey: string;
314
- baseUrl: string;
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;
315
321
  defaultFeature?: string;
316
322
  defaultTags?: string[];
317
323
  fetchImpl?: typeof fetch;
@@ -587,6 +593,14 @@ declare function compressPromptToon<TInput = unknown>(input: TInput): PromptComp
587
593
  declare function compressPromptMessages<TInput = unknown>(options: PromptCompressionMessagesInput<TInput>): Promise<PromptCompressionResult<TInput>>;
588
594
  declare function estimatePromptTokens(input: unknown): number;
589
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;
590
604
  declare class UsageTapClient {
591
605
  private readonly apiKey;
592
606
  private readonly baseUrl;
@@ -612,12 +626,19 @@ declare class UsageTapClient {
612
626
  private readonly usageTapCompressionMessagesEndpoint?;
613
627
  private readonly usageTapCompressionModel?;
614
628
  private readonly usageTapCompressionAggressiveness?;
615
- constructor(options: UsageTapClientOptions);
629
+ constructor(options?: UsageTapClientOptions);
616
630
  beginCall(request: BeginCallRequest, options?: BeginCallOptions): Promise<UsageTapSuccessResponse<BeginCallResponseBody>>;
617
631
  promptCompress(request: PromptCompressionRequest, options?: PromptCompressionOptions): Promise<PromptCompressionResult & {
618
632
  callId: string;
619
633
  }>;
620
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>;
621
642
  compressPromptMessages<TInput = unknown>(input: TInput, options?: PromptCompressionMessagesOptions): Promise<PromptCompressionResult<TInput>>;
622
643
  recordPromptCompression(request: RecordPromptCompressionRequest, options?: PromptCompressionOptions): Promise<UsageTapSuccessResponse<PromptCompressionResponseBody>>;
623
644
  endCall(request: EndCallRequest, options?: EndCallOptions): Promise<UsageTapSuccessResponse<EndCallResponseBody>>;
@@ -626,6 +647,11 @@ declare class UsageTapClient {
626
647
  changePlan(request: ChangePlanRequest, options?: ChangePlanOptions): Promise<UsageTapSuccessResponse<ChangePlanResponseBody>>;
627
648
  incrementCustomMeter(request: IncrementCustomMeterRequest, options?: IncrementCustomMeterOptions): Promise<UsageTapSuccessResponse<IncrementCustomMeterResponseBody>>;
628
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>;
629
655
  private toPromptCompressionTelemetry;
630
656
  private request;
631
657
  private requestGet;
@@ -639,4 +665,4 @@ declare class UsageTapClient {
639
665
  private toApiError;
640
666
  }
641
667
 
642
- export { type MeteredUsage as $, type CheckUsageResponseBody as A, type BeginCallRequest as B, type CreateCustomerOptions as C, type ChangePlanOptions as D, type EndCallRequest as E, type ChangePlanRequest as F, type ChangePlanResponseBody as G, type ChangePlanStrategy as H, type IncrementCustomMeterOptions as I, type IncrementCustomMeterRequest as J, type IncrementCustomMeterResponseBody as K, type CustomMeterSlot as L, type EndCallOptions as M, type EndCallResponseBody as N, type BalanceSummary as O, type PromptCompressionProvider as P, type SpendVelocityWindow as Q, type RecordPromptCompressionRequest as R, type SpendVelocitySnapshot as S, type SpendVelocityWindowKey as T, UsageTapClient as U, type VendorHints as V, type WithUsageOptions as W, type EntitlementHints as X, type PlanSummary as Y, type MeterSummary as Z, type MeterSnapshot as _, type PromptCompressionTelemetry as a, type RateLimitsSnapshot as a0, type RemainingRatios as a1, type RollingCallsRateLimitState as a2, type RequestedEntitlements as a3, type AllowedEntitlements as a4, type RetryOptions as a5, type UsageTapClientOptions as a6, type UsageTapErrorResponse as a7, type UsageTapResultEnvelope as a8, type UsageTapResultStatus as a9, type UsageTapLogEntry as aa, type WithUsageContext as ab, type LimitType as ac, type SubscriptionSnapshot as ad, type ModelHints as ae, type IdempotencyMetadata as af, type UsageMetricEvent as ag, type UsageTapSuccessResponse as b, type BeginCallResponseBody as c, compressPrompt as d, compressPromptMessages as e, compressPromptHeuristic as f, compressPromptToon as g, estimatePromptTokens as h, protectPromptText as i, type PromptCompressionInput as j, type PromptCompressionMessagesAggressiveness as k, type PromptCompressionMessagesInput as l, type PromptCompressionMessageRole as m, type PromptCompressionResult as n, type PromptCompressionRoleAggressiveness as o, protect as p, type BeginCallOptions as q, type PromptCompressionRequest as r, type PromptCompressionOptions as s, type PromptCompressionMessagesOptions as t, type PromptCompressionResponseBody as u, type PromptCompressionStandaloneOptions as v, type CreateCustomerRequest as w, type CreateCustomerResponseBody as x, type CheckUsageOptions as y, type CheckUsageRequest as z };
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 };
@@ -495,6 +495,12 @@ 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
+ }
498
504
  if (shouldUseUsageTapMessageEndpoint(compression)) {
499
505
  const result = await usageTap.compressPromptMessages(source, {
500
506
  provider: "usagetap",
@@ -526,6 +532,16 @@ async function compressResponsesParams(params, usageTap, compression, signal) {
526
532
  }
527
533
  const source = cloneRecord(params);
528
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
+ }
529
545
  if (typeof source.instructions === "string") {
530
546
  const compressed = await compressTextForRole(
531
547
  source.instructions,
@@ -755,6 +771,9 @@ function normalizePromptCompressionOptions(options) {
755
771
  }
756
772
  return options;
757
773
  }
774
+ function isBelowMinContextTokens(context, minContextTokens) {
775
+ return typeof minContextTokens === "number" && estimatePromptTokens(context) < Math.max(0, minContextTokens);
776
+ }
758
777
  function resolveEffectivePromptCompressionOptions(defaults, override) {
759
778
  if (override === false) {
760
779
  return void 0;