diff --git a/CHANGELOG.md b/CHANGELOG.md index 98994b67..dd5d7f2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,11 +8,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [0.9.7] — 2026-05-11 -Three small follow-ups to v0.9.6 reported live by [@jcalfee](https://github.com/jcalfee) on [#234](https://github.com/rohitg00/agentmemory/issues/234): the `@agentmemory/mcp` shim silently degraded to a 7-tool local fallback for sandboxed MCP clients (Flatpak VS Codeium / Roo Code) because its 500 ms `livez` probe failed inside the sandbox network namespace and the catch swallowed the error; the Docker compose stack persisted state to an ephemeral container path instead of the named volume; and a `which iii` lookup leaked a "no iii in $PATH" line to the CLI banner. +Four follow-up fixes to v0.9.6 reported live by [@jcalfee](https://github.com/jcalfee) ([#234](https://github.com/rohitg00/agentmemory/issues/234)) and [@satabd](https://github.com/satabd) ([#278](https://github.com/rohitg00/agentmemory/issues/278)): the `@agentmemory/mcp` shim gained probe diagnostics and an escape hatch for clients that can reach the server via a non-default route, the Docker compose stack now persists state across `docker compose down` (the volume binding was unused due to a working-directory mismatch in the engine config), a cosmetic `which iii` stderr leak was suppressed, and the engine container's log output is now bounded so a crash/restart spam loop can no longer fill the host disk. ### Fixed -- **`@agentmemory/mcp` standalone shim now surfaces probe failures and ships an escape hatch for sandboxed clients.** The `livez` probe in `src/mcp/rest-proxy.ts` used a 500 ms timeout and silently swallowed every failure; sandboxed clients (Flatpak VS Codeium spawning the shim from inside its bubblewrap network namespace, Snap-packaged editors, restrictive container runtimes) hit a connection failure on the probe, fell back to the 7-tool `IMPLEMENTED_TOOLS` set, and had no log line explaining why. The probe now writes the URL, HTTP status (or thrown reason), and the active timeout to `stderr` on every failure, the default timeout is raised to 2000 ms, `AGENTMEMORY_PROBE_TIMEOUT_MS` overrides it for slow loopbacks, and `AGENTMEMORY_FORCE_PROXY=1` skips the probe entirely and trusts `AGENTMEMORY_URL` — the right escape hatch when the shim is reachable to the server via a known route but can't see the host's `localhost`. (closes [#234](https://github.com/rohitg00/agentmemory/issues/234) follow-up, thanks [@jcalfee](https://github.com/jcalfee) for the host-vs-Flatpak repro) +- **`@agentmemory/mcp` standalone shim now surfaces probe failures and ships an escape hatch and a debug-trace knob.** The `livez` probe in `src/mcp/rest-proxy.ts` used a 500 ms timeout and silently swallowed every failure: when the probe failed, the shim fell back to the 7-tool `IMPLEMENTED_TOOLS` set with no log line explaining why. The probe now writes the URL, HTTP status (or thrown reason), and the active timeout to `stderr` on every failure; the default timeout is raised to 2000 ms; `AGENTMEMORY_PROBE_TIMEOUT_MS` overrides it for slow loopbacks; `AGENTMEMORY_FORCE_PROXY=1` skips the probe entirely and trusts `AGENTMEMORY_URL` outright (the right escape hatch when the shim can reach the server via a known route but not the host's `localhost`); and `AGENTMEMORY_DEBUG=1` traces `tools/list` end-to-end (`handle.mode`, response shape, returned tool count, local-fallback contents) so MCP integrations have first-class visibility into what the shim is actually returning over the wire. The shim verified end-to-end via stdio against an `AGENTMEMORY_TOOLS=all` server: `tools/list` returns all 51 tools. (closes [#234](https://github.com/rohitg00/agentmemory/issues/234), thanks [@jcalfee](https://github.com/jcalfee) for the host-vs-sandboxed-client repro and detailed log captures) - **Docker compose stack no longer loses state on `docker compose down`.** `iii-config.docker.yaml` configured `iii-state` and `iii-stream` with relative `file_path: ./data/...`, which the engine resolves against its container `WORKDIR=/home/nonroot` — not the `/data` mount where the named `iii-data` volume lives. State and stream stores were written to the ephemeral container layer and discarded on every container restart, so memories, BM25 index, and stream backlog vanished. Both paths are now absolute (`/data/state_store.db` and `/data/stream_store`), routing writes through the named volume as the compose file always intended. Existing users need a one-time `docker compose down -v` to clear the old empty volume layout before the upgrade.