@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
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as UsageTapClient, B as BeginCallRequest } from './client-
|
|
2
|
-
export {
|
|
1
|
+
import { U as UsageTapClient, B as BeginCallRequest } from './client-EMXt9_fA.cjs';
|
|
2
|
+
export { a4 as AllowedEntitlements, O as BalanceSummary, q as BeginCallOptions, c as BeginCallResponseBody, D as ChangePlanOptions, F as ChangePlanRequest, G as ChangePlanResponseBody, H as ChangePlanStrategy, y as CheckUsageOptions, z as CheckUsageRequest, A as CheckUsageResponseBody, C as CreateCustomerOptions, w as CreateCustomerRequest, x as CreateCustomerResponseBody, L as CustomMeterSlot, M as EndCallOptions, E as EndCallRequest, N as EndCallResponseBody, X as EntitlementHints, af as IdempotencyMetadata, I as IncrementCustomMeterOptions, J as IncrementCustomMeterRequest, K as IncrementCustomMeterResponseBody, ac as LimitType, _ as MeterSnapshot, Z as MeterSummary, $ as MeteredUsage, ae as ModelHints, Y as PlanSummary, j as PromptCompressionInput, m as PromptCompressionMessageRole, k as PromptCompressionMessagesAggressiveness, l as PromptCompressionMessagesInput, t as PromptCompressionMessagesOptions, s as PromptCompressionOptions, P as PromptCompressionProvider, r as PromptCompressionRequest, u as PromptCompressionResponseBody, n as PromptCompressionResult, o as PromptCompressionRoleAggressiveness, v as PromptCompressionStandaloneOptions, a as PromptCompressionTelemetry, a0 as RateLimitsSnapshot, R as RecordPromptCompressionRequest, a1 as RemainingRatios, a3 as RequestedEntitlements, a5 as RetryOptions, a2 as RollingCallsRateLimitState, S as SpendVelocitySnapshot, Q as SpendVelocityWindow, T as SpendVelocityWindowKey, ad as SubscriptionSnapshot, ag as UsageMetricEvent, a6 as UsageTapClientOptions, a7 as UsageTapErrorResponse, aa as UsageTapLogEntry, a8 as UsageTapResultEnvelope, a9 as UsageTapResultStatus, b as UsageTapSuccessResponse, V as VendorHints, ab as WithUsageContext, W as WithUsageOptions, d as compressPrompt, f as compressPromptHeuristic, e as compressPromptMessages, g as compressPromptToon, h as estimatePromptTokens, p as protect, i as protectPromptText } from './client-EMXt9_fA.cjs';
|
|
3
3
|
|
|
4
4
|
type UsageTapErrorCode = "USAGETAP_BROWSER_RUNTIME" | "USAGETAP_AUTH_ERROR" | "USAGETAP_BAD_REQUEST" | "USAGETAP_INVALID_RESPONSE" | "USAGETAP_NETWORK_ERROR" | "USAGETAP_RATE_LIMITED" | "USAGETAP_SERVER_ERROR" | "USAGETAP_RETRY_EXHAUSTED" | "USAGETAP_END_CALL_ERROR";
|
|
5
5
|
interface UsageTapErrorInit {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as UsageTapClient, B as BeginCallRequest } from './client-
|
|
2
|
-
export {
|
|
1
|
+
import { U as UsageTapClient, B as BeginCallRequest } from './client-EMXt9_fA.js';
|
|
2
|
+
export { a4 as AllowedEntitlements, O as BalanceSummary, q as BeginCallOptions, c as BeginCallResponseBody, D as ChangePlanOptions, F as ChangePlanRequest, G as ChangePlanResponseBody, H as ChangePlanStrategy, y as CheckUsageOptions, z as CheckUsageRequest, A as CheckUsageResponseBody, C as CreateCustomerOptions, w as CreateCustomerRequest, x as CreateCustomerResponseBody, L as CustomMeterSlot, M as EndCallOptions, E as EndCallRequest, N as EndCallResponseBody, X as EntitlementHints, af as IdempotencyMetadata, I as IncrementCustomMeterOptions, J as IncrementCustomMeterRequest, K as IncrementCustomMeterResponseBody, ac as LimitType, _ as MeterSnapshot, Z as MeterSummary, $ as MeteredUsage, ae as ModelHints, Y as PlanSummary, j as PromptCompressionInput, m as PromptCompressionMessageRole, k as PromptCompressionMessagesAggressiveness, l as PromptCompressionMessagesInput, t as PromptCompressionMessagesOptions, s as PromptCompressionOptions, P as PromptCompressionProvider, r as PromptCompressionRequest, u as PromptCompressionResponseBody, n as PromptCompressionResult, o as PromptCompressionRoleAggressiveness, v as PromptCompressionStandaloneOptions, a as PromptCompressionTelemetry, a0 as RateLimitsSnapshot, R as RecordPromptCompressionRequest, a1 as RemainingRatios, a3 as RequestedEntitlements, a5 as RetryOptions, a2 as RollingCallsRateLimitState, S as SpendVelocitySnapshot, Q as SpendVelocityWindow, T as SpendVelocityWindowKey, ad as SubscriptionSnapshot, ag as UsageMetricEvent, a6 as UsageTapClientOptions, a7 as UsageTapErrorResponse, aa as UsageTapLogEntry, a8 as UsageTapResultEnvelope, a9 as UsageTapResultStatus, b as UsageTapSuccessResponse, V as VendorHints, ab as WithUsageContext, W as WithUsageOptions, d as compressPrompt, f as compressPromptHeuristic, e as compressPromptMessages, g as compressPromptToon, h as estimatePromptTokens, p as protect, i as protectPromptText } from './client-EMXt9_fA.js';
|
|
3
3
|
|
|
4
4
|
type UsageTapErrorCode = "USAGETAP_BROWSER_RUNTIME" | "USAGETAP_AUTH_ERROR" | "USAGETAP_BAD_REQUEST" | "USAGETAP_INVALID_RESPONSE" | "USAGETAP_NETWORK_ERROR" | "USAGETAP_RATE_LIMITED" | "USAGETAP_SERVER_ERROR" | "USAGETAP_RETRY_EXHAUSTED" | "USAGETAP_END_CALL_ERROR";
|
|
5
5
|
interface UsageTapErrorInit {
|
package/dist/index.mjs
CHANGED
|
@@ -117,26 +117,32 @@ async function runWithRetry(operation, options, shouldRetry, onSchedule, signal)
|
|
|
117
117
|
var DEFAULT_TTC_ENDPOINT = "https://api.thetokencompany.com/v1/compress";
|
|
118
118
|
var DEFAULT_TTC_MODEL = "bear-2";
|
|
119
119
|
var DEFAULT_TTC_AGGRESSIVENESS = 0.2;
|
|
120
|
+
var DEFAULT_USAGETAP_COMPRESSION_ENDPOINT = "https://compress.usagetap.com/v1/compress";
|
|
121
|
+
var DEFAULT_USAGETAP_MESSAGES_COMPRESSION_ENDPOINT = "https://compress.usagetap.com/v1/messages/compress";
|
|
120
122
|
var PROTECTED_TEXT_PATTERN = /<ttc_safe>[\s\S]*?<\/ttc_safe>|<usagetap_safe>[\s\S]*?<\/usagetap_safe>/g;
|
|
121
123
|
function protectPromptText(text) {
|
|
122
124
|
return `<ttc_safe>${text}</ttc_safe>`;
|
|
123
125
|
}
|
|
124
126
|
var protect = protectPromptText;
|
|
125
127
|
async function compressPrompt(options) {
|
|
128
|
+
const input = resolvePromptCompressionInput(options);
|
|
126
129
|
try {
|
|
130
|
+
if (options.provider === "usagetap") {
|
|
131
|
+
return await compressWithUsageTap(options);
|
|
132
|
+
}
|
|
127
133
|
if (options.provider === "thetokencompany" || options.tokenCompanyApiKey) {
|
|
128
134
|
return await compressWithTheTokenCompany(options);
|
|
129
135
|
}
|
|
130
136
|
if (options.provider === "toon") {
|
|
131
|
-
return compressPromptToon(
|
|
137
|
+
return compressPromptToon(input);
|
|
132
138
|
}
|
|
133
|
-
return compressPromptHeuristic(
|
|
139
|
+
return compressPromptHeuristic(input);
|
|
134
140
|
} catch (error) {
|
|
135
141
|
if (options.failOpen === false) {
|
|
136
142
|
throw error;
|
|
137
143
|
}
|
|
138
144
|
return createPromptCompressionFallback(
|
|
139
|
-
|
|
145
|
+
input,
|
|
140
146
|
options.provider ?? (options.tokenCompanyApiKey ? "thetokencompany" : "heuristic"),
|
|
141
147
|
error
|
|
142
148
|
);
|
|
@@ -170,6 +176,20 @@ function compressPromptToon(input) {
|
|
|
170
176
|
"json-minify"
|
|
171
177
|
]);
|
|
172
178
|
}
|
|
179
|
+
async function compressPromptMessages(options) {
|
|
180
|
+
try {
|
|
181
|
+
return await compressMessagesWithUsageTap(options);
|
|
182
|
+
} catch (error) {
|
|
183
|
+
if (options.failOpen === false) {
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
return createPromptCompressionFallback(
|
|
187
|
+
options.input,
|
|
188
|
+
options.provider ?? "usagetap",
|
|
189
|
+
error
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
173
193
|
async function compressWithTheTokenCompany(options) {
|
|
174
194
|
if (!options.tokenCompanyApiKey) {
|
|
175
195
|
throw new Error(
|
|
@@ -182,41 +202,131 @@ async function compressWithTheTokenCompany(options) {
|
|
|
182
202
|
"A fetch implementation is required for The Token Company compression"
|
|
183
203
|
);
|
|
184
204
|
}
|
|
205
|
+
return compressWithCompatibleRemoteProvider({
|
|
206
|
+
options,
|
|
207
|
+
provider: "thetokencompany",
|
|
208
|
+
endpoint: options.tokenCompanyEndpoint ?? DEFAULT_TTC_ENDPOINT,
|
|
209
|
+
model: options.model ?? options.tokenCompanyModel ?? DEFAULT_TTC_MODEL,
|
|
210
|
+
aggressiveness: options.aggressiveness ?? options.tokenCompanyAggressiveness ?? DEFAULT_TTC_AGGRESSIVENESS,
|
|
211
|
+
apiKey: options.tokenCompanyApiKey,
|
|
212
|
+
appId: options.tokenCompanyAppId,
|
|
213
|
+
providerLabel: "The Token Company"
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
async function compressWithUsageTap(options) {
|
|
217
|
+
const fetchCandidate = options.fetchImpl ?? globalThis.fetch;
|
|
218
|
+
if (typeof fetchCandidate !== "function") {
|
|
219
|
+
throw new Error(
|
|
220
|
+
"A fetch implementation is required for UsageTap prompt compression"
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
return compressWithCompatibleRemoteProvider({
|
|
224
|
+
options,
|
|
225
|
+
provider: "usagetap",
|
|
226
|
+
endpoint: options.usageTapCompressionEndpoint ?? DEFAULT_USAGETAP_COMPRESSION_ENDPOINT,
|
|
227
|
+
model: options.model ?? options.usageTapCompressionModel ?? options.tokenCompanyModel ?? DEFAULT_TTC_MODEL,
|
|
228
|
+
aggressiveness: options.aggressiveness ?? options.usageTapCompressionAggressiveness ?? options.tokenCompanyAggressiveness ?? DEFAULT_TTC_AGGRESSIVENESS,
|
|
229
|
+
apiKey: options.usageTapCompressionApiKey,
|
|
230
|
+
appId: options.tokenCompanyAppId,
|
|
231
|
+
providerLabel: "UsageTap prompt compression"
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
async function compressMessagesWithUsageTap(options) {
|
|
235
|
+
const fetchCandidate = options.fetchImpl ?? globalThis.fetch;
|
|
236
|
+
if (typeof fetchCandidate !== "function") {
|
|
237
|
+
throw new Error(
|
|
238
|
+
"A fetch implementation is required for UsageTap prompt message compression"
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
const aggressiveness = options.aggressiveness ?? options.usageTapCompressionAggressiveness ?? DEFAULT_TTC_AGGRESSIVENESS;
|
|
242
|
+
validateAggressiveness(
|
|
243
|
+
aggressiveness,
|
|
244
|
+
"UsageTap prompt message compression"
|
|
245
|
+
);
|
|
185
246
|
const original = stableStringifyInput(options.input);
|
|
186
|
-
const
|
|
247
|
+
const headers = {
|
|
248
|
+
"content-type": "application/json"
|
|
249
|
+
};
|
|
250
|
+
if (options.usageTapCompressionApiKey) {
|
|
251
|
+
headers.authorization = `Bearer ${options.usageTapCompressionApiKey}`;
|
|
252
|
+
}
|
|
253
|
+
const response = await fetchCandidate(
|
|
254
|
+
options.usageTapCompressionMessagesEndpoint ?? DEFAULT_USAGETAP_MESSAGES_COMPRESSION_ENDPOINT,
|
|
255
|
+
{
|
|
256
|
+
method: "POST",
|
|
257
|
+
headers,
|
|
258
|
+
body: JSON.stringify({
|
|
259
|
+
...cloneInputRecord(options.input),
|
|
260
|
+
compression_settings: { aggressiveness }
|
|
261
|
+
}),
|
|
262
|
+
signal: options.signal
|
|
263
|
+
}
|
|
264
|
+
);
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
throw new Error(
|
|
267
|
+
`UsageTap prompt message compression failed with HTTP ${response.status}`
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
const payload = await response.json();
|
|
271
|
+
const compressedInput = payload.compressed_request ?? payload.compressedInput ?? payload.compressed ?? (payload.messages !== void 0 ? { ...cloneInputRecord(options.input), messages: payload.messages } : void 0);
|
|
272
|
+
if (compressedInput === void 0) {
|
|
273
|
+
throw new Error(
|
|
274
|
+
"UsageTap prompt message compression response did not include compressed content"
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
const compressed = stableStringifyInput(compressedInput);
|
|
278
|
+
const tokenCounts = normalizeCompatibleTokenCounts(payload);
|
|
279
|
+
return buildResult(
|
|
280
|
+
options.input,
|
|
281
|
+
compressedInput,
|
|
282
|
+
"usagetap",
|
|
283
|
+
original,
|
|
284
|
+
compressed,
|
|
285
|
+
["usagetap", "messages-endpoint"],
|
|
286
|
+
tokenCounts
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
async function compressWithCompatibleRemoteProvider(args) {
|
|
290
|
+
const { options, provider, endpoint, model, aggressiveness, apiKey, appId, providerLabel } = args;
|
|
291
|
+
const fetchCandidate = options.fetchImpl ?? globalThis.fetch;
|
|
292
|
+
const sourceInput = resolvePromptCompressionInput(options);
|
|
293
|
+
const original = stableStringifyInput(sourceInput);
|
|
294
|
+
const heuristic = compressPromptHeuristic(sourceInput);
|
|
187
295
|
const input = typeof heuristic.compressedInput === "string" ? heuristic.compressedInput : stableStringifyInput(heuristic.compressedInput);
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
296
|
+
if (!isValidAggressiveness(aggressiveness)) {
|
|
297
|
+
throw new Error(`${providerLabel} aggressiveness must be between 0.0 and 1.0`);
|
|
298
|
+
}
|
|
299
|
+
const headers = {
|
|
300
|
+
"content-type": "application/json"
|
|
301
|
+
};
|
|
302
|
+
if (apiKey) {
|
|
303
|
+
headers.authorization = `Bearer ${apiKey}`;
|
|
192
304
|
}
|
|
193
305
|
const response = await fetchCandidate(
|
|
194
|
-
|
|
306
|
+
endpoint,
|
|
195
307
|
{
|
|
196
308
|
method: "POST",
|
|
197
|
-
headers
|
|
198
|
-
authorization: `Bearer ${options.tokenCompanyApiKey}`,
|
|
199
|
-
"content-type": "application/json"
|
|
200
|
-
},
|
|
309
|
+
headers,
|
|
201
310
|
body: JSON.stringify({
|
|
202
311
|
model,
|
|
203
312
|
input,
|
|
313
|
+
...provider === "usagetap" ? { text: input } : {},
|
|
204
314
|
compression_settings: { aggressiveness },
|
|
205
|
-
...
|
|
315
|
+
...appId ? { app_id: appId } : {}
|
|
206
316
|
}),
|
|
207
317
|
signal: options.signal
|
|
208
318
|
}
|
|
209
319
|
);
|
|
210
320
|
if (!response.ok) {
|
|
211
321
|
throw new Error(
|
|
212
|
-
|
|
322
|
+
`${providerLabel} failed with HTTP ${response.status}`
|
|
213
323
|
);
|
|
214
324
|
}
|
|
215
325
|
const payload = await response.json();
|
|
216
326
|
const tokenCompanyResult = normalizeTheTokenCompanyCompressResponse(payload);
|
|
217
327
|
const compressedInput = payload.compressedInput ?? payload.compressed ?? tokenCompanyResult?.output ?? payload.output ?? payload.text;
|
|
218
328
|
if (compressedInput === void 0) {
|
|
219
|
-
throw new Error(
|
|
329
|
+
throw new Error(`${providerLabel} response did not include compressed content`);
|
|
220
330
|
}
|
|
221
331
|
const compressed = stableStringifyInput(compressedInput);
|
|
222
332
|
const tokenCounts = tokenCompanyResult ? {
|
|
@@ -225,15 +335,55 @@ async function compressWithTheTokenCompany(options) {
|
|
|
225
335
|
savedTokens: tokenCompanyResult.tokens_saved
|
|
226
336
|
} : void 0;
|
|
227
337
|
return buildResult(
|
|
228
|
-
|
|
338
|
+
sourceInput,
|
|
229
339
|
compressedInput,
|
|
230
|
-
|
|
340
|
+
provider,
|
|
231
341
|
original,
|
|
232
342
|
compressed,
|
|
233
|
-
[...heuristic.techniques,
|
|
343
|
+
[...heuristic.techniques, provider],
|
|
234
344
|
tokenCounts
|
|
235
345
|
);
|
|
236
346
|
}
|
|
347
|
+
function resolvePromptCompressionInput(options) {
|
|
348
|
+
if (options.input !== void 0) {
|
|
349
|
+
return options.input;
|
|
350
|
+
}
|
|
351
|
+
if (options.text !== void 0) {
|
|
352
|
+
return options.text;
|
|
353
|
+
}
|
|
354
|
+
throw new Error("Prompt compression requires input or text");
|
|
355
|
+
}
|
|
356
|
+
function validateAggressiveness(value, label) {
|
|
357
|
+
if (typeof value === "number") {
|
|
358
|
+
if (!isValidAggressiveness(value)) {
|
|
359
|
+
throw new Error(`${label} aggressiveness must be between 0.0 and 1.0`);
|
|
360
|
+
}
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
for (const aggressiveness of Object.values(value)) {
|
|
364
|
+
if (aggressiveness !== void 0 && !isValidAggressiveness(aggressiveness)) {
|
|
365
|
+
throw new Error(`${label} aggressiveness must be between 0.0 and 1.0`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
function isValidAggressiveness(value) {
|
|
370
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1;
|
|
371
|
+
}
|
|
372
|
+
function cloneInputRecord(input) {
|
|
373
|
+
return input && typeof input === "object" && !Array.isArray(input) ? { ...input } : { input };
|
|
374
|
+
}
|
|
375
|
+
function normalizeCompatibleTokenCounts(data) {
|
|
376
|
+
const inputTokens = typeof data.input_tokens === "number" ? data.input_tokens : data.original_input_tokens;
|
|
377
|
+
const outputTokens = data.output_tokens;
|
|
378
|
+
if (typeof inputTokens !== "number" || typeof outputTokens !== "number") {
|
|
379
|
+
return void 0;
|
|
380
|
+
}
|
|
381
|
+
return {
|
|
382
|
+
originalTokens: inputTokens,
|
|
383
|
+
compressedTokens: outputTokens,
|
|
384
|
+
savedTokens: typeof data.tokens_saved === "number" ? data.tokens_saved : inputTokens - outputTokens
|
|
385
|
+
};
|
|
386
|
+
}
|
|
237
387
|
function normalizeTheTokenCompanyCompressResponse(data) {
|
|
238
388
|
if (typeof data.output !== "string" || typeof data.output_tokens !== "number") {
|
|
239
389
|
return void 0;
|
|
@@ -618,7 +768,7 @@ var IDEMPOTENCY_HEADER = "idempotency-key";
|
|
|
618
768
|
var SDK_HEADER = "x-usage-sdk";
|
|
619
769
|
var USER_AGENT = "UsageTapClient";
|
|
620
770
|
var CANONICAL_MEDIA_TYPE = "application/vnd.usagetap.v1+json";
|
|
621
|
-
var SDK_VERSION = "1.
|
|
771
|
+
var SDK_VERSION = "1.2.0" ;
|
|
622
772
|
var HAS_WINDOW = typeof globalThis !== "undefined" && typeof globalThis.window !== "undefined";
|
|
623
773
|
var UsageTapClient = class {
|
|
624
774
|
apiKey;
|
|
@@ -635,9 +785,16 @@ var UsageTapClient = class {
|
|
|
635
785
|
autoIdempotency;
|
|
636
786
|
tokenCompanyApiKey;
|
|
637
787
|
tokenCompanyEndpoint;
|
|
788
|
+
model;
|
|
638
789
|
tokenCompanyModel;
|
|
790
|
+
aggressiveness;
|
|
639
791
|
tokenCompanyAggressiveness;
|
|
640
792
|
tokenCompanyAppId;
|
|
793
|
+
usageTapCompressionApiKey;
|
|
794
|
+
usageTapCompressionEndpoint;
|
|
795
|
+
usageTapCompressionMessagesEndpoint;
|
|
796
|
+
usageTapCompressionModel;
|
|
797
|
+
usageTapCompressionAggressiveness;
|
|
641
798
|
constructor(options) {
|
|
642
799
|
if (!options) {
|
|
643
800
|
throw new UsageTapError(
|
|
@@ -685,9 +842,16 @@ var UsageTapClient = class {
|
|
|
685
842
|
this.autoIdempotency = options.autoIdempotency ?? true;
|
|
686
843
|
this.tokenCompanyApiKey = options.tokenCompanyApiKey;
|
|
687
844
|
this.tokenCompanyEndpoint = options.tokenCompanyEndpoint;
|
|
845
|
+
this.model = options.model;
|
|
688
846
|
this.tokenCompanyModel = options.tokenCompanyModel;
|
|
847
|
+
this.aggressiveness = options.aggressiveness;
|
|
689
848
|
this.tokenCompanyAggressiveness = options.tokenCompanyAggressiveness;
|
|
690
849
|
this.tokenCompanyAppId = options.tokenCompanyAppId;
|
|
850
|
+
this.usageTapCompressionApiKey = options.usageTapCompressionApiKey ?? options.apiKey;
|
|
851
|
+
this.usageTapCompressionEndpoint = options.usageTapCompressionEndpoint;
|
|
852
|
+
this.usageTapCompressionMessagesEndpoint = options.usageTapCompressionMessagesEndpoint;
|
|
853
|
+
this.usageTapCompressionModel = options.usageTapCompressionModel;
|
|
854
|
+
this.usageTapCompressionAggressiveness = options.usageTapCompressionAggressiveness;
|
|
691
855
|
}
|
|
692
856
|
async beginCall(request, options = {}) {
|
|
693
857
|
const idempotencyKey = request.idempotencyKey ?? request.idempotency ?? (this.autoIdempotency ? this.idempotencyGenerator() : void 0);
|
|
@@ -717,11 +881,22 @@ var UsageTapClient = class {
|
|
|
717
881
|
"promptCompress requires callId"
|
|
718
882
|
);
|
|
719
883
|
}
|
|
720
|
-
const
|
|
884
|
+
const requestInput = request.input ?? request.text;
|
|
885
|
+
if (requestInput === void 0) {
|
|
886
|
+
throw new UsageTapError(
|
|
887
|
+
"USAGETAP_BAD_REQUEST",
|
|
888
|
+
"promptCompress requires input or text"
|
|
889
|
+
);
|
|
890
|
+
}
|
|
891
|
+
const result = await this.compressPromptInput(requestInput, {
|
|
721
892
|
provider: request.provider,
|
|
893
|
+
model: request.model,
|
|
722
894
|
tokenCompanyModel: request.tokenCompanyModel,
|
|
895
|
+
aggressiveness: request.aggressiveness,
|
|
723
896
|
tokenCompanyAggressiveness: request.tokenCompanyAggressiveness,
|
|
724
897
|
tokenCompanyAppId: request.tokenCompanyAppId,
|
|
898
|
+
usageTapCompressionModel: request.usageTapCompressionModel,
|
|
899
|
+
usageTapCompressionAggressiveness: request.usageTapCompressionAggressiveness,
|
|
725
900
|
signal: options.signal
|
|
726
901
|
});
|
|
727
902
|
try {
|
|
@@ -736,7 +911,7 @@ var UsageTapClient = class {
|
|
|
736
911
|
} catch (error) {
|
|
737
912
|
return {
|
|
738
913
|
...createPromptCompressionFallback(
|
|
739
|
-
|
|
914
|
+
requestInput,
|
|
740
915
|
request.provider ?? result.provider,
|
|
741
916
|
error
|
|
742
917
|
),
|
|
@@ -750,9 +925,28 @@ var UsageTapClient = class {
|
|
|
750
925
|
provider: options.provider,
|
|
751
926
|
tokenCompanyApiKey: this.tokenCompanyApiKey,
|
|
752
927
|
tokenCompanyEndpoint: this.tokenCompanyEndpoint,
|
|
928
|
+
model: options.model ?? this.model,
|
|
753
929
|
tokenCompanyModel: options.tokenCompanyModel ?? this.tokenCompanyModel,
|
|
930
|
+
aggressiveness: options.aggressiveness ?? this.aggressiveness,
|
|
754
931
|
tokenCompanyAggressiveness: options.tokenCompanyAggressiveness ?? this.tokenCompanyAggressiveness,
|
|
755
932
|
tokenCompanyAppId: options.tokenCompanyAppId ?? this.tokenCompanyAppId,
|
|
933
|
+
usageTapCompressionApiKey: this.usageTapCompressionApiKey,
|
|
934
|
+
usageTapCompressionEndpoint: this.usageTapCompressionEndpoint,
|
|
935
|
+
usageTapCompressionModel: options.usageTapCompressionModel ?? this.usageTapCompressionModel,
|
|
936
|
+
usageTapCompressionAggressiveness: options.usageTapCompressionAggressiveness ?? this.usageTapCompressionAggressiveness,
|
|
937
|
+
fetchImpl: this.fetchImpl,
|
|
938
|
+
signal: options.signal,
|
|
939
|
+
failOpen: options.failOpen
|
|
940
|
+
});
|
|
941
|
+
}
|
|
942
|
+
async compressPromptMessages(input, options = {}) {
|
|
943
|
+
return compressPromptMessages({
|
|
944
|
+
input,
|
|
945
|
+
provider: options.provider ?? "usagetap",
|
|
946
|
+
usageTapCompressionApiKey: this.usageTapCompressionApiKey,
|
|
947
|
+
usageTapCompressionMessagesEndpoint: this.usageTapCompressionMessagesEndpoint,
|
|
948
|
+
aggressiveness: options.aggressiveness ?? this.aggressiveness,
|
|
949
|
+
usageTapCompressionAggressiveness: options.usageTapCompressionAggressiveness ?? this.usageTapCompressionAggressiveness,
|
|
756
950
|
fetchImpl: this.fetchImpl,
|
|
757
951
|
signal: options.signal,
|
|
758
952
|
failOpen: options.failOpen
|
|
@@ -1599,6 +1793,6 @@ async function finalizeCall(callState, usageTap, error, usage) {
|
|
|
1599
1793
|
}
|
|
1600
1794
|
}
|
|
1601
1795
|
|
|
1602
|
-
export { UsageTapClient, UsageTapError, compressPrompt, compressPromptHeuristic, compressPromptToon, createIdempotencyKey, estimatePromptTokens, isUsageTapError, protect, protectPromptText, wrapFetch };
|
|
1796
|
+
export { UsageTapClient, UsageTapError, compressPrompt, compressPromptHeuristic, compressPromptMessages, compressPromptToon, createIdempotencyKey, estimatePromptTokens, isUsageTapError, protect, protectPromptText, wrapFetch };
|
|
1603
1797
|
//# sourceMappingURL=index.mjs.map
|
|
1604
1798
|
//# sourceMappingURL=index.mjs.map
|