promptopskit 0.6.2 → 0.7.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 +38 -28
- package/dist/{chunk-VMLGUI4F.js → chunk-35NN5F6O.js} +2 -2
- package/dist/{chunk-GLT3YYWK.js → chunk-3G3EAV7H.js} +2 -2
- package/dist/{chunk-XEZJZ3IG.js → chunk-6NOUETAC.js} +2 -2
- package/dist/{chunk-JR7252DG.js → chunk-F552OBUV.js} +116 -6
- package/dist/chunk-F552OBUV.js.map +1 -0
- package/dist/{chunk-FNCIBZJF.js → chunk-FICB2ZSK.js} +3 -3
- package/dist/{chunk-55B7QQBK.js → chunk-OWMP5NMV.js} +2 -2
- package/dist/{chunk-IPFD5Y3O.js → chunk-R65RAHAG.js} +3 -3
- package/dist/{chunk-UY5OKMVP.js → chunk-ULVY473P.js} +27 -2
- package/dist/chunk-ULVY473P.js.map +1 -0
- package/dist/cli/index.js +37 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +148 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -5
- package/dist/index.d.ts +8 -5
- package/dist/index.js +20 -11
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +137 -5
- package/dist/providers/anthropic.cjs.map +1 -1
- package/dist/providers/anthropic.d.cts +2 -2
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/anthropic.js +3 -3
- package/dist/providers/gemini.cjs +137 -5
- package/dist/providers/gemini.cjs.map +1 -1
- package/dist/providers/gemini.d.cts +2 -2
- package/dist/providers/gemini.d.ts +2 -2
- package/dist/providers/gemini.js +3 -3
- package/dist/providers/llmasaservice.cjs +137 -5
- package/dist/providers/llmasaservice.cjs.map +1 -1
- package/dist/providers/llmasaservice.d.cts +2 -2
- package/dist/providers/llmasaservice.d.ts +2 -2
- package/dist/providers/llmasaservice.js +4 -4
- package/dist/providers/openai-responses.cjs +137 -5
- package/dist/providers/openai-responses.cjs.map +1 -1
- package/dist/providers/openai-responses.d.cts +2 -2
- package/dist/providers/openai-responses.d.ts +2 -2
- package/dist/providers/openai-responses.js +3 -3
- package/dist/providers/openai.cjs +137 -5
- package/dist/providers/openai.cjs.map +1 -1
- package/dist/providers/openai.d.cts +2 -2
- package/dist/providers/openai.d.ts +2 -2
- package/dist/providers/openai.js +3 -3
- package/dist/providers/openrouter.cjs +137 -5
- package/dist/providers/openrouter.cjs.map +1 -1
- package/dist/providers/openrouter.d.cts +2 -2
- package/dist/providers/openrouter.d.ts +2 -2
- package/dist/providers/openrouter.js +4 -4
- package/dist/{schema-CuYsv8JA.d.cts → schema-DBcSns_b.d.cts} +192 -0
- package/dist/{schema-CuYsv8JA.d.ts → schema-DBcSns_b.d.ts} +192 -0
- package/dist/testing.cjs +11 -0
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/dist/{types-DpK0mTHL.d.ts → types-8T2D5KB5.d.cts} +20 -2
- package/dist/{types-UA_p9uJy.d.cts → types-BlLXT5Qb.d.ts} +20 -2
- package/dist/usagetap/index.d.cts +2 -2
- package/dist/usagetap/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-JR7252DG.js.map +0 -1
- package/dist/chunk-UY5OKMVP.js.map +0 -1
- /package/dist/{chunk-VMLGUI4F.js.map → chunk-35NN5F6O.js.map} +0 -0
- /package/dist/{chunk-GLT3YYWK.js.map → chunk-3G3EAV7H.js.map} +0 -0
- /package/dist/{chunk-XEZJZ3IG.js.map → chunk-6NOUETAC.js.map} +0 -0
- /package/dist/{chunk-FNCIBZJF.js.map → chunk-FICB2ZSK.js.map} +0 -0
- /package/dist/{chunk-55B7QQBK.js.map → chunk-OWMP5NMV.js.map} +0 -0
- /package/dist/{chunk-IPFD5Y3O.js.map → chunk-R65RAHAG.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openaiResponsesAdapter
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-OWMP5NMV.js";
|
|
4
|
+
import "../chunk-F552OBUV.js";
|
|
5
|
+
import "../chunk-ULVY473P.js";
|
|
6
6
|
export {
|
|
7
7
|
openaiResponsesAdapter
|
|
8
8
|
};
|
|
@@ -381,6 +381,16 @@ function mergeOverride(base, override) {
|
|
|
381
381
|
if (override.response !== void 0) {
|
|
382
382
|
result.response = { ...result.response, ...override.response };
|
|
383
383
|
}
|
|
384
|
+
if (override.compression !== void 0) {
|
|
385
|
+
result.compression = {
|
|
386
|
+
...result.compression,
|
|
387
|
+
...override.compression,
|
|
388
|
+
thetokencompany: mergeRecordBlock(
|
|
389
|
+
result.compression?.thetokencompany,
|
|
390
|
+
override.compression.thetokencompany
|
|
391
|
+
)
|
|
392
|
+
};
|
|
393
|
+
}
|
|
384
394
|
if (override.cache !== void 0) {
|
|
385
395
|
result.cache = {
|
|
386
396
|
...result.cache,
|
|
@@ -606,6 +616,14 @@ var RawProviderBodySchema = import_zod.z.object({
|
|
|
606
616
|
openrouter: import_zod.z.record(import_zod.z.unknown()).optional(),
|
|
607
617
|
llmasaservice: import_zod.z.record(import_zod.z.unknown()).optional()
|
|
608
618
|
});
|
|
619
|
+
var TheTokenCompanyCompressionSchema = import_zod.z.object({
|
|
620
|
+
enabled: import_zod.z.boolean().optional(),
|
|
621
|
+
model: import_zod.z.string().min(1).optional(),
|
|
622
|
+
aggressiveness: import_zod.z.number().min(0).max(1).optional()
|
|
623
|
+
});
|
|
624
|
+
var CompressionSchema = import_zod.z.object({
|
|
625
|
+
thetokencompany: TheTokenCompanyCompressionSchema.optional()
|
|
626
|
+
});
|
|
609
627
|
var OpenAICacheSchema = import_zod.z.object({
|
|
610
628
|
prompt_cache_key: import_zod.z.string().min(1).optional(),
|
|
611
629
|
retention: import_zod.z.enum(["in_memory", "24h"]).optional()
|
|
@@ -678,6 +696,7 @@ var PromptAssetOverridesSchema = import_zod.z.object({
|
|
|
678
696
|
reasoning: ReasoningSchema.optional(),
|
|
679
697
|
sampling: SamplingSchema.optional(),
|
|
680
698
|
response: ResponseSchemaWithValidation.optional(),
|
|
699
|
+
compression: CompressionSchema.optional(),
|
|
681
700
|
cache: CacheSchema.optional(),
|
|
682
701
|
raw: RawProviderBodySchema.optional(),
|
|
683
702
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -699,6 +718,7 @@ var PromptDefaultsSchema = import_zod.z.object({
|
|
|
699
718
|
reasoning: ReasoningSchema.optional(),
|
|
700
719
|
sampling: SamplingSchema.optional(),
|
|
701
720
|
response: ResponseSchema.optional(),
|
|
721
|
+
compression: CompressionSchema.optional(),
|
|
702
722
|
cache: CacheSchema.optional(),
|
|
703
723
|
raw: RawProviderBodySchema.optional(),
|
|
704
724
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -723,6 +743,7 @@ var PromptAssetSchema = import_zod.z.object({
|
|
|
723
743
|
reasoning: ReasoningSchema.optional(),
|
|
724
744
|
sampling: SamplingSchema.optional(),
|
|
725
745
|
response: ResponseSchemaWithValidation.optional(),
|
|
746
|
+
compression: CompressionSchema.optional(),
|
|
726
747
|
cache: CacheSchema.optional(),
|
|
727
748
|
raw: RawProviderBodySchema.optional(),
|
|
728
749
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -1083,6 +1104,7 @@ function mergeDefaults(base, local) {
|
|
|
1083
1104
|
reasoning: mergeRecordBlock2(base.reasoning, local.reasoning),
|
|
1084
1105
|
sampling: mergeRecordBlock2(base.sampling, local.sampling),
|
|
1085
1106
|
response: mergeRecordBlock2(base.response, local.response),
|
|
1107
|
+
compression: mergeCompression(base.compression, local.compression),
|
|
1086
1108
|
cache: mergeCache(base.cache, local.cache),
|
|
1087
1109
|
raw: mergeRaw(base.raw, local.raw),
|
|
1088
1110
|
tools: local.tools ?? base.tools,
|
|
@@ -1103,6 +1125,7 @@ function mergeDefaults(base, local) {
|
|
|
1103
1125
|
};
|
|
1104
1126
|
}
|
|
1105
1127
|
function applyDefaults(asset, defaults) {
|
|
1128
|
+
const compression = mergeCompression(defaults.compression, asset.compression);
|
|
1106
1129
|
const cache = mergeCache(defaults.cache, asset.cache);
|
|
1107
1130
|
const raw = mergeRaw(defaults.raw, asset.raw);
|
|
1108
1131
|
const providerOptions = mergeProviderOptions(defaults.provider_options, asset.provider_options);
|
|
@@ -1116,7 +1139,7 @@ function applyDefaults(asset, defaults) {
|
|
|
1116
1139
|
const hasDefaultMetadata = defaults.metadata && Object.keys(defaults.metadata).length > 0;
|
|
1117
1140
|
const hasDefaultSystem = !!defaults.sections?.system_instructions;
|
|
1118
1141
|
const hasDefaultScalars = defaults.provider !== void 0 || defaults.model !== void 0 || defaults.fallback_models !== void 0 || defaults.tools !== void 0 || defaults.includes !== void 0;
|
|
1119
|
-
const hasDefaultObjects = cache !== void 0 || raw !== void 0 || providerOptions !== void 0 || reasoning !== void 0 || sampling !== void 0 || response !== void 0 || mcp !== void 0 || context !== void 0 || environments !== void 0 || tiers !== void 0;
|
|
1142
|
+
const hasDefaultObjects = compression !== void 0 || cache !== void 0 || raw !== void 0 || providerOptions !== void 0 || reasoning !== void 0 || sampling !== void 0 || response !== void 0 || mcp !== void 0 || context !== void 0 || environments !== void 0 || tiers !== void 0;
|
|
1120
1143
|
if (!hasDefaultMetadata && !hasDefaultSystem && !hasDefaultScalars && !hasDefaultObjects) {
|
|
1121
1144
|
return asset;
|
|
1122
1145
|
}
|
|
@@ -1135,6 +1158,7 @@ function applyDefaults(asset, defaults) {
|
|
|
1135
1158
|
reasoning,
|
|
1136
1159
|
sampling,
|
|
1137
1160
|
response,
|
|
1161
|
+
compression,
|
|
1138
1162
|
cache,
|
|
1139
1163
|
raw,
|
|
1140
1164
|
tools: asset.tools ?? defaults.tools,
|
|
@@ -1204,6 +1228,15 @@ function mergeCache(base, local) {
|
|
|
1204
1228
|
if (merged.google && Object.keys(merged.google).length === 0) delete merged.google;
|
|
1205
1229
|
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
1206
1230
|
}
|
|
1231
|
+
function mergeCompression(base, local) {
|
|
1232
|
+
const merged = {
|
|
1233
|
+
...base ?? {},
|
|
1234
|
+
...local ?? {},
|
|
1235
|
+
thetokencompany: mergeRecordBlock2(base?.thetokencompany, local?.thetokencompany)
|
|
1236
|
+
};
|
|
1237
|
+
removeEmptyProviderBlocks(merged);
|
|
1238
|
+
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
1239
|
+
}
|
|
1207
1240
|
function mergeRaw(base, local) {
|
|
1208
1241
|
const merged = {
|
|
1209
1242
|
...base ?? {},
|
|
@@ -1247,12 +1280,14 @@ function mergeOverrideConfig(base, local) {
|
|
|
1247
1280
|
const reasoning = mergeRecordBlock2(base?.reasoning, local.reasoning);
|
|
1248
1281
|
const sampling = mergeRecordBlock2(base?.sampling, local.sampling);
|
|
1249
1282
|
const response = mergeRecordBlock2(base?.response, local.response);
|
|
1283
|
+
const compression = mergeCompression(base?.compression, local.compression);
|
|
1250
1284
|
const cache = mergeCache(base?.cache, local.cache);
|
|
1251
1285
|
const raw = mergeRaw(base?.raw, local.raw);
|
|
1252
1286
|
const providerOptions = mergeProviderOptions(base?.provider_options, local.provider_options);
|
|
1253
1287
|
if (reasoning !== void 0) merged.reasoning = reasoning;
|
|
1254
1288
|
if (sampling !== void 0) merged.sampling = sampling;
|
|
1255
1289
|
if (response !== void 0) merged.response = response;
|
|
1290
|
+
if (compression !== void 0) merged.compression = compression;
|
|
1256
1291
|
if (cache !== void 0) merged.cache = cache;
|
|
1257
1292
|
if (raw !== void 0) merged.raw = raw;
|
|
1258
1293
|
if (providerOptions !== void 0) merged.provider_options = providerOptions;
|
|
@@ -1448,6 +1483,97 @@ function compactHistoryForPrompt(asset, runtime) {
|
|
|
1448
1483
|
return [compacted, ...preserved];
|
|
1449
1484
|
}
|
|
1450
1485
|
|
|
1486
|
+
// src/compression.ts
|
|
1487
|
+
var THETOKENCOMPANY_DEFAULT_MODEL = "bear-2";
|
|
1488
|
+
var THETOKENCOMPANY_DEFAULT_BASE_URL = "https://api.thetokencompany.com";
|
|
1489
|
+
async function applyPromptCompressionForRender(asset, runtime) {
|
|
1490
|
+
const config = asset.compression?.thetokencompany;
|
|
1491
|
+
if (config?.enabled !== true || !asset.sections.prompt_template) {
|
|
1492
|
+
return { asset, runtime, compression: [] };
|
|
1493
|
+
}
|
|
1494
|
+
const sections = renderSections(asset, {
|
|
1495
|
+
variables: runtime.variables,
|
|
1496
|
+
strict: runtime.strict
|
|
1497
|
+
});
|
|
1498
|
+
if (!sections.prompt_template) {
|
|
1499
|
+
return { asset, runtime, compression: [] };
|
|
1500
|
+
}
|
|
1501
|
+
const model = config.model ?? THETOKENCOMPANY_DEFAULT_MODEL;
|
|
1502
|
+
const result = await compressWithTheTokenCompany(sections.prompt_template, {
|
|
1503
|
+
apiKey: runtime.theTokenCompany?.apiKey,
|
|
1504
|
+
baseURL: runtime.theTokenCompany?.baseURL,
|
|
1505
|
+
fetch: runtime.theTokenCompany?.fetch,
|
|
1506
|
+
model,
|
|
1507
|
+
aggressiveness: config.aggressiveness
|
|
1508
|
+
});
|
|
1509
|
+
return {
|
|
1510
|
+
asset: {
|
|
1511
|
+
...asset,
|
|
1512
|
+
sections: {
|
|
1513
|
+
...asset.sections,
|
|
1514
|
+
...sections,
|
|
1515
|
+
prompt_template: result.output
|
|
1516
|
+
}
|
|
1517
|
+
},
|
|
1518
|
+
runtime: {
|
|
1519
|
+
...runtime,
|
|
1520
|
+
variables: {},
|
|
1521
|
+
strict: false
|
|
1522
|
+
},
|
|
1523
|
+
compression: [{
|
|
1524
|
+
provider: "thetokencompany",
|
|
1525
|
+
model,
|
|
1526
|
+
inputTokens: result.input_tokens,
|
|
1527
|
+
outputTokens: result.output_tokens,
|
|
1528
|
+
tokensSaved: result.tokens_saved,
|
|
1529
|
+
compressionRatio: result.compression_ratio
|
|
1530
|
+
}]
|
|
1531
|
+
};
|
|
1532
|
+
}
|
|
1533
|
+
async function compressWithTheTokenCompany(input, options) {
|
|
1534
|
+
const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
|
|
1535
|
+
if (!apiKey) {
|
|
1536
|
+
throw new Error(
|
|
1537
|
+
"TheTokenCompany compression is enabled, but no API key was provided. Pass theTokenCompany.apiKey to renderPrompt() or set THETOKENCOMPANY_API_KEY."
|
|
1538
|
+
);
|
|
1539
|
+
}
|
|
1540
|
+
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
1541
|
+
if (!fetchImpl) {
|
|
1542
|
+
throw new Error("TheTokenCompany compression requires a runtime with fetch support.");
|
|
1543
|
+
}
|
|
1544
|
+
const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
1545
|
+
const compressionSettings = options.aggressiveness === void 0 ? void 0 : { aggressiveness: options.aggressiveness };
|
|
1546
|
+
const response = await fetchImpl(`${baseURL}/v1/compress`, {
|
|
1547
|
+
method: "POST",
|
|
1548
|
+
headers: {
|
|
1549
|
+
Authorization: `Bearer ${apiKey}`,
|
|
1550
|
+
"Content-Type": "application/json"
|
|
1551
|
+
},
|
|
1552
|
+
body: JSON.stringify({
|
|
1553
|
+
model: options.model,
|
|
1554
|
+
input,
|
|
1555
|
+
...compressionSettings ? { compression_settings: compressionSettings } : {}
|
|
1556
|
+
})
|
|
1557
|
+
});
|
|
1558
|
+
if (!response.ok) {
|
|
1559
|
+
const body = await response.text().catch(() => "");
|
|
1560
|
+
throw new Error(
|
|
1561
|
+
`TheTokenCompany compression failed with HTTP ${response.status}` + (body ? `: ${body}` : ".")
|
|
1562
|
+
);
|
|
1563
|
+
}
|
|
1564
|
+
const data = await response.json();
|
|
1565
|
+
if (typeof data.output !== "string" || typeof data.output_tokens !== "number" || typeof data.input_tokens !== "number" || typeof data.tokens_saved !== "number" || typeof data.compression_ratio !== "number") {
|
|
1566
|
+
throw new Error("TheTokenCompany compression returned an invalid response payload.");
|
|
1567
|
+
}
|
|
1568
|
+
return data;
|
|
1569
|
+
}
|
|
1570
|
+
function getEnv(name) {
|
|
1571
|
+
if (typeof process === "undefined") {
|
|
1572
|
+
return void 0;
|
|
1573
|
+
}
|
|
1574
|
+
return process.env[name];
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1451
1577
|
// src/providers/prompt-input.ts
|
|
1452
1578
|
function isPromptLookup(input) {
|
|
1453
1579
|
return "path" in input && typeof input.path === "string";
|
|
@@ -1471,21 +1597,27 @@ function withPromptInputSupport(adapter) {
|
|
|
1471
1597
|
};
|
|
1472
1598
|
const renderPrompt = async (input, runtime) => {
|
|
1473
1599
|
const resolved = await resolveProviderPromptInput(input, runtime);
|
|
1474
|
-
const
|
|
1600
|
+
const resolvedForRender = resolveAssetForProvider(resolved, runtime);
|
|
1601
|
+
const sanitization = sanitizeContextVariables(resolvedForRender, runtime.variables, {
|
|
1475
1602
|
onContextOverflow: runtime.onContextOverflow
|
|
1476
1603
|
});
|
|
1477
1604
|
if (sanitization.shortCircuit) {
|
|
1478
1605
|
return {
|
|
1479
1606
|
provider: adapter.name,
|
|
1480
|
-
model:
|
|
1607
|
+
model: resolvedForRender.model ?? "",
|
|
1481
1608
|
returnMessage: sanitization.shortCircuit.returnMessage
|
|
1482
1609
|
};
|
|
1483
1610
|
}
|
|
1484
|
-
|
|
1611
|
+
const prepared = await applyPromptCompressionForRender(resolvedForRender, {
|
|
1485
1612
|
...runtime,
|
|
1613
|
+
environment: void 0,
|
|
1614
|
+
tier: void 0,
|
|
1615
|
+
runtime: void 0,
|
|
1486
1616
|
variables: sanitization.variables,
|
|
1487
|
-
history: compactHistoryForPrompt(
|
|
1617
|
+
history: compactHistoryForPrompt(resolvedForRender, runtime)
|
|
1488
1618
|
});
|
|
1619
|
+
const request = adapter.render(prepared.asset, prepared.runtime);
|
|
1620
|
+
return prepared.compression.length > 0 ? { ...request, compression: prepared.compression } : request;
|
|
1489
1621
|
};
|
|
1490
1622
|
return {
|
|
1491
1623
|
...adapter,
|