ci / check (push) Waiting to run
Levels (models/schema.json levels): provider/effort.ts levelsOf/levelFields/ readLevel — `off` only with thinking_switch and sends enable_thinking false and no effort, `default` for a model that takes no efforts and sends nothing, a level not offered is read as the start level. The engine's effort is a level; /effort shows nothing for one level, a Thinking switch for [off, X], a list otherwise; the status bar follows. /v1/models' thinking_switch, efforts [] and capacity.parallel are read (lembas/webui.ts); session/capacity.ts counts parallel slots. Reasoning (context.md §8): an assistant message of the current turn carries reasoning_content (provider/common.ts turnReasoning, openai-chat.ts); step-boundary deliveries, nudges and the wrap-up are marked turn: false and do not start a turn. Paths (context.md §11): the <env> block names the project and, started below the root, that directory relative to it (assemble.ts envLines); instruction files and @ attachments are named from the root or as ~/…; file tools and bash resolve relative paths against the project root. The team rules (team/team.ts) and conformance runners for levels, reasoning, paths and team; the team runtime follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
243 lines
9.6 KiB
JSON
243 lines
9.6 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"properties": {
|
|
"connections": {
|
|
"default": {},
|
|
"description": "The LLeMbas server this machine is logged in to, as `lembas login` writes it: its address and this machine's token. Its models come from it at every start.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "webui",
|
|
"description": "A LLeMbas instance: its models, their settings, its voice and its web search."
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The instance's address, e.g. https://ai.example.org (no /v1)."
|
|
},
|
|
"api_key": {
|
|
"description": "This machine's token, as login wrote it: {file:~/.config/lembas/lembas/<name>.key}.",
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"description": "For an instance behind a private CA: `ca`, the PEM file that signed its certificate.",
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timeout": {
|
|
"description": "Seconds of silence allowed in a reply, as for any connection (default 600).",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"quirks": {
|
|
"description": "Server oddities; auto is right almost always.",
|
|
"type": "object",
|
|
"properties": {
|
|
"stream_usage": {
|
|
"description": "Ask for token usage in the stream (stream_options); auto learns when a server refuses it.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"on",
|
|
"off"
|
|
]
|
|
},
|
|
"prompt_progress": {
|
|
"description": "Ask how far the server is through reading the prompt (llama.cpp's return_progress), shown while it reads; auto learns when a server refuses it, and one that ignores it shows nothing.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"on",
|
|
"off"
|
|
]
|
|
},
|
|
"think_tags": {
|
|
"description": "<think>…</think> in a reply is taken as reasoning; off leaves it as text.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"on",
|
|
"off"
|
|
]
|
|
},
|
|
"max_tokens_field": {
|
|
"description": "OpenAI reasoning models refuse `max_tokens`; most local servers only know it.",
|
|
"type": "string",
|
|
"enum": [
|
|
"max_tokens",
|
|
"max_completion_tokens"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"models": {
|
|
"description": "Only to change what the instance says about a model, here: each entry goes over the instance's. Usually absent.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"description": "A display name; the id is what is sent.",
|
|
"type": "string"
|
|
},
|
|
"family": {
|
|
"description": "Picks the prompt overlay: anthropic | gpt | gemini | local. Guessed from the id when absent.",
|
|
"type": "string"
|
|
},
|
|
"context": {
|
|
"description": "Total context window in tokens. 0 / absent = unknown: no percentage, no auto-compaction.",
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"max_output": {
|
|
"description": "Max tokens per reply.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"temperature": {
|
|
"description": "Sampling temperature; absent = the server's default.",
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 2
|
|
},
|
|
"top_p": {
|
|
"description": "Nucleus sampling; absent = the server's default.",
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"efforts": {
|
|
"description": "The model's own effort vocabulary, in offering order. [] — it takes none (its one level is `default`).",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
"max"
|
|
]
|
|
}
|
|
},
|
|
"thinking_switch": {
|
|
"description": "The server turns thinking off for a request with chat_template_kwargs.enable_thinking false: only then is the level `off` offered.",
|
|
"type": "boolean"
|
|
},
|
|
"effort": {
|
|
"description": "The level a conversation starts with, when the model offers it: an effort, `off` (thinking switched off, with thinking_switch) or `default` (nothing sent, for a model that takes no efforts).",
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
"max"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "off"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "default"
|
|
}
|
|
]
|
|
},
|
|
"effort_style": {
|
|
"description": "Where the effort goes in a request: top-level, in chat_template_kwargs, or both (the default: llama.cpp drops top-level).",
|
|
"type": "string",
|
|
"enum": [
|
|
"top",
|
|
"kwargs",
|
|
"both"
|
|
]
|
|
},
|
|
"vision": {
|
|
"description": "The model reads images: @image files, pasted paths and view_image.",
|
|
"type": "boolean"
|
|
},
|
|
"tools": {
|
|
"description": "false: a model without tool calls — it can only talk.",
|
|
"type": "boolean"
|
|
},
|
|
"headers": {
|
|
"description": "Extra HTTP headers for this model's requests.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"body": {
|
|
"description": "Merged into every request body for this model.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {}
|
|
},
|
|
"notes": {
|
|
"description": "What this model is good at, in a line: the model in use is told which others there are, for handing work over (task) or switching.",
|
|
"type": "string",
|
|
"maxLength": 300
|
|
},
|
|
"single_session": {
|
|
"description": "The server serves one request at a time: a subagent on this same model would take its only slot and push the session's cached prompt out, so it is refused. The same as parallel: 1.",
|
|
"type": "boolean"
|
|
},
|
|
"parallel": {
|
|
"description": "How many requests the model's server serves at once (capacity.parallel); wins over single_session. Absent with no single_session: no limit (a hosted API). A team is offered only on a model that serves at least 2.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"group": {
|
|
"description": "Models sharing one GPU server that holds one model at a time (llama-swap), as the LLeMbas server says (capacity.group): a subagent on another model of the same group would unload this one, so it is refused.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"title": "LLeMbas CLI connections.yaml",
|
|
"description": "~/.config/lembas/connections.yaml: the LLeMbas server this machine is logged in to, as lembas login writes it. Global only."
|
|
}
|