promptopskit 0.9.1 → 0.10.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.
Files changed (66) hide show
  1. package/README.md +9 -7
  2. package/SKILL.md +5 -4
  3. package/dist/{chunk-QZHR2YMK.js → chunk-46Z64RVO.js} +61 -21
  4. package/dist/{chunk-QZHR2YMK.js.map → chunk-46Z64RVO.js.map} +1 -1
  5. package/dist/{chunk-EDHPVR2F.js → chunk-7XLJOH2K.js} +3 -3
  6. package/dist/{chunk-VOXMOGU5.js → chunk-ALBSFXYR.js} +2 -1
  7. package/dist/chunk-ALBSFXYR.js.map +1 -0
  8. package/dist/{chunk-C5HHTLZX.js → chunk-IGLKVT74.js} +2 -2
  9. package/dist/{chunk-7GMCNHXJ.js → chunk-PSQWMBKX.js} +21 -21
  10. package/dist/chunk-PSQWMBKX.js.map +1 -0
  11. package/dist/{chunk-O3SRIDTH.js → chunk-QVJTND5A.js} +2 -2
  12. package/dist/{chunk-QHAIOVQ3.js → chunk-UULXO5I6.js} +2 -2
  13. package/dist/{chunk-D23T3X4V.js → chunk-VUQEB5ML.js} +2 -2
  14. package/dist/cli/index.js +1 -0
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/index.cjs +81 -39
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +5 -3
  19. package/dist/index.d.ts +5 -3
  20. package/dist/index.js +11 -11
  21. package/dist/index.js.map +1 -1
  22. package/dist/providers/anthropic.cjs +60 -19
  23. package/dist/providers/anthropic.cjs.map +1 -1
  24. package/dist/providers/anthropic.d.cts +1 -1
  25. package/dist/providers/anthropic.d.ts +1 -1
  26. package/dist/providers/anthropic.js +3 -3
  27. package/dist/providers/gemini.cjs +60 -19
  28. package/dist/providers/gemini.cjs.map +1 -1
  29. package/dist/providers/gemini.d.cts +1 -1
  30. package/dist/providers/gemini.d.ts +1 -1
  31. package/dist/providers/gemini.js +3 -3
  32. package/dist/providers/llmasaservice.cjs +78 -38
  33. package/dist/providers/llmasaservice.cjs.map +1 -1
  34. package/dist/providers/llmasaservice.d.cts +6 -5
  35. package/dist/providers/llmasaservice.d.ts +6 -5
  36. package/dist/providers/llmasaservice.js +4 -6
  37. package/dist/providers/openai-responses.cjs +60 -19
  38. package/dist/providers/openai-responses.cjs.map +1 -1
  39. package/dist/providers/openai-responses.d.cts +1 -1
  40. package/dist/providers/openai-responses.d.ts +1 -1
  41. package/dist/providers/openai-responses.js +3 -3
  42. package/dist/providers/openai.cjs +60 -19
  43. package/dist/providers/openai.cjs.map +1 -1
  44. package/dist/providers/openai.d.cts +1 -1
  45. package/dist/providers/openai.d.ts +1 -1
  46. package/dist/providers/openai.js +3 -3
  47. package/dist/providers/openrouter.cjs +60 -19
  48. package/dist/providers/openrouter.cjs.map +1 -1
  49. package/dist/providers/openrouter.d.cts +1 -1
  50. package/dist/providers/openrouter.d.ts +1 -1
  51. package/dist/providers/openrouter.js +4 -4
  52. package/dist/testing.cjs +1 -0
  53. package/dist/testing.cjs.map +1 -1
  54. package/dist/testing.js +1 -1
  55. package/dist/{types-D6VJJo1x.d.ts → types-9Jv8eHhM.d.ts} +8 -1
  56. package/dist/{types-B4TWRzUY.d.cts → types-D3MemVmM.d.cts} +8 -1
  57. package/dist/usagetap/index.d.cts +1 -1
  58. package/dist/usagetap/index.d.ts +1 -1
  59. package/package.json +1 -1
  60. package/dist/chunk-7GMCNHXJ.js.map +0 -1
  61. package/dist/chunk-VOXMOGU5.js.map +0 -1
  62. /package/dist/{chunk-EDHPVR2F.js.map → chunk-7XLJOH2K.js.map} +0 -0
  63. /package/dist/{chunk-C5HHTLZX.js.map → chunk-IGLKVT74.js.map} +0 -0
  64. /package/dist/{chunk-O3SRIDTH.js.map → chunk-QVJTND5A.js.map} +0 -0
  65. /package/dist/{chunk-QHAIOVQ3.js.map → chunk-UULXO5I6.js.map} +0 -0
  66. /package/dist/{chunk-D23T3X4V.js.map → chunk-VUQEB5ML.js.map} +0 -0
@@ -1,23 +1,24 @@
1
- import { P as ProviderAdapter } from '../types-B4TWRzUY.cjs';
1
+ import { P as ProviderAdapter } from '../types-D3MemVmM.cjs';
2
2
  import '../schema-BkOMklgI.cjs';
3
3
  import 'zod';
4
4
 
5
5
  declare const LLMASASERVICE_BASE_URL = "https://gateway.llmasaservice.io";
6
- declare const LLMASASERVICE_SDK_PLACEHOLDER_API_KEY = "not-used-by-llm-gateway";
7
6
  declare const LLMASASERVICE_DEFAULT_MODEL = "group:standard";
8
7
  declare const LLMASASERVICE_RESPONSE_HEADER_NAMES: readonly ["x-request-id", "x-llm-model-id", "x-llm-model-group"];
9
8
  interface LLMAsAServiceOpenAIConfig {
10
9
  baseURL: string;
11
10
  apiKey: string;
12
- defaultHeaders: {
11
+ defaultHeaders?: {
13
12
  'x-project-id': string;
14
13
  };
15
14
  }
16
15
  interface LLMAsAServiceOpenAIConfigOptions {
16
+ apiKey: string;
17
17
  baseURL?: string;
18
+ /** @deprecated Project ids are no longer required by the gateway. */
18
19
  projectId?: string;
19
20
  }
20
- declare function createLLMAsAServiceOpenAIConfig(options?: LLMAsAServiceOpenAIConfigOptions): LLMAsAServiceOpenAIConfig;
21
+ declare function createLLMAsAServiceOpenAIConfig(options: LLMAsAServiceOpenAIConfigOptions): LLMAsAServiceOpenAIConfig;
21
22
  /**
22
23
  * LLMAsAService gateway adapter.
23
24
  * Uses the OpenAI Chat Completions body shape, plus gateway routing and
@@ -25,4 +26,4 @@ declare function createLLMAsAServiceOpenAIConfig(options?: LLMAsAServiceOpenAICo
25
26
  */
26
27
  declare const llmasaserviceAdapter: ProviderAdapter;
27
28
 
28
- export { LLMASASERVICE_BASE_URL, LLMASASERVICE_DEFAULT_MODEL, LLMASASERVICE_RESPONSE_HEADER_NAMES, LLMASASERVICE_SDK_PLACEHOLDER_API_KEY, type LLMAsAServiceOpenAIConfig, type LLMAsAServiceOpenAIConfigOptions, createLLMAsAServiceOpenAIConfig, llmasaserviceAdapter };
29
+ export { LLMASASERVICE_BASE_URL, LLMASASERVICE_DEFAULT_MODEL, LLMASASERVICE_RESPONSE_HEADER_NAMES, type LLMAsAServiceOpenAIConfig, type LLMAsAServiceOpenAIConfigOptions, createLLMAsAServiceOpenAIConfig, llmasaserviceAdapter };
@@ -1,23 +1,24 @@
1
- import { P as ProviderAdapter } from '../types-D6VJJo1x.js';
1
+ import { P as ProviderAdapter } from '../types-9Jv8eHhM.js';
2
2
  import '../schema-BkOMklgI.js';
3
3
  import 'zod';
4
4
 
5
5
  declare const LLMASASERVICE_BASE_URL = "https://gateway.llmasaservice.io";
6
- declare const LLMASASERVICE_SDK_PLACEHOLDER_API_KEY = "not-used-by-llm-gateway";
7
6
  declare const LLMASASERVICE_DEFAULT_MODEL = "group:standard";
8
7
  declare const LLMASASERVICE_RESPONSE_HEADER_NAMES: readonly ["x-request-id", "x-llm-model-id", "x-llm-model-group"];
9
8
  interface LLMAsAServiceOpenAIConfig {
10
9
  baseURL: string;
11
10
  apiKey: string;
12
- defaultHeaders: {
11
+ defaultHeaders?: {
13
12
  'x-project-id': string;
14
13
  };
15
14
  }
16
15
  interface LLMAsAServiceOpenAIConfigOptions {
16
+ apiKey: string;
17
17
  baseURL?: string;
18
+ /** @deprecated Project ids are no longer required by the gateway. */
18
19
  projectId?: string;
19
20
  }
20
- declare function createLLMAsAServiceOpenAIConfig(options?: LLMAsAServiceOpenAIConfigOptions): LLMAsAServiceOpenAIConfig;
21
+ declare function createLLMAsAServiceOpenAIConfig(options: LLMAsAServiceOpenAIConfigOptions): LLMAsAServiceOpenAIConfig;
21
22
  /**
22
23
  * LLMAsAService gateway adapter.
23
24
  * Uses the OpenAI Chat Completions body shape, plus gateway routing and
@@ -25,4 +26,4 @@ declare function createLLMAsAServiceOpenAIConfig(options?: LLMAsAServiceOpenAICo
25
26
  */
26
27
  declare const llmasaserviceAdapter: ProviderAdapter;
27
28
 
28
- export { LLMASASERVICE_BASE_URL, LLMASASERVICE_DEFAULT_MODEL, LLMASASERVICE_RESPONSE_HEADER_NAMES, LLMASASERVICE_SDK_PLACEHOLDER_API_KEY, type LLMAsAServiceOpenAIConfig, type LLMAsAServiceOpenAIConfigOptions, createLLMAsAServiceOpenAIConfig, llmasaserviceAdapter };
29
+ export { LLMASASERVICE_BASE_URL, LLMASASERVICE_DEFAULT_MODEL, LLMASASERVICE_RESPONSE_HEADER_NAMES, type LLMAsAServiceOpenAIConfig, type LLMAsAServiceOpenAIConfigOptions, createLLMAsAServiceOpenAIConfig, llmasaserviceAdapter };
@@ -2,18 +2,16 @@ import {
2
2
  LLMASASERVICE_BASE_URL,
3
3
  LLMASASERVICE_DEFAULT_MODEL,
4
4
  LLMASASERVICE_RESPONSE_HEADER_NAMES,
5
- LLMASASERVICE_SDK_PLACEHOLDER_API_KEY,
6
5
  createLLMAsAServiceOpenAIConfig,
7
6
  llmasaserviceAdapter
8
- } from "../chunk-7GMCNHXJ.js";
9
- import "../chunk-C5HHTLZX.js";
10
- import "../chunk-QZHR2YMK.js";
11
- import "../chunk-VOXMOGU5.js";
7
+ } from "../chunk-PSQWMBKX.js";
8
+ import "../chunk-IGLKVT74.js";
9
+ import "../chunk-46Z64RVO.js";
10
+ import "../chunk-ALBSFXYR.js";
12
11
  export {
13
12
  LLMASASERVICE_BASE_URL,
14
13
  LLMASASERVICE_DEFAULT_MODEL,
15
14
  LLMASASERVICE_RESPONSE_HEADER_NAMES,
16
- LLMASASERVICE_SDK_PLACEHOLDER_API_KEY,
17
15
  createLLMAsAServiceOpenAIConfig,
18
16
  llmasaserviceAdapter
19
17
  };
@@ -1401,6 +1401,7 @@ var LLMAsAServiceCustomerSchema = import_zod.z.object({
1401
1401
  });
1402
1402
  var LLMAsAServiceProviderOptionsSchema = import_zod.z.object({
1403
1403
  base_url: import_zod.z.string().url().optional(),
1404
+ // Deprecated compatibility fields; the gateway no longer requires project routing.
1404
1405
  project_id: import_zod.z.string().optional(),
1405
1406
  customer: LLMAsAServiceCustomerSchema.optional(),
1406
1407
  conversationId: import_zod.z.string().optional(),
@@ -2457,6 +2458,7 @@ async function applyPromptCompressionForRender(asset, runtime) {
2457
2458
  aggressiveness: theTokenCompanyConfig?.aggressiveness
2458
2459
  });
2459
2460
  promptTemplate = result.output;
2461
+ warnings.push(...result.warnings ?? []);
2460
2462
  compression.push({
2461
2463
  provider: "thetokencompany",
2462
2464
  model,
@@ -2522,41 +2524,80 @@ function reportHeuristicCompressionWarnings2(warnings, compressionWarnings, scop
2522
2524
  async function compressWithTheTokenCompany(input, options) {
2523
2525
  const apiKey = options.apiKey ?? getEnv("THETOKENCOMPANY_API_KEY") ?? getEnv("TTC_API_KEY");
2524
2526
  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."
2527
+ return createTheTokenCompanyFallback(
2528
+ input,
2529
+ "no API key was provided"
2527
2530
  );
2528
2531
  }
2529
2532
  const fetchImpl = options.fetch ?? globalThis.fetch;
2530
2533
  if (!fetchImpl) {
2531
- throw new Error("TheTokenCompany compression requires a runtime with fetch support.");
2534
+ return createTheTokenCompanyFallback(
2535
+ input,
2536
+ "fetch is unavailable in this runtime"
2537
+ );
2532
2538
  }
2533
2539
  const baseURL = (options.baseURL ?? THETOKENCOMPANY_DEFAULT_BASE_URL).replace(/\/+$/, "");
2534
2540
  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,
2541
+ let response;
2542
+ try {
2543
+ response = await fetchImpl(`${baseURL}/v1/compress`, {
2544
+ method: "POST",
2545
+ headers: {
2546
+ Authorization: `Bearer ${apiKey}`,
2547
+ "Content-Type": "application/json"
2548
+ },
2549
+ body: JSON.stringify({
2550
+ model: options.model,
2551
+ input,
2552
+ ...compressionSettings ? { compression_settings: compressionSettings } : {}
2553
+ })
2554
+ });
2555
+ } catch (error) {
2556
+ return createTheTokenCompanyFallback(
2543
2557
  input,
2544
- ...compressionSettings ? { compression_settings: compressionSettings } : {}
2545
- })
2546
- });
2558
+ `request failed: ${toErrorMessage(error)}`
2559
+ );
2560
+ }
2547
2561
  if (!response.ok) {
2548
- const body = await response.text().catch(() => "");
2549
- throw new Error(
2550
- `TheTokenCompany compression failed with HTTP ${response.status}` + (body ? `: ${body}` : ".")
2562
+ return createTheTokenCompanyFallback(
2563
+ input,
2564
+ `service returned HTTP ${response.status}`
2565
+ );
2566
+ }
2567
+ let data;
2568
+ try {
2569
+ data = await response.json();
2570
+ } catch (error) {
2571
+ return createTheTokenCompanyFallback(
2572
+ input,
2573
+ `response body was not valid JSON: ${toErrorMessage(error)}`
2551
2574
  );
2552
2575
  }
2553
- const data = await response.json();
2554
2576
  const normalized = normalizeTheTokenCompanyCompressResponse(data);
2555
2577
  if (!normalized) {
2556
- throw new Error("TheTokenCompany compression returned an invalid response payload.");
2578
+ return createTheTokenCompanyFallback(
2579
+ input,
2580
+ "response payload was invalid"
2581
+ );
2557
2582
  }
2558
2583
  return normalized;
2559
2584
  }
2585
+ function createTheTokenCompanyFallback(input, reason) {
2586
+ const tokens = estimateHeuristicTokens(input);
2587
+ return {
2588
+ output: input,
2589
+ output_tokens: tokens,
2590
+ input_tokens: tokens,
2591
+ tokens_saved: 0,
2592
+ compression_ratio: tokens === 0 ? 0 : 1,
2593
+ warnings: [
2594
+ `POK057: TheTokenCompany compression skipped; using uncompressed prompt with zero token savings (${reason}).`
2595
+ ]
2596
+ };
2597
+ }
2598
+ function toErrorMessage(error) {
2599
+ return error instanceof Error && error.message ? error.message : "unknown error";
2600
+ }
2560
2601
  function normalizeTheTokenCompanyCompressResponse(data) {
2561
2602
  if (typeof data.output !== "string" || typeof data.output_tokens !== "number") {
2562
2603
  return void 0;