v0.2.22
google/comprehensive-rustv0.2.22Sep 18, 2026by het0814
Upgrading?
AI Summary
A feature release moving conflict detection to the cloud, adding three new integrations (Vapi, AG2, Bedrock), and improving dynamic memory injection.
Key Highlights
- Cloud conflict detection via Moorcheh `agent/run` pipeline
- New Vapi voice agent integration
- New AG2 (AutoGen) integration
- New Amazon Bedrock AgentCore Runtime integration
- Dynamic memory injection into agent instruction files
New Features
- Streaming conflict-report endpoint with progress updates
- Vapi integration with context injection and tools
- AG2 integration with tool registration
- Bedrock AgentCore Runtime adapter with recall/execute/retain loop
- Claude Code integration merged into `memanto connect`
- Robust connect hooks using absolute paths
- Agent instruction templates v1.0.1
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
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one