@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
package/dist/express/index.d.cts
CHANGED
|
@@ -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-
|
|
3
|
+
import { U as UsageTapClient } from '../client-BD8O2J8Z.cjs';
|
|
4
4
|
import { WrapOpenAIContext, WrapOpenAIOptions, wrapOpenAI, pipeToResponse } from '../adapters/openai.cjs';
|
|
5
5
|
|
|
6
6
|
interface ExpressUsageTapContext {
|
package/dist/express/index.d.ts
CHANGED
|
@@ -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-
|
|
3
|
+
import { U as UsageTapClient } from '../client-BD8O2J8Z.js';
|
|
4
4
|
import { WrapOpenAIContext, WrapOpenAIOptions, wrapOpenAI, pipeToResponse } from '../adapters/openai.js';
|
|
5
5
|
|
|
6
6
|
interface ExpressUsageTapContext {
|
package/dist/express/index.mjs
CHANGED
|
@@ -493,6 +493,24 @@ async function compressChatParams(params, usageTap, compression, signal) {
|
|
|
493
493
|
if (!messages) {
|
|
494
494
|
return { params, segments: [] };
|
|
495
495
|
}
|
|
496
|
+
if (isBelowMinContextTokens(
|
|
497
|
+
{ messages, tools: source.tools },
|
|
498
|
+
compression.minContextTokens
|
|
499
|
+
)) {
|
|
500
|
+
return { params, segments: [] };
|
|
501
|
+
}
|
|
502
|
+
if (shouldUseUsageTapMessageEndpoint(compression)) {
|
|
503
|
+
const result = await usageTap.compressPromptMessages(source, {
|
|
504
|
+
provider: "usagetap",
|
|
505
|
+
failOpen: compression.failOpen,
|
|
506
|
+
aggressiveness: resolveMessageEndpointAggressiveness(compression),
|
|
507
|
+
signal
|
|
508
|
+
});
|
|
509
|
+
return {
|
|
510
|
+
params: result.compressedInput,
|
|
511
|
+
segments: [{ role: "user", result }]
|
|
512
|
+
};
|
|
513
|
+
}
|
|
496
514
|
const messageResults = await Promise.all(
|
|
497
515
|
messages.map(
|
|
498
516
|
(message) => compressOpenAIMessage(message, usageTap, compression, signal)
|
|
@@ -512,6 +530,16 @@ async function compressResponsesParams(params, usageTap, compression, signal) {
|
|
|
512
530
|
}
|
|
513
531
|
const source = cloneRecord(params);
|
|
514
532
|
const segments = [];
|
|
533
|
+
if (isBelowMinContextTokens(
|
|
534
|
+
{
|
|
535
|
+
instructions: source.instructions,
|
|
536
|
+
input: source.input,
|
|
537
|
+
tools: source.tools
|
|
538
|
+
},
|
|
539
|
+
compression.minContextTokens
|
|
540
|
+
)) {
|
|
541
|
+
return { params, segments };
|
|
542
|
+
}
|
|
515
543
|
if (typeof source.instructions === "string") {
|
|
516
544
|
const compressed = await compressTextForRole(
|
|
517
545
|
source.instructions,
|
|
@@ -716,8 +744,11 @@ async function compressTextForRole(text, role, usageTap, compression, signal) {
|
|
|
716
744
|
provider: roleOptions.provider,
|
|
717
745
|
failOpen: roleOptions.failOpen,
|
|
718
746
|
tokenCompanyModel: roleOptions.tokenCompanyModel,
|
|
747
|
+
aggressiveness: roleOptions.aggressiveness,
|
|
719
748
|
tokenCompanyAggressiveness: roleOptions.tokenCompanyAggressiveness,
|
|
720
749
|
tokenCompanyAppId: roleOptions.tokenCompanyAppId,
|
|
750
|
+
usageTapCompressionModel: roleOptions.usageTapCompressionModel,
|
|
751
|
+
usageTapCompressionAggressiveness: roleOptions.usageTapCompressionAggressiveness,
|
|
721
752
|
signal
|
|
722
753
|
});
|
|
723
754
|
const compressedText = typeof result.compressedInput === "string" ? result.compressedInput : String(result.compressedInput);
|
|
@@ -738,6 +769,9 @@ function normalizePromptCompressionOptions(options) {
|
|
|
738
769
|
}
|
|
739
770
|
return options;
|
|
740
771
|
}
|
|
772
|
+
function isBelowMinContextTokens(context, minContextTokens) {
|
|
773
|
+
return typeof minContextTokens === "number" && estimatePromptTokens(context) < Math.max(0, minContextTokens);
|
|
774
|
+
}
|
|
741
775
|
function resolveEffectivePromptCompressionOptions(defaults, override) {
|
|
742
776
|
if (override === false) {
|
|
743
777
|
return void 0;
|
|
@@ -776,16 +810,67 @@ function resolveRoleCompressionOptions(compression, role) {
|
|
|
776
810
|
minTokens: roleOptions?.minTokens ?? compression.minTokens,
|
|
777
811
|
failOpen: compression.failOpen,
|
|
778
812
|
tokenCompanyModel: compression.tokenCompanyModel,
|
|
813
|
+
aggressiveness: roleOptions?.aggressiveness ?? resolveAggressiveness(compression, role),
|
|
779
814
|
tokenCompanyAggressiveness: roleOptions?.tokenCompanyAggressiveness ?? resolveTokenCompanyAggressiveness(compression, role),
|
|
780
|
-
tokenCompanyAppId: compression.tokenCompanyAppId
|
|
815
|
+
tokenCompanyAppId: compression.tokenCompanyAppId,
|
|
816
|
+
usageTapCompressionModel: compression.usageTapCompressionModel,
|
|
817
|
+
usageTapCompressionAggressiveness: roleOptions?.usageTapCompressionAggressiveness ?? resolveUsageTapCompressionAggressiveness(compression, role)
|
|
781
818
|
};
|
|
782
819
|
}
|
|
820
|
+
function resolveAggressiveness(compression, role) {
|
|
821
|
+
if (typeof compression.aggressiveness === "number") {
|
|
822
|
+
return compression.aggressiveness;
|
|
823
|
+
}
|
|
824
|
+
return compression.aggressiveness?.[role];
|
|
825
|
+
}
|
|
783
826
|
function resolveTokenCompanyAggressiveness(compression, role) {
|
|
784
827
|
if (typeof compression.tokenCompanyAggressiveness === "number") {
|
|
785
828
|
return compression.tokenCompanyAggressiveness;
|
|
786
829
|
}
|
|
787
830
|
return compression.tokenCompanyAggressiveness?.[role];
|
|
788
831
|
}
|
|
832
|
+
function resolveUsageTapCompressionAggressiveness(compression, role) {
|
|
833
|
+
if (typeof compression.usageTapCompressionAggressiveness === "number") {
|
|
834
|
+
return compression.usageTapCompressionAggressiveness;
|
|
835
|
+
}
|
|
836
|
+
return compression.usageTapCompressionAggressiveness?.[role];
|
|
837
|
+
}
|
|
838
|
+
function shouldUseUsageTapMessageEndpoint(compression) {
|
|
839
|
+
if (compression.provider !== "usagetap") {
|
|
840
|
+
return false;
|
|
841
|
+
}
|
|
842
|
+
return Object.values(compression.roles ?? {}).every((setting) => {
|
|
843
|
+
if (typeof setting !== "object" || setting === null) {
|
|
844
|
+
return true;
|
|
845
|
+
}
|
|
846
|
+
return setting.provider === void 0 || setting.provider === "usagetap";
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
function resolveMessageEndpointAggressiveness(compression) {
|
|
850
|
+
const base = compression.aggressiveness ?? compression.usageTapCompressionAggressiveness ?? compression.tokenCompanyAggressiveness;
|
|
851
|
+
if (typeof base === "number" || base === void 0) {
|
|
852
|
+
return hasExplicitEnabledRoles(compression) ? buildRoleAggressiveness(compression, base) : base;
|
|
853
|
+
}
|
|
854
|
+
return buildRoleAggressiveness(compression, void 0, base);
|
|
855
|
+
}
|
|
856
|
+
function hasExplicitEnabledRoles(compression) {
|
|
857
|
+
return Object.values(compression.roles ?? {}).some((setting) => setting !== false);
|
|
858
|
+
}
|
|
859
|
+
function buildRoleAggressiveness(compression, fallback, base = {}) {
|
|
860
|
+
const roles = ["system", "user", "tool", "assistant"];
|
|
861
|
+
const result = {};
|
|
862
|
+
for (const role of roles) {
|
|
863
|
+
const roleOptions = resolveRoleCompressionOptions(compression, role);
|
|
864
|
+
if (!roleOptions) {
|
|
865
|
+
continue;
|
|
866
|
+
}
|
|
867
|
+
const roleAggressiveness = roleOptions.aggressiveness ?? roleOptions.usageTapCompressionAggressiveness ?? roleOptions.tokenCompanyAggressiveness ?? base[role] ?? fallback;
|
|
868
|
+
if (roleAggressiveness !== void 0) {
|
|
869
|
+
result[role] = roleAggressiveness;
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
return result;
|
|
873
|
+
}
|
|
789
874
|
function buildPromptCompressionTelemetry(segments) {
|
|
790
875
|
if (!segments.length) {
|
|
791
876
|
return void 0;
|