Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions docs/config.html
Original file line number Diff line number Diff line change
Expand Up @@ -1023,6 +1023,17 @@ <h2 id="inferenceconfiguration">InferenceConfiguration</h2>
window &#x2014; callers fall back to their own default or skip the token-based
trigger.</td>
</tr>
<tr class="even">
<td>providers</td>
<td>array</td>
<td>Unified-mode synthesis input (Decision S5): a high-level,
backend-agnostic list of inference providers the synthesizer expands
into Llama Stack provider entries. Lives at the configuration root so it
survives a future backend change. A non-empty list signals unified mode.
Empty (the default) leaves legacy/remote modes unaffected. The sibling
default_model / default_provider keep their query-time routing meaning
and are independent of this list.</td>
</tr>
</tbody>
</table>
<h2 id="jsonpathoperator">JsonPathOperator</h2>
Expand Down Expand Up @@ -1253,6 +1264,18 @@ <h2 id="llamastackconfiguration">LlamaStackConfiguration</h2>
<td>If enabled, Lightspeed Core can be started even when Llama Stack is
not accessible (valid for server mode only)</td>
</tr>
<tr class="odd">
<td>config</td>
<td/>
<td>Backend-specific knobs for unified mode, where LCORE synthesizes the
Llama Stack run.yaml instead of reading an external file. Holds the
baseline selector, an optional profile path, and a raw native_override
escape hatch. Backend-agnostic high-level sections
(e.g.&#xA0;inference.providers) live at the configuration root, not here.
Mutually exclusive with library_client_config_path; that cross-field
check lives on the root Configuration model. When set in library mode,
library_client_config_path is not required.</td>
</tr>
</tbody>
</table>
<h2 id="modelcontextprotocolserver">ModelContextProtocolServer</h2>
Expand Down Expand Up @@ -2054,6 +2077,117 @@ <h2 id="trustedproxyserviceaccount">TrustedProxyServiceAccount</h2>
</tr>
</tbody>
</table>
<h2 id="unifiedinferenceprovider">UnifiedInferenceProvider</h2>
<p>A high-level inference provider entry for unified-mode synthesis.</p>
<p>Operators describe inference providers at this high level
(backend-agnostic vocabulary) instead of authoring raw Llama Stack
provider blocks. The synthesizer
(<code>apply_high_level_inference</code>) expands each entry into a
Llama Stack <code>providers.inference</code> entry, mapping
<code>type</code> to a <code>provider_type</code> and emitting
<code>${env.&lt;VAR&gt;}</code> references for secrets (never literal
values).</p>
<p>Attributes: type: Canonical provider identifier. Vendor-neutral so it
survives a future backend change; each backend-specific synthesizer maps
it to its own provider vocabulary. api_key_env: Name of the environment
variable holding the provider API key. Emitted verbatim as
<code>${env.&lt;name&gt;}</code> so the secret never lands on disk
resolved. allowed_models: Optional allow-list of model identifiers
passed through to the synthesized provider config. extra: Additional
provider-config keys merged verbatim into the synthesized provider&#x2019;s
<code>config</code> block &#x2014; an escape hatch for provider-specific knobs
not modeled here.</p>
<table>
<colgroup>
<col style="width: 26%"/>
<col style="width: 23%"/>
<col style="width: 50%"/>
</colgroup>
<thead>
<tr class="header">
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>type</td>
<td>string</td>
<td>Canonical, backend-agnostic provider identifier mapped to a Llama
Stack provider_type by the synthesizer.</td>
</tr>
<tr class="even">
<td>api_key_env</td>
<td>string</td>
<td>Name of the environment variable holding the provider API key.
Emitted as a ${env.name} reference so the secret is never written to
disk in resolved form.</td>
</tr>
<tr class="odd">
<td>allowed_models</td>
<td>array</td>
<td>Optional allow-list of model identifiers for this provider.</td>
</tr>
<tr class="even">
<td>extra</td>
<td>object</td>
<td>Additional provider-config keys merged verbatim into the synthesized
provider&#x2019;s config block.</td>
</tr>
</tbody>
</table>
<h2 id="unifiedllamastackconfig">UnifiedLlamaStackConfig</h2>
<p>Backend-specific knobs for unified-mode Llama Stack synthesis.</p>
<p>Per Decision S5 of the design spike, backend-agnostic high-level
sections (inference, &#x2026;) live at the configuration root, not here. This
block holds only the Llama-Stack-specific synthesis controls: which
baseline to start from, an optional profile file, and a raw
native_override escape hatch.</p>
<p>Attributes: baseline: Synthesis starting point. &#x201C;default&#x201D; begins from
LCORE&#x2019;s built-in baseline (src/data/default_run.yaml); &#x201C;empty&#x201D; begins
from an empty dict (used by the migration tool for an exact round-trip).
Ignored when <code>profile</code> is set. profile: Optional path to a
user-authored run.yaml-shaped file used as the synthesis baseline.
Relative paths resolve against the directory of the loaded
lightspeed-stack.yaml. native_override: Raw Llama Stack schema
deep-merged last (maps merge recursively, lists and scalars replace).
The escape hatch for anything the high-level sections do not
express.</p>
<table>
<colgroup>
<col style="width: 26%"/>
<col style="width: 23%"/>
<col style="width: 50%"/>
</colgroup>
<thead>
<tr class="header">
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>baseline</td>
<td>string</td>
<td>Synthesis starting point: &#x2018;default&#x2019; uses LCORE&#x2019;s built-in baseline,
&#x2018;empty&#x2019; starts from {}. Ignored when &#x2018;profile&#x2019; is set.</td>
</tr>
<tr class="even">
<td>profile</td>
<td>string</td>
<td>Path to a run.yaml-shaped baseline file. Relative paths resolve
against the directory of the loaded lightspeed-stack.yaml.</td>
</tr>
<tr class="odd">
<td>native_override</td>
<td>object</td>
<td>Raw Llama Stack schema deep-merged last (maps merge recursively;
lists and scalars replace).</td>
</tr>
</tbody>
</table>
<h2 id="userdatacollection">UserDataCollection</h2>
<p>User data collection configuration.</p>
<table>
Expand Down
97 changes: 97 additions & 0 deletions docs/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,14 @@
"description": "Map of fully-qualified model identifier (e.g., \"openai/gpt-4o-mini\") to context window size in tokens. Used by the conversation compaction trigger to decide when older turns must be summarized before the input exceeds the window. Models absent from this map have no registered window — callers fall back to their own default or skip the token-based trigger.",
"title": "Per-model context window sizes (tokens)",
"type": "object"
},
"providers": {
"description": "Unified-mode synthesis input (Decision S5): a high-level, backend-agnostic list of inference providers the synthesizer expands into Llama Stack provider entries. Lives at the configuration root so it survives a future backend change. A non-empty list signals unified mode. Empty (the default) leaves legacy/remote modes unaffected. The sibling default_model / default_provider keep their query-time routing meaning and are independent of this list.",
"items": {
"$ref": "#/components/schemas/UnifiedInferenceProvider"
},
"title": "High-level inference providers",
"type": "array"
}
},
"title": "InferenceConfiguration",
Expand Down Expand Up @@ -1056,6 +1064,19 @@
"default": false,
"description": "If enabled, Lightspeed Core can be started even when Llama Stack is not accessible (valid for server mode only)",
"title": "Allow degraded mode"
},
"config": {
"anyOf": [
{
"$ref": "#/components/schemas/UnifiedLlamaStackConfig"
},
{
"type": "null"
}
],
"default": null,
"description": "Backend-specific knobs for unified mode, where LCORE synthesizes the Llama Stack run.yaml instead of reading an external file. Holds the baseline selector, an optional profile path, and a raw native_override escape hatch. Backend-agnostic high-level sections (e.g. inference.providers) live at the configuration root, not here. Mutually exclusive with library_client_config_path; that cross-field check lives on the root Configuration model. When set in library mode, library_client_config_path is not required.",
"title": "Unified Llama Stack configuration"
}
},
"title": "LlamaStackConfiguration",
Expand Down Expand Up @@ -1682,6 +1703,82 @@
"title": "TrustedProxyServiceAccount",
"type": "object"
},
"UnifiedInferenceProvider": {
"additionalProperties": false,
"description": "A high-level inference provider entry for unified-mode synthesis.\n\nOperators describe inference providers at this high level (backend-agnostic\nvocabulary) instead of authoring raw Llama Stack provider blocks. The\nsynthesizer (`apply_high_level_inference`) expands each entry into a Llama\nStack `providers.inference` entry, mapping `type` to a `provider_type` and\nemitting `${env.<VAR>}` references for secrets (never literal values).\n\nAttributes:\n type: Canonical provider identifier. Vendor-neutral so it survives a\n future backend change; each backend-specific synthesizer maps it to\n its own provider vocabulary.\n api_key_env: Name of the environment variable holding the provider API\n key. Emitted verbatim as `${env.<name>}` so the secret never lands\n on disk resolved.\n allowed_models: Optional allow-list of model identifiers passed through\n to the synthesized provider config.\n extra: Additional provider-config keys merged verbatim into the\n synthesized provider's `config` block — an escape hatch for\n provider-specific knobs not modeled here.",
"properties": {
"type": {
"description": "Canonical, backend-agnostic provider identifier mapped to a Llama Stack provider_type by the synthesizer.",
"enum": [
"openai",
"sentence_transformers",
"azure",
"vertexai",
"watsonx",
"vllm_rhaiis",
"vllm_rhel_ai"
],
"title": "Provider type",
"type": "string"
},
"api_key_env": {
"type": "string",
"nullable": true,
"default": null,
"description": "Name of the environment variable holding the provider API key. Emitted as a ${env.<name>} reference so the secret is never written to disk in resolved form.",
"title": "API key environment variable"
},
"allowed_models": {
"type": "array",
"nullable": true,
"default": null,
"description": "Optional allow-list of model identifiers for this provider.",
"title": "Allowed models"
},
"extra": {
"additionalProperties": true,
"description": "Additional provider-config keys merged verbatim into the synthesized provider's config block.",
"title": "Extra provider config",
"type": "object"
}
},
"required": [
"type"
],
"title": "UnifiedInferenceProvider",
"type": "object"
},
"UnifiedLlamaStackConfig": {
"additionalProperties": false,
"description": "Backend-specific knobs for unified-mode Llama Stack synthesis.\n\nPer Decision S5 of the design spike, backend-agnostic high-level sections\n(inference, ...) live at the configuration root, not here. This block holds\nonly the Llama-Stack-specific synthesis controls: which baseline to start\nfrom, an optional profile file, and a raw native_override escape hatch.\n\nAttributes:\n baseline: Synthesis starting point. \"default\" begins from LCORE's\n built-in baseline (src/data/default_run.yaml); \"empty\" begins from\n an empty dict (used by the migration tool for an exact round-trip).\n Ignored when `profile` is set.\n profile: Optional path to a user-authored run.yaml-shaped file used as\n the synthesis baseline. Relative paths resolve against the directory\n of the loaded lightspeed-stack.yaml.\n native_override: Raw Llama Stack schema deep-merged last (maps merge\n recursively, lists and scalars replace). The escape hatch for\n anything the high-level sections do not express.",
"properties": {
"baseline": {
"default": "default",
"description": "Synthesis starting point: 'default' uses LCORE's built-in baseline, 'empty' starts from {}. Ignored when 'profile' is set.",
"enum": [
"default",
"empty"
],
"title": "Baseline selector",
"type": "string"
},
"profile": {
"type": "string",
"nullable": true,
"default": null,
"description": "Path to a run.yaml-shaped baseline file. Relative paths resolve against the directory of the loaded lightspeed-stack.yaml.",
"title": "Profile path"
},
"native_override": {
"additionalProperties": true,
"description": "Raw Llama Stack schema deep-merged last (maps merge recursively; lists and scalars replace).",
"title": "Native override",
"type": "object"
}
},
"title": "UnifiedLlamaStackConfig",
"type": "object"
},
"UserDataCollection": {
"additionalProperties": false,
"description": "User data collection configuration.",
Expand Down
Loading
Loading