@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
@@ -605,6 +605,18 @@ async function compressChatParams(params, usageTap, compression, signal) {
605
605
  if (!messages) {
606
606
  return { params, segments: [] };
607
607
  }
608
+ if (shouldUseUsageTapMessageEndpoint(compression)) {
609
+ const result = await usageTap.compressPromptMessages(source, {
610
+ provider: "usagetap",
611
+ failOpen: compression.failOpen,
612
+ aggressiveness: resolveMessageEndpointAggressiveness(compression),
613
+ signal
614
+ });
615
+ return {
616
+ params: result.compressedInput,
617
+ segments: [{ role: "user", result }]
618
+ };
619
+ }
608
620
  const messageResults = await Promise.all(
609
621
  messages.map(
610
622
  (message) => compressOpenAIMessage(message, usageTap, compression, signal)
@@ -828,8 +840,11 @@ async function compressTextForRole(text, role, usageTap, compression, signal) {
828
840
  provider: roleOptions.provider,
829
841
  failOpen: roleOptions.failOpen,
830
842
  tokenCompanyModel: roleOptions.tokenCompanyModel,
843
+ aggressiveness: roleOptions.aggressiveness,
831
844
  tokenCompanyAggressiveness: roleOptions.tokenCompanyAggressiveness,
832
845
  tokenCompanyAppId: roleOptions.tokenCompanyAppId,
846
+ usageTapCompressionModel: roleOptions.usageTapCompressionModel,
847
+ usageTapCompressionAggressiveness: roleOptions.usageTapCompressionAggressiveness,
833
848
  signal
834
849
  });
835
850
  const compressedText = typeof result.compressedInput === "string" ? result.compressedInput : String(result.compressedInput);
@@ -888,16 +903,67 @@ function resolveRoleCompressionOptions(compression, role) {
888
903
  minTokens: roleOptions?.minTokens ?? compression.minTokens,
889
904
  failOpen: compression.failOpen,
890
905
  tokenCompanyModel: compression.tokenCompanyModel,
906
+ aggressiveness: roleOptions?.aggressiveness ?? resolveAggressiveness(compression, role),
891
907
  tokenCompanyAggressiveness: roleOptions?.tokenCompanyAggressiveness ?? resolveTokenCompanyAggressiveness(compression, role),
892
- tokenCompanyAppId: compression.tokenCompanyAppId
908
+ tokenCompanyAppId: compression.tokenCompanyAppId,
909
+ usageTapCompressionModel: compression.usageTapCompressionModel,
910
+ usageTapCompressionAggressiveness: roleOptions?.usageTapCompressionAggressiveness ?? resolveUsageTapCompressionAggressiveness(compression, role)
893
911
  };
894
912
  }
913
+ function resolveAggressiveness(compression, role) {
914
+ if (typeof compression.aggressiveness === "number") {
915
+ return compression.aggressiveness;
916
+ }
917
+ return compression.aggressiveness?.[role];
918
+ }
895
919
  function resolveTokenCompanyAggressiveness(compression, role) {
896
920
  if (typeof compression.tokenCompanyAggressiveness === "number") {
897
921
  return compression.tokenCompanyAggressiveness;
898
922
  }
899
923
  return compression.tokenCompanyAggressiveness?.[role];
900
924
  }
925
+ function resolveUsageTapCompressionAggressiveness(compression, role) {
926
+ if (typeof compression.usageTapCompressionAggressiveness === "number") {
927
+ return compression.usageTapCompressionAggressiveness;
928
+ }
929
+ return compression.usageTapCompressionAggressiveness?.[role];
930
+ }
931
+ function shouldUseUsageTapMessageEndpoint(compression) {
932
+ if (compression.provider !== "usagetap") {
933
+ return false;
934
+ }
935
+ return Object.values(compression.roles ?? {}).every((setting) => {
936
+ if (typeof setting !== "object" || setting === null) {
937
+ return true;
938
+ }
939
+ return setting.provider === void 0 || setting.provider === "usagetap";
940
+ });
941
+ }
942
+ function resolveMessageEndpointAggressiveness(compression) {
943
+ const base = compression.aggressiveness ?? compression.usageTapCompressionAggressiveness ?? compression.tokenCompanyAggressiveness;
944
+ if (typeof base === "number" || base === void 0) {
945
+ return hasExplicitEnabledRoles(compression) ? buildRoleAggressiveness(compression, base) : base;
946
+ }
947
+ return buildRoleAggressiveness(compression, void 0, base);
948
+ }
949
+ function hasExplicitEnabledRoles(compression) {
950
+ return Object.values(compression.roles ?? {}).some((setting) => setting !== false);
951
+ }
952
+ function buildRoleAggressiveness(compression, fallback, base = {}) {
953
+ const roles = ["system", "user", "tool", "assistant"];
954
+ const result = {};
955
+ for (const role of roles) {
956
+ const roleOptions = resolveRoleCompressionOptions(compression, role);
957
+ if (!roleOptions) {
958
+ continue;
959
+ }
960
+ const roleAggressiveness = roleOptions.aggressiveness ?? roleOptions.usageTapCompressionAggressiveness ?? roleOptions.tokenCompanyAggressiveness ?? base[role] ?? fallback;
961
+ if (roleAggressiveness !== void 0) {
962
+ result[role] = roleAggressiveness;
963
+ }
964
+ }
965
+ return result;
966
+ }
901
967
  function buildPromptCompressionTelemetry(segments) {
902
968
  if (!segments.length) {
903
969
  return void 0;