-`content` or `content_file` (exactly one is required)
Message rules:
- Repeated roles are allowed.
-`content_file` is resolved relative to the prompt YAML file location.
- Prompt decoding is strict; unknown YAML fields are rejected.
`output` fields:
-`format` (required): `text`, `markdown`, or `json`.
-`validation_mode` (required): `none`, `basic`, `json`, or `json_schema`.
-`schema_path` (required when `validation_mode: json_schema`).
-`repair_attempts` (required): integer `>= 0`.
Repair behavior boundary:
-`repair_attempts` is part of the prompt contract.
- CLI and HTTP currently construct the runner without a repairer, so normal `run`/`serve` execution does not perform output repair attempts.
## Profile Definition Files
Execution profiles are YAML files in `profile_dir`.
Example:
```yaml
id: local-fast
endpoint: http://localhost:8000/v1
model: gpt-4o-mini
temperature: 0.2
max_tokens: 500
top_p: 1.0
timeout_seconds: 90
api_key_env: SCRIPTORIUM_API_KEY
```
Field reference:
-`id` (required)
-`endpoint` (required)
-`model` (required)
-`temperature` (optional): range `0..2`
-`max_tokens` (optional): `>= 0`
-`top_p` (optional): range `0..1`
-`timeout_seconds` (optional): `>= 0`
-`reasoning_effort` (optional)
-`api_key_env` (optional)
-`extra_params` (optional map of strings)
Profile rules:
- Profile decoding is strict; unknown YAML fields are rejected.
- Raw `api_key` is rejected; use `api_key_env`.
- If `api_key_env` is set, that environment variable must be set when preparing/running.
Current outbound request behavior:
- The OpenAI-compatible client currently serializes: `model`, `messages`, `temperature`, `max_tokens`, `top_p`, and optional `response_format` for `json_schema` prompts.
-`reasoning_effort` and `extra_params` are parsed and carried in effective settings, but are not currently serialized into outbound chat-completions requests.
## Schema Behavior
Schemas are JSON files, typically in `schema_dir`.