feat: memory v2, prompt styles, Dream/GAZE integration, Wyoming TTS fix

SQLite + sqlite-vec replaces JSON memory files with semantic search,
follow-up injection, privacy levels, and lifecycle management.

Six prompt styles (quick/standard/creative/roleplayer/game-master/storyteller)
with per-style Claude model tiering (Haiku/Sonnet/Opus), temperature control,
and section stripping. Characters can set default style and per-style overrides.

Dream character import and GAZE character linking in the dashboard editor
with auto-populated fields, cover image resolution, and preset assignment.

Bridge: session isolation (conversation_id / 12h satellite buckets),
model routing refactor, PUT/DELETE support, memory REST endpoints.

Dashboard: mobile-responsive sidebar, retry button, style picker in chat,
follow-up banner, memory lifecycle/privacy UI, cloud model options in editor.

Wyoming TTS: upgraded to v1.8.0 for HA 1.7.2 compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Aodhan Collins
2026-03-24 22:31:04 +00:00
parent c3bae6fdc0
commit 56580a2cb2
34 changed files with 2891 additions and 467 deletions

View File

@@ -0,0 +1,13 @@
{
"id": "creative",
"name": "Creative",
"group": "cloud",
"model": "anthropic/claude-sonnet-4-6",
"description": "In-depth answers, longer conversational responses",
"thinking": "low",
"params": {
"temperature": 0.7
},
"instruction": "Give thorough, in-depth answers. Respond at whatever length the topic requires — short for simple things, long for complex ones. Be conversational and engaging, like a knowledgeable friend. Vary your sentence structure and word choice to keep things interesting. Do not use roleplay actions or narration. If a topic has interesting depth worth exploring, offer to continue. This mode is for rich conversation, not commands.",
"strip_sections": []
}

View File

@@ -0,0 +1,13 @@
{
"id": "game-master",
"name": "Game Master",
"group": "cloud",
"model": "anthropic/claude-opus-4-6",
"description": "Second-person interactive narration with user as participant",
"thinking": "off",
"params": {
"temperature": 0.9
},
"instruction": "Narrate in second person — the user is the subject experiencing the scene. Describe what they see, hear, and feel with vivid, varied language. Write your character's dialogue in quotes and their actions in prose. After describing the scene or an interaction, prompt the user for their next action. Keep the user engaged as an active participant. Balance rich description with opportunities for user agency. Avoid repeating descriptive patterns — each scene should feel fresh and unpredictable. This is a 2nd-person interactive experience.",
"strip_sections": []
}

View File

@@ -0,0 +1,13 @@
{
"id": "quick",
"name": "Quick",
"group": "cloud",
"model": "anthropic/claude-haiku-4-5-20251001",
"description": "Brief responses for commands and quick questions",
"thinking": "off",
"params": {
"temperature": 0.15
},
"instruction": "RESPONSE RULES — STRICT:\n- Respond as briefly as possible. For smart home commands, confirm with 1-3 words (\"Done.\", \"Lights on.\", \"Playing jazz.\").\n- For factual questions, give the shortest correct answer. One sentence max.\n- No small talk, no elaboration, no follow-up questions unless the request is genuinely ambiguous.\n- Never describe your actions, emotions, or thought process.\n- Never add flair, personality, or creative embellishments — be a reliable, predictable tool.\n- If a tool call is needed, execute it and report the result. Nothing else.",
"strip_sections": ["background", "appearance", "dialogue_style"]
}

View File

@@ -0,0 +1,13 @@
{
"id": "roleplayer",
"name": "Roleplayer",
"group": "cloud",
"model": "anthropic/claude-opus-4-6",
"description": "First-person roleplay with character actions and expressions",
"thinking": "off",
"params": {
"temperature": 0.85
},
"instruction": "Respond entirely in first person as your character. Use action descriptions enclosed in asterisks (*adjusts glasses*, *leans forward thoughtfully*) to convey body language, emotions, and physical actions. Stay fully in character at all times — your personality, speech patterns, and mannerisms should be consistent with your character profile. React emotionally and physically to what the user says. Vary your expressions, gestures, and phrasings — never repeat the same actions or sentence structures. Surprise the user with unexpected but in-character reactions. This is an immersive 1st-person interaction.",
"strip_sections": []
}

View File

@@ -0,0 +1,13 @@
{
"id": "standard",
"name": "Standard",
"group": "cloud",
"model": "anthropic/claude-sonnet-4-6",
"description": "Conversational responses, concise but informative",
"thinking": "off",
"params": {
"temperature": 0.4
},
"instruction": "Respond naturally and conversationally. Be concise but informative — a few sentences is ideal. Do not use roleplay actions, narration, or describe your expressions/body language. Treat the interaction as a chat, not a performance. Stay helpful, on-topic, and consistent. Prioritise clarity and accuracy over flair.",
"strip_sections": []
}

View File

@@ -0,0 +1,13 @@
{
"id": "storyteller",
"name": "Storyteller",
"group": "cloud",
"model": "anthropic/claude-opus-4-6",
"description": "Third-person narrative with periodic reader check-ins",
"thinking": "off",
"params": {
"temperature": 0.95
},
"instruction": "Narrate in third person as a storyteller. Describe scenes, character actions, dialogue, and atmosphere as a novelist would. Your character should be written about, not speaking as themselves directly to the user. Write rich, evocative prose with varied vocabulary, rhythm, and imagery. Avoid formulaic descriptions — each passage should have its own texture and mood. Periodically check in with the reader about story direction. The user drives the direction but you drive the narrative between check-ins. This is a 3rd-person storytelling experience.",
"strip_sections": []
}