Open
Conversation
Adds deterministic short-term memory with three storage mechanisms: - Auto-store from tool responses via memory_hint field - Explicit memory_short tool (store/get/delete/list actions) - HTTP API endpoints for external access Backend: src/caal/memory/ package with file-based JSON persistence, singleton pattern, TTL support, and context injection into LLM. Frontend: Memory Panel UI with Brain icon button, entry list, detail modal, and clear all functionality. Includes i18n translations for en, fr, it. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change default TTL from 24h to 7 days (604800s)
- Allow tools to specify custom TTL in memory_hint:
- Simple value: uses default 7d TTL
- {"value": ..., "ttl": seconds}: custom TTL
- {"value": ..., "ttl": null}: no expiry
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace linear execute→stream→retry with a loop that supports multi-step tool chaining. Model can now: call tool A → get result → call tool B → get result → generate text response. Previously, after one tool execution the code tried to stream a text response. If the model wanted to chain (call another tool), it produced 0 text chunks, triggering a retry without tools that crashed Ollama (tool references in messages but no tools registered). New flow: - Loop non-streaming chat() calls (max 5 rounds) - Each round: if tool_calls → execute → loop back - When no tool_calls → yield content or stream final response - Safety fallback: _strip_tool_messages converts tool messages to plain text if Ollama still crashes on the streaming path Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…o context - Deduplicate identical tool calls within a single round (same name + args) - Accumulate tool names/params across chained rounds for frontend indicator - Keep tool indicator showing after response (don't clear when tools were used) - Include tool call arguments in ToolDataCache context injection Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Memory file was failing with permission denied because /app is owned by root. Now uses CAAL_MEMORY_DIR=/app/data (the caal-memory volume) and entrypoint ensures directory is writable by agent user. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevents the LLM from using memory data in the initial greeting. Memory context is now skipped when there are no user messages yet. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…haining Context injection helps the LLM know what's in memory so it can chain tools correctly (e.g. memory_short → flight_tracker). Without it, the model may skip memory and go to other tools directly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…missions - Memory detail modal now has pencil icon to edit values in-place - Add registry_cache.json symlink to entrypoint.sh (same pattern as settings.json) to fix permission denied on /app/registry_cache.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ministral-3 recommended instruction temperature is 0.15. The old 0.7 default was overriding the Modelfile setting on every API call. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
memory_hint, explicitmemory_shorttool (store/get/delete/list), and HTTP APIcaal-memoryvolume with 7-day default TTLmemory_short(get) → flight_tracker/app/registry_cache.jsonand memory persistenceArchitecture
Three storage paths:
memory_hintin response → auto-storedmemory_short(store)POST /memoryfor external systemsContext injection serves as awareness layer — the LLM sees what's in memory so it knows to chain tools (e.g. pull email from memory → send via Gmail), but retrieval still goes through the tool for verification.
Test plan
🤖 Generated with Claude Code