v0.2.25

GyulyVGC/sniffnetv0.2.25Oct 1, 2026by het0814

Upgrading?

AI Summary

This release introduces Google ADK and Eve integrations, significantly improves the Web UI's performance and memory visibility, and fixes several bugs in the TypeScript SDK and Hermes plugin.

Key Highlights

  • New Google ADK integration (`memanto-google-adk`) for persistent memory with user isolation.
  • Eve support in TypeScript SDK with tools (`recallMemory`, `rememberMemory`) and a memory provider.
  • Web UI loads much faster with optimized API queries and memory count caching.
  • History, Analytics, and Connection views now show every memory (up to 5,000) instead of the recall limit.
  • TypeScript SDK fixes for remote server agent creation and compatibility with `ai@7`.

New Features

  • Integration of `MemantoMemoryService` for Google ADK's `preload_memory` and `load_memory` tools.
  • New `createMemantoEveTools()` function exposing Eve tools and the `memantoMemory()` provider.
  • Web UI optimizations: `include_counts` parameter and 5-minute memory count caching.
  • New `POST /api/v2/agents/{agent_id}/recall/all` endpoint for viewing all memories.
  • TypeScript SDK recall tag filter option in `RecallInput`.

Full Release Notes

# Release Notes for v0.2.25

This release adds two integrations. **Google ADK** is a new Python package, `memanto-google-adk`, and **Eve** support in the TypeScript SDK adds both tools and a memory provider. The Web UI loads much faster, and its History, Analytics and connection views now show every memory instead of the recall limit. 

## New Features
- **Google ADK integration** (`integrations/google-adk/`)
  - New `memanto-google-adk` package. `MemantoMemoryService` is a drop-in ADK memory service, so ADK's built-in `preload_memory` and `load_memory` tools recall from Memanto.
  - Saving a session (`add_session_to_memory`, `add_events_to_memory`) turns the conversation into typed memories using Memanto's extraction. Only events added since the last save are extracted, even across processes, so saving every turn or retrying a save stores nothing twice.
  - Long sessions are split into chunks that fit the extractor's message and character limits, instead of failing.
  - There is one Memanto agent per ADK app (`adk-<app_name>`), or you can pass `agent_id=` to share one. Each ADK user's memories are tagged `user-<sha256 of user_id>`. Recall filters on that tag and checks every result against it again, so users never see each other's memories.
  - Optional `remember_tool` (`memanto_remember`) lets the agent save a fact as soon as it hears it.
  - `add_memory` stores `MemoryEntry` items as they are, without extraction.
  - `adk web`, `adk run` and `adk api_server` can use it through a `memanto://` service URI registered in `services.py`.
  - `recall_limit` and `extract_max_memories` are checked against server limits. Requires `google-adk>=2.0,<3` and `memanto>=0.2.21`.
- **Eve integration in the TypeScript SDK** (`sdks/typescript/src/integrations/eve.ts`)
  - New `@moorcheh-ai/memanto/eve` entry point. `eve` is an optional peer dependency (`>=0.60.0`).
  - `createMemantoEveTools()` exposes `recallMemory`, `rememberMemory` and `answerMemory` as Eve tools, the same way as the Vercel AI SDK, Mastra and OpenAI integrations. `include` picks a subset of tools, and `defaultLimit` sets the result limit used when the model doesn't give one.
  - Tool calls show short activity labels (for example "Answered from 3 memories"). The model gets compact output instead of raw JSON.
  - `memantoMemory()` is an Eve memory provider. Before each turn, it adds the memories that best match the user's message to the context, and it gives the model `remember` and `recall` tools.
  - One Memanto agent (default `eve`) serves every Eve scope. Each scope is kept separate by a tag that is the hex hash of the scope key. Eve's raw scope keys can contain `-`, which Moorcheh's tag filter doesn't match, so filtering on them would return memories from every scope.
  - `recallLimit` (1–50, default 5). `capture: true` also extracts and saves memories from every completed turn; this is off by default.

## Improvements
- **Faster Web UI** (`memanto/app/ui/static/index.html`, `memanto/app/routes/sessions.py`)
  - `GET /api/v2/agents` and `GET /api/v2/agents/{agent_id}` take a new `include_counts` query parameter (default `true`). The UI passes `include_counts=false` for the dashboard and sidebar, so it no longer waits for a live memory count from Moorcheh.
  - Memory counts per namespace are cached for 5 minutes. If a refresh fails, the server keeps the last counts and waits 60 seconds before trying again, instead of returning nothing. Single-agent lookups now fetch only that agent's namespace instead of listing all of them.
  - The UI caches the agent list, History data (5 minutes) and conflict reports (per agent and date). The data for the conflict badge is fetched in parallel.
- **History, Analytics and connection views show every memory** (`memanto/app/routes/memory.py`)
  - New `POST /api/v2/agents/{agent_id}/recall/all` returns all stored memories, newest first, with the same filters as `/recall/recent`. It returns up to 5,000 unless you set `limit`. Previously these views used `/recall/recent`, which is capped by the recall limit.
  - `/recall/recent` and `/recall/all` responses now include `total_available`.
- **TypeScript SDK recall tag filter** (`sdks/typescript/src/index.ts`)
  - `RecallInput` has a new `tags` option that only returns memories carrying all of the given tags.
- **MCP Registry listing** (`integrations/mcp/server.json`, `integrations/mcp/README.md`)
  - `memanto-mcp` 0.1.3 adds the `io.github.moorcheh-ai/memanto` registry name and a `server.json` for publishing to the official MCP Registry. A `glama.json` adds the Glama directory listing.

## Bug Fixes
- **TypeScript SDK couldn't create or activate agents on remote servers** (`sdks/typescript/src/index.ts`)
  - A Memanto server listening beyond localhost only allows creating and activating agents with its management credential. The SDK never sent `apiKey`, so these calls were rejected on remote servers. `apiKey` is now sent as `X-Api-Key` on every request.
- **Installing the TypeScript SDK alongside `ai@7` failed** (`sdks/typescript/package.json`)
  - `@voltagent/core` was declared as an optional peer dependency, and its version range conflicted with `ai@7`. The peer declaration is removed.
- **Hermes plugin wouldn't load from the Hermes catalog** (`integrations/hermes-agents/`)
  - The plugin imported itself by its absolute package name, which fails when the Hermes catalog installs it under a different path. It now uses a relative import. `plugin.yaml` also declares `kind: exclusive` and the `on_memory_write` hook. `hermes-memanto` is bumped to 0.1.1.
- **Conflict report missed some conflicts and showed duplicated headers** (`memanto/app/services/daily_analysis_service.py`)
  - Findings classified as `conflict` or `update` were dropped unless they also carried an explicit `conflict: true` flag; now they are included. A `[...]` header line at the start of the old and new memory text is removed, so it no longer appears twice in the UI.

## Tests
- `integrations/google-adk/tests/test_google_adk.py`: covers user isolation, incremental and retried saves, chunking of long sessions, recall mapping, URI registration and the remember tool.
- `sdks/typescript/test/integrations/eve.test.ts`, `eve-memory.test.ts`: cover the Eve tools (subset selection, `defaultLimit`, activity labels, model output) and the memory provider (scope isolation, recall into context, capture).
- `sdks/typescript/test/memanto.test.ts`: covers the `X-Api-Key` header on remote requests and the recall `tags` filter.
- `tests/test_api.py`: resets the namespace-count cache between tests.

## Full Changelog
Full Changelog: https://github.com/moorcheh-ai/memanto/compare/v0.2.24...v0.2.25

Related Repositories