feat: Phase 3 model toggle — cycle chat-role slot models in UI
Replaces the role-cycle toggle with a slot model toggle in the Context & Memory panel. The active model label is shown on the button; clicking cycles through Primary → Backup 1 → Backup 2 slots configured for the Chat role. - app.js: remove activeRole()/availableRoles role-cycling; add activeChatModel()/chatModels slot cycling; update send/orchestrate payloads to send slot + chat_role:"chat"; fix updateSendBtnTitle and startRunTimer to use activeChatModel() - chat.py: add slot field to ChatRequest; pass slot= to complete(); resolve backend_label from slot config; add _chat_slot_models() helper; include chat_models in GET /backend response - HELP.md: update Model toggle description, tool count (62/16), Backends section, API chat payload example Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
and are appended automatically by help.html when present.
|
||||
-->
|
||||
|
||||
*Last updated: 2026-05-09*
|
||||
*Last updated: 2026-05-12*
|
||||
|
||||
---
|
||||
|
||||
@@ -43,7 +43,7 @@ The **Context & Memory** panel (sliders icon with tier number) contains all conf
|
||||
| **Context Tier** | T1 – T4 context depth |
|
||||
| **Memory Layers** | Toggle Long / Mid / Short memory on/off |
|
||||
| **Distill Memory** | Manually trigger Short / Mid / Long / All distillation |
|
||||
| **Role** | Active LLM role — click to cycle through configured role assignments |
|
||||
| **Model** | Active chat model — click to cycle through your configured slot models (Primary → Backup 1 → …) |
|
||||
| **Display** | **Aa** cycles font size · **☾** toggles theme · **S/M/L** cycles input area height · **⌃↵** toggles send shortcut |
|
||||
|
||||
All settings persist in `localStorage` across page refreshes.
|
||||
@@ -82,12 +82,14 @@ Orchestrated sessions persist to history exactly like regular chat.
|
||||
|
||||
### Available Tools
|
||||
|
||||
50 tools across 12 categories. Each tool schema is sent to the model on every orchestrated call — fewer active tools means fewer tokens per call.
|
||||
62 tools across 16 categories. Each tool schema is sent to the model on every orchestrated call — fewer active tools means fewer tokens per call.
|
||||
|
||||
| Category | Tools |
|
||||
|---|---|
|
||||
| **Web** | `web_search`, `http_fetch`, `web_read`, `http_post` |
|
||||
| **Files** | `file_read`, `file_list`, `file_write`, `session_read`, `session_search` |
|
||||
| **Project Files** | `project_file_read`, `project_file_list`, `file_stat`, `file_grep`, `file_diff`, `file_syntax_check` |
|
||||
| **Files** (admin) | `file_read`, `file_list`, `file_write`, `session_read`, `session_search` |
|
||||
| **Git** | `git_status`, `git_log`, `git_diff` |
|
||||
| **Shell** | `shell_exec`, `claude_allow_dir` |
|
||||
| **System** | `cortex_restart`, `cortex_logs`, `cortex_status`, `cortex_update` |
|
||||
| **Tasks** | `task_list`, `task_create`, `task_update`, `task_complete` |
|
||||
@@ -96,10 +98,12 @@ Orchestrated sessions persist to history exactly like regular chat.
|
||||
| **Scratchpad** | `scratch_read`, `scratch_write`, `scratch_append`, `scratch_clear` |
|
||||
| **Notifications** | `web_push`, `email_send`, `nc_talk_send`, `nc_talk_history` |
|
||||
| **Aether Journals** | `ae_journal_list/search`, `ae_journal_entries_list`, `ae_journal_entry_read/create/update/disable/append/prepend` |
|
||||
| **Aether Tasks** | `ae_task_list` |
|
||||
| **Agent Notes** | `agent_notes_read`, `agent_notes_write`, `agent_notes_append`, `agent_notes_clear` |
|
||||
| **Agents** | `spawn_agent` |
|
||||
| **Home Assistant** | `ha_get_state`, `ha_get_states`, `ha_call_service` |
|
||||
|
||||
File, Shell, System, Agents, and some Notification/Web tools are **admin-only** and not visible to regular users.
|
||||
Files, Shell, System, Agents, and some Notification/Web tools are **admin-only** and not visible to regular users.
|
||||
`http_post` requires a URL prefix allowlist in `home/{user}/http_allowlist.json`.
|
||||
`nc_talk_history` requires `nc_username` and `nc_app_password` in `channels.json` under `nextcloud`.
|
||||
|
||||
@@ -149,21 +153,14 @@ Once installed, opening Cortex from the home screen or app launcher skips the br
|
||||
|
||||
## Backends
|
||||
|
||||
Three backends are available:
|
||||
The **Model** toggle in the Context & Memory panel cycles through the slot models configured for your Chat role (Primary → Backup 1 → Backup 2 → …). Click it to switch between models mid-session.
|
||||
|
||||
| Backend | What it is |
|
||||
|---|---|
|
||||
| **Claude** | Anthropic Claude via the Claude CLI (OAuth — no API key needed) |
|
||||
| **Gemini** | Google Gemini via the Gemini CLI |
|
||||
| **Local** | Any OpenAI-compatible endpoint (Open WebUI, Ollama, OpenRouter, etc.) |
|
||||
- The button label shows the active model (e.g. "GPT-4o", "Gemini 2.5 Flash")
|
||||
- The selected slot is sent with each chat request so the correct model is used
|
||||
- If only one model is configured, the toggle does nothing
|
||||
- A system message appears in the chat when you switch models
|
||||
|
||||
The **Role** toggle in the Context & Memory panel cycles through configured role assignments. Each role maps to a Primary / Backup 1 / Backup 2 model chain set in the Model Registry.
|
||||
|
||||
- The active model label appears below the toggle button
|
||||
- `auto` (default) uses the model assigned to the `chat` role in your Model Registry
|
||||
- Forcing a specific backend overrides the role assignment for that session
|
||||
|
||||
If the active backend fails, a fallback is tried automatically. A **⚡** badge appears on the response when this happens.
|
||||
If the active model fails, the next configured backup slot is tried automatically.
|
||||
|
||||
Each response shows a **model tag** (bottom-right of message) with the model label and host, so you always know what responded.
|
||||
|
||||
@@ -447,10 +444,12 @@ Chat request body (`POST /chat`):
|
||||
"message": "string",
|
||||
"session_id": "string | null",
|
||||
"tier": 2,
|
||||
"model": "claude | gemini | local | null",
|
||||
"chat_role": "chat",
|
||||
"slot": "primary | backup_1 | backup_2 | null",
|
||||
"include_long": true,
|
||||
"include_mid": true,
|
||||
"include_short": true
|
||||
"include_short": true,
|
||||
"off_record": false
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user