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
  openaiAdapter
3
- } from "../chunk-C5HHTLZX.js";
4
- import "../chunk-QZHR2YMK.js";
3
+ } from "../chunk-CGBEKODU.js";
4
+ import "../chunk-6ICAKKV3.js";
5
5
  import "../chunk-VOXMOGU5.js";
6
6
  export {
7
7
  openaiAdapter
@@ -2457,6 +2457,7 @@ async function applyPromptCompressionForRender(asset, runtime) {
2457
2457
  aggressiveness: theTokenCompanyConfig?.aggressiveness
2458
2458
  });
2459
2459
  promptTemplate = result.output;
2460
+ warnings.push(...result.warnings ?? []);
2460
2461
  compression.push({
2461
2462
  provider: "thetokencompany",
2462
2463
  model,
@@ -2522,41 +2523,80 @@ function reportHeuristicCompressionWarnings2(warnings, compressionWarnings, scop
2522
2523
  async function compressWithTheTokenCompany(input, options) {
2523
2524
  const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
2524
2525
  if (!apiKey) {
2525
- throw new Error(
2526
- "TheTokenCompany compression is enabled, but no API key was provided. Pass theTokenCompany.apiKey to renderPrompt() or set THETOKENCOMPANY_API_KEY."
2526
+ return createTheTokenCompanyFallback(
2527
+ input,
2528
+ "no API key was provided"
2527
2529
  );
2528
2530
  }
2529
2531
  const fetchImpl = options.fetch ?? globalThis.fetch;
2530
2532
  if (!fetchImpl) {
2531
- throw new Error("TheTokenCompany compression requires a runtime with fetch support.");
2533
+ return createTheTokenCompanyFallback(
2534
+ input,
2535
+ "fetch is unavailable in this runtime"
2536
+ );
2532
2537
  }
2533
2538
  const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
2534
2539
  const compressionSettings = options.aggressiveness === void 0 ? void 0 : { aggressiveness: options.aggressiveness };
2535
- const response = await fetchImpl(`${baseURL}/v1/compress`, {
2536
- method: "POST",
2537
- headers: {
2538
- Authorization: `Bearer ${apiKey}`,
2539
- "Content-Type": "application/json"
2540
- },
2541
- body: JSON.stringify({
2542
- model: options.model,
2540
+ let response;
2541
+ try {
2542
+ response = await fetchImpl(`${baseURL}/v1/compress`, {
2543
+ method: "POST",
2544
+ headers: {
2545
+ Authorization: `Bearer ${apiKey}`,
2546
+ "Content-Type": "application/json"
2547
+ },
2548
+ body: JSON.stringify({
2549
+ model: options.model,
2550
+ input,
2551
+ ...compressionSettings ? { compression_settings: compressionSettings } : {}
2552
+ })
2553
+ });
2554
+ } catch (error) {
2555
+ return createTheTokenCompanyFallback(
2543
2556
  input,
2544
- ...compressionSettings ? { compression_settings: compressionSettings } : {}
2545
- })
2546
- });
2557
+ `request failed: ${toErrorMessage(error)}`
2558
+ );
2559
+ }
2547
2560
  if (!response.ok) {
2548
- const body = await response.text().catch(() => "");
2549
- throw new Error(
2550
- `TheTokenCompany compression failed with HTTP ${response.status}` + (body ? `: ${body}` : ".")
2561
+ return createTheTokenCompanyFallback(
2562
+ input,
2563
+ `service returned HTTP ${response.status}`
2564
+ );
2565
+ }
2566
+ let data;
2567
+ try {
2568
+ data = await response.json();
2569
+ } catch (error) {
2570
+ return createTheTokenCompanyFallback(
2571
+ input,
2572
+ `response body was not valid JSON: ${toErrorMessage(error)}`
2551
2573
  );
2552
2574
  }
2553
- const data = await response.json();
2554
2575
  const normalized = normalizeTheTokenCompanyCompressResponse(data);
2555
2576
  if (!normalized) {
2556
- throw new Error("TheTokenCompany compression returned an invalid response payload.");
2577
+ return createTheTokenCompanyFallback(
2578
+ input,
2579
+ "response payload was invalid"
2580
+ );
2557
2581
  }
2558
2582
  return normalized;
2559
2583
  }
2584
+ function createTheTokenCompanyFallback(input, reason) {
2585
+ const tokens = estimateHeuristicTokens(input);
2586
+ return {
2587
+ output: input,
2588
+ output_tokens: tokens,
2589
+ input_tokens: tokens,
2590
+ tokens_saved: 0,
2591
+ compression_ratio: tokens === 0 ? 0 : 1,
2592
+ warnings: [
2593
+ `POK057: TheTokenCompany compression skipped; using uncompressed prompt with zero token savings (${reason}).`
2594
+ ]
2595
+ };
2596
+ }
2597
+ function toErrorMessage(error) {
2598
+ return error instanceof Error && error.message ? error.message : "unknown error";
2599
+ }
2560
2600
  function normalizeTheTokenCompanyCompressResponse(data) {
2561
2601
  if (typeof data.output !== "string" || typeof data.output_tokens !== "number") {
2562
2602
  return void 0;