promptopskit 0.9.1 → 0.9.2

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.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-QZHR2YMK.js → chunk-6ICAKKV3.js} +60 -20
  3. package/dist/{chunk-QZHR2YMK.js.map → chunk-6ICAKKV3.js.map} +1 -1
  4. package/dist/{chunk-O3SRIDTH.js → chunk-A2VPKL4X.js} +2 -2
  5. package/dist/{chunk-C5HHTLZX.js → chunk-CGBEKODU.js} +2 -2
  6. package/dist/{chunk-D23T3X4V.js → chunk-DA2NSBIN.js} +2 -2
  7. package/dist/{chunk-EDHPVR2F.js → chunk-DAJMCV4F.js} +3 -3
  8. package/dist/{chunk-QHAIOVQ3.js → chunk-XSSET4QN.js} +2 -2
  9. package/dist/{chunk-7GMCNHXJ.js → chunk-YLJGWVZ6.js} +3 -3
  10. package/dist/index.cjs +59 -19
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +7 -7
  13. package/dist/providers/anthropic.cjs +59 -19
  14. package/dist/providers/anthropic.cjs.map +1 -1
  15. package/dist/providers/anthropic.js +2 -2
  16. package/dist/providers/gemini.cjs +59 -19
  17. package/dist/providers/gemini.cjs.map +1 -1
  18. package/dist/providers/gemini.js +2 -2
  19. package/dist/providers/llmasaservice.cjs +59 -19
  20. package/dist/providers/llmasaservice.cjs.map +1 -1
  21. package/dist/providers/llmasaservice.js +3 -3
  22. package/dist/providers/openai-responses.cjs +59 -19
  23. package/dist/providers/openai-responses.cjs.map +1 -1
  24. package/dist/providers/openai-responses.js +2 -2
  25. package/dist/providers/openai.cjs +59 -19
  26. package/dist/providers/openai.cjs.map +1 -1
  27. package/dist/providers/openai.js +2 -2
  28. package/dist/providers/openrouter.cjs +59 -19
  29. package/dist/providers/openrouter.cjs.map +1 -1
  30. package/dist/providers/openrouter.js +3 -3
  31. package/package.json +1 -1
  32. /package/dist/{chunk-O3SRIDTH.js.map → chunk-A2VPKL4X.js.map} +0 -0
  33. /package/dist/{chunk-C5HHTLZX.js.map → chunk-CGBEKODU.js.map} +0 -0
  34. /package/dist/{chunk-D23T3X4V.js.map → chunk-DA2NSBIN.js.map} +0 -0
  35. /package/dist/{chunk-EDHPVR2F.js.map → chunk-DAJMCV4F.js.map} +0 -0
  36. /package/dist/{chunk-QHAIOVQ3.js.map → chunk-XSSET4QN.js.map} +0 -0
  37. /package/dist/{chunk-7GMCNHXJ.js.map → chunk-YLJGWVZ6.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  geminiAdapter
3
- } from "../chunk-O3SRIDTH.js";
4
- import "../chunk-QZHR2YMK.js";
3
+ } from "../chunk-A2VPKL4X.js";
4
+ import "../chunk-6ICAKKV3.js";
5
5
  import "../chunk-VOXMOGU5.js";
6
6
  export {
7
7
  geminiAdapter
@@ -2462,6 +2462,7 @@ async function applyPromptCompressionForRender(asset, runtime) {
2462
2462
  aggressiveness: theTokenCompanyConfig?.aggressiveness
2463
2463
  });
2464
2464
  promptTemplate = result.output;
2465
+ warnings.push(...result.warnings ?? []);
2465
2466
  compression.push({
2466
2467
  provider: "thetokencompany",
2467
2468
  model,
@@ -2527,41 +2528,80 @@ function reportHeuristicCompressionWarnings2(warnings, compressionWarnings, scop
2527
2528
  async function compressWithTheTokenCompany(input, options) {
2528
2529
  const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
2529
2530
  if (!apiKey) {
2530
- throw new Error(
2531
- "TheTokenCompany compression is enabled, but no API key was provided. Pass theTokenCompany.apiKey to renderPrompt() or set THETOKENCOMPANY_API_KEY."
2531
+ return createTheTokenCompanyFallback(
2532
+ input,
2533
+ "no API key was provided"
2532
2534
  );
2533
2535
  }
2534
2536
  const fetchImpl = options.fetch ?? globalThis.fetch;
2535
2537
  if (!fetchImpl) {
2536
- throw new Error("TheTokenCompany compression requires a runtime with fetch support.");
2538
+ return createTheTokenCompanyFallback(
2539
+ input,
2540
+ "fetch is unavailable in this runtime"
2541
+ );
2537
2542
  }
2538
2543
  const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
2539
2544
  const compressionSettings = options.aggressiveness === void 0 ? void 0 : { aggressiveness: options.aggressiveness };
2540
- const response = await fetchImpl(`${baseURL}/v1/compress`, {
2541
- method: "POST",
2542
- headers: {
2543
- Authorization: `Bearer ${apiKey}`,
2544
- "Content-Type": "application/json"
2545
- },
2546
- body: JSON.stringify({
2547
- model: options.model,
2545
+ let response;
2546
+ try {
2547
+ response = await fetchImpl(`${baseURL}/v1/compress`, {
2548
+ method: "POST",
2549
+ headers: {
2550
+ Authorization: `Bearer ${apiKey}`,
2551
+ "Content-Type": "application/json"
2552
+ },
2553
+ body: JSON.stringify({
2554
+ model: options.model,
2555
+ input,
2556
+ ...compressionSettings ? { compression_settings: compressionSettings } : {}
2557
+ })
2558
+ });
2559
+ } catch (error) {
2560
+ return createTheTokenCompanyFallback(
2548
2561
  input,
2549
- ...compressionSettings ? { compression_settings: compressionSettings } : {}
2550
- })
2551
- });
2562
+ `request failed: ${toErrorMessage(error)}`
2563
+ );
2564
+ }
2552
2565
  if (!response.ok) {
2553
- const body = await response.text().catch(() => "");
2554
- throw new Error(
2555
- `TheTokenCompany compression failed with HTTP ${response.status}` + (body ? `: ${body}` : ".")
2566
+ return createTheTokenCompanyFallback(
2567
+ input,
2568
+ `service returned HTTP ${response.status}`
2569
+ );
2570
+ }
2571
+ let data;
2572
+ try {
2573
+ data = await response.json();
2574
+ } catch (error) {
2575
+ return createTheTokenCompanyFallback(
2576
+ input,
2577
+ `response body was not valid JSON: ${toErrorMessage(error)}`
2556
2578
  );
2557
2579
  }
2558
- const data = await response.json();
2559
2580
  const normalized = normalizeTheTokenCompanyCompressResponse(data);
2560
2581
  if (!normalized) {
2561
- throw new Error("TheTokenCompany compression returned an invalid response payload.");
2582
+ return createTheTokenCompanyFallback(
2583
+ input,
2584
+ "response payload was invalid"
2585
+ );
2562
2586
  }
2563
2587
  return normalized;
2564
2588
  }
2589
+ function createTheTokenCompanyFallback(input, reason) {
2590
+ const tokens = estimateHeuristicTokens(input);
2591
+ return {
2592
+ output: input,
2593
+ output_tokens: tokens,
2594
+ input_tokens: tokens,
2595
+ tokens_saved: 0,
2596
+ compression_ratio: tokens === 0 ? 0 : 1,
2597
+ warnings: [
2598
+ `POK057: TheTokenCompany compression skipped; using uncompressed prompt with zero token savings (${reason}).`
2599
+ ]
2600
+ };
2601
+ }
2602
+ function toErrorMessage(error) {
2603
+ return error instanceof Error && error.message ? error.message : "unknown error";
2604
+ }
2565
2605
  function normalizeTheTokenCompanyCompressResponse(data) {
2566
2606
  if (typeof data.output !== "string" || typeof data.output_tokens !== "number") {
2567
2607
  return void 0;