@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,6 +1,6 @@
1
1
  import OpenAI from 'openai';
2
2
  import { Request, Response, NextFunction } from 'express';
3
- import { U as UsageTapClient } from '../client-BA-QlnRq.cjs';
3
+ import { U as UsageTapClient } from '../client-EMXt9_fA.cjs';
4
4
  import { WrapOpenAIContext, WrapOpenAIOptions, wrapOpenAI, pipeToResponse } from '../adapters/openai.cjs';
5
5
 
6
6
  interface ExpressUsageTapContext {
@@ -1,6 +1,6 @@
1
1
  import OpenAI from 'openai';
2
2
  import { Request, Response, NextFunction } from 'express';
3
- import { U as UsageTapClient } from '../client-BA-QlnRq.js';
3
+ import { U as UsageTapClient } from '../client-EMXt9_fA.js';
4
4
  import { WrapOpenAIContext, WrapOpenAIOptions, wrapOpenAI, pipeToResponse } from '../adapters/openai.js';
5
5
 
6
6
  interface ExpressUsageTapContext {
@@ -493,6 +493,18 @@ async function compressChatParams(params, usageTap, compression, signal) {
493
493
  if (!messages) {
494
494
  return { params, segments: [] };
495
495
  }
496
+ if (shouldUseUsageTapMessageEndpoint(compression)) {
497
+ const result = await usageTap.compressPromptMessages(source, {
498
+ provider: "usagetap",
499
+ failOpen: compression.failOpen,
500
+ aggressiveness: resolveMessageEndpointAggressiveness(compression),
501
+ signal
502
+ });
503
+ return {
504
+ params: result.compressedInput,
505
+ segments: [{ role: "user", result }]
506
+ };
507
+ }
496
508
  const messageResults = await Promise.all(
497
509
  messages.map(
498
510
  (message) => compressOpenAIMessage(message, usageTap, compression, signal)
@@ -716,8 +728,11 @@ async function compressTextForRole(text, role, usageTap, compression, signal) {
716
728
  provider: roleOptions.provider,
717
729
  failOpen: roleOptions.failOpen,
718
730
  tokenCompanyModel: roleOptions.tokenCompanyModel,
731
+ aggressiveness: roleOptions.aggressiveness,
719
732
  tokenCompanyAggressiveness: roleOptions.tokenCompanyAggressiveness,
720
733
  tokenCompanyAppId: roleOptions.tokenCompanyAppId,
734
+ usageTapCompressionModel: roleOptions.usageTapCompressionModel,
735
+ usageTapCompressionAggressiveness: roleOptions.usageTapCompressionAggressiveness,
721
736
  signal
722
737
  });
723
738
  const compressedText = typeof result.compressedInput === "string" ? result.compressedInput : String(result.compressedInput);
@@ -776,16 +791,67 @@ function resolveRoleCompressionOptions(compression, role) {
776
791
  minTokens: roleOptions?.minTokens ?? compression.minTokens,
777
792
  failOpen: compression.failOpen,
778
793
  tokenCompanyModel: compression.tokenCompanyModel,
794
+ aggressiveness: roleOptions?.aggressiveness ?? resolveAggressiveness(compression, role),
779
795
  tokenCompanyAggressiveness: roleOptions?.tokenCompanyAggressiveness ?? resolveTokenCompanyAggressiveness(compression, role),
780
- tokenCompanyAppId: compression.tokenCompanyAppId
796
+ tokenCompanyAppId: compression.tokenCompanyAppId,
797
+ usageTapCompressionModel: compression.usageTapCompressionModel,
798
+ usageTapCompressionAggressiveness: roleOptions?.usageTapCompressionAggressiveness ?? resolveUsageTapCompressionAggressiveness(compression, role)
781
799
  };
782
800
  }
801
+ function resolveAggressiveness(compression, role) {
802
+ if (typeof compression.aggressiveness === "number") {
803
+ return compression.aggressiveness;
804
+ }
805
+ return compression.aggressiveness?.[role];
806
+ }
783
807
  function resolveTokenCompanyAggressiveness(compression, role) {
784
808
  if (typeof compression.tokenCompanyAggressiveness === "number") {
785
809
  return compression.tokenCompanyAggressiveness;
786
810
  }
787
811
  return compression.tokenCompanyAggressiveness?.[role];
788
812
  }
813
+ function resolveUsageTapCompressionAggressiveness(compression, role) {
814
+ if (typeof compression.usageTapCompressionAggressiveness === "number") {
815
+ return compression.usageTapCompressionAggressiveness;
816
+ }
817
+ return compression.usageTapCompressionAggressiveness?.[role];
818
+ }
819
+ function shouldUseUsageTapMessageEndpoint(compression) {
820
+ if (compression.provider !== "usagetap") {
821
+ return false;
822
+ }
823
+ return Object.values(compression.roles ?? {}).every((setting) => {
824
+ if (typeof setting !== "object" || setting === null) {
825
+ return true;
826
+ }
827
+ return setting.provider === void 0 || setting.provider === "usagetap";
828
+ });
829
+ }
830
+ function resolveMessageEndpointAggressiveness(compression) {
831
+ const base = compression.aggressiveness ?? compression.usageTapCompressionAggressiveness ?? compression.tokenCompanyAggressiveness;
832
+ if (typeof base === "number" || base === void 0) {
833
+ return hasExplicitEnabledRoles(compression) ? buildRoleAggressiveness(compression, base) : base;
834
+ }
835
+ return buildRoleAggressiveness(compression, void 0, base);
836
+ }
837
+ function hasExplicitEnabledRoles(compression) {
838
+ return Object.values(compression.roles ?? {}).some((setting) => setting !== false);
839
+ }
840
+ function buildRoleAggressiveness(compression, fallback, base = {}) {
841
+ const roles = ["system", "user", "tool", "assistant"];
842
+ const result = {};
843
+ for (const role of roles) {
844
+ const roleOptions = resolveRoleCompressionOptions(compression, role);
845
+ if (!roleOptions) {
846
+ continue;
847
+ }
848
+ const roleAggressiveness = roleOptions.aggressiveness ?? roleOptions.usageTapCompressionAggressiveness ?? roleOptions.tokenCompanyAggressiveness ?? base[role] ?? fallback;
849
+ if (roleAggressiveness !== void 0) {
850
+ result[role] = roleAggressiveness;
851
+ }
852
+ }
853
+ return result;
854
+ }
789
855
  function buildPromptCompressionTelemetry(segments) {
790
856
  if (!segments.length) {
791
857
  return void 0;