Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .aiwg/reports/g-icm-01-interface-inventory.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"control_id": "G-ICM-01",
"project_id": "github.com/chronodeai/agentmemory",
"source_identity": {
"commit_sha": "880e07d2dceb496ce119d4fb67cb4b1c4b812d2e",
"commit_tree_sha": "002224455420499ddce943468311ab7d92629909",
"inventory_input_sha256": "c66469376e6ab299f2c760a6c0ea01c002a7fea1c458e9a86999d857231749e7"
"commit_sha": "78e11a0b67c66f9e848001a889fe02300360ec5c",
"commit_tree_sha": "dd211619484da34de4ba4958f0940ea8c2601cbb",
"inventory_input_sha256": "948e6690e0c490edefca5c834f6afb812e38b18ca38fdd56ff28ecd959e16979"
},
"public_route_allowlist": [
"GET /agentmemory/livez"
Expand Down
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,40 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

## [Unreleased]

## [0.9.30-chronode.1] — 2026-08-24

Upstream v0.9.29 sync wave, staged across five reviewed trains (#5–#9). Fork architecture of record unchanged: remote-derived canonical project identity, exclusive project scope, fail-closed governance, self-contained bundled hooks.

### Added

- DeepSeek Harness connector: `agentmemory connect dsh` writes a marker-idempotent MCP row into `$DSH_HOME/cordis.patch.yml` and an optional hooks bridge (`--with-hooks`) through the bundled Claude Code hook scripts.
- Two skills (15 → 17): `memory-discipline` reference and invocable `/lesson` correction distillation.
- Keyless knowledge graph: deterministic structural extraction always runs at session end (project-stamped nodes, provenance-carrying edges); the LLM pass stays behind `GRAPH_EXTRACTION_ENABLED` + provider + external-processing rules; strict sessions get local-only extraction with the skip reason surfaced instead of failing. Adds `mem::graph::import-graphify` and `POST /agentmemory/graph/import-graphify`.
- Write-time Origin provenance on observations and memories (channel user/agent/tool/import/shared, detail, capturedAt), stamped at capture/save/import and inherited through both compression paths; coexists with commit-provenance fields.
- Hybrid recall on the primary `mem::search` path (BM25 + vector + graph fusion, per-stream normalization, deterministic ordering); superseded versions leave the search indexes; lesson recall moves to an incrementally maintained BM25 index.
- Honest `memory_forget`: nonexistent ids report `{deleted: 0}` with no audit row; lessons gained a real soft-delete path (`memory_lesson_delete`, `POST /agentmemory/lessons/delete`).
- MCP protocol version negotiation in the standalone server — hosts requesting newer revisions no longer disconnect with `-32000`.
- Zero-touch capability provisioning: `connect` generates `~/.agentmemory/project-capability-secret` (0600) when absent; fresh installs no longer lose capture silently under strict-capability mode.
- Unified data-dir resolution: `--data-dir` flag > `AGENTMEMORY_DATA_DIR` > `~/.agentmemory`; legacy cwd `./data` stores are warned about, never silently adopted.
- Env hydration: `~/.agentmemory/.env` applies everywhere at boot, fill-missing-only; real environment always wins.
- Consolidation and crystallization run on session stop behind a serialized cooldown (`AGENTMEMORY_CONSOLIDATION_COOLDOWN_MS`), integrated with background-pipeline stage-resume so completed stages never re-run.

### Changed

- Provider fetches retry 429/503 honoring `Retry-After` under a total budget below the iii invocation timeout.
- `memory_export` / `memory_audit` join the exclusive-scope model: project required unless `scope:"global"` behind admin auth.
- Unnormalizable git remotes fall back to `local/<sha256(canonpath)[:24]>` identity with a warning instead of throwing inside every hook.
- Stale-session sweep throttled (`AGENTMEMORY_STALE_SESSION_SWEEP_MS`, default 60s); background-pipeline failed-run tracking capped.
- README leads with the npx engine install; pipe-to-shell option removed.

### Fixed

- Claude Code bridge MEMORY.md path restored under `memory/` (upstream #1134).

### Host adapters not carried

Upstream's new Cursor, Devin, Droid, and Antigravity adapters are intentionally not ported — unused here; they remain additive upstream for future adoption if needed.

### Added

- Added structured commit provenance (`baseHeadSha`, `worktreeId`, and file transitions) across automatic capture, REST, and MCP commit-link paths, with project health reporting rich-provenance coverage separately from basic SHA linkage.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@agentmemory/agentmemory",
"version": "0.9.28-chronode.12",
"version": "0.9.30-chronode.1",
"description": "Persistent memory for AI coding agents, powered by iii-engine's three primitives",
"type": "module",
"main": "dist/index.mjs",
Expand Down
4 changes: 2 additions & 2 deletions packages/mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@agentmemory/mcp",
"version": "0.9.28-chronode.12",
"version": "0.9.30-chronode.1",
"description": "Standalone MCP server for agentmemory — thin shim that re-exposes @agentmemory/agentmemory's MCP entrypoint",
"type": "module",
"bin": {
Expand Down Expand Up @@ -28,7 +28,7 @@
"homepage": "https://github.com/rohitg00/agentmemory#readme",
"bugs": "https://github.com/rohitg00/agentmemory/issues",
"dependencies": {
"@agentmemory/agentmemory": "0.9.28-chronode.12"
"@agentmemory/agentmemory": "0.9.30-chronode.1"
},
"publishConfig": {
"access": "public",
Expand Down
2 changes: 1 addition & 1 deletion plugin/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agentmemory",
"version": "0.9.28-chronode.12",
"version": "0.9.30-chronode.1",
"description": "Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks, 60 MCP tools, 17 skills, real-time viewer.",
"author": {
"name": "Rohit Ghumare",
Expand Down
2 changes: 1 addition & 1 deletion plugin/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agentmemory",
"version": "0.9.28-chronode.12",
"version": "0.9.30-chronode.1",
"description": "Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 11 hooks, 60 MCP tools, 17 skills, real-time viewer.",
"author": {
"name": "Rohit Ghumare",
Expand Down
2 changes: 1 addition & 1 deletion plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agentmemory",
"version": "0.9.28-chronode.12",
"version": "0.9.30-chronode.1",
"description": "Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks, 60 MCP tools, 17 skills, real-time viewer.",
"author": {
"name": "Rohit Ghumare",
Expand Down
2 changes: 1 addition & 1 deletion plugin/scripts/standalone.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1761,7 +1761,7 @@ function getAllTools() {
}
//#endregion
//#region src/version.ts
const VERSION = "0.9.28-chronode.12";
const VERSION = "0.9.30-chronode.1";
process.env["AGENTMEMORY_BUILD_ID"];
process.env["AGENTMEMORY_VIEWER_BUILD_ID"];
//#endregion
Expand Down
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const VERSION = "0.9.28-chronode.12";
export const VERSION = "0.9.30-chronode.1";
export const EXPORT_FORMAT_VERSION = "0.9.28" as const;
export const API_CONTRACT_VERSION = 1;
export const BACKEND_BUILD_ID =
Expand Down
Loading