v0.2.22
sadmann7/tablecnv0.2.22Sep 18, 2026by het0814
Upgrading?
AI Summary
Moves conflict detection to Moorcheh's cloud pipeline with live streaming, updates memory sync to inject dynamic memory into instruction files, and merges Claude Code into the connect command. Adds three new integrations: Vapi voice agents, AG2 (AutoGen), and Amazon Bedrock AgentCore Runtime.
Key Highlights
- Cloud conflict detection with live progress streaming to CLI and UI
- Dynamic memory injection for connected agents via `memanto memory sync`
- New Vapi integration for voice assistant memory (webhook server)
- New AG2 (AutoGen) integration for tool registration
- New Amazon Bedrock AgentCore Runtime integration with stable namespace
New Features
- Streaming conflict-report endpoint (SSE) with cancellation support
- Live conflict-detection progress tracker in web UI and CLI
- Vapi webhook server with `memanto_context`, `memanto_recall`, and `memanto_remember`
- AG2 tool registration functions (`register_memanto_tools`, `create_memanto_tools`)
- AgentCore Runtime adapter with `before_turn`, `after_turn`, and `run_turn`
- Stable identity model for AgentCore (`tenant-{tenant_id}-user-{user_id}-agent-{agent_name}`)
Full Release Notes
# Release Notes for v0.2.22
This release moves conflict detection onto Moorcheh's cloud `agent/run` pipeline, with live progress streamed to the CLI and web UI and support for cancelling a run. `memanto memory sync` now writes high-confidence memories straight into each connected agent's instruction file instead of `MEMORY.md`. The Claude Code integration is folded into `memanto connect`, and connect hooks are more robust. It also adds three integration packages: Vapi voice agents, AG2 (AutoGen) and Amazon Bedrock AgentCore Runtime.
## New Features
- **Cloud conflict detection via Moorcheh `agent/run`** (`memanto/app/clients/agent_conflict.py`, `memanto/app/services/daily_analysis_service.py`)
- On the cloud backend, conflict reports now call `POST /agent/run` with `task=detect_conflicts` and compare `fact` and `preference` memories for the chosen date. They no longer depend on that day's session summary files existing.
- If the SSE stream ends before the report arrives, Memanto polls `GET /agent/runs/{run_id}` until the report is ready (300s default timeout).
- Results are converted to the existing conflict schema: compatible and duplicate pairs and self-referencing pairs are dropped, and `keep_both` becomes `merge`. `created_at` and `source` are then added from document metadata.
- Non-cloud backends keep the previous LLM-based path, which reads session summaries.
- **Streaming conflict-report endpoint** (`memanto/app/ui/routes/ui_router.py`)
- New `POST /api/ui/conflicts/generate/stream` returns SSE events: `progress` (with `message`, `step` and `detail`), `result`, `error` and `done`. It sends `: keepalive` comments during long waits.
- When the client disconnects, the endpoint cancels the upstream stream and polling through a `cancel_event`.
- Added to the TypeScript SDK's `sdks/typescript/openapi.json`.
- **Live conflict-detection progress in the UI and CLI** (`memanto/app/ui/static/index.html`, `memanto/cli/commands/memory.py`)
- The web UI shows a step tracker (Starting → Loading & similarity → Analyzing contradictions → Complete) along with the Moorcheh run ID.
- The CLI conflict-detection command shows live status messages and prints the run ID when it finishes.
- **Dynamic memory injection for `memanto memory sync`** (`memanto/cli/commands/memory_mgmt.py`, `memanto/cli/connect/updater.py`)
- `memanto memory sync` now recalls the most relevant active `instruction`, `preference` and `goal` memories (`min_confidence` 0.8). It writes them into the dynamic sentinel section of each connected agent's instruction file and `SKILL.md`, instead of exporting `MEMORY.md`.
- The target connection is detected automatically. New `--connection` and `--scope local|global` options set the target explicitly when there's more than one candidate.
- `--limit` now defaults to `10` (previously `25`). For `--okf` it is still the maximum per type.
- If no memories match, the dynamic sections are cleared.
- **Vapi integration: `memanto-vapi`** (`integrations/vapi/`)
- A webhook server (`memanto-vapi serve`) that gives Vapi voice assistants a lasting memory:
- At call start, context is injected through `{{memanto_context}}`.
- During the call, the assistant has `memanto_recall` and `memanto_remember` tools.
- At call end, the transcript is turned into lessons.
- `MEMANTO_VAPI_SCOPE=shared` (the default) keeps one memory per assistant. `caller` adds private memories per caller, tagged with an HMAC of the phone number or `customer.externalId` keyed by `MEMANTO_VAPI_CALLER_SALT`.
- In caller scope, anything the assistant saves mid-call stays private to that caller. Shared lessons come only from end-of-call extraction, so a caller can't push their details into other callers' context.
- Requests are authenticated with `MEMANTO_VAPI_SECRET`. A malformed JSON body returns `400`, not `500`.
- **AG2 (AutoGen) integration: `memanto-ag2` (preview)** (`integrations/ag2/`)
- `register_memanto_tools()` registers remember, recall and answer as AG2 `register_for_llm`/`register_for_execution` tools. `include_remember`, `include_recall` and `include_answer` select which tools to register.
- Binds the `SdkClient` session in a thread-safe way, handles agents that already exist, and supports AG2 0.9.x schema/`LLMConfig`.
- **Amazon Bedrock AgentCore Runtime integration: `memanto-agentcore` (preview)** (`integrations/agentcore/`)
- `MemantoRuntimeAdapter` runs recall → execute → retain on each handler turn, using `before_turn`, `after_turn` and `run_turn`. Retain runs asynchronously by default.
- Memory is keyed by a stable `tenant-{tenant_id}-user-{user_id}-agent-{agent_name}` ID, not `runtimeSessionId`, so it survives when AgentCore sessions are recycled. A missing `user_id` raises `AgentResolutionError`.
## Improvements
- **Claude Code integration merged into `memanto connect`** (`integrations/claudecode/`, `memanto/cli/connect/engine.py`)
- `claudecode-memanto` 0.1.1 is now a thin `install`/`uninstall` wrapper around `memanto connect`'s `claude-code` install. It requires `memanto>=0.2.21`.
- Removed the separate hook scripts, LLM extractor, profile and skill-map modules, which the core integration now covers.
- **More robust connect hooks** (`memanto/cli/connect/assets/hooks/`, `memanto/cli/connect/engine.py`)
- Hooks now call the absolute Python interpreter (`"<sys.executable>" -m memanto`) and scripts from the installed package. They no longer rely on `python`/`python3`/`memanto` being on `PATH`, or on copying scripts into the agent's config directory.
- Memanto-owned hooks are marked `"_managed_by": "memanto"`. Install and uninstall remove only Memanto's own commands and keep other tools' hooks, even in a shared hook group. Reinstalling replaces Memanto's hooks without adding duplicates.
- Removed the hardcoded fallback `SessionStart` payloads from the agent registry.
- **Agent instruction templates v1.0.1** (`memanto/cli/connect/templates.py`)
- Merged the recall and remember triggers into one 10-point `<thinking>` checklist, with a mandatory `memanto memory sync` and recall at the start of each session.
- Added schema rules for valid types, provenance values and the confidence range, plus worked examples, to cut down on made-up metadata.
- Existing installs are flagged as outdated so they can be updated with `memanto connect update`.
- **UI agent resolution** (`memanto/app/ui/routes/ui_router.py`)
- Conflict and daily-summary UI routes now fall back to the browser session cookie when there's no explicit `agent_id` and no CLI session marker.
- **Learning-type parsing heuristic** (`memanto/app/services/memory_parsing_service.py`)
- Learning detection now matches "in retrospect", "looking back" and "going forward" in place of "in hindsight".
## Bug Fixes
- **Copilot `applyTo` frontmatter duplicated on template updates** (`memanto/cli/connect/engine.py`)
- Updating a `*.instructions.md` file that already had `applyTo` frontmatter added a second frontmatter block. The update now replaces only the sentinel block and skips frontmatter that's already present.
## Tests
- `tests/test_agent_conflict_client.py`: parsing SSE events, progress descriptions, finalizing and polling runs, and cancellation during streaming and polling.
- `tests/test_dynamic_memory_injection.py`: selecting the connection and scope for sync, and making sure global scope never changes local instruction files.
- `tests/test_daily_analysis_query_length.py`: switched to checking the agent-based conflict detection path.
- `tests/test_connect_engine.py`, `tests/test_cli.py`, `tests/test_unit.py`: updated for managed-hook filtering, conflict-report progress callbacks and the new `memory sync` behavior.
- `integrations/vapi/tests/`, `integrations/ag2/tests/`, `integrations/agentcore/tests/`: unit and live test suites for the new integrations.
## Full Changelog
Full Changelog: https://github.com/moorcheh-ai/memanto/compare/v0.2.21...v0.2.22Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Reverse engineer anything with agents, from app behavior down to native binaries.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.