fix(install): pin iii-engine to v0.11.2 across all install paths#260
fix(install): pin iii-engine to v0.11.2 across all install paths#260
Conversation
iii-engine v0.11.6 ships a regression where engine-internal cron/http trigger registrations fail validation at boot, causing the agentmemory worker to drop into an EPIPE reconnect loop and BM25 search to return empty after every save. Symptom: `npx @agentmemory/agentmemory demo` reports "worker not reachable" and memory_smart_search returns 0 results regardless of memory_save success. Until the engine fix lands upstream, every install path now resolves to v0.11.2: - src/cli.ts auto-installer downloads github.com/iii-hq/iii/releases/download/iii/v0.11.2/iii-<arch>.tar.gz directly instead of piping `install.iii.dev/iii/main/install.sh`, which tracks `latest` and pulls the broken 0.11.6. - src/cli.ts Docker fallback pulls `iiidev/iii:0.11.2`, not `:latest`. - src/cli.ts install instructions and Windows guidance updated to point at the v0.11.2 release page. - docker-compose.yml `image: iiidev/iii:0.11.2` (was `:latest`). - README.md install section documents the pin and lists per-arch curl commands for the pinned tarball. Escape hatch: AGENTMEMORY_III_VERSION=<version> overrides the pin for users who've verified compat manually. Bumping the default requires end-to-end testing with a fresh agentmemory install + the engine fix shipped. Verified the pinned URL resolves: `iii-aarch64-apple-darwin.tar.gz` extracts an `iii` binary that reports `--version` 0.11.2. Per-arch assets covered by `iiiReleaseAsset()`: darwin arm64 / x64, linux x64 / arm64 / armv7, win32 x64 / arm64.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
✅ Files skipped from review due to trivial changes (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThis PR pins the Changesiii-engine Version Pinning
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docker-compose.yml`:
- Line 8: The docker-compose image is hardcoded to iiidev/iii:0.11.2 so
AGENTMEMORY_III_VERSION is ignored; change the image line to reference the
environment variable (e.g. image: iiidev/iii:${AGENTMEMORY_III_VERSION:-0.11.2})
so AGENTMEMORY_III_VERSION can override the tag while preserving the current
default, and ensure the variable is documented or provided via .env or
environment when running the compose command.
In `@src/cli.ts`:
- Around line 358-365: The current linuxInstall command (constructed where
releaseUrl is used to build the one-liner in cli.ts) pipes curl into tar but
doesn't ensure ~/.local/bin exists; update the template string referenced by
linuxInstall so it first creates the directory (e.g., prepend "mkdir -p
~/.local/bin &&") before the tar extraction and keep the existing chmod step and
use of IIPINNED_VERSION and releaseUrl unchanged; ensure both the
releaseUrl-true branch (the curl|tar one-liner) and any place that constructs
the same install string use the mkdir -p addition.
- Around line 1044-1066: The Windows ZIP asset is being piped into tar -xz and
chmod'd which will fail; update the installer branch in the iiiReleaseUrl()
handling to detect Windows (platform() or process.platform === 'win32') or the
asset suffix (iiiReleaseAsset() endsWith ".zip") and either skip the tarball
installer on Windows (fall back to Docker/manual instructions) or run a
ZIP-aware install flow: fetch the .zip, extract the iii.exe (or rename it) into
the binDir (instead of using tar and chmod), and ensure the code paths using
homedir(), binDir, installCmd, runCommand, shBin and IIPINNED_VERSION handle the
alternate zip/unzip command or skip gracefully so Windows users do not hit the
tar-based failure.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 2e1fb810-cb62-443e-8aff-d72c6294231e
📒 Files selected for processing (3)
README.mddocker-compose.ymlsrc/cli.ts
Three issues from review of f04f53f: 1. docker-compose.yml hardcoded `iiidev/iii:0.11.2`, ignoring the AGENTMEMORY_III_VERSION escape hatch. Switch to `${AGENTMEMORY_III_VERSION:-0.11.2}` so `AGENTMEMORY_III_VERSION=0.11.7 docker compose up` actually moves to 0.11.7. Default unchanged. Verified with `docker compose config`: env-set produces 0.11.7, unset produces 0.11.2. 2. Displayed Linux install one-liner in installInstructions() (and the matching README per-arch examples) called `tar -xz -C ~/.local/bin` without ensuring the directory existed. Fresh macOS users without a prior `~/.local/bin` would hit `tar: ~/.local/bin: Cannot open: No such file or directory`. Prepend `mkdir -p ~/.local/bin && ` to the shown command and to the README example. The programmatic install path in runUpgrade was already correct (line 1055 mkdir step), so only display strings change. 3. runUpgrade's auto-installer branch assumed every release asset was a tarball — would silently pipe a Windows .zip through `tar -xz` and fail. Detect Windows or `.zip`-suffix asset, skip the auto-installer on that path, and surface the manual download + Docker fallback instructions instead. Matches what installInstructions() already shows for Windows. Skipped finding (none in this round — all three were valid). No new findings surfaced during fix. Validated: - `npx tsc --noEmit` — no new errors from changed files. - `npm run build` — clean. - `docker compose -f docker-compose.yml config` — interpolation resolves correctly with and without AGENTMEMORY_III_VERSION set.
|
Pushed
Skipped: none — all three were valid as written. Validation
PR head: |
Bug-fix patch focused on search recall correctness and plugin compatibility. Pins iii-engine to v0.11.2 because v0.11.6 introduces a new sandbox-everything-via-`iii worker add` model that agentmemory hasn't been refactored for yet — pin lifts once that refactor lands. Adds a hard guard against silent vector-index corruption, fixes BM25 indexing for memories saved via memory_save, and lands four Hermes plugin fixes. Per AGENTS.md release checklist: - package.json version 0.9.4 -> 0.9.5 - src/version.ts VERSION constant - src/types.ts ExportData version union - src/functions/export-import.ts supportedVersions Set - test/export-import.test.ts assertion - plugin/.claude-plugin/plugin.json version - CHANGELOG.md detailed entries with contributor shoutouts Headlines (full detail in CHANGELOG): Fixed: - BM25 search now indexes memories saved via memory_save (#258, #257) Thanks @Nizar-BenHamida for the precise repro. - Embedding providers no longer silently corrupt the vector index when an API returns wrong-dimension vectors (#248, #247, #256) Thanks @AmmarSaleh50 for issue + fix + tests. - Hermes handle_tool_call returns JSON strings, not raw dicts (#255, #254) Thanks @KyoMio for the Anthropic-protocol repro. - Hermes status reflects real service state on systemd installs (#253, #250) Thanks @OptionalCoin for tracing it to env-source divergence. - Hermes hooks accept passthrough kwargs (#252, #249) Thanks @OptionalCoin again for the log analysis. - agentmemory demo now seeds observations correctly (#251, #229) Thanks @seishonagon for root-cause analysis. - LLM compression / summarization timeouts increased (#213) Thanks @xuli500177. - Pi / OpenClaw / Hermes integration plugin fixes (#230) Thanks @deepmroot. Changed: - iii-engine pinned to v0.11.2 across every install path (#260). v0.11.6 introduces a new `iii worker add` sandbox model that agentmemory still pre-dates; pin lifts when we refactor agentmemory to register as a sandboxed worker. Override with AGENTMEMORY_III_VERSION=<version> for users who've migrated manually. - README documents iii worker add extension surface (#242). - README iii Console install/launch commands corrected (#243). Validated: 852/852 tests pass, npm run build clean.
Bug-fix patch focused on search recall correctness and plugin compatibility. Pins iii-engine to v0.11.2 because v0.11.6 introduces a new sandbox-everything-via-`iii worker add` model that agentmemory hasn't been refactored for yet — pin lifts once that refactor lands. Adds a hard guard against silent vector-index corruption, fixes BM25 indexing for memories saved via memory_save, and lands four Hermes plugin fixes. Per AGENTS.md release checklist: - package.json version 0.9.4 -> 0.9.5 - src/version.ts VERSION constant - src/types.ts ExportData version union - src/functions/export-import.ts supportedVersions Set - test/export-import.test.ts assertion - plugin/.claude-plugin/plugin.json version - CHANGELOG.md detailed entries with contributor shoutouts Headlines (full detail in CHANGELOG): Fixed: - BM25 search now indexes memories saved via memory_save (#258, #257) Thanks @Nizar-BenHamida for the precise repro. - Embedding providers no longer silently corrupt the vector index when an API returns wrong-dimension vectors (#248, #247, #256) Thanks @AmmarSaleh50 for issue + fix + tests. - Hermes handle_tool_call returns JSON strings, not raw dicts (#255, #254) Thanks @KyoMio for the Anthropic-protocol repro. - Hermes status reflects real service state on systemd installs (#253, #250) Thanks @OptionalCoin for tracing it to env-source divergence. - Hermes hooks accept passthrough kwargs (#252, #249) Thanks @OptionalCoin again for the log analysis. - agentmemory demo now seeds observations correctly (#251, #229) Thanks @seishonagon for root-cause analysis. - LLM compression / summarization timeouts increased (#213) Thanks @xuli500177. - Pi / OpenClaw / Hermes integration plugin fixes (#230) Thanks @deepmroot. Changed: - iii-engine pinned to v0.11.2 across every install path (#260). v0.11.6 introduces a new `iii worker add` sandbox model that agentmemory still pre-dates; pin lifts when we refactor agentmemory to register as a sandboxed worker. Override with AGENTMEMORY_III_VERSION=<version> for users who've migrated manually. - README documents iii worker add extension surface (#242). - README iii Console install/launch commands corrected (#243). Validated: 852/852 tests pass, npm run build clean.
Bug-fix patch focused on search recall correctness and plugin compatibility. Pins iii-engine to v0.11.2 because v0.11.6 introduces a new sandbox-everything-via-`iii worker add` model that agentmemory hasn't been refactored for yet — pin lifts once that refactor lands. Adds a hard guard against silent vector-index corruption, fixes BM25 indexing for memories saved via memory_save, and lands four Hermes plugin fixes. Per AGENTS.md release checklist: - package.json version 0.9.4 -> 0.9.5 - src/version.ts VERSION constant - src/types.ts ExportData version union - src/functions/export-import.ts supportedVersions Set - test/export-import.test.ts assertion - plugin/.claude-plugin/plugin.json version - CHANGELOG.md detailed entries with contributor shoutouts Headlines (full detail in CHANGELOG): Fixed: - BM25 search now indexes memories saved via memory_save (#258, #257) Thanks @Nizar-BenHamida for the precise repro. - Embedding providers no longer silently corrupt the vector index when an API returns wrong-dimension vectors (#248, #247, #256) Thanks @AmmarSaleh50 for issue + fix + tests. - Hermes handle_tool_call returns JSON strings, not raw dicts (#255, #254) Thanks @KyoMio for the Anthropic-protocol repro. - Hermes status reflects real service state on systemd installs (#253, #250) Thanks @OptionalCoin for tracing it to env-source divergence. - Hermes hooks accept passthrough kwargs (#252, #249) Thanks @OptionalCoin again for the log analysis. - agentmemory demo now seeds observations correctly (#251, #229) Thanks @seishonagon for root-cause analysis. - LLM compression / summarization timeouts increased (#213) Thanks @xuli500177. - Pi / OpenClaw / Hermes integration plugin fixes (#230) Thanks @deepmroot. Changed: - iii-engine pinned to v0.11.2 across every install path (#260). v0.11.6 introduces a new `iii worker add` sandbox model that agentmemory still pre-dates; pin lifts when we refactor agentmemory to register as a sandboxed worker. Override with AGENTMEMORY_III_VERSION=<version> for users who've migrated manually. - README documents iii worker add extension surface (#242). - README iii Console install/launch commands corrected (#243). Validated: 852/852 tests pass, npm run build clean.
Why
iii-enginev0.11.6 ships a regression where its internal cron/http trigger registrations fail the engine's own new validators at boot. Result for end users: every fresh agentmemory install pulls v0.11.6 (because all paths resolvelatest/main), and the worker drops into an EPIPE reconnect loop.memory_savereturns 200 with a memory ID, butmemory_smart_searchandmemory_recallalways return emptyReproducer (verified locally on macOS arm64 with iii v0.11.6):
Engine boot log:
The trigger UUIDs are stable across fresh state dirs — these are the engine's own internal registrations failing its own new validation, not anything agentmemory registers.
What changes
Until the engine fix lands upstream, every agentmemory install path now resolves to v0.11.2 (last known-good engine version):
src/cli.tsauto-installercurl install.iii.dev/iii/main/install.sh | sh(trackslatest)curl github.com/iii-hq/iii/releases/download/iii/v0.11.2/iii-<arch>.tar.gz | tar -xz -C ~/.local/binsrc/cli.tsDocker fallbackdocker pull iiidev/iii:latestdocker pull iiidev/iii:0.11.2src/cli.tsinstall instructionsreleases/latestreleases/tag/iii%2Fv0.11.2docker-compose.ymlimage: iiidev/iii:latestimage: iiidev/iii:0.11.2README.mdinstall sectionEscape hatch
Lets early adopters pull a newer engine when one ships, without us cutting another agentmemory release. Default stays pinned.
What's NOT in this PR
IIPINNED_VERSIONinsrc/cli.ts, the README, anddocker-compose.ymland ship a follow-up.Test plan
npx tsc --noEmit— no new errors from changed files).npm run build).iiidev/iii:latestorinstall.iii.dev/iii/main/install.sh.Follow-up
File against
iii-hq/iiifor the engine-internal trigger validation regression. Smoking gun: engine rejects its own cron triggers at UUIDs2e5afd82-...and00c616c5-...that are stable across fresh state — these are hardcoded in the engine, not user-registered. Worth flagging upstream so the fix lands and we can unpin.Summary by CodeRabbit
Documentation
New Features
Chores