@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.
- package/README.md +25 -1
- package/dist/adapters/anthropic.cjs +67 -1
- package/dist/adapters/anthropic.cjs.map +1 -1
- package/dist/adapters/anthropic.d.cts +10 -1
- package/dist/adapters/anthropic.d.ts +10 -1
- package/dist/adapters/anthropic.mjs +67 -1
- package/dist/adapters/anthropic.mjs.map +1 -1
- package/dist/adapters/openai.cjs +67 -1
- package/dist/adapters/openai.cjs.map +1 -1
- package/dist/adapters/openai.d.cts +10 -1
- package/dist/adapters/openai.d.ts +10 -1
- package/dist/adapters/openai.mjs +67 -1
- 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 +67 -1
- package/dist/anthropic/index.cjs.map +1 -1
- package/dist/anthropic/index.d.cts +1 -1
- package/dist/anthropic/index.d.ts +1 -1
- package/dist/anthropic/index.mjs +67 -1
- package/dist/anthropic/index.mjs.map +1 -1
- package/dist/{client-BA-QlnRq.d.cts → client-EMXt9_fA.d.cts} +77 -8
- package/dist/{client-BA-QlnRq.d.ts → client-EMXt9_fA.d.ts} +77 -8
- package/dist/express/index.cjs +67 -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 +67 -1
- package/dist/express/index.mjs.map +1 -1
- package/dist/index.cjs +217 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +217 -23
- package/dist/index.mjs.map +1 -1
- package/dist/openai/index.cjs +67 -1
- package/dist/openai/index.cjs.map +1 -1
- package/dist/openai/index.d.cts +1 -1
- package/dist/openai/index.d.ts +1 -1
- package/dist/openai/index.mjs +67 -1
- package/dist/openai/index.mjs.map +1 -1
- 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-
|
|
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-
|
|
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;
|
package/dist/adapters/openai.mjs
CHANGED
|
@@ -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;
|