First boot after upgrading to v0.9.25 threw
'TypeError: Cannot read properties of undefined (reading v)' from
IndexPersistence.loadManifestData. Some iii-state adapters return
undefined (not null) for a missing key. The load path checked
manifest.value !== null and forwarded undefined to loadManifestData,
which then read undefined.v.
Self-healing: the next debounced save rebuilt a fresh manifest, so
operation continued after the warning — but the error scared every
fresh upgrader.
Fix: treat null + undefined + non-object values as 'no manifest' and
fall through to the legacy load path. Two regression tests:
- kv.get returning undefined surfaces as a clean { bm25: null,
vector: null } load, no throw.
- kv.get returning a string (wrong shape) does not crash the
manifest path.
Files bumped (9):
package.json, plugin/.claude-plugin/plugin.json, plugin/plugin.json,
plugin/.codex-plugin/plugin.json, src/version.ts, src/types.ts,
src/functions/export-import.ts, test/export-import.test.ts,
packages/mcp/package.json
125 test files / 1381 tests pass.
Closes#797.
Two bugs surfaced in the first hour after v0.9.23 hit npm:
1. `agentmemory --version` silently launched the server instead of
printing the version. `-v` was reserved by --verbose and no
--version literal was handled — fell through to default `start`.
Now --version (and -V capital, POSIX) prints VERSION + exits 0
before any side effects.
2. iii-engine version pin was warn-only. When the engine on PATH
didn't match agentmemory's pinned v0.11.2, the worker still booted
against the mismatched engine and crashed at runtime with
state::list not found (v0.13.0) or sandbox traps (v0.11.6).
warnIfEngineVersionMismatch renamed to enforceEngineVersionPin
and now p.log.errors + process.exit(1). AGENTMEMORY_III_VERSION
override unchanged.
* chore(release): v0.9.23
Bumps version across 9 files + adds CHANGELOG entry summarizing the
18 commits since v0.9.22.
Highlights:
- GitHub Copilot CLI first-class support (#534) — plugin + hooks +
MCP with LSP-style Content-Length framing on the standalone stdio
transport.
- Five new MCP adapters: Warp, Cline, Continue, Zed, Droid (#677);
ADAPTERS count 11 → 17.
- Three silent DX bugs fixed: graph extraction never fired on
session end (#666 / #698), status reported zero memories (#666),
consolidation defaulted off even with an LLM provider configured
(#612 / #696).
- Nine telemetry hooks switched to fire-and-forget so they don't
block Claude Code's next-prompt boundary (#573 / #688).
- Hook project field now sends repo basename instead of full
filesystem path so auto-injected context isn't silently filtered
out (#474 / #687).
- Local-LLM docs: Ollama / LM Studio / vLLM section added (#671 /
#697).
Version-bump files: package.json, plugin/.claude-plugin/plugin.json,
plugin/plugin.json, plugin/.codex-plugin/plugin.json,
packages/mcp/package.json, src/version.ts, src/types.ts,
src/functions/export-import.ts, test/export-import.test.ts.
* chore(release): add #701 + #709 to v0.9.23 CHANGELOG
* feat: add Copilot CLI plugin asset slice
- plugin/.plugin/plugin.json: Copilot manifest with name/version/skills/mcpServers/hooks refs
- plugin/.mcp.copilot.json: MCP server config with type:local, npx, env passthrough, tools:[*]
- plugin/hooks/hooks.copilot.json: Copilot hooks (version:1) with 11 supported events and PreToolUse matcher
- test/copilot-plugin.test.ts: 11 tests covering manifest, MCP config, and hooks validation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Copilot CLI connect support
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add GitHub Copilot CLI support
Adds Copilot CLI support through a root plugin manifest, Copilot-specific MCP and hook configuration, and a connect adapter for MCP-only setup.
Includes Windows-safe Copilot MCP command generation, COPILOT_HOME handling, Copilot hook payload normalization, generated hook scripts, and targeted tests for plugin shape, hook execution, and connect behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Harden Copilot hook handling
Addresses upstream AI review suggestions by aligning the Copilot preToolUse matcher with the hook allowlist, narrowing hook payload fields at runtime, normalizing subagent fallbacks, and tightening hook config validation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Copilot to first-run onboarding
Includes GitHub Copilot CLI in the first-run agent picker and adds a regression test so the Copilot setup path remains discoverable.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Default onboarding to Copilot inside Copilot CLI
Detect Copilot CLI environment markers during first-run setup so pressing Enter wires the current agent instead of the historical Claude Code default.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Support framed stdio MCP transport
Accept Content-Length framed JSON-RPC messages in addition to the existing newline-delimited transport so Copilot CLI can initialize the standalone MCP server.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Narrow Copilot pre-tool session ids
Ensures pre-tool-use only forwards string session IDs and falls back to unknown for invalid Copilot payload values, with regression coverage for the generated plugin script.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Ross Story <rostory@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rohit Ghumare <ghumare64@gmail.com>