@usagetap/sdk 1.1.0 → 1.2.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 (44) hide show
  1. package/README.md +25 -1
  2. package/dist/adapters/anthropic.cjs +67 -1
  3. package/dist/adapters/anthropic.cjs.map +1 -1
  4. package/dist/adapters/anthropic.d.cts +10 -1
  5. package/dist/adapters/anthropic.d.ts +10 -1
  6. package/dist/adapters/anthropic.mjs +67 -1
  7. package/dist/adapters/anthropic.mjs.map +1 -1
  8. package/dist/adapters/openai.cjs +67 -1
  9. package/dist/adapters/openai.cjs.map +1 -1
  10. package/dist/adapters/openai.d.cts +10 -1
  11. package/dist/adapters/openai.d.ts +10 -1
  12. package/dist/adapters/openai.mjs +67 -1
  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 +67 -1
  19. package/dist/anthropic/index.cjs.map +1 -1
  20. package/dist/anthropic/index.d.cts +1 -1
  21. package/dist/anthropic/index.d.ts +1 -1
  22. package/dist/anthropic/index.mjs +67 -1
  23. package/dist/anthropic/index.mjs.map +1 -1
  24. package/dist/{client-BA-QlnRq.d.cts → client-EMXt9_fA.d.cts} +77 -8
  25. package/dist/{client-BA-QlnRq.d.ts → client-EMXt9_fA.d.ts} +77 -8
  26. package/dist/express/index.cjs +67 -1
  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 +67 -1
  31. package/dist/express/index.mjs.map +1 -1
  32. package/dist/index.cjs +217 -22
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +2 -2
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.mjs +217 -23
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/openai/index.cjs +67 -1
  39. package/dist/openai/index.cjs.map +1 -1
  40. package/dist/openai/index.d.cts +1 -1
  41. package/dist/openai/index.d.ts +1 -1
  42. package/dist/openai/index.mjs +67 -1
  43. package/dist/openai/index.mjs.map +1 -1
  44. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import OpenAI from 'openai';
2
- import { B as BeginCallRequest, P as PromptCompressionProvider, U as UsageTapClient, W as WithUsageOptions, a as PromptCompressionTelemetry, V as VendorHints, b as UsageTapSuccessResponse, c as BeginCallResponseBody, E as EndCallRequest } from '../client-BA-QlnRq.cjs';
2
+ import { B as BeginCallRequest, P as PromptCompressionProvider, U as UsageTapClient, W as WithUsageOptions, a as PromptCompressionTelemetry, V as VendorHints, b as UsageTapSuccessResponse, c as BeginCallResponseBody, E as EndCallRequest } from '../client-EMXt9_fA.cjs';
3
3
 
4
4
  interface OpenAIAdapterInit {
5
5
  client: OpenAI;
@@ -46,7 +46,11 @@ interface OpenAIPromptCompressionRoleOptions {
46
46
  enabled?: boolean;
47
47
  provider?: PromptCompressionProvider;
48
48
  minTokens?: number;
49
+ aggressiveness?: number;
50
+ /** @deprecated Use aggressiveness instead. */
49
51
  tokenCompanyAggressiveness?: number;
52
+ /** @deprecated Use aggressiveness instead. */
53
+ usageTapCompressionAggressiveness?: number;
50
54
  }
51
55
  type OpenAIPromptCompressionRoleSetting = boolean | OpenAIPromptCompressionRoleOptions;
52
56
  interface OpenAIPromptCompressionOptions {
@@ -56,8 +60,13 @@ interface OpenAIPromptCompressionOptions {
56
60
  minTokens?: number;
57
61
  failOpen?: boolean;
58
62
  tokenCompanyModel?: string;
63
+ aggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
64
+ /** @deprecated Use aggressiveness instead. */
59
65
  tokenCompanyAggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
60
66
  tokenCompanyAppId?: string;
67
+ usageTapCompressionModel?: string;
68
+ /** @deprecated Use aggressiveness instead. */
69
+ usageTapCompressionAggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
61
70
  }
62
71
  interface OpenAIPromptCompressionTurnStats extends PromptCompressionTelemetry {
63
72
  callId: string;
@@ -1,5 +1,5 @@
1
1
  import OpenAI from 'openai';
2
- import { B as BeginCallRequest, P as PromptCompressionProvider, U as UsageTapClient, W as WithUsageOptions, a as PromptCompressionTelemetry, V as VendorHints, b as UsageTapSuccessResponse, c as BeginCallResponseBody, E as EndCallRequest } from '../client-BA-QlnRq.js';
2
+ import { B as BeginCallRequest, P as PromptCompressionProvider, U as UsageTapClient, W as WithUsageOptions, a as PromptCompressionTelemetry, V as VendorHints, b as UsageTapSuccessResponse, c as BeginCallResponseBody, E as EndCallRequest } from '../client-EMXt9_fA.js';
3
3
 
4
4
  interface OpenAIAdapterInit {
5
5
  client: OpenAI;
@@ -46,7 +46,11 @@ interface OpenAIPromptCompressionRoleOptions {
46
46
  enabled?: boolean;
47
47
  provider?: PromptCompressionProvider;
48
48
  minTokens?: number;
49
+ aggressiveness?: number;
50
+ /** @deprecated Use aggressiveness instead. */
49
51
  tokenCompanyAggressiveness?: number;
52
+ /** @deprecated Use aggressiveness instead. */
53
+ usageTapCompressionAggressiveness?: number;
50
54
  }
51
55
  type OpenAIPromptCompressionRoleSetting = boolean | OpenAIPromptCompressionRoleOptions;
52
56
  interface OpenAIPromptCompressionOptions {
@@ -56,8 +60,13 @@ interface OpenAIPromptCompressionOptions {
56
60
  minTokens?: number;
57
61
  failOpen?: boolean;
58
62
  tokenCompanyModel?: string;
63
+ aggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
64
+ /** @deprecated Use aggressiveness instead. */
59
65
  tokenCompanyAggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
60
66
  tokenCompanyAppId?: string;
67
+ usageTapCompressionModel?: string;
68
+ /** @deprecated Use aggressiveness instead. */
69
+ usageTapCompressionAggressiveness?: number | Partial<Record<OpenAIPromptCompressionRole, number>>;
61
70
  }
62
71
  interface OpenAIPromptCompressionTurnStats extends PromptCompressionTelemetry {
63
72
  callId: string;
@@ -603,6 +603,18 @@ async function compressChatParams(params, usageTap, compression, signal) {
603
603
  if (!messages) {
604
604
  return { params, segments: [] };
605
605
  }
606
+ if (shouldUseUsageTapMessageEndpoint(compression)) {
607
+ const result = await usageTap.compressPromptMessages(source, {
608
+ provider: "usagetap",
609
+ failOpen: compression.failOpen,
610
+ aggressiveness: resolveMessageEndpointAggressiveness(compression),
611
+ signal
612
+ });
613
+ return {
614
+ params: result.compressedInput,
615
+ segments: [{ role: "user", result }]
616
+ };
617
+ }
606
618
  const messageResults = await Promise.all(
607
619
  messages.map(
608
620
  (message) => compressOpenAIMessage(message, usageTap, compression, signal)
@@ -826,8 +838,11 @@ async function compressTextForRole(text, role, usageTap, compression, signal) {
826
838
  provider: roleOptions.provider,
827
839
  failOpen: roleOptions.failOpen,
828
840
  tokenCompanyModel: roleOptions.tokenCompanyModel,
841
+ aggressiveness: roleOptions.aggressiveness,
829
842
  tokenCompanyAggressiveness: roleOptions.tokenCompanyAggressiveness,
830
843
  tokenCompanyAppId: roleOptions.tokenCompanyAppId,
844
+ usageTapCompressionModel: roleOptions.usageTapCompressionModel,
845
+ usageTapCompressionAggressiveness: roleOptions.usageTapCompressionAggressiveness,
831
846
  signal
832
847
  });
833
848
  const compressedText = typeof result.compressedInput === "string" ? result.compressedInput : String(result.compressedInput);
@@ -886,16 +901,67 @@ function resolveRoleCompressionOptions(compression, role) {
886
901
  minTokens: roleOptions?.minTokens ?? compression.minTokens,
887
902
  failOpen: compression.failOpen,
888
903
  tokenCompanyModel: compression.tokenCompanyModel,
904
+ aggressiveness: roleOptions?.aggressiveness ?? resolveAggressiveness(compression, role),
889
905
  tokenCompanyAggressiveness: roleOptions?.tokenCompanyAggressiveness ?? resolveTokenCompanyAggressiveness(compression, role),
890
- tokenCompanyAppId: compression.tokenCompanyAppId
906
+ tokenCompanyAppId: compression.tokenCompanyAppId,
907
+ usageTapCompressionModel: compression.usageTapCompressionModel,
908
+ usageTapCompressionAggressiveness: roleOptions?.usageTapCompressionAggressiveness ?? resolveUsageTapCompressionAggressiveness(compression, role)
891
909
  };
892
910
  }
911
+ function resolveAggressiveness(compression, role) {
912
+ if (typeof compression.aggressiveness === "number") {
913
+ return compression.aggressiveness;
914
+ }
915
+ return compression.aggressiveness?.[role];
916
+ }
893
917
  function resolveTokenCompanyAggressiveness(compression, role) {
894
918
  if (typeof compression.tokenCompanyAggressiveness === "number") {
895
919
  return compression.tokenCompanyAggressiveness;
896
920
  }
897
921
  return compression.tokenCompanyAggressiveness?.[role];
898
922
  }
923
+ function resolveUsageTapCompressionAggressiveness(compression, role) {
924
+ if (typeof compression.usageTapCompressionAggressiveness === "number") {
925
+ return compression.usageTapCompressionAggressiveness;
926
+ }
927
+ return compression.usageTapCompressionAggressiveness?.[role];
928
+ }
929
+ function shouldUseUsageTapMessageEndpoint(compression) {
930
+ if (compression.provider !== "usagetap") {
931
+ return false;
932
+ }
933
+ return Object.values(compression.roles ?? {}).every((setting) => {
934
+ if (typeof setting !== "object" || setting === null) {
935
+ return true;
936
+ }
937
+ return setting.provider === void 0 || setting.provider === "usagetap";
938
+ });
939
+ }
940
+ function resolveMessageEndpointAggressiveness(compression) {
941
+ const base = compression.aggressiveness ?? compression.usageTapCompressionAggressiveness ?? compression.tokenCompanyAggressiveness;
942
+ if (typeof base === "number" || base === void 0) {
943
+ return hasExplicitEnabledRoles(compression) ? buildRoleAggressiveness(compression, base) : base;
944
+ }
945
+ return buildRoleAggressiveness(compression, void 0, base);
946
+ }
947
+ function hasExplicitEnabledRoles(compression) {
948
+ return Object.values(compression.roles ?? {}).some((setting) => setting !== false);
949
+ }
950
+ function buildRoleAggressiveness(compression, fallback, base = {}) {
951
+ const roles = ["system", "user", "tool", "assistant"];
952
+ const result = {};
953
+ for (const role of roles) {
954
+ const roleOptions = resolveRoleCompressionOptions(compression, role);
955
+ if (!roleOptions) {
956
+ continue;
957
+ }
958
+ const roleAggressiveness = roleOptions.aggressiveness ?? roleOptions.usageTapCompressionAggressiveness ?? roleOptions.tokenCompanyAggressiveness ?? base[role] ?? fallback;
959
+ if (roleAggressiveness !== void 0) {
960
+ result[role] = roleAggressiveness;
961
+ }
962
+ }
963
+ return result;
964
+ }
899
965
  function buildPromptCompressionTelemetry(segments) {
900
966
  if (!segments.length) {
901
967
  return void 0;