promptopskit 0.7.1 → 0.8.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 +39 -4
- package/SKILL.md +152 -2
- package/dist/{chunk-OWMP5NMV.js → chunk-5XH2GROP.js} +2 -2
- package/dist/{chunk-FICB2ZSK.js → chunk-DI7Q4T7A.js} +3 -3
- package/dist/{chunk-ULVY473P.js → chunk-E4GEKWVP.js} +31 -3
- package/dist/chunk-E4GEKWVP.js.map +1 -0
- package/dist/{chunk-3G3EAV7H.js → chunk-PDVUVZAU.js} +2 -2
- package/dist/chunk-RVAFVWR2.js +1760 -0
- package/dist/chunk-RVAFVWR2.js.map +1 -0
- package/dist/{chunk-35NN5F6O.js → chunk-UQLAWU67.js} +2 -2
- package/dist/{chunk-6NOUETAC.js → chunk-Z3DPPJNU.js} +2 -2
- package/dist/{chunk-R65RAHAG.js → chunk-ZVCKP4EM.js} +3 -3
- package/dist/cli/index.js +86 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +964 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -5
- package/dist/index.d.ts +45 -5
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +954 -42
- 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 +954 -42
- 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 +954 -42
- 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 +954 -42
- 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 +954 -42
- 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 +954 -42
- 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-DBcSns_b.d.cts → schema-BgVLZ2u5.d.cts} +641 -0
- package/dist/{schema-DBcSns_b.d.ts → schema-BgVLZ2u5.d.ts} +641 -0
- package/dist/testing.cjs +27 -1
- 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-BlLXT5Qb.d.ts → types-2hnZmCkH.d.cts} +16 -3
- package/dist/{types-8T2D5KB5.d.cts → types-DgAT4jSR.d.ts} +16 -3
- package/dist/usagetap/index.d.cts +2 -2
- package/dist/usagetap/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-F552OBUV.js +0 -875
- package/dist/chunk-F552OBUV.js.map +0 -1
- package/dist/chunk-ULVY473P.js.map +0 -1
- /package/dist/{chunk-OWMP5NMV.js.map → chunk-5XH2GROP.js.map} +0 -0
- /package/dist/{chunk-FICB2ZSK.js.map → chunk-DI7Q4T7A.js.map} +0 -0
- /package/dist/{chunk-3G3EAV7H.js.map → chunk-PDVUVZAU.js.map} +0 -0
- /package/dist/{chunk-35NN5F6O.js.map → chunk-UQLAWU67.js.map} +0 -0
- /package/dist/{chunk-6NOUETAC.js.map → chunk-Z3DPPJNU.js.map} +0 -0
- /package/dist/{chunk-R65RAHAG.js.map → chunk-ZVCKP4EM.js.map} +0 -0
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ Core capabilities:
|
|
|
39
39
|
- **Reusable composition** — share tone, policy, and safety instructions with `includes`, and apply folder-level standards with `defaults.md`.
|
|
40
40
|
- **Environment and tier overrides** — keep dev/prod and plan-specific behavior in one prompt source with explicit, reviewable overrides.
|
|
41
41
|
- **Sidecar tests** — run deterministic prompt checks in local development and CI without calling a model.
|
|
42
|
-
- **Prompt compression** — optionally compress rendered prompt templates
|
|
42
|
+
- **Prompt compression** — optionally compress or compact rendered prompt templates before provider caching and request generation.
|
|
43
43
|
|
|
44
44
|
## Install
|
|
45
45
|
|
|
@@ -150,7 +150,7 @@ Supported values for `warnings.contextSize` are `auto`, `off`, `result-only`, `c
|
|
|
150
150
|
- **Folder defaults** — `defaults.md` inheritance for shared provider, model, options, metadata, and system instructions
|
|
151
151
|
- **Overrides** — Environment and tier-based overrides (base → env → tier → runtime)
|
|
152
152
|
- **6 provider adapters** — OpenAI (Chat), OpenAI (Responses), Anthropic, Gemini, OpenRouter, LLMAsAService
|
|
153
|
-
- **Prompt compression** — optional `compression.thetokencompany`
|
|
153
|
+
- **Prompt compression** — optional `compression.thetokencompany` calls TheTokenCompany, while `compression.heuristic` and `compression.code` run local no-backend compression/compaction before provider cache fields are applied
|
|
154
154
|
- **Provider-aware input caching controls** — optional `cache` front matter maps to OpenAI prompt cache hints, Anthropic `cache_control`, and Gemini `cachedContent`
|
|
155
155
|
- **Vendor escape hatch** — optional `raw.<provider>` blocks shallow-merge unmodeled request-body fields into the final provider payload
|
|
156
156
|
- **Validation** — Zod schema validation, Levenshtein-based "did you mean?" for typos, variable usage checks
|
|
@@ -294,6 +294,39 @@ const result = await kit.renderPrompt({
|
|
|
294
294
|
|
|
295
295
|
Compression applies only to the rendered `# Prompt template`. System instructions and history are left unchanged, and provider cache fields are applied to the compressed prompt text.
|
|
296
296
|
|
|
297
|
+
For no-backend compression, use the local heuristic compressor:
|
|
298
|
+
|
|
299
|
+
```yaml
|
|
300
|
+
compression:
|
|
301
|
+
heuristic:
|
|
302
|
+
enabled: true
|
|
303
|
+
query_variable: user_question
|
|
304
|
+
json_to_toon: true
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
For code, use compaction instead of text compression:
|
|
308
|
+
|
|
309
|
+
```yaml
|
|
310
|
+
compression:
|
|
311
|
+
code:
|
|
312
|
+
enabled: true
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Individual context insertions can opt in with schema (`context.inputs[].compression`) or at the placeholder call site:
|
|
316
|
+
|
|
317
|
+
```markdown
|
|
318
|
+
Context: {{ account_context | compress }}
|
|
319
|
+
Payload: {{ json_payload | toon }}
|
|
320
|
+
Source: {{ source_code | compact }}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
If `json_to_toon: true` or `{{ value | toon }}` cannot parse a complete JSON object or array, PromptOpsKit preserves the original value and returns a `POK031` warning. When `compression.code.enabled: true`, PromptOpsKit skips TheTokenCompany prompt-template compression and returns `POK033` so code is not text-compressed by a backend.
|
|
324
|
+
|
|
325
|
+
Credit: the local heuristic approach is based on Jason Kneen's [open-thetokenco](https://github.com/jasonkneen/open-thetokenco/tree/main).
|
|
326
|
+
TOON preprocessing uses a local encode-only implementation inspired by the MIT-licensed [TOON project](https://github.com/toon-format/toon) by Johann Schopplich, without adding `@toon-format/toon` as a runtime dependency.
|
|
327
|
+
|
|
328
|
+
See [Compression and Compaction](./docs/compression.md) for complete examples and token-savings reporting.
|
|
329
|
+
|
|
297
330
|
Use `provider_options` when PromptOpsKit has a known provider-specific mapping, such as Anthropic `top_k`, Gemini's native `response_schema`, OpenRouter routing fields, or LLMAsAService gateway routing/customer metadata.
|
|
298
331
|
|
|
299
332
|
```yaml
|
|
@@ -626,7 +659,7 @@ Creates a `PromptOpsKit` instance.
|
|
|
626
659
|
|
|
627
660
|
### `kit.renderPrompt(options)`
|
|
628
661
|
|
|
629
|
-
Renders a prompt for a specific provider. Returns `{ resolved, request?, returnMessage?, compression?, warnings }`.
|
|
662
|
+
Renders a prompt for a specific provider. Returns `{ resolved, request?, returnMessage?, compression?, compressionSummary?, warnings }`.
|
|
630
663
|
|
|
631
664
|
| Option | Type | Description |
|
|
632
665
|
|--------|------|-------------|
|
|
@@ -644,6 +677,8 @@ Renders a prompt for a specific provider. Returns `{ resolved, request?, returnM
|
|
|
644
677
|
| `openaiResponses` | `object` | Optional Responses API extras (`previous_response_id`, `conversation`, `instructions`, `parallel_tool_calls`, `max_tool_calls`, `store`, `metadata`, `include`, `background`) |
|
|
645
678
|
| `theTokenCompany` | `object` | Optional compression settings (`apiKey`, `baseURL`, `fetch`) used when `compression.thetokencompany.enabled: true` |
|
|
646
679
|
|
|
680
|
+
Use `compressionSummary.tokensSaved` for a lightweight operation-level aggregate across compression and compaction steps. Use `compression` for the detailed per-step breakdown.
|
|
681
|
+
|
|
647
682
|
### `kit.loadPrompt(path)` / `kit.resolvePrompt(path, options)` / `kit.validatePrompt(path)`
|
|
648
683
|
|
|
649
684
|
Lower-level methods for loading, resolving (includes + overrides), and validating individual prompts.
|
|
@@ -668,7 +703,7 @@ Prompt files use YAML front matter with these fields:
|
|
|
668
703
|
| `reasoning` | `object` | `{ effort, budget_tokens }` |
|
|
669
704
|
| `sampling` | `object` | `{ temperature, top_p, frequency_penalty, presence_penalty, stop, max_output_tokens }` |
|
|
670
705
|
| `response` | `object` | `{ format, stream, schema, schema_ref, schema_name, schema_description, schema_strict }` |
|
|
671
|
-
| `compression` | `object` | Prompt-template compression controls (`thetokencompany`) |
|
|
706
|
+
| `compression` | `object` | Prompt-template compression controls (`thetokencompany`, `heuristic`, `code`) |
|
|
672
707
|
| `cache` | `object` | Provider-specific cache controls (`openai`, `anthropic`, `gemini`/`google`) |
|
|
673
708
|
| `tools` | `array` | Tool references (string names or inline definitions) |
|
|
674
709
|
| `provider_options` | `object` | Provider-specific non-portable options (`anthropic`, `gemini`, `openrouter`, `llmasaservice`) |
|
package/SKILL.md
CHANGED
|
@@ -45,7 +45,9 @@ Behavior:
|
|
|
45
45
|
- Include `provider` and `model` only if they are requested or not supplied by
|
|
46
46
|
a nearby `defaults.md`.
|
|
47
47
|
- Include `sampling`, `reasoning`, `response`, `tools`, `cache`,
|
|
48
|
-
|
|
48
|
+
`provider_options`, or `raw` only when the prompt behavior requires them.
|
|
49
|
+
- Include `compression` only when the prompt or data insertions explicitly need
|
|
50
|
+
opt-in compression or code compaction.
|
|
49
51
|
- Include `context.inputs` for every `{{ variable }}` in the body.
|
|
50
52
|
- Use object-form inputs with `non_empty: true`, `max_size`, `trim`, and
|
|
51
53
|
validation controls when the input is user-provided or unbounded.
|
|
@@ -382,12 +384,13 @@ the fields required by that specific file:
|
|
|
382
384
|
| `reasoning` | object | no | `{ effort: low|medium|high, budget_tokens: number }` |
|
|
383
385
|
| `sampling` | object | no | `{ temperature, top_p, frequency_penalty, presence_penalty, stop, max_output_tokens }` |
|
|
384
386
|
| `response` | object | no | `{ format: text|json|markdown, stream: boolean, schema?: object, schema_name?: string, schema_description?: string, schema_strict?: boolean }` |
|
|
387
|
+
| `compression` | object | no | Prompt-template compression controls: `thetokencompany`, local `heuristic`, or local `code` compaction |
|
|
385
388
|
| `cache` | object | no | Provider-specific cache controls (`openai`, `anthropic`, `gemini`/`google`) |
|
|
386
389
|
| `tools` | array | no | Tool names (strings) or inline definitions with `{ name, description, input_schema }` |
|
|
387
390
|
| `provider_options` | object | no | Provider-specific advanced options (`anthropic`, `gemini`, `openrouter`, `llmasaservice`) |
|
|
388
391
|
| `raw` | object | no | Provider-scoped request-body passthrough for unmodeled vendor fields |
|
|
389
392
|
| `mcp` | object | no | `{ servers: [string | { name, config }] }` |
|
|
390
|
-
| `context.inputs` | `Array<string | { name, optional?, warnings?, max_size?, trim?, allow_regex?, deny_regex?, non_empty?, reject_secrets? }>` | no | Declared variable names used in templates, with optionality, warning controls, size budgets,
|
|
393
|
+
| `context.inputs` | `Array<string | { name, optional?, warnings?, max_size?, trim?, allow_regex?, deny_regex?, non_empty?, reject_secrets?, compression? }>` | no | Declared variable names used in templates, with optionality, warning controls, size budgets, runtime hardening controls, and optional per-input compression |
|
|
391
394
|
| `context.history` | object | no | `{ max_items: number }`; caps rendered history by compacting older turns into one preserved message |
|
|
392
395
|
| `includes` | string[] | no | Relative paths to other prompt files to include |
|
|
393
396
|
| `environments` | object | no | Per-environment overrides (see Overrides) |
|
|
@@ -433,6 +436,9 @@ Rules:
|
|
|
433
436
|
- Escape literal braces with `\{{` and `\}}`
|
|
434
437
|
- In strict mode, missing variables throw an error
|
|
435
438
|
- In permissive mode, unresolved placeholders are left intact
|
|
439
|
+
- Compression modifiers are single-token opt-ins: `{{ text | compress }}`,
|
|
440
|
+
`{{ json_payload | toon }}`, `{{ source_code | compact }}`, or
|
|
441
|
+
`{{ source_code | code }}`
|
|
436
442
|
|
|
437
443
|
Example with a size budget:
|
|
438
444
|
|
|
@@ -451,6 +457,140 @@ If a validator declares `return_message`, `renderPrompt()` returns that message
|
|
|
451
457
|
|
|
452
458
|
Malformed `allow_regex` and `deny_regex` values fail during `validate` and `compile`, not just at render time. When regex compilation fails, the error includes the prompt id, variable name, field name, and raw configured value. Double-quoted YAML regex strings with raw backslashes fail as `POK013`; use `/pattern/i`, single-quoted `pattern: '...'`, or doubled backslashes.
|
|
453
459
|
|
|
460
|
+
### Prompt and data compression
|
|
461
|
+
|
|
462
|
+
Compression is always opt-in. Add it only when a prompt template or a specific
|
|
463
|
+
data insertion is large enough to justify changing the rendered prompt. Do not
|
|
464
|
+
compress system instructions or small inputs by default.
|
|
465
|
+
|
|
466
|
+
Use `compression.thetokencompany` when the rendered `# Prompt template` should
|
|
467
|
+
be compressed by TheTokenCompany before provider request generation:
|
|
468
|
+
|
|
469
|
+
```yaml
|
|
470
|
+
compression:
|
|
471
|
+
thetokencompany:
|
|
472
|
+
enabled: true
|
|
473
|
+
model: bear-2
|
|
474
|
+
aggressiveness: 0.2
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
Runtime callers must pass `theTokenCompany.apiKey` or provide
|
|
478
|
+
`THETOKENCOMPANY_API_KEY`/`TTC_API_KEY`. TheTokenCompany compression is the only
|
|
479
|
+
compression mode that makes a backend call.
|
|
480
|
+
|
|
481
|
+
Use local heuristic compression when the prompt template is prose or natural
|
|
482
|
+
language context and no backend call should be made:
|
|
483
|
+
|
|
484
|
+
```yaml
|
|
485
|
+
compression:
|
|
486
|
+
heuristic:
|
|
487
|
+
enabled: true
|
|
488
|
+
min_tokens: 120
|
|
489
|
+
max_sentences: 8
|
|
490
|
+
target_reduction: 0.45
|
|
491
|
+
query_variable: user_question
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
The heuristic compressor deduplicates text, ranks sentences against `query`,
|
|
495
|
+
`query_variable`, or system instructions, and keeps the highest-scoring
|
|
496
|
+
sentences inside the token budget. It is heuristic, so use it for context where
|
|
497
|
+
extractive reduction is acceptable, not for code or strict structured payloads.
|
|
498
|
+
|
|
499
|
+
Use TOON preprocessing for complete JSON object/array inputs:
|
|
500
|
+
|
|
501
|
+
```yaml
|
|
502
|
+
compression:
|
|
503
|
+
heuristic:
|
|
504
|
+
enabled: true
|
|
505
|
+
json_to_toon: true
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
For one JSON insertion, prefer the placeholder modifier:
|
|
509
|
+
|
|
510
|
+
```markdown
|
|
511
|
+
Payload:
|
|
512
|
+
{{ json_payload | toon }}
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
If `json_to_toon: true` or `{{ value | toon }}` cannot parse a complete JSON
|
|
516
|
+
object or array, PromptOpsKit preserves the original value and returns a
|
|
517
|
+
`POK031` warning instead of sentence-compressing broken JSON.
|
|
518
|
+
|
|
519
|
+
Use code compaction for code. Do not text-compress code:
|
|
520
|
+
|
|
521
|
+
```yaml
|
|
522
|
+
compression:
|
|
523
|
+
code:
|
|
524
|
+
enabled: true
|
|
525
|
+
remove_comments: true
|
|
526
|
+
trim_indentation: true
|
|
527
|
+
collapse_blank_lines: true
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
For one code insertion:
|
|
531
|
+
|
|
532
|
+
```markdown
|
|
533
|
+
Source:
|
|
534
|
+
{{ source_code | compact }}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
Code compaction removes comments, common indentation, trailing whitespace, and
|
|
538
|
+
blank lines by default. Set `remove_comments: false` when comments carry
|
|
539
|
+
semantics, such as compiler pragmas, generated-code markers, or `@ts-ignore`.
|
|
540
|
+
When prompt-level `compression.code.enabled: true`, PromptOpsKit skips
|
|
541
|
+
TheTokenCompany compression and returns `POK033` so code is not backend
|
|
542
|
+
text-compressed.
|
|
543
|
+
|
|
544
|
+
Context inputs can opt in through schema:
|
|
545
|
+
|
|
546
|
+
```yaml
|
|
547
|
+
context:
|
|
548
|
+
inputs:
|
|
549
|
+
- name: account_context
|
|
550
|
+
compression:
|
|
551
|
+
heuristic:
|
|
552
|
+
enabled: true
|
|
553
|
+
query_variable: user_question
|
|
554
|
+
- name: payload
|
|
555
|
+
compression:
|
|
556
|
+
heuristic:
|
|
557
|
+
enabled: true
|
|
558
|
+
json_to_toon: true
|
|
559
|
+
- name: source_code
|
|
560
|
+
compression: code
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Or at the placeholder call site:
|
|
564
|
+
|
|
565
|
+
```markdown
|
|
566
|
+
Context: {{ account_context | compress }}
|
|
567
|
+
Payload: {{ payload | toon }}
|
|
568
|
+
Source: {{ source_code | compact }}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
Placeholder modifiers are single-token shortcuts. Use
|
|
572
|
+
`context.inputs[].compression` when a placeholder needs options such as
|
|
573
|
+
`query_variable`, `json_to_toon`, or `remove_comments: false`.
|
|
574
|
+
|
|
575
|
+
Render results may include:
|
|
576
|
+
|
|
577
|
+
```typescript
|
|
578
|
+
result.compression; // per-step details
|
|
579
|
+
result.compressionSummary; // operation-level aggregate
|
|
580
|
+
result.warnings; // includes POK031/POK032/POK033 compression warnings
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Treat `compressionSummary.tokensSaved` as an operation-level aggregate across
|
|
584
|
+
all compression and compaction steps, not a guaranteed net request-token delta.
|
|
585
|
+
Use `result.compression` for the per-placeholder or per-provider breakdown.
|
|
586
|
+
|
|
587
|
+
Credit the source projects when documenting compression: the local
|
|
588
|
+
token-compression approach is based on Jason Kneen's
|
|
589
|
+
[open-thetokenco](https://github.com/jasonkneen/open-thetokenco/tree/main).
|
|
590
|
+
TOON preprocessing uses a local encode-only implementation inspired by the
|
|
591
|
+
MIT-licensed [TOON project](https://github.com/toon-format/toon) by Johann
|
|
592
|
+
Schopplich.
|
|
593
|
+
|
|
454
594
|
### Conversation history limits
|
|
455
595
|
|
|
456
596
|
Use `context.history.max_items` when a chat-style prompt should bound rendered conversation history:
|
|
@@ -716,6 +856,14 @@ if (!result.request) {
|
|
|
716
856
|
}
|
|
717
857
|
|
|
718
858
|
const { request } = result;
|
|
859
|
+
|
|
860
|
+
if (result.compressionSummary) {
|
|
861
|
+
console.log('Compression savings:', result.compressionSummary.tokensSaved);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
for (const warning of result.warnings) {
|
|
865
|
+
console.warn(warning);
|
|
866
|
+
}
|
|
719
867
|
```
|
|
720
868
|
|
|
721
869
|
### Use `adapter.renderPrompt()` when:
|
|
@@ -904,3 +1052,5 @@ Hello {{ name }}
|
|
|
904
1052
|
9. **Validate before compile and compile before shipping** when prompts are part of the build
|
|
905
1053
|
10. **Variable names** should be `snake_case`
|
|
906
1054
|
11. **Prompt file names** should be `kebab-case.md`
|
|
1055
|
+
12. **Compression must stay opt-in** through `compression` config or placeholder modifiers
|
|
1056
|
+
13. **Use TOON for complete JSON payloads** and code compaction for code; do not text-compress code
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
renderSections,
|
|
5
5
|
resolveAssetForProvider,
|
|
6
6
|
withPromptInputSupport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RVAFVWR2.js";
|
|
8
8
|
|
|
9
9
|
// src/providers/openai-responses.ts
|
|
10
10
|
var openaiResponsesAdapter = withPromptInputSupport({
|
|
@@ -112,4 +112,4 @@ var openaiResponsesAdapter = withPromptInputSupport({
|
|
|
112
112
|
export {
|
|
113
113
|
openaiResponsesAdapter
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
115
|
+
//# sourceMappingURL=chunk-5XH2GROP.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openaiAdapter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PDVUVZAU.js";
|
|
4
4
|
import {
|
|
5
5
|
applyRawProviderBody,
|
|
6
6
|
resolveAssetForProvider,
|
|
7
7
|
withPromptInputSupport
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-RVAFVWR2.js";
|
|
9
9
|
|
|
10
10
|
// src/providers/llmasaservice.ts
|
|
11
11
|
var LLMASASERVICE_BASE_URL = "https://gateway.llmasaservice.io";
|
|
@@ -127,4 +127,4 @@ export {
|
|
|
127
127
|
createLLMAsAServiceOpenAIConfig,
|
|
128
128
|
llmasaserviceAdapter
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-DI7Q4T7A.js.map
|
|
@@ -105,8 +105,25 @@ var TheTokenCompanyCompressionSchema = z.object({
|
|
|
105
105
|
model: z.string().min(1).optional(),
|
|
106
106
|
aggressiveness: z.number().min(0).max(1).optional()
|
|
107
107
|
});
|
|
108
|
+
var HeuristicCompressionSchema = z.object({
|
|
109
|
+
enabled: z.boolean().optional(),
|
|
110
|
+
min_tokens: z.number().int().positive().optional(),
|
|
111
|
+
max_sentences: z.number().int().positive().optional(),
|
|
112
|
+
target_reduction: z.number().min(0).max(1).optional(),
|
|
113
|
+
query: z.string().optional(),
|
|
114
|
+
query_variable: z.string().min(1).optional(),
|
|
115
|
+
json_to_toon: z.boolean().optional()
|
|
116
|
+
});
|
|
117
|
+
var CodeCompactionSchema = z.object({
|
|
118
|
+
enabled: z.boolean().optional(),
|
|
119
|
+
remove_comments: z.boolean().optional(),
|
|
120
|
+
trim_indentation: z.boolean().optional(),
|
|
121
|
+
collapse_blank_lines: z.boolean().optional()
|
|
122
|
+
});
|
|
108
123
|
var CompressionSchema = z.object({
|
|
109
|
-
thetokencompany: TheTokenCompanyCompressionSchema.optional()
|
|
124
|
+
thetokencompany: TheTokenCompanyCompressionSchema.optional(),
|
|
125
|
+
heuristic: HeuristicCompressionSchema.optional(),
|
|
126
|
+
code: CodeCompactionSchema.optional()
|
|
110
127
|
});
|
|
111
128
|
var OpenAICacheSchema = z.object({
|
|
112
129
|
prompt_cache_key: z.string().min(1).optional(),
|
|
@@ -146,12 +163,21 @@ var ContextBuiltInValidatorSchema = z.union([
|
|
|
146
163
|
return_message: z.string().optional()
|
|
147
164
|
})
|
|
148
165
|
]);
|
|
166
|
+
var ContextInputCompressionSchema = z.union([
|
|
167
|
+
z.literal("heuristic"),
|
|
168
|
+
z.literal("code"),
|
|
169
|
+
z.object({
|
|
170
|
+
heuristic: HeuristicCompressionSchema.optional(),
|
|
171
|
+
code: CodeCompactionSchema.optional()
|
|
172
|
+
})
|
|
173
|
+
]);
|
|
149
174
|
var ContextInputDefinitionObjectSchema = z.object({
|
|
150
175
|
name: z.string(),
|
|
151
176
|
optional: z.boolean().optional(),
|
|
152
177
|
warnings: z.boolean().optional(),
|
|
153
178
|
max_size: z.number().int().positive().optional(),
|
|
154
179
|
trim: z.union([z.boolean(), z.enum(["start", "end", "both"])]).optional(),
|
|
180
|
+
compression: ContextInputCompressionSchema.optional(),
|
|
155
181
|
allow_regex: ContextRegexSchema.optional(),
|
|
156
182
|
deny_regex: ContextRegexSchema.optional(),
|
|
157
183
|
non_empty: ContextBuiltInValidatorSchema.optional(),
|
|
@@ -719,7 +745,9 @@ function mergeCompression(base, local) {
|
|
|
719
745
|
const merged = {
|
|
720
746
|
...base ?? {},
|
|
721
747
|
...local ?? {},
|
|
722
|
-
thetokencompany: mergeRecordBlock(base?.thetokencompany, local?.thetokencompany)
|
|
748
|
+
thetokencompany: mergeRecordBlock(base?.thetokencompany, local?.thetokencompany),
|
|
749
|
+
heuristic: mergeRecordBlock(base?.heuristic, local?.heuristic),
|
|
750
|
+
code: mergeRecordBlock(base?.code, local?.code)
|
|
723
751
|
};
|
|
724
752
|
removeEmptyProviderBlocks(merged);
|
|
725
753
|
return Object.keys(merged).length > 0 ? merged : void 0;
|
|
@@ -800,4 +828,4 @@ export {
|
|
|
800
828
|
parsePrompt,
|
|
801
829
|
loadPromptFile
|
|
802
830
|
};
|
|
803
|
-
//# sourceMappingURL=chunk-
|
|
831
|
+
//# sourceMappingURL=chunk-E4GEKWVP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema/schema.ts","../src/parser/sections.ts","../src/parser/parser.ts","../src/parser/frontmatter-guard.ts","../src/parser/loader.ts","../src/parser/response-schema-ref.ts"],"sourcesContent":["import { z } from 'zod';\n\n// --- Tool definitions ---\n\nexport const InlineToolDefSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n input_schema: z.record(z.unknown()).optional(),\n});\n\nexport type InlineToolDef = z.infer<typeof InlineToolDefSchema>;\n\nexport const ToolRefSchema = z.union([z.string(), InlineToolDefSchema]);\n\n// --- MCP ---\n\nexport const MCPServerRefSchema = z.union([\n z.string(),\n z.object({\n name: z.string(),\n config: z.record(z.unknown()).optional(),\n }),\n]);\n\nexport type MCPServerRef = z.infer<typeof MCPServerRefSchema>;\n\n// --- Reasoning ---\n\nexport const ReasoningSchema = z.object({\n effort: z.enum(['low', 'medium', 'high']).optional(),\n budget_tokens: z.number().int().positive().optional(),\n});\n\n// --- Sampling ---\n\nexport const SamplingSchema = z.object({\n temperature: z.number().min(0).max(2).optional(),\n top_p: z.number().min(0).max(1).optional(),\n frequency_penalty: z.number().optional(),\n presence_penalty: z.number().optional(),\n stop: z.array(z.string()).optional(),\n max_output_tokens: z.number().int().positive().optional(),\n});\n\n// --- Response ---\n\nexport const ResponseSchema = z.object({\n format: z.enum(['text', 'json', 'markdown']).optional(),\n stream: z.boolean().optional(),\n schema: z.record(z.unknown()).optional(),\n schema_ref: z.string().min(1).optional(),\n schema_source: z.object({\n mode: z.enum(['inline', 'schema_ref_json', 'schema_ref_zod_module']).optional(),\n ref: z.string().optional(),\n resolved_path: z.string().optional(),\n hash: z.string().optional(),\n }).optional(),\n schema_name: z.string().optional(),\n schema_description: z.string().optional(),\n schema_strict: z.boolean().optional(),\n});\n\nexport const ResponseSchemaWithValidation = ResponseSchema.superRefine((value, ctx) => {\n if (value.schema !== undefined && value.schema_ref !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'response.schema and response.schema_ref are mutually exclusive',\n path: ['schema_ref'],\n });\n }\n});\n\n\n// --- Provider-specific options ---\n\nexport const AnthropicProviderOptionsSchema = z.object({\n top_k: z.number().int().min(0).optional(),\n tool_choice: z.record(z.unknown()).optional(),\n output_config: z.record(z.unknown()).optional(),\n});\n\nexport const GeminiProviderOptionsSchema = z.object({\n candidate_count: z.number().int().positive().optional(),\n top_k: z.number().int().min(0).optional(),\n seed: z.number().int().optional(),\n response_schema: z.record(z.unknown()).optional(),\n response_json_schema: z.record(z.unknown()).optional(),\n response_modalities: z.array(z.string()).optional(),\n thinking_budget_tokens: z.number().int().positive().optional(),\n});\n\nexport const OpenRouterProviderOptionsSchema = z.object({\n provider: z.record(z.unknown()).optional(),\n transforms: z.array(z.string()).optional(),\n plugins: z.array(z.record(z.unknown())).optional(),\n models: z.array(z.string()).optional(),\n});\n\nexport const LLMAsAServiceCustomerSchema = z.object({\n customer_id: z.string(),\n customer_name: z.string().optional(),\n customer_user_id: z.string().optional(),\n customer_user_name: z.string().optional(),\n customer_user_email: z.string().optional(),\n});\n\nexport const LLMAsAServiceProviderOptionsSchema = z.object({\n base_url: z.string().url().optional(),\n project_id: z.string().optional(),\n customer: LLMAsAServiceCustomerSchema.optional(),\n conversationId: z.string().optional(),\n conversationTitle: z.string().optional(),\n projectId: z.string().optional(),\n});\n\nexport const ProviderOptionsSchema = z.object({\n anthropic: AnthropicProviderOptionsSchema.optional(),\n gemini: GeminiProviderOptionsSchema.optional(),\n openrouter: OpenRouterProviderOptionsSchema.optional(),\n llmasaservice: LLMAsAServiceProviderOptionsSchema.optional(),\n});\n\nexport type ProviderOptions = z.infer<typeof ProviderOptionsSchema>;\n\n// --- Raw provider body passthrough ---\n\nexport const RawProviderBodySchema = z.object({\n openai: z.record(z.unknown()).optional(),\n 'openai-responses': z.record(z.unknown()).optional(),\n openai_responses: z.record(z.unknown()).optional(),\n anthropic: z.record(z.unknown()).optional(),\n gemini: z.record(z.unknown()).optional(),\n google: z.record(z.unknown()).optional(),\n openrouter: z.record(z.unknown()).optional(),\n llmasaservice: z.record(z.unknown()).optional(),\n});\n\nexport type RawProviderBody = z.infer<typeof RawProviderBodySchema>;\n\n// --- Prompt compression ---\n\nexport const TheTokenCompanyCompressionSchema = z.object({\n enabled: z.boolean().optional(),\n model: z.string().min(1).optional(),\n aggressiveness: z.number().min(0).max(1).optional(),\n});\n\nexport const HeuristicCompressionSchema = z.object({\n enabled: z.boolean().optional(),\n min_tokens: z.number().int().positive().optional(),\n max_sentences: z.number().int().positive().optional(),\n target_reduction: z.number().min(0).max(1).optional(),\n query: z.string().optional(),\n query_variable: z.string().min(1).optional(),\n json_to_toon: z.boolean().optional(),\n});\n\nexport const CodeCompactionSchema = z.object({\n enabled: z.boolean().optional(),\n remove_comments: z.boolean().optional(),\n trim_indentation: z.boolean().optional(),\n collapse_blank_lines: z.boolean().optional(),\n});\n\nexport const CompressionSchema = z.object({\n thetokencompany: TheTokenCompanyCompressionSchema.optional(),\n heuristic: HeuristicCompressionSchema.optional(),\n code: CodeCompactionSchema.optional(),\n});\n\nexport type Compression = z.infer<typeof CompressionSchema>;\nexport type TheTokenCompanyCompression = z.infer<typeof TheTokenCompanyCompressionSchema>;\nexport type HeuristicCompression = z.infer<typeof HeuristicCompressionSchema>;\nexport type CodeCompaction = z.infer<typeof CodeCompactionSchema>;\n\n// --- Cache controls ---\n\nexport const OpenAICacheSchema = z.object({\n prompt_cache_key: z.string().min(1).optional(),\n retention: z.enum(['in_memory', '24h']).optional(),\n});\n\nexport const AnthropicCacheSchema = z.object({\n mode: z.enum(['automatic', 'explicit']).optional(),\n type: z.literal('ephemeral').optional(),\n ttl: z.enum(['5m', '1h']).optional(),\n cache_system_instructions: z.boolean().optional(),\n cache_tools: z.boolean().optional(),\n cache_prompt_template: z.boolean().optional(),\n});\n\nexport const GeminiCacheSchema = z.object({\n cached_content: z.string().min(1).optional(),\n});\n\nexport const CacheSchema = z.object({\n openai: OpenAICacheSchema.optional(),\n anthropic: AnthropicCacheSchema.optional(),\n gemini: GeminiCacheSchema.optional(),\n google: GeminiCacheSchema.optional(),\n});\n\n// --- Context ---\n\nexport const HistorySchema = z.object({\n max_items: z.number().int().positive().optional(),\n});\n\nexport const ContextRegexSchema = z.union([\n z.string(),\n z.object({\n pattern: z.string(),\n flags: z.string().optional(),\n return_message: z.string().optional(),\n }),\n]);\n\nexport const ContextBuiltInValidatorSchema = z.union([\n z.boolean(),\n z.object({\n return_message: z.string().optional(),\n }),\n]);\n\nexport const ContextInputCompressionSchema = z.union([\n z.literal('heuristic'),\n z.literal('code'),\n z.object({\n heuristic: HeuristicCompressionSchema.optional(),\n code: CodeCompactionSchema.optional(),\n }),\n]);\n\nexport const ContextInputDefinitionObjectSchema = z.object({\n name: z.string(),\n optional: z.boolean().optional(),\n warnings: z.boolean().optional(),\n max_size: z.number().int().positive().optional(),\n trim: z.union([z.boolean(), z.enum(['start', 'end', 'both'])]).optional(),\n compression: ContextInputCompressionSchema.optional(),\n allow_regex: ContextRegexSchema.optional(),\n deny_regex: ContextRegexSchema.optional(),\n non_empty: ContextBuiltInValidatorSchema.optional(),\n reject_secrets: ContextBuiltInValidatorSchema.optional(),\n});\n\nexport const ContextInputDefinitionSchema = z.union([\n z.string(),\n ContextInputDefinitionObjectSchema,\n]);\n\nexport type ContextInputDefinition = z.infer<typeof ContextInputDefinitionSchema>;\nexport type ContextInputCompression = z.infer<typeof ContextInputCompressionSchema>;\nexport type ContextRegexDefinition = z.infer<typeof ContextRegexSchema>;\nexport type ContextBuiltInValidatorDefinition = z.infer<typeof ContextBuiltInValidatorSchema>;\n\nexport const ContextSchema = z.object({\n inputs: z.array(ContextInputDefinitionSchema).optional(),\n history: HistorySchema.optional(),\n});\n\n// --- Metadata ---\n\nexport const MetadataSchema = z.object({\n owner: z.string().optional(),\n tags: z.array(z.string()).optional(),\n review_required: z.boolean().optional(),\n stable: z.boolean().optional(),\n});\n\n// --- MCP block ---\n\nexport const MCPSchema = z.object({\n servers: z.array(MCPServerRefSchema).optional(),\n});\n\n// --- Overrides (subset allowed in environments/tiers) ---\n\nexport const PromptAssetOverridesSchema = z.object({\n model: z.string().optional(),\n fallback_models: z.array(z.string()).optional(),\n reasoning: ReasoningSchema.optional(),\n sampling: SamplingSchema.optional(),\n response: ResponseSchemaWithValidation.optional(),\n compression: CompressionSchema.optional(),\n cache: CacheSchema.optional(),\n raw: RawProviderBodySchema.optional(),\n tools: z.array(ToolRefSchema).optional(),\n provider_options: ProviderOptionsSchema.optional(),\n});\n\nexport type PromptAssetOverrides = z.infer<typeof PromptAssetOverridesSchema>;\n\n// --- Source tracking ---\n\nexport const SourceSchema = z.object({\n file_path: z.string().optional(),\n checksum: z.string().optional(),\n});\n\n// --- Sections (populated by parser) ---\n\nexport const SectionsSchema = z.object({\n system_instructions: z.string().optional(),\n prompt_template: z.string().optional(),\n notes: z.string().optional(),\n});\n\n// --- Defaults files (folder-level inheritance) ---\n\nexport const PromptDefaultsSchema = z.object({\n provider: z.enum(['openai', 'openai-responses', 'anthropic', 'google', 'gemini', 'openrouter', 'llmasaservice', 'any']).optional(),\n model: z.string().optional(),\n fallback_models: z.array(z.string()).optional(),\n reasoning: ReasoningSchema.optional(),\n sampling: SamplingSchema.optional(),\n response: ResponseSchema.optional(),\n compression: CompressionSchema.optional(),\n cache: CacheSchema.optional(),\n raw: RawProviderBodySchema.optional(),\n tools: z.array(ToolRefSchema).optional(),\n provider_options: ProviderOptionsSchema.optional(),\n mcp: MCPSchema.optional(),\n context: ContextSchema.optional(),\n includes: z.array(z.string()).optional(),\n environments: z.record(PromptAssetOverridesSchema).optional(),\n tiers: z.record(PromptAssetOverridesSchema).optional(),\n metadata: MetadataSchema.optional(),\n sections: z.object({\n system_instructions: z.string().optional(),\n }).optional(),\n});\n\nexport type PromptDefaults = z.infer<typeof PromptDefaultsSchema>;\n\n// --- Top-level PromptAsset ---\n\nexport const PromptAssetSchema = z.object({\n id: z.string(),\n schema_version: z.number().int().positive().default(1),\n description: z.string().optional(),\n\n provider: z.enum(['openai', 'openai-responses', 'anthropic', 'google', 'gemini', 'openrouter', 'llmasaservice', 'any']).optional(),\n model: z.string().optional(),\n fallback_models: z.array(z.string()).optional(),\n\n reasoning: ReasoningSchema.optional(),\n sampling: SamplingSchema.optional(),\n response: ResponseSchemaWithValidation.optional(),\n compression: CompressionSchema.optional(),\n cache: CacheSchema.optional(),\n raw: RawProviderBodySchema.optional(),\n\n tools: z.array(ToolRefSchema).optional(),\n provider_options: ProviderOptionsSchema.optional(),\n mcp: MCPSchema.optional(),\n\n context: ContextSchema.optional(),\n\n includes: z.array(z.string()).optional(),\n\n environments: z.record(PromptAssetOverridesSchema).optional(),\n tiers: z.record(PromptAssetOverridesSchema).optional(),\n\n metadata: MetadataSchema.optional(),\n\n // Populated by parser, not authored in YAML\n sections: SectionsSchema.optional(),\n source: SourceSchema.optional(),\n});\n\nexport type PromptAsset = z.infer<typeof PromptAssetSchema>;\n\n// --- Resolved asset (after includes, overrides applied) ---\n\nexport interface ResolvedPromptAsset extends PromptAsset {\n sections: {\n system_instructions?: string;\n prompt_template?: string;\n notes?: string;\n };\n source: {\n file_path?: string;\n checksum?: string;\n };\n}\n","export interface Sections {\n system_instructions?: string;\n prompt_template?: string;\n notes?: string;\n}\n\nconst SECTION_MAP: Record<string, keyof Sections> = {\n 'system instructions': 'system_instructions',\n 'prompt template': 'prompt_template',\n 'notes': 'notes',\n};\n\n/**\n * Extract named sections from the markdown body using H1 headings.\n * Case-insensitive. H2+ within a section is treated as content.\n * If no H1 headings are found, the entire body is treated as prompt_template.\n */\nexport function extractSections(body: string): Sections {\n const lines = body.split(/\\r?\\n/);\n const sections: Sections = {};\n\n let currentKey: keyof Sections | null = null;\n let currentLines: string[] = [];\n let foundAnyH1 = false;\n\n for (const line of lines) {\n const h1Match = line.match(/^#\\s+(.+)$/);\n if (h1Match) {\n // Flush previous section\n if (currentKey) {\n sections[currentKey] = currentLines.join('\\n').trim();\n }\n\n foundAnyH1 = true;\n const heading = h1Match[1].trim().toLowerCase();\n currentKey = SECTION_MAP[heading] ?? null;\n currentLines = [];\n } else {\n currentLines.push(line);\n }\n }\n\n // Flush last section\n if (currentKey) {\n sections[currentKey] = currentLines.join('\\n').trim();\n }\n\n // If no H1 headings found, treat entire body as prompt_template\n if (!foundAnyH1) {\n const trimmed = body.trim();\n if (trimmed) {\n sections.prompt_template = trimmed;\n }\n }\n\n return sections;\n}\n","import matter from 'gray-matter';\nimport { PromptAssetSchema } from '../schema/index.js';\nimport type { PromptAsset } from '../schema/index.js';\nimport { assertRegexFrontMatterQuoting } from './frontmatter-guard.js';\nimport { extractSections } from './sections.js';\n\nexport interface ParseResult {\n asset: PromptAsset;\n raw: {\n frontMatter: Record<string, unknown>;\n body: string;\n };\n}\n\n/**\n * Parse a prompt markdown string (YAML front matter + markdown body)\n * into a validated PromptAsset.\n */\nexport function parsePrompt(content: string, filePath?: string): ParseResult {\n assertRegexFrontMatterQuoting(content, filePath);\n const { data: frontMatter, content: body } = matter(content);\n\n const sections = extractSections(body);\n\n const raw = {\n ...frontMatter,\n sections,\n source: filePath ? { file_path: filePath } : undefined,\n };\n\n const asset = PromptAssetSchema.parse(raw);\n\n return {\n asset,\n raw: {\n frontMatter: frontMatter as Record<string, unknown>,\n body,\n },\n };\n}\n","const FRONT_MATTER_DELIMITER = /^---[ \\t]*$/;\nconst REGEX_FIELD = /^(?<indent>\\s*)(?<field>allow_regex|deny_regex)\\s*:\\s*(?<value>.*)$/;\nconst PATTERN_FIELD = /^(?<indent>\\s*)pattern\\s*:\\s*(?<value>.*)$/;\nconst INLINE_PATTERN_FIELD = /(?:^|[{,]\\s*)pattern\\s*:\\s*(?<value>\"(?:\\\\.|[^\"\\\\])*\")/;\n\ninterface PendingRegexField {\n field: string;\n indent: number;\n}\n\nexport function assertRegexFrontMatterQuoting(content: string, filePath?: string): void {\n const frontMatter = extractFrontMatter(content);\n if (!frontMatter) {\n return;\n }\n\n let pendingRegex: PendingRegexField | undefined;\n\n for (const [index, line] of frontMatter.lines.entries()) {\n const lineNumber = frontMatter.startLine + index;\n const regexMatch = line.match(REGEX_FIELD);\n\n if (regexMatch?.groups) {\n const field = regexMatch.groups.field;\n const indent = regexMatch.groups.indent.length;\n const value = regexMatch.groups.value.trim();\n pendingRegex = value === '' ? { field, indent } : undefined;\n\n assertNoUnescapedBackslashInDoubleQuotedRegex(value, field, filePath, lineNumber);\n assertNoUnescapedBackslashInInlinePattern(value, field, filePath, lineNumber);\n continue;\n }\n\n if (!pendingRegex) {\n continue;\n }\n\n if (line.trim() === '' || line.trimStart().startsWith('#')) {\n continue;\n }\n\n const indent = line.match(/^\\s*/)?.[0].length ?? 0;\n if (indent <= pendingRegex.indent) {\n pendingRegex = undefined;\n continue;\n }\n\n const patternMatch = line.match(PATTERN_FIELD);\n if (!patternMatch?.groups) {\n continue;\n }\n\n assertNoUnescapedBackslashInDoubleQuotedRegex(\n patternMatch.groups.value.trim(),\n `${pendingRegex.field}.pattern`,\n filePath,\n lineNumber,\n );\n }\n}\n\nfunction assertNoUnescapedBackslashInInlinePattern(\n value: string,\n field: string,\n filePath: string | undefined,\n lineNumber: number,\n): void {\n const match = value.match(INLINE_PATTERN_FIELD);\n const pattern = match?.groups?.value;\n if (!pattern) {\n return;\n }\n\n assertNoUnescapedBackslashInDoubleQuotedRegex(pattern, `${field}.pattern`, filePath, lineNumber);\n}\n\nfunction extractFrontMatter(content: string): { lines: string[]; startLine: number } | undefined {\n const lines = content.split(/\\r?\\n/);\n if (!FRONT_MATTER_DELIMITER.test(lines[0] ?? '')) {\n return undefined;\n }\n\n for (let index = 1; index < lines.length; index += 1) {\n if (FRONT_MATTER_DELIMITER.test(lines[index] ?? '')) {\n return {\n lines: lines.slice(1, index),\n startLine: 2,\n };\n }\n }\n\n return undefined;\n}\n\nfunction assertNoUnescapedBackslashInDoubleQuotedRegex(\n value: string,\n field: string,\n filePath: string | undefined,\n lineNumber: number,\n): void {\n if (!value.startsWith('\"')) {\n return;\n }\n\n const quoted = readDoubleQuotedScalar(value);\n if (!quoted) {\n return;\n }\n\n if (!hasUnescapedBackslash(quoted)) {\n return;\n }\n\n const location = filePath ? `${filePath}:${lineNumber}` : `line ${lineNumber}`;\n throw new Error(\n `POK013: Invalid context regex YAML at ${location}, field \"${field}\": `\n + 'double-quoted regex strings treat backslashes as YAML escapes. '\n + 'Use unquoted /pattern/i literal form, single quotes, or double each backslash.',\n );\n}\n\nfunction readDoubleQuotedScalar(value: string): string | undefined {\n let result = '';\n\n for (let index = 1; index < value.length; index += 1) {\n const char = value[index];\n\n if (char === '\"') {\n return result;\n }\n\n result += char;\n\n if (char === '\\\\' && index + 1 < value.length) {\n index += 1;\n result += value[index];\n }\n }\n\n return undefined;\n}\n\nfunction hasUnescapedBackslash(value: string): boolean {\n for (let index = 0; index < value.length; index += 1) {\n if (value[index] !== '\\\\') {\n continue;\n }\n\n let count = 1;\n while (value[index + count] === '\\\\') {\n count += 1;\n }\n\n if (count % 2 === 1) {\n return true;\n }\n\n index += count - 1;\n }\n\n return false;\n}\n","import { readFile } from 'node:fs/promises';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport matter from 'gray-matter';\nimport { parsePrompt } from './parser.js';\nimport type { ParseResult } from './parser.js';\nimport { extractSections } from './sections.js';\nimport { PromptDefaultsSchema } from '../schema/index.js';\nimport type { PromptDefaults } from '../schema/index.js';\nimport { resolveResponseSchemaRef } from './response-schema-ref.js';\n\nconst DEFAULTS_FILE_NAME = 'defaults.md';\n\nexport interface LoadPromptOptions {\n /**\n * Optional boundary directory for defaults discovery.\n * If provided, defaults are loaded from this directory down to the prompt directory.\n */\n defaultsRoot?: string;\n}\n\n/**\n * Load and parse a prompt file from disk.\n */\nexport async function loadPromptFile(filePath: string, options: LoadPromptOptions = {}): Promise<ParseResult> {\n const content = await readFile(filePath, 'utf-8');\n const parsed = parsePrompt(content, filePath);\n // Default the boundary to the file's own directory so traversal never\n // walks above the prompt tree when no explicit root is provided.\n const root = options.defaultsRoot ?? dirname(filePath);\n const defaults = await loadDefaultsForPath(filePath, root);\n const withDefaults = applyDefaults(parsed.asset, defaults);\n const resolved = await resolveResponseSchemaRef(withDefaults, filePath);\n const asset = (resolved.response?.schema !== undefined && !resolved.response?.schema_source)\n ? {\n ...resolved,\n response: {\n ...resolved.response,\n schema_source: { mode: 'inline' as const },\n },\n }\n : resolved;\n\n return {\n ...parsed,\n asset,\n };\n}\n\nasync function loadDefaultsForPath(filePath: string, defaultsRoot?: string): Promise<PromptDefaults> {\n const directories = getDirectoriesToCheck(filePath, defaultsRoot);\n let merged: PromptDefaults = {};\n\n for (const dir of directories) {\n const defaultsPath = join(dir, DEFAULTS_FILE_NAME);\n try {\n const defaultsContent = await readFile(defaultsPath, 'utf-8');\n const defaults = normalizeDefaultIncludes(parseDefaults(defaultsContent), defaultsPath, filePath);\n merged = mergeDefaults(merged, defaults);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {\n throw error;\n }\n }\n }\n\n return merged;\n}\n\nfunction getDirectoriesToCheck(filePath: string, defaultsRoot?: string): string[] {\n const dirs: string[] = [];\n let current = resolve(dirname(filePath));\n const boundary = defaultsRoot ? resolve(defaultsRoot) : undefined;\n\n while (true) {\n dirs.unshift(current);\n if ((boundary && current === boundary) || current === dirname(current)) {\n break;\n }\n current = dirname(current);\n }\n\n return dirs;\n}\n\nfunction parseDefaults(content: string): PromptDefaults {\n const { data: frontMatter, content: body } = matter(content);\n const sections = extractSections(body);\n\n return PromptDefaultsSchema.parse({\n ...frontMatter,\n sections: {\n system_instructions: sections.system_instructions,\n },\n });\n}\n\nfunction mergeDefaults(base: PromptDefaults, local: PromptDefaults): PromptDefaults {\n return {\n provider: local.provider ?? base.provider,\n model: local.model ?? base.model,\n fallback_models: local.fallback_models ?? base.fallback_models,\n reasoning: mergeRecordBlock(base.reasoning, local.reasoning),\n sampling: mergeRecordBlock(base.sampling, local.sampling),\n response: mergeRecordBlock(base.response, local.response),\n compression: mergeCompression(base.compression, local.compression),\n cache: mergeCache(base.cache, local.cache),\n raw: mergeRaw(base.raw, local.raw),\n tools: local.tools ?? base.tools,\n provider_options: mergeProviderOptions(base.provider_options, local.provider_options),\n mcp: mergeMcp(base.mcp, local.mcp),\n context: mergeContext(base.context, local.context),\n includes: local.includes ?? base.includes,\n environments: mergeOverrideMap(base.environments, local.environments),\n tiers: mergeOverrideMap(base.tiers, local.tiers),\n metadata: {\n ...(base.metadata ?? {}),\n ...(local.metadata ?? {}),\n },\n sections: {\n ...(base.sections ?? {}),\n ...(local.sections ?? {}),\n },\n };\n}\n\nfunction applyDefaults(asset: ParseResult['asset'], defaults: PromptDefaults): ParseResult['asset'] {\n const compression = mergeCompression(defaults.compression, asset.compression);\n const cache = mergeCache(defaults.cache, asset.cache);\n const raw = mergeRaw(defaults.raw, asset.raw);\n const providerOptions = mergeProviderOptions(defaults.provider_options, asset.provider_options);\n const reasoning = mergeRecordBlock(defaults.reasoning, asset.reasoning);\n const sampling = mergeRecordBlock(defaults.sampling, asset.sampling);\n const response = mergeRecordBlock(defaults.response, asset.response);\n const mcp = mergeMcp(defaults.mcp, asset.mcp);\n const context = mergeContext(defaults.context, asset.context);\n const environments = mergeOverrideMap(defaults.environments, asset.environments);\n const tiers = mergeOverrideMap(defaults.tiers, asset.tiers);\n const hasDefaultMetadata = defaults.metadata && Object.keys(defaults.metadata).length > 0;\n const hasDefaultSystem = !!defaults.sections?.system_instructions;\n const hasDefaultScalars = defaults.provider !== undefined\n || defaults.model !== undefined\n || defaults.fallback_models !== undefined\n || defaults.tools !== undefined\n || defaults.includes !== undefined;\n const hasDefaultObjects = compression !== undefined\n || cache !== undefined\n || raw !== undefined\n || providerOptions !== undefined\n || reasoning !== undefined\n || sampling !== undefined\n || response !== undefined\n || mcp !== undefined\n || context !== undefined\n || environments !== undefined\n || tiers !== undefined;\n\n // Short-circuit: nothing to merge\n if (!hasDefaultMetadata && !hasDefaultSystem && !hasDefaultScalars && !hasDefaultObjects) {\n return asset;\n }\n\n const mergedMetadata = {\n ...(defaults.metadata ?? {}),\n ...(asset.metadata ?? {}),\n };\n const metadata = Object.keys(mergedMetadata).length > 0 ? mergedMetadata : undefined;\n\n const systemInstructions = asset.sections?.system_instructions ?? defaults.sections?.system_instructions;\n\n const sections = asset.sections\n ? { ...asset.sections, system_instructions: systemInstructions }\n : systemInstructions\n ? { system_instructions: systemInstructions }\n : undefined;\n\n return {\n ...asset,\n provider: asset.provider ?? defaults.provider,\n model: asset.model ?? defaults.model,\n fallback_models: asset.fallback_models ?? defaults.fallback_models,\n reasoning,\n sampling,\n response,\n compression,\n cache,\n raw,\n tools: asset.tools ?? defaults.tools,\n provider_options: providerOptions,\n mcp,\n context,\n includes: asset.includes ?? defaults.includes,\n environments,\n tiers,\n metadata,\n sections,\n };\n}\n\nfunction normalizeDefaultIncludes(\n defaults: PromptDefaults,\n defaultsPath: string,\n filePath: string,\n): PromptDefaults {\n if (!defaults.includes) return defaults;\n\n const promptDir = dirname(filePath);\n const defaultsDir = dirname(defaultsPath);\n const includes = defaults.includes.map((includePath) => {\n const relativePath = relative(promptDir, resolve(defaultsDir, includePath)).replace(/\\\\/g, '/');\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n });\n\n return {\n ...defaults,\n includes,\n };\n}\n\nfunction mergeRecordBlock<T extends object>(base: T | undefined, local: T | undefined): T | undefined {\n if (base === undefined) return local;\n if (local === undefined) return base;\n return { ...base, ...local };\n}\n\nfunction mergeMcp(base: PromptDefaults['mcp'], local: PromptDefaults['mcp']): PromptDefaults['mcp'] {\n return mergeRecordBlock(base, local);\n}\n\nfunction mergeContext(base: PromptDefaults['context'], local: PromptDefaults['context']): PromptDefaults['context'] {\n const merged = {\n ...(base ?? {}),\n ...(local ?? {}),\n history: mergeRecordBlock(base?.history, local?.history),\n };\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeCache(base: PromptDefaults['cache'], local: PromptDefaults['cache']): PromptDefaults['cache'] {\n const merged: NonNullable<PromptDefaults['cache']> = {\n ...(base ?? {}),\n ...(local ?? {}),\n openai: {\n ...(base?.openai ?? {}),\n ...(local?.openai ?? {}),\n },\n anthropic: {\n ...(base?.anthropic ?? {}),\n ...(local?.anthropic ?? {}),\n },\n gemini: {\n ...(base?.gemini ?? {}),\n ...(local?.gemini ?? {}),\n },\n google: {\n ...(base?.google ?? {}),\n ...(local?.google ?? {}),\n },\n };\n\n if (merged.openai && Object.keys(merged.openai).length === 0) delete merged.openai;\n if (merged.anthropic && Object.keys(merged.anthropic).length === 0) delete merged.anthropic;\n if (merged.gemini && Object.keys(merged.gemini).length === 0) delete merged.gemini;\n if (merged.google && Object.keys(merged.google).length === 0) delete merged.google;\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeCompression(\n base: PromptDefaults['compression'],\n local: PromptDefaults['compression'],\n): PromptDefaults['compression'] {\n const merged: NonNullable<PromptDefaults['compression']> = {\n ...(base ?? {}),\n ...(local ?? {}),\n thetokencompany: mergeRecordBlock(base?.thetokencompany, local?.thetokencompany),\n heuristic: mergeRecordBlock(base?.heuristic, local?.heuristic),\n code: mergeRecordBlock(base?.code, local?.code),\n };\n\n removeEmptyProviderBlocks(merged);\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeRaw(base: PromptDefaults['raw'], local: PromptDefaults['raw']): PromptDefaults['raw'] {\n const merged: NonNullable<PromptDefaults['raw']> = {\n ...(base ?? {}),\n ...(local ?? {}),\n openai: mergeRecordBlock(base?.openai, local?.openai),\n 'openai-responses': mergeRecordBlock(base?.['openai-responses'], local?.['openai-responses']),\n openai_responses: mergeRecordBlock(base?.openai_responses, local?.openai_responses),\n anthropic: mergeRecordBlock(base?.anthropic, local?.anthropic),\n gemini: mergeRecordBlock(base?.gemini, local?.gemini),\n google: mergeRecordBlock(base?.google, local?.google),\n openrouter: mergeRecordBlock(base?.openrouter, local?.openrouter),\n llmasaservice: mergeRecordBlock(base?.llmasaservice, local?.llmasaservice),\n };\n\n removeEmptyProviderBlocks(merged);\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeProviderOptions(\n base: PromptDefaults['provider_options'],\n local: PromptDefaults['provider_options'],\n): PromptDefaults['provider_options'] {\n const merged: NonNullable<PromptDefaults['provider_options']> = {\n ...(base ?? {}),\n ...(local ?? {}),\n anthropic: mergeRecordBlock(base?.anthropic, local?.anthropic),\n gemini: mergeRecordBlock(base?.gemini, local?.gemini),\n openrouter: mergeRecordBlock(base?.openrouter, local?.openrouter),\n llmasaservice: mergeRecordBlock(base?.llmasaservice, local?.llmasaservice),\n };\n\n removeEmptyProviderBlocks(merged);\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeOverrideMap(\n base: PromptDefaults['environments'],\n local: PromptDefaults['environments'],\n): PromptDefaults['environments'] {\n const merged: NonNullable<PromptDefaults['environments']> = { ...(base ?? {}) };\n\n for (const [name, localOverride] of Object.entries(local ?? {})) {\n merged[name] = mergeOverrideConfig(merged[name], localOverride);\n }\n\n return Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction mergeOverrideConfig(\n base: NonNullable<PromptDefaults['environments']>[string] | undefined,\n local: NonNullable<PromptDefaults['environments']>[string],\n): NonNullable<PromptDefaults['environments']>[string] {\n const merged: NonNullable<PromptDefaults['environments']>[string] = {\n ...(base ?? {}),\n ...local,\n };\n\n const reasoning = mergeRecordBlock(base?.reasoning, local.reasoning);\n const sampling = mergeRecordBlock(base?.sampling, local.sampling);\n const response = mergeRecordBlock(base?.response, local.response);\n const compression = mergeCompression(base?.compression, local.compression);\n const cache = mergeCache(base?.cache, local.cache);\n const raw = mergeRaw(base?.raw, local.raw);\n const providerOptions = mergeProviderOptions(base?.provider_options, local.provider_options);\n\n if (reasoning !== undefined) merged.reasoning = reasoning;\n if (sampling !== undefined) merged.sampling = sampling;\n if (response !== undefined) merged.response = response;\n if (compression !== undefined) merged.compression = compression;\n if (cache !== undefined) merged.cache = cache;\n if (raw !== undefined) merged.raw = raw;\n if (providerOptions !== undefined) merged.provider_options = providerOptions;\n\n return merged;\n}\n\nfunction removeEmptyProviderBlocks<T extends Record<string, unknown>>(value: T): void {\n for (const key of Object.keys(value)) {\n const block = value[key];\n if (block === undefined) {\n delete value[key];\n continue;\n }\n\n if (\n block !== null\n &&\n typeof block === 'object'\n && !Array.isArray(block)\n && Object.keys(block).length === 0\n ) {\n delete value[key];\n }\n }\n}\n","import { readFile } from 'node:fs/promises';\nimport { createHash } from 'node:crypto';\nimport { dirname, extname, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { PromptAsset } from '../schema/index.js';\n\nconst SUPPORTED_SCHEMA_REF_EXTENSIONS = new Set(['.json', '.js', '.mjs', '.cjs']);\n\n\nasync function resolveJsonSchemaRef(schemaRef: string, promptFilePath: string): Promise<{ schema: Record<string, unknown>; resolvedPath: string; hash: string }> {\n const resolvedPath = resolve(dirname(promptFilePath), schemaRef);\n let raw: string;\n\n try {\n raw = await readFile(resolvedPath, 'utf-8');\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code === 'ENOENT') {\n throw new Error(`POK050: response.schema_ref \"${schemaRef}\" not found (resolved from ${promptFilePath})`);\n }\n throw error;\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n throw new Error(`POK050: response.schema_ref \"${schemaRef}\" is not valid JSON`);\n }\n\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error(`POK050: response.schema_ref \"${schemaRef}\" must resolve to a JSON object schema`);\n }\n\n return {\n schema: parsed as Record<string, unknown>,\n resolvedPath,\n hash: createHash('sha256').update(raw).digest('hex'),\n };\n}\n\nasync function resolveZodSchemaRef(schemaRef: string, promptFilePath: string): Promise<{ schema: Record<string, unknown>; resolvedPath: string; hash: string }> {\n const resolvedPath = resolve(dirname(promptFilePath), schemaRef);\n\n let moduleSource: string;\n try {\n moduleSource = await readFile(resolvedPath, 'utf-8');\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code === 'ENOENT') {\n throw new Error(`POK051: response.schema_ref \"${schemaRef}\" not found (resolved from ${promptFilePath})`);\n }\n throw error;\n }\n\n let imported: unknown;\n try {\n imported = await import(pathToFileURL(resolvedPath).href);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`POK051: response.schema_ref \"${schemaRef}\" could not be imported as a module (${message})`);\n }\n\n const mod = imported as Record<string, unknown>;\n const candidate = mod.default ?? mod.schema;\n\n if (!(candidate instanceof z.ZodType)) {\n throw new Error('POK051: zod schema modules must export a Zod schema as default export or named export \"schema\"');\n }\n\n const jsonSchema = zodToJsonSchema(candidate, {\n target: 'jsonSchema7',\n $refStrategy: 'none',\n });\n\n if (!jsonSchema || typeof jsonSchema !== 'object' || Array.isArray(jsonSchema)) {\n throw new Error(`POK051: response.schema_ref \"${schemaRef}\" did not produce a valid JSON schema object`);\n }\n\n return {\n schema: jsonSchema as Record<string, unknown>,\n resolvedPath,\n hash: createHash('sha256').update(moduleSource).digest('hex'),\n };\n}\n\nexport async function resolveResponseSchemaRef(asset: PromptAsset, promptFilePath: string): Promise<PromptAsset> {\n const schemaRef = asset.response?.schema_ref;\n if (!schemaRef) return asset;\n\n const ext = extname(schemaRef).toLowerCase();\n if (!SUPPORTED_SCHEMA_REF_EXTENSIONS.has(ext)) {\n throw new Error(`POK051: response.schema_ref \"${schemaRef}\" has unsupported extension \"${ext}\". Use .json, .js, .mjs, or .cjs`);\n }\n\n const resolved = (ext === '.json')\n ? await resolveJsonSchemaRef(schemaRef, promptFilePath)\n : await resolveZodSchemaRef(schemaRef, promptFilePath);\n\n return {\n ...asset,\n response: {\n ...asset.response,\n schema: resolved.schema,\n schema_ref: undefined,\n schema_source: {\n mode: ext === '.json' ? 'schema_ref_json' : 'schema_ref_zod_module',\n ref: schemaRef,\n resolved_path: resolved.resolvedPath,\n hash: resolved.hash,\n },\n },\n };\n}\n"],"mappings":"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","names":["indent","readFile","dirname","resolve","matter","z","readFile","dirname","resolve","matter"]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
renderSections,
|
|
5
5
|
resolveAssetForProvider,
|
|
6
6
|
withPromptInputSupport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RVAFVWR2.js";
|
|
8
8
|
|
|
9
9
|
// src/providers/openai.ts
|
|
10
10
|
var openaiAdapter = withPromptInputSupport({
|
|
@@ -107,4 +107,4 @@ var openaiAdapter = withPromptInputSupport({
|
|
|
107
107
|
export {
|
|
108
108
|
openaiAdapter
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-PDVUVZAU.js.map
|