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
package/dist/providers/gemini.js
CHANGED
|
@@ -386,6 +386,16 @@ function mergeOverride(base, override) {
|
|
|
386
386
|
if (override.response !== void 0) {
|
|
387
387
|
result.response = { ...result.response, ...override.response };
|
|
388
388
|
}
|
|
389
|
+
if (override.compression !== void 0) {
|
|
390
|
+
result.compression = {
|
|
391
|
+
...result.compression,
|
|
392
|
+
...override.compression,
|
|
393
|
+
thetokencompany: mergeRecordBlock(
|
|
394
|
+
result.compression?.thetokencompany,
|
|
395
|
+
override.compression.thetokencompany
|
|
396
|
+
)
|
|
397
|
+
};
|
|
398
|
+
}
|
|
389
399
|
if (override.cache !== void 0) {
|
|
390
400
|
result.cache = {
|
|
391
401
|
...result.cache,
|
|
@@ -611,6 +621,14 @@ var RawProviderBodySchema = import_zod.z.object({
|
|
|
611
621
|
openrouter: import_zod.z.record(import_zod.z.unknown()).optional(),
|
|
612
622
|
llmasaservice: import_zod.z.record(import_zod.z.unknown()).optional()
|
|
613
623
|
});
|
|
624
|
+
var TheTokenCompanyCompressionSchema = import_zod.z.object({
|
|
625
|
+
enabled: import_zod.z.boolean().optional(),
|
|
626
|
+
model: import_zod.z.string().min(1).optional(),
|
|
627
|
+
aggressiveness: import_zod.z.number().min(0).max(1).optional()
|
|
628
|
+
});
|
|
629
|
+
var CompressionSchema = import_zod.z.object({
|
|
630
|
+
thetokencompany: TheTokenCompanyCompressionSchema.optional()
|
|
631
|
+
});
|
|
614
632
|
var OpenAICacheSchema = import_zod.z.object({
|
|
615
633
|
prompt_cache_key: import_zod.z.string().min(1).optional(),
|
|
616
634
|
retention: import_zod.z.enum(["in_memory", "24h"]).optional()
|
|
@@ -683,6 +701,7 @@ var PromptAssetOverridesSchema = import_zod.z.object({
|
|
|
683
701
|
reasoning: ReasoningSchema.optional(),
|
|
684
702
|
sampling: SamplingSchema.optional(),
|
|
685
703
|
response: ResponseSchemaWithValidation.optional(),
|
|
704
|
+
compression: CompressionSchema.optional(),
|
|
686
705
|
cache: CacheSchema.optional(),
|
|
687
706
|
raw: RawProviderBodySchema.optional(),
|
|
688
707
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -704,6 +723,7 @@ var PromptDefaultsSchema = import_zod.z.object({
|
|
|
704
723
|
reasoning: ReasoningSchema.optional(),
|
|
705
724
|
sampling: SamplingSchema.optional(),
|
|
706
725
|
response: ResponseSchema.optional(),
|
|
726
|
+
compression: CompressionSchema.optional(),
|
|
707
727
|
cache: CacheSchema.optional(),
|
|
708
728
|
raw: RawProviderBodySchema.optional(),
|
|
709
729
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -728,6 +748,7 @@ var PromptAssetSchema = import_zod.z.object({
|
|
|
728
748
|
reasoning: ReasoningSchema.optional(),
|
|
729
749
|
sampling: SamplingSchema.optional(),
|
|
730
750
|
response: ResponseSchemaWithValidation.optional(),
|
|
751
|
+
compression: CompressionSchema.optional(),
|
|
731
752
|
cache: CacheSchema.optional(),
|
|
732
753
|
raw: RawProviderBodySchema.optional(),
|
|
733
754
|
tools: import_zod.z.array(ToolRefSchema).optional(),
|
|
@@ -1088,6 +1109,7 @@ function mergeDefaults(base, local) {
|
|
|
1088
1109
|
reasoning: mergeRecordBlock2(base.reasoning, local.reasoning),
|
|
1089
1110
|
sampling: mergeRecordBlock2(base.sampling, local.sampling),
|
|
1090
1111
|
response: mergeRecordBlock2(base.response, local.response),
|
|
1112
|
+
compression: mergeCompression(base.compression, local.compression),
|
|
1091
1113
|
cache: mergeCache(base.cache, local.cache),
|
|
1092
1114
|
raw: mergeRaw(base.raw, local.raw),
|
|
1093
1115
|
tools: local.tools ?? base.tools,
|
|
@@ -1108,6 +1130,7 @@ function mergeDefaults(base, local) {
|
|
|
1108
1130
|
};
|
|
1109
1131
|
}
|
|
1110
1132
|
function applyDefaults(asset, defaults) {
|
|
1133
|
+
const compression = mergeCompression(defaults.compression, asset.compression);
|
|
1111
1134
|
const cache = mergeCache(defaults.cache, asset.cache);
|
|
1112
1135
|
const raw = mergeRaw(defaults.raw, asset.raw);
|
|
1113
1136
|
const providerOptions = mergeProviderOptions(defaults.provider_options, asset.provider_options);
|
|
@@ -1121,7 +1144,7 @@ function applyDefaults(asset, defaults) {
|
|
|
1121
1144
|
const hasDefaultMetadata = defaults.metadata && Object.keys(defaults.metadata).length > 0;
|
|
1122
1145
|
const hasDefaultSystem = !!defaults.sections?.system_instructions;
|
|
1123
1146
|
const hasDefaultScalars = defaults.provider !== void 0 || defaults.model !== void 0 || defaults.fallback_models !== void 0 || defaults.tools !== void 0 || defaults.includes !== void 0;
|
|
1124
|
-
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;
|
|
1147
|
+
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;
|
|
1125
1148
|
if (!hasDefaultMetadata && !hasDefaultSystem && !hasDefaultScalars && !hasDefaultObjects) {
|
|
1126
1149
|
return asset;
|
|
1127
1150
|
}
|
|
@@ -1140,6 +1163,7 @@ function applyDefaults(asset, defaults) {
|
|
|
1140
1163
|
reasoning,
|
|
1141
1164
|
sampling,
|
|
1142
1165
|
response,
|
|
1166
|
+
compression,
|
|
1143
1167
|
cache,
|
|
1144
1168
|
raw,
|
|
1145
1169
|
tools: asset.tools ?? defaults.tools,
|
|
@@ -1209,6 +1233,15 @@ function mergeCache(base, local) {
|
|
|
1209
1233
|
if (merged.google && Object.keys(merged.google).length === 0) delete merged.google;
|
|
1210
1234
|
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
1211
1235
|
}
|
|
1236
|
+
function mergeCompression(base, local) {
|
|
1237
|
+
const merged = {
|
|
1238
|
+
...base ?? {},
|
|
1239
|
+
...local ?? {},
|
|
1240
|
+
thetokencompany: mergeRecordBlock2(base?.thetokencompany, local?.thetokencompany)
|
|
1241
|
+
};
|
|
1242
|
+
removeEmptyProviderBlocks(merged);
|
|
1243
|
+
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
1244
|
+
}
|
|
1212
1245
|
function mergeRaw(base, local) {
|
|
1213
1246
|
const merged = {
|
|
1214
1247
|
...base ?? {},
|
|
@@ -1252,12 +1285,14 @@ function mergeOverrideConfig(base, local) {
|
|
|
1252
1285
|
const reasoning = mergeRecordBlock2(base?.reasoning, local.reasoning);
|
|
1253
1286
|
const sampling = mergeRecordBlock2(base?.sampling, local.sampling);
|
|
1254
1287
|
const response = mergeRecordBlock2(base?.response, local.response);
|
|
1288
|
+
const compression = mergeCompression(base?.compression, local.compression);
|
|
1255
1289
|
const cache = mergeCache(base?.cache, local.cache);
|
|
1256
1290
|
const raw = mergeRaw(base?.raw, local.raw);
|
|
1257
1291
|
const providerOptions = mergeProviderOptions(base?.provider_options, local.provider_options);
|
|
1258
1292
|
if (reasoning !== void 0) merged.reasoning = reasoning;
|
|
1259
1293
|
if (sampling !== void 0) merged.sampling = sampling;
|
|
1260
1294
|
if (response !== void 0) merged.response = response;
|
|
1295
|
+
if (compression !== void 0) merged.compression = compression;
|
|
1261
1296
|
if (cache !== void 0) merged.cache = cache;
|
|
1262
1297
|
if (raw !== void 0) merged.raw = raw;
|
|
1263
1298
|
if (providerOptions !== void 0) merged.provider_options = providerOptions;
|
|
@@ -1453,6 +1488,97 @@ function compactHistoryForPrompt(asset, runtime) {
|
|
|
1453
1488
|
return [compacted, ...preserved];
|
|
1454
1489
|
}
|
|
1455
1490
|
|
|
1491
|
+
// src/compression.ts
|
|
1492
|
+
var THETOKENCOMPANY_DEFAULT_MODEL = "bear-2";
|
|
1493
|
+
var THETOKENCOMPANY_DEFAULT_BASE_URL = "https://api.thetokencompany.com";
|
|
1494
|
+
async function applyPromptCompressionForRender(asset, runtime) {
|
|
1495
|
+
const config = asset.compression?.thetokencompany;
|
|
1496
|
+
if (config?.enabled !== true || !asset.sections.prompt_template) {
|
|
1497
|
+
return { asset, runtime, compression: [] };
|
|
1498
|
+
}
|
|
1499
|
+
const sections = renderSections(asset, {
|
|
1500
|
+
variables: runtime.variables,
|
|
1501
|
+
strict: runtime.strict
|
|
1502
|
+
});
|
|
1503
|
+
if (!sections.prompt_template) {
|
|
1504
|
+
return { asset, runtime, compression: [] };
|
|
1505
|
+
}
|
|
1506
|
+
const model = config.model ?? THETOKENCOMPANY_DEFAULT_MODEL;
|
|
1507
|
+
const result = await compressWithTheTokenCompany(sections.prompt_template, {
|
|
1508
|
+
apiKey: runtime.theTokenCompany?.apiKey,
|
|
1509
|
+
baseURL: runtime.theTokenCompany?.baseURL,
|
|
1510
|
+
fetch: runtime.theTokenCompany?.fetch,
|
|
1511
|
+
model,
|
|
1512
|
+
aggressiveness: config.aggressiveness
|
|
1513
|
+
});
|
|
1514
|
+
return {
|
|
1515
|
+
asset: {
|
|
1516
|
+
...asset,
|
|
1517
|
+
sections: {
|
|
1518
|
+
...asset.sections,
|
|
1519
|
+
...sections,
|
|
1520
|
+
prompt_template: result.output
|
|
1521
|
+
}
|
|
1522
|
+
},
|
|
1523
|
+
runtime: {
|
|
1524
|
+
...runtime,
|
|
1525
|
+
variables: {},
|
|
1526
|
+
strict: false
|
|
1527
|
+
},
|
|
1528
|
+
compression: [{
|
|
1529
|
+
provider: "thetokencompany",
|
|
1530
|
+
model,
|
|
1531
|
+
inputTokens: result.input_tokens,
|
|
1532
|
+
outputTokens: result.output_tokens,
|
|
1533
|
+
tokensSaved: result.tokens_saved,
|
|
1534
|
+
compressionRatio: result.compression_ratio
|
|
1535
|
+
}]
|
|
1536
|
+
};
|
|
1537
|
+
}
|
|
1538
|
+
async function compressWithTheTokenCompany(input, options) {
|
|
1539
|
+
const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
|
|
1540
|
+
if (!apiKey) {
|
|
1541
|
+
throw new Error(
|
|
1542
|
+
"TheTokenCompany compression is enabled, but no API key was provided. Pass theTokenCompany.apiKey to renderPrompt() or set THETOKENCOMPANY_API_KEY."
|
|
1543
|
+
);
|
|
1544
|
+
}
|
|
1545
|
+
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
1546
|
+
if (!fetchImpl) {
|
|
1547
|
+
throw new Error("TheTokenCompany compression requires a runtime with fetch support.");
|
|
1548
|
+
}
|
|
1549
|
+
const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
1550
|
+
const compressionSettings = options.aggressiveness === void 0 ? void 0 : { aggressiveness: options.aggressiveness };
|
|
1551
|
+
const response = await fetchImpl(`${baseURL}/v1/compress`, {
|
|
1552
|
+
method: "POST",
|
|
1553
|
+
headers: {
|
|
1554
|
+
Authorization: `Bearer ${apiKey}`,
|
|
1555
|
+
"Content-Type": "application/json"
|
|
1556
|
+
},
|
|
1557
|
+
body: JSON.stringify({
|
|
1558
|
+
model: options.model,
|
|
1559
|
+
input,
|
|
1560
|
+
...compressionSettings ? { compression_settings: compressionSettings } : {}
|
|
1561
|
+
})
|
|
1562
|
+
});
|
|
1563
|
+
if (!response.ok) {
|
|
1564
|
+
const body = await response.text().catch(() => "");
|
|
1565
|
+
throw new Error(
|
|
1566
|
+
`TheTokenCompany compression failed with HTTP ${response.status}` + (body ? `: ${body}` : ".")
|
|
1567
|
+
);
|
|
1568
|
+
}
|
|
1569
|
+
const data = await response.json();
|
|
1570
|
+
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") {
|
|
1571
|
+
throw new Error("TheTokenCompany compression returned an invalid response payload.");
|
|
1572
|
+
}
|
|
1573
|
+
return data;
|
|
1574
|
+
}
|
|
1575
|
+
function getEnv(name) {
|
|
1576
|
+
if (typeof process === "undefined") {
|
|
1577
|
+
return void 0;
|
|
1578
|
+
}
|
|
1579
|
+
return process.env[name];
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1456
1582
|
// src/providers/prompt-input.ts
|
|
1457
1583
|
function isPromptLookup(input) {
|
|
1458
1584
|
return "path" in input && typeof input.path === "string";
|
|
@@ -1476,21 +1602,27 @@ function withPromptInputSupport(adapter) {
|
|
|
1476
1602
|
};
|
|
1477
1603
|
const renderPrompt = async (input, runtime) => {
|
|
1478
1604
|
const resolved = await resolveProviderPromptInput(input, runtime);
|
|
1479
|
-
const
|
|
1605
|
+
const resolvedForRender = resolveAssetForProvider(resolved, runtime);
|
|
1606
|
+
const sanitization = sanitizeContextVariables(resolvedForRender, runtime.variables, {
|
|
1480
1607
|
onContextOverflow: runtime.onContextOverflow
|
|
1481
1608
|
});
|
|
1482
1609
|
if (sanitization.shortCircuit) {
|
|
1483
1610
|
return {
|
|
1484
1611
|
provider: adapter.name,
|
|
1485
|
-
model:
|
|
1612
|
+
model: resolvedForRender.model ?? "",
|
|
1486
1613
|
returnMessage: sanitization.shortCircuit.returnMessage
|
|
1487
1614
|
};
|
|
1488
1615
|
}
|
|
1489
|
-
|
|
1616
|
+
const prepared = await applyPromptCompressionForRender(resolvedForRender, {
|
|
1490
1617
|
...runtime,
|
|
1618
|
+
environment: void 0,
|
|
1619
|
+
tier: void 0,
|
|
1620
|
+
runtime: void 0,
|
|
1491
1621
|
variables: sanitization.variables,
|
|
1492
|
-
history: compactHistoryForPrompt(
|
|
1622
|
+
history: compactHistoryForPrompt(resolvedForRender, runtime)
|
|
1493
1623
|
});
|
|
1624
|
+
const request = adapter.render(prepared.asset, prepared.runtime);
|
|
1625
|
+
return prepared.compression.length > 0 ? { ...request, compression: prepared.compression } : request;
|
|
1494
1626
|
};
|
|
1495
1627
|
return {
|
|
1496
1628
|
...adapter,
|