fix(container): update image ghcr.io/joryirving/agentmemory ( 0.9.21 → 0.9.27 )#1852
Open
renovate[bot] wants to merge 1 commit into
Open
fix(container): update image ghcr.io/joryirving/agentmemory ( 0.9.21 → 0.9.27 )#1852renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
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.
This PR contains the following updates:
0.9.21→0.9.27Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
rohitg00/agentmemory (ghcr.io/joryirving/agentmemory)
v0.9.27Compare Source
Wave release closing several breaking regressions reported against v0.9.26, plus an agent-scope isolation security fix, an iii version-pin audit fix, and a benchmark scorecard correction. No breaking changes; drop-in upgrade.
Security
AGENTMEMORY_AGENT_SCOPE=isolatednot enforced onmem::search/POST /agentmemory/search/memory_recall/recall_context(#817). PR #654's isolation work covered smart-search,/memories,/observations, and/sessionsbut missed the BM25-only recall path. An isolated worker booted withAGENT_ID=Bcould read agent A's memories via the standard MCPmemory_recalltool.mem::searchnow applies the same filter as smart-search (wildcardagentId: "*"bypasses, explicitagentIdpins, isolated mode falls back to envAGENT_ID).recall_contextprompt also filters its kv.list memory feed by active agent. Fail-closed: if isolated mode is on and no agent id resolves from any source, the call throws rather than dropping the filter.Fixed
/graph/queryand/graph/statstimed out with"Invocation stopped"on large existing corpora (#814, PR #816). The v0.9.25 fix from #753 paginated the response but the unboundedkv.list<GraphNode>+kv.list<GraphEdge>pair still ran on every call. At 75K+ nodes the response payload exceeded the iii heartbeat budget and the worker was declared dead before the new wall-clock timer could fire. Refactoredmem::graph-extractto maintain three side-indexes (graphNameIndex,graphEdgeKey,graphNodeDegree) so every extract path is O(1), never O(n). The hot path now reads exclusively from a precomputed top-degree snapshot updated inline on every extract. Samekv.listbottleneck was also blockingmem::graph-extracton every observation capture, so the fix immediately speeds up the observation pipeline too.agentmemory stopfollowed by restart (#843).runStop()killed the iii engine first, then the worker. The worker's shutdown handler flushes BM25/vector snapshots and audit rows viaindexPersistence.save() -> kv.set() -> state::set, which all routed through an iii engine that was already dead. Stop order inverted: worker first with a bumped 5s SIGTERM grace (gives a large index a real chance to commit), engine second. The "Memories persisted to disk" message now reflects actual disk state.mem::graph-snapshot-rebuildandmem::graph-resetheartbeat-crashed on legacy >25K-node corpora (#825). Both endpoints calledkv.listup front. At 75K nodes the response payload blocks the event loop inJSON.parseand the iii heartbeat starves before any wall-clock budget timer can fire.mem::graph-snapshot-rebuildnow refuses pre-flight when no prior snapshot exists, returning{ legacyCorpus: true }with operator guidance unless an explicitforce: trueflag is set.mem::graph-resetno longer enumerates anything: it writes an empty snapshot stamped withresetAtand returns. Legacy rows stay as on-disk orphans but post-resetmem::graph-extractcalls compare each name-index hit'screatedAtagainstresetAt, so older rows are treated as not-found and a fresh node is written instead of silently reconnecting to a pre-reset orphan.--port Nonly relocated REST + viewer; streams (3112) and iii engine (49134) stayed hardcoded so a second daemon collided on those WS ports regardless of--port.loadConfig()now derives streams = REST+1 and engine = REST+46023 (so the canonical 3111 → 3112/49134 default is unchanged, and--port 3211→ 3212/49234). New--instance Nshortcut picks a 100-port block:--instance 1→ 3211/3212/3213/49234. Per-port env overrides (III_STREAM_PORT,III_ENGINE_PORT,III_ENGINE_URL) still win.III_CONSOLE_INSTALL_CMDrancurl -fsSL https://install.iii.dev/iii/main/install.sh | shwith no version pin. A fresh first-run prompt could install a console build that talks a different protocol than the engine agentmemory pins. The install script reads aVERSIONenv var (engine_version="${VERSION:-}"in install.sh), so the command now passesVERSION=${IIPINNED_VERSION}. Render path is platform-aware too: Windows users get a PowerShell-friendly hint instead of a POSIX command they can't run. Mismatch error text updated from "reinstall the latest binary" to reference the pinned version explicitly.Docs
topK.lengthtok. On the current formula those numbers are mathematically impossible (math ceiling at K=5 on this corpus is 0.240). Re-scored on v0.9.26: hybrid 0.240 / R@5 1.000, grep 0.227 / R@5 0.967. Reframed lift as recall + temporal not aggregate precision; aggregate P@5 saturates on a small / single-gold corpus and can't differentiate top-tier adapters.import-jsonlusers warned about Claude Code'scleanupPeriodDays. Default 30-day auto-deletion of~/.claude/projects/*.jsonldoesn't affect hook-wired installs (each turn lands in iii state while the session is live), but fresh installs on months-old Claude Code histories silently lost anything older than 30 days. README now flags this with three workarounds: cron the import, raisecleanupPeriodDays, or wire hooks.Added
POST /agentmemory/graph/snapshot-rebuild— pays the full enumeration cost once on corpora ≤ 25K nodes, persists a top-degree subgraph + aggregate counts, refuses with{ success: false, tooLarge: true, totalNodes, ceiling }above the safe ceiling instead of killing the worker. Strictforce: trueboolean check bypasses the legacy-corpus pre-flight refusal.POST /agentmemory/graph/reset— clean-restart escape hatch for legacy corpora. Enumeration-free: writes empty snapshot withresetAtepoch marker. Future extracts treat any pre-resetAtrow as orphan viacreatedAtcomparison.--instance NCLI flag — multi-daemon convenience. Picks a 100-port block off the 3111 base. Max N=50.GraphSnapshot.topDegrees— synchronous degree lookup keyed by nodeId so re-ranking after edge writes runs sync over numbers instead of async kv.get inside the sort comparator.GraphSnapshot.resetAt— ISO timestamp set bymem::graph-reset. Drives post-reset orphan detection in extract.GraphQueryResult.fromSnapshot+GraphQueryResult.warning— response fields the viewer can use to surface "served from cache" or "rebuild needed" banners instead of opaque 500s.Changed
POST /agentmemory/graph/snapshot-rebuildandPOST /agentmemory/graph/resetadded.mem::graph-statsnow reads exclusively from the snapshot. Returns{ ..., fromSnapshot, warning }envelope when snapshot is absent; never returns a 500.mem::graph-queryempty-body / nodeType-only path reads exclusively from the snapshot.startNodeId/querypaths keep the live enumeration behind a 6s budget with snapshot-backed fallback on rejection.mem::searchover-fetch triggers when agentId filtering is active (not just project/cwd). Without it, isolated-mode pages were silently underfilled when same-agent matches ranked below cross-agent ones.Known limitations
mem::graph-queryBFS (startNodeId) and text-search (query) paths still callkv.listand degrade past ~25K nodes on fresh corpora (#828). The hot path stays safe (snapshot-only). A per-node adjacency index is the right next fix; deferred to the structured graph migration milestone (#309)./agentmemory:forgetskill still callsmemory_governance_deletewhich only touchesKV.memoriesand never observations (#833). Skill rewrite + newmemory_forgetMCP tool tracked separately.crypto.randomUUID()global-only on Node <19 (#715). Drop-in import fix tracked.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.