promptopskit 0.5.0 → 0.6.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.
- package/README.md +9 -7
- package/SKILL.md +16 -10
- package/dist/{chunk-6VLKZCNS.js → chunk-55B7QQBK.js} +2 -2
- package/dist/{chunk-6BOUQVSX.js → chunk-FNCIBZJF.js} +3 -3
- package/dist/{chunk-D75HKF64.js → chunk-GLT3YYWK.js} +2 -2
- package/dist/{chunk-IN4KT5EU.js → chunk-IPFD5Y3O.js} +3 -3
- package/dist/{chunk-KN7H4JRK.js → chunk-JR7252DG.js} +393 -386
- package/dist/chunk-JR7252DG.js.map +1 -0
- package/dist/{chunk-K6ZU3CGV.js → chunk-UY5OKMVP.js} +281 -17
- package/dist/chunk-UY5OKMVP.js.map +1 -0
- package/dist/{chunk-QK3WKE3K.js → chunk-VMLGUI4F.js} +2 -2
- package/dist/{chunk-LNGHGGJN.js → chunk-XEZJZ3IG.js} +2 -2
- package/dist/cli/index.js +410 -103
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +971 -660
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +55 -15
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.cjs +675 -407
- 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 +675 -407
- 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 +675 -407
- 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 +675 -407
- 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 +675 -407
- 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 +675 -407
- 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-D-RI4w-k.d.cts → schema-CuYsv8JA.d.cts} +540 -206
- package/dist/{schema-D-RI4w-k.d.ts → schema-CuYsv8JA.d.ts} +540 -206
- package/dist/testing.cjs +43 -5
- 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-B3dxBGu6.d.ts → types-DpK0mTHL.d.ts} +1 -1
- package/dist/{types-DbTAjlTN.d.cts → types-UA_p9uJy.d.cts} +1 -1
- package/dist/usagetap/index.d.cts +2 -2
- package/dist/usagetap/index.d.ts +2 -2
- package/package.json +9 -2
- package/dist/chunk-K6ZU3CGV.js.map +0 -1
- package/dist/chunk-KN7H4JRK.js.map +0 -1
- /package/dist/{chunk-6VLKZCNS.js.map → chunk-55B7QQBK.js.map} +0 -0
- /package/dist/{chunk-6BOUQVSX.js.map → chunk-FNCIBZJF.js.map} +0 -0
- /package/dist/{chunk-D75HKF64.js.map → chunk-GLT3YYWK.js.map} +0 -0
- /package/dist/{chunk-IN4KT5EU.js.map → chunk-IPFD5Y3O.js.map} +0 -0
- /package/dist/{chunk-QK3WKE3K.js.map → chunk-VMLGUI4F.js.map} +0 -0
- /package/dist/{chunk-LNGHGGJN.js.map → chunk-XEZJZ3IG.js.map} +0 -0
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ This creates:
|
|
|
59
59
|
|
|
60
60
|
```
|
|
61
61
|
prompts/
|
|
62
|
-
├── defaults.md # Folder-level defaults (provider, model, metadata, system instructions)
|
|
62
|
+
├── defaults.md # Folder-level defaults (provider, model, options, metadata, system instructions)
|
|
63
63
|
├── hello.md # Sample prompt with variables
|
|
64
64
|
├── hello.test.yaml # Test sidecar with sample inputs and hardcoded responses
|
|
65
65
|
└── shared/
|
|
@@ -146,7 +146,7 @@ Supported values for `warnings.contextSize` are `auto`, `off`, `result-only`, `c
|
|
|
146
146
|
- **Prompts as Markdown** — YAML front matter for settings, H1 headings for sections (`# System instructions`, `# Prompt template`, `# Notes`)
|
|
147
147
|
- **Variable interpolation** — `{{ variable }}` syntax with strict and permissive modes
|
|
148
148
|
- **Composition** — `includes` to share system instructions across prompts, with circular detection
|
|
149
|
-
- **Folder defaults** — `defaults.md` inheritance for shared provider, model, metadata, and system instructions
|
|
149
|
+
- **Folder defaults** — `defaults.md` inheritance for shared provider, model, options, metadata, and system instructions
|
|
150
150
|
- **Overrides** — Environment and tier-based overrides (base → env → tier → runtime)
|
|
151
151
|
- **6 provider adapters** — OpenAI (Chat), OpenAI (Responses), Anthropic, Gemini, OpenRouter, LLMAsAService
|
|
152
152
|
- **Provider-aware input caching controls** — optional `cache` front matter maps to OpenAI prompt cache hints, Anthropic `cache_control`, and Gemini `cachedContent`
|
|
@@ -261,7 +261,7 @@ In browser or client-side code, keep provider credentials on the server. Use the
|
|
|
261
261
|
|
|
262
262
|
### Provider-specific fields and raw passthrough
|
|
263
263
|
|
|
264
|
-
Use normalized fields first (`sampling`, `response`, `cache`, `tools`) so prompts stay portable. `response.schema` is the neutral JSON Schema path; adapters emit it as OpenAI/OpenRouter/LLMAsAService `response_format`, OpenAI Responses `text.format`, Anthropic `output_config.format`, and Gemini `generationConfig.responseJsonSchema`.
|
|
264
|
+
Use normalized fields first (`sampling`, `response`, `cache`, `tools`) so prompts stay portable. `response.schema` is the neutral JSON Schema path; adapters emit it as OpenAI/OpenRouter/LLMAsAService `response_format`, OpenAI Responses `text.format`, Anthropic `output_config.format`, and Gemini `generationConfig.responseJsonSchema`. You can also provide `response.schema_ref` to load schema from a prompt-relative `.json` file or `.js/.mjs/.cjs` zod module (mutually exclusive with `response.schema`).
|
|
265
265
|
|
|
266
266
|
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.
|
|
267
267
|
|
|
@@ -496,13 +496,15 @@ Handle support requests carefully.
|
|
|
496
496
|
|
|
497
497
|
Define a `defaults.md` file in `prompts/` (and optional subfolders) to provide inherited defaults for prompts:
|
|
498
498
|
|
|
499
|
-
- Shared `provider` and `
|
|
499
|
+
- Shared `provider`, `model`, `fallback_models`, `reasoning`, `sampling`, `response`, `cache`, `provider_options`, `raw`, `tools`, `mcp`, `context`, `includes`, `environments`, and `tiers` in front matter
|
|
500
500
|
- Shared `metadata` defaults in front matter
|
|
501
501
|
- Shared `# System instructions` in body
|
|
502
502
|
- Nearest subfolder `defaults.md` overrides parent defaults
|
|
503
503
|
- Prompt-local values always win over defaults
|
|
504
504
|
- Included files (`includes`) are not affected by folder defaults
|
|
505
505
|
|
|
506
|
+
Scalars and arrays are replaced by nearer values. Object blocks are shallow-merged, including provider sub-blocks such as `provider_options.llmasaservice` and `cache.openai`.
|
|
507
|
+
|
|
506
508
|
> `promptopskit init` scaffolds a starter `defaults.md` in the prompts root.
|
|
507
509
|
|
|
508
510
|
```text
|
|
@@ -630,7 +632,7 @@ Renders a prompt for a specific provider. Returns `{ resolved, request?, returnM
|
|
|
630
632
|
| `tier` | `string` | Tier override name |
|
|
631
633
|
| `history` | `Array<{ role, content }>` | Conversation history. If the prompt declares `context.history.max_items`, older turns are compacted into one preserved history item before provider rendering. |
|
|
632
634
|
| `toolRegistry` | `Record<string, unknown>` | Tool definitions for resolving string tool references |
|
|
633
|
-
| `strict` | `boolean` | Fail on missing variables |
|
|
635
|
+
| `strict` | `boolean` | Fail on missing variables except object-form inputs marked `optional: true` |
|
|
634
636
|
| `openaiResponses` | `object` | Optional Responses API extras (`previous_response_id`, `conversation`, `instructions`, `parallel_tool_calls`, `max_tool_calls`, `store`, `metadata`, `include`, `background`) |
|
|
635
637
|
|
|
636
638
|
### `kit.loadPrompt(path)` / `kit.resolvePrompt(path, options)` / `kit.validatePrompt(path)`
|
|
@@ -656,13 +658,13 @@ Prompt files use YAML front matter with these fields:
|
|
|
656
658
|
| `fallback_models` | `string[]` | Fallback model list |
|
|
657
659
|
| `reasoning` | `object` | `{ effort, budget_tokens }` |
|
|
658
660
|
| `sampling` | `object` | `{ temperature, top_p, frequency_penalty, presence_penalty, stop, max_output_tokens }` |
|
|
659
|
-
| `response` | `object` | `{ format, stream, schema, schema_name, schema_description, schema_strict }` |
|
|
661
|
+
| `response` | `object` | `{ format, stream, schema, schema_ref, schema_name, schema_description, schema_strict }` |
|
|
660
662
|
| `cache` | `object` | Provider-specific cache controls (`openai`, `anthropic`, `gemini`/`google`) |
|
|
661
663
|
| `tools` | `array` | Tool references (string names or inline definitions) |
|
|
662
664
|
| `provider_options` | `object` | Provider-specific non-portable options (`anthropic`, `gemini`, `openrouter`, `llmasaservice`) |
|
|
663
665
|
| `raw` | `object` | Provider-scoped request-body passthrough (`openai`, `openai-responses`, `anthropic`, `gemini`/`google`, `openrouter`, `llmasaservice`) |
|
|
664
666
|
| `mcp` | `object` | MCP server references |
|
|
665
|
-
| `context` | `object` | `{ inputs, history }` — declare expected variables, with optional per-input `max_size`, `trim`, structured or literal `allow_regex`/`deny_regex`, built-in `non_empty` / `reject_secrets` validators, and `history.max_items` compaction |
|
|
667
|
+
| `context` | `object` | `{ inputs, history }` — declare expected variables, with optional per-input `optional`, `warnings`, `max_size`, `trim`, structured or literal `allow_regex`/`deny_regex`, built-in `non_empty` / `reject_secrets` validators, and `history.max_items` compaction |
|
|
666
668
|
| `includes` | `string[]` | Paths to included prompt files |
|
|
667
669
|
| `environments` | `object` | Named environment overrides |
|
|
668
670
|
| `tiers` | `object` | Named tier overrides |
|
package/SKILL.md
CHANGED
|
@@ -387,7 +387,7 @@ the fields required by that specific file:
|
|
|
387
387
|
| `provider_options` | object | no | Provider-specific advanced options (`anthropic`, `gemini`, `openrouter`, `llmasaservice`) |
|
|
388
388
|
| `raw` | object | no | Provider-scoped request-body passthrough for unmodeled vendor fields |
|
|
389
389
|
| `mcp` | object | no | `{ servers: [string | { name, config }] }` |
|
|
390
|
-
| `context.inputs` | `Array<string | { name, max_size?, trim?, allow_regex?, deny_regex?, non_empty?, reject_secrets? }>` | no | Declared variable names used in templates, with
|
|
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, and runtime hardening controls |
|
|
391
391
|
| `context.history` | object | no | `{ max_items: number }`; caps rendered history by compacting older turns into one preserved message |
|
|
392
392
|
| `includes` | string[] | no | Relative paths to other prompt files to include |
|
|
393
393
|
| `environments` | object | no | Per-environment overrides (see Overrides) |
|
|
@@ -421,6 +421,8 @@ Rules:
|
|
|
421
421
|
- Before finishing a new prompt file, scan the body for every `{{ variable }}` and
|
|
422
422
|
ensure each exact variable name appears in `context.inputs`
|
|
423
423
|
- Use object-form inputs with `max_size` when a variable is likely to grow large and should trigger early warnings
|
|
424
|
+
- Use `optional: true` when a variable may be absent; strict rendering will not throw for that missing variable
|
|
425
|
+
- Use `warnings: false` sparingly for intentional exceptions that should not emit input-scoped validation or size warnings
|
|
424
426
|
- Use `trim` to enforce byte budgets before interpolation when `max_size` is set
|
|
425
427
|
- Use `allow_regex` for allowlist checks and `deny_regex` for blocklist checks on risky inputs
|
|
426
428
|
- Prefer unquoted `/pattern/i` literals for regex validators so backslash escapes such as `\s` and `\b` stay copyable from regex tools
|
|
@@ -442,7 +444,7 @@ context:
|
|
|
442
444
|
max_size: 4096
|
|
443
445
|
```
|
|
444
446
|
|
|
445
|
-
If a rendered value exceeds `max_size`, `renderPrompt()` emits a non-blocking `POK030` warning
|
|
447
|
+
If a rendered value exceeds `max_size`, `renderPrompt()` emits a non-blocking `POK030` warning unless the input sets `warnings: false`.
|
|
446
448
|
At render time, callers can also pass `onContextOverflow` to transform oversized values before warnings/rendering.
|
|
447
449
|
|
|
448
450
|
If a validator declares `return_message`, `renderPrompt()` returns that message in a structured result and omits the provider request instead of throwing for that validation failure. Invalid regex definitions still fail during `validate` and `compile` as `POK013` prompt-authoring errors.
|
|
@@ -522,28 +524,32 @@ folder:
|
|
|
522
524
|
|
|
523
525
|
```text
|
|
524
526
|
prompts/
|
|
525
|
-
├── defaults.md # global provider, model, metadata + system instructions
|
|
527
|
+
├── defaults.md # global provider, model, options, metadata + system instructions
|
|
526
528
|
└── support/
|
|
527
529
|
├── defaults.md # overrides for support/*
|
|
528
530
|
└── reply.md # inherits from support/defaults.md
|
|
529
531
|
```
|
|
530
532
|
|
|
531
533
|
Supported default fields:
|
|
532
|
-
- `provider` (front matter) — default
|
|
533
|
-
- `
|
|
534
|
-
- `cache` (front matter) — default provider-specific
|
|
534
|
+
- `provider`, `model`, `fallback_models` (front matter) — default routing
|
|
535
|
+
- `reasoning`, `sampling`, `response` (front matter) — default model behavior
|
|
536
|
+
- `cache`, `provider_options`, `raw` (front matter) — default provider-specific options
|
|
537
|
+
- `tools`, `mcp`, `context`, `includes` (front matter) — default bindings and input/include configuration
|
|
538
|
+
- `environments`, `tiers` (front matter) — default override maps
|
|
535
539
|
- `metadata` (front matter) — merged with prompt-local metadata
|
|
536
540
|
- `# System instructions` (body section) — used when the prompt has none
|
|
537
541
|
|
|
538
542
|
This lets you configure app-wide settings like `provider` and `model`
|
|
539
543
|
in a single root `defaults.md`, so individual prompts only declare what's unique to them.
|
|
540
544
|
|
|
541
|
-
Important: `
|
|
542
|
-
|
|
545
|
+
Important: use shared `context.inputs` in `defaults.md` only when every prompt
|
|
546
|
+
under that folder uses the same placeholders. Prompt-local `context.inputs`
|
|
547
|
+
replace the inherited array.
|
|
543
548
|
|
|
544
549
|
Rules:
|
|
545
550
|
- Nearest subfolder `defaults.md` overrides parent defaults
|
|
546
551
|
- Prompt-local values always take precedence over defaults
|
|
552
|
+
- Inherited `includes` are authored relative to the `defaults.md` file that declares them
|
|
547
553
|
- `defaults.md` files are skipped during compilation and validation
|
|
548
554
|
- `loadPromptFile` defaults the search boundary to the file's own directory;
|
|
549
555
|
pass `defaultsRoot` to enable ancestor traversal
|
|
@@ -889,8 +895,8 @@ Hello {{ name }}
|
|
|
889
895
|
|
|
890
896
|
1. **One prompt per file** — each `.md` file is a single prompt asset
|
|
891
897
|
2. **Always set `id` and `schema_version: 1`** unless a surrounding tool explicitly generates those fields
|
|
892
|
-
3. **Declare every placeholder** in `context.inputs`;
|
|
893
|
-
4. **Use `defaults.md` for shared provider, model, metadata, and fallback system instructions**
|
|
898
|
+
3. **Declare every placeholder** in `context.inputs`; use `defaults.md` only for input declarations that apply to every prompt under that folder
|
|
899
|
+
4. **Use `defaults.md` for shared provider, model, provider options, metadata, and fallback system instructions**
|
|
894
900
|
5. **Use includes for reusable system behavior**, not for user-specific prompt bodies
|
|
895
901
|
6. **Prefer `createPromptOpsKit().renderPrompt()` for server-side app code** when prompts live as source files
|
|
896
902
|
7. **Prefer direct adapters for compiled assets or provider-specific integration points**
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
renderSections,
|
|
5
5
|
resolveAssetForProvider,
|
|
6
6
|
withPromptInputSupport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JR7252DG.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-55B7QQBK.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openaiAdapter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GLT3YYWK.js";
|
|
4
4
|
import {
|
|
5
5
|
applyRawProviderBody,
|
|
6
6
|
resolveAssetForProvider,
|
|
7
7
|
withPromptInputSupport
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JR7252DG.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-FNCIBZJF.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
renderSections,
|
|
5
5
|
resolveAssetForProvider,
|
|
6
6
|
withPromptInputSupport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JR7252DG.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-GLT3YYWK.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openaiAdapter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GLT3YYWK.js";
|
|
4
4
|
import {
|
|
5
5
|
applyRawProviderBody,
|
|
6
6
|
resolveAssetForProvider,
|
|
7
7
|
withPromptInputSupport
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JR7252DG.js";
|
|
9
9
|
|
|
10
10
|
// src/providers/openrouter.ts
|
|
11
11
|
var openrouterAdapter = withPromptInputSupport({
|
|
@@ -58,4 +58,4 @@ var openrouterAdapter = withPromptInputSupport({
|
|
|
58
58
|
export {
|
|
59
59
|
openrouterAdapter
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-IPFD5Y3O.js.map
|