Commit Graph

485 Commits

Author SHA1 Message Date
Rohit Ghumare 699549ddea Merge pull request #106 from rohitg00/docs/readme-polish
docs: README polish — badges, cost table, architecture diagram
2026-04-09 13:08:29 +01:00
Rohit Ghumare 6fd22d3b1d fix: remove emdashes and AI-sloppy phrasing from README 2026-04-09 13:08:05 +01:00
Rohit Ghumare e602f6e58a docs: README polish — badges, cost table, flow diagram, methodology note
- Add npm version, CI status, license, and stars badges
- Add stats table below intro (95.2% R@5, 92% fewer tokens, 43 tools, 12 hooks, 0 deps)
- Add cost comparison table ($500/yr extraction-based vs $10/yr agentmemory vs $0 local)
- Add memory flow diagram (observe → compress → index → inject)
- Add methodology transparency note on benchmark section
- Update nav links (add Benchmarks, shorten labels)
2026-04-09 13:05:55 +01:00
Rohit Ghumare 15250b3bed docs: move Quick Start to top of README, right after intro 2026-04-09 11:26:40 +01:00
Rohit Ghumare 8a32a4b50a docs: gstack-style Quick Start — paste one block, agent does the rest
Replace numbered steps with a single copy-pasteable instruction block
for Claude Code. The agent reads it and handles: engine startup, plugin
install, hook registration, and verification.

Other agents consolidated into a clean table (Cursor, Gemini CLI,
OpenCode, Claude Desktop, SkillKit, REST API) with inline config.
2026-04-09 11:22:16 +01:00
Rohit Ghumare 798700f2a3 chore: bump version to 0.8.0 v0.8.0 2026-04-09 09:07:57 +01:00
Rohit Ghumare 6894843a92 docs: add MiniMax provider, ANTHROPIC_BASE_URL, search project filter
- LLM Providers table: add MiniMax, note ANTHROPIC_BASE_URL support
- Env vars: add MINIMAX_API_KEY, MINIMAX_MODEL, ANTHROPIC_BASE_URL
- Search endpoint: note optional project/cwd filters
- Fallback chain example: include minimax
2026-04-09 09:06:56 +01:00
Rohit Ghumare cdb06bb5a5 Merge pull request #103 from Garygaoxiang/feat/minimax-provider-and-anthropic-base-url
feat: add MiniMax provider and fix ANTHROPIC_BASE_URL not passed to SDK
2026-04-09 09:04:39 +01:00
Rohit Ghumare 7d644491d1 Merge pull request #105 from Getty/feat/search-project-filter
feat(search): add optional project/cwd filter to mem::search and /agentmemory/search
2026-04-09 09:04:37 +01:00
Rohit Ghumare 6614d0c9d7 Merge pull request #102 from rohitg00/feat/dx-improvements
feat: DX improvements — dark mode, status command, memory previews
2026-04-09 08:58:54 +01:00
Rohit Ghumare 4c1184b185 fix: address review findings on DX improvements
- README: add `text` language tag to fenced code blocks (MD040)
- cli.ts: sessions endpoint returns {sessions: [...]}, not a raw array
- viewer: token budget from URL param instead of hardcoded 2000
- viewer: applyTheme takes persist param, auto-detection doesn't save to
  localStorage (prevents OS preference from being overridden on first load)
2026-04-09 08:53:40 +01:00
Torsten Raudssus d145b0e3ab perf(search): load observations in parallel after session filter
Address CodeRabbit nitpick on #105: split the result-building loop into
two phases. First filter sequentially (benefits from the per-call
session cache), then batch the kv.get(observations) calls through
Promise.all instead of awaiting them one at a time.
2026-04-09 05:17:32 +02:00
Torsten Raudssus 26fea3a675 fix(search): validate inputs and avoid logging raw paths
Address CodeRabbit review on #105:

- mem::search now validates query (non-empty string), limit
  (positive integer, capped at MAX_LIMIT=100), project and cwd
  (must be strings if provided). Throws on invalid input instead
  of silently coercing.
- Renamed local 'limit' to 'effectiveLimit' to avoid shadowing.
- ctx.logger no longer emits raw cwd/project (host paths) — logs
  only hasProjectFilter/hasCwdFilter booleans.
- api::search whitelists request body fields, returns 400 on
  malformed input, and constructs an explicit payload for
  sdk.trigger instead of forwarding req.body.
2026-04-09 05:01:56 +02:00
Torsten Raudssus a732ad1e23 feat(search): add optional project/cwd filter to mem::search and /agentmemory/search
Closes #104

The /agentmemory/search HTTP endpoint and the underlying mem::search
function previously accepted only { query, limit }, returning hits
across all projects on the host. Sessions are already created with
{ project, cwd } via session::start, so this just exposes that scope
on search.

- mem::search now accepts optional project and cwd. When set, results
  are filtered by looking up each hit's owning Session.
- To keep the post-filter from starving the result set, the index
  fetch is over-fetched (max(limit*10, 100)) when filtering, then
  trimmed to limit after filter.
- Session lookups are cached per call.
- api::search forwards the new params; fully backward compatible.
2026-04-09 04:29:46 +02:00
翔 高 ab0901f25d feat: add MiniMax provider and fix ANTHROPIC_BASE_URL not passed to SDK
- Add `MinimaxProvider` (`src/providers/minimax.ts`) that calls MiniMax's
  Anthropic-compatible API via raw `fetch` instead of the Anthropic SDK.
  The SDK auto-injects `x-stainless-*` headers that MiniMax rejects with 403;
  using `fetch` directly avoids this entirely.

- Fix `AnthropicProvider` constructor to accept an optional `baseURL` and
  forward it to `new Anthropic({ apiKey, baseURL })`.  Previously the provider
  always connected to `api.anthropic.com` even when `ANTHROPIC_BASE_URL` was
  set in `.env`, because `getMergedEnv()` returns a plain JS object that the
  Anthropic SDK never sees.

- `detectProvider()` in `config.ts`:
  - Checks `MINIMAX_API_KEY` first and returns `provider: "minimax"`.
  - Propagates `ANTHROPIC_BASE_URL` as `baseURL` in the Anthropic config.

- Update `ProviderConfig` in `types.ts` to include optional `baseURL` field.
- Update `ProviderType` union to include `"minimax"`.
- Update `VALID_PROVIDERS` set in `config.ts` to include `"minimax"`.
2026-04-09 09:11:03 +08:00
Rohit Ghumare 75a2d35ed6 feat: DX improvements — dark mode, status command, memory previews, token savings
Viewer:
- Dark mode toggle (persists to localStorage, respects prefers-color-scheme)
- Fix hardcoded canvas colors for dark theme (grid, labels, tooltips)
- Memory search shows 2-line content preview with search term highlighting
- Concept tags shown inline on memory cards (max 4)
- Token Savings stat card on dashboard (estimates savings vs full context)

CLI:
- New `agentmemory status` command — shows connection, health, sessions,
  graph stats, viewer URL without opening browser

README:
- SkillKit universal install: `npx skillkit install agentmemory` (32+ agents)
- "First Steps After Install" section with worked Session 1 → Session 2 example
- Shows actual compressed observation format and context injection
- "How to verify" checklist
2026-04-09 00:18:27 +01:00
Rohit Ghumare 8c1890e64e revert: keep original banner.png, remove banner.svg 2026-04-08 17:57:50 +01:00
Rohit Ghumare 0e4a57570e assets: add SVG logo, icon, and banner
- logo.svg: full logo mark with memory tiers + retrieval spark
- icon.svg: compact 64x64 app icon variant
- banner.svg: README banner with tagline, stats, supported agents
- README: switch from banner.png to banner.svg

Design: 4 memory tiers (cold→hot) with orange accent (#FF6B35),
retrieval lines converging to a spark node, fading dots for decay.
2026-04-08 13:13:17 +01:00
Rohit Ghumare 29cbaa7624 chore: bump version to 0.7.9 v0.7.9 2026-04-08 10:52:30 +01:00
Rohit Ghumare e6366e5c03 fix: skills path ./skills/ instead of ../skills/ (#94)
Claude Code resolves skill paths relative to the plugin root (the
directory containing .claude-plugin/), not relative to plugin.json.
2026-04-08 10:51:56 +01:00
Rohit Ghumare 4ce4003a10 docs: lead with outcomes, not architecture
Rewrite README opening to focus on what the user gets ("your agent
remembers everything, no more re-explaining") instead of internal
architecture ("triple-stream retrieval, 4-tier consolidation").
2026-04-08 10:35:31 +01:00
Rohit Ghumare 185a784ba7 Merge pull request #101 from Tanmay-008/ui/graph-viewer
Thanks @Tanmay-008! Nice UI improvements to the graph viewer.
2026-04-08 10:29:51 +01:00
Rohit Ghumare 805620aca1 chore: bump version to 0.7.8 v0.7.8 2026-04-08 10:28:11 +01:00
Rohit Ghumare 740c7b90a1 fix: plugin hooks and skills validation errors (#100)
- hooks.json: wrap each hook in { hooks: [{ type, command }] } format
  (Claude Code expects nested hooks array, not flat type/command)
- plugin.json: change skills from explicit file paths to directory
  reference ["../skills/"] matching working plugin convention
2026-04-08 10:27:25 +01:00
Rohit Ghumare 61d0c43798 docs: update agent references — Gemini CLI, OpenCode, Cursor over Windsurf
Replace Windsurf with Gemini CLI and OpenCode in Quick Start, Supported
Agents, and MCP sections. Add concrete setup commands for each agent.
2026-04-08 10:25:07 +01:00
Rohit Ghumare 57b0eeebfa docs: update README with LongMemEval results and fix inconsistencies
- Lead with 95.2% R@5 on LongMemEval-S (ICLR 2025) instead of old 64% internal number
- Add LongMemEval benchmark table to README benchmarks section
- Fix Quick Start: reorder to start→connect→verify, add MCP configs for
  Cursor/Windsurf/Claude Desktop/REST API (not just Claude Code plugin)
- Fix version in health example (0.7.4 → 0.7.7)
- Fix test count (627 → 646)
- Fix source file count (113 → 118)
- Fix LOC count (~20,000 → ~21,800)
- Fix function count (89 → 123 mem:: functions)
- Fix MCP tools table header (38 → 43)
- Fix MCP tools reference in chooser table (41 → 43)
- Cross-reference LongMemEval from QUALITY.md
2026-04-08 10:24:24 +01:00
Rohit Ghumare 565c2388a2 bench: add LongMemEval-S benchmark (95.2% R@5 hybrid, 86.2% BM25) (#91)
Run agentmemory on LongMemEval-S (ICLR 2025, 500 questions) using the
same dataset and metric (recall_any@5) as MemPalace for direct comparison.

Results:
- BM25+Vector hybrid: 95.2% R@5, 98.6% R@10, 87.9% NDCG@10
- BM25-only: 86.2% R@5, 94.6% R@10, 73.0% NDCG@10
- MemPalace raw vector: 96.6% R@5 (1.4pp gap, same embedding model)

Clearly labels these as retrieval recall, not end-to-end QA accuracy.
2026-04-08 10:17:28 +01:00
tanmaishi 3652276448 ui(viewer): update graph interface with grid, zoom, and glow effects 2026-04-08 13:36:42 +05:30
Rohit Ghumare 8704131745 chore: bump version to 0.7.7 v0.7.7 2026-04-07 19:56:12 +01:00
Rohit Ghumare fbded55b29 fix: plugin.json validation errors (#94)
- author: change from string to object {name, url}
- hooks: remove field (auto-loaded by convention from hooks/hooks.json)
- skills: change from directory string to explicit file path array
v0.7.6
2026-04-07 19:54:13 +01:00
Rohit Ghumare b81682da8b chore: bump version to 0.7.6 2026-04-07 19:43:17 +01:00
Rohit Ghumare 69bb787629 feat: cross-encoder reranking, working memory, skill extraction (#93)
* feat: cross-encoder reranking, working memory, skill extraction (#90, #58, #57)

- reranker.ts: opt-in cross-encoder rerank after hybrid search via
  RERANK_ENABLED=true, uses @xenova/transformers MiniLM-L-6-v2,
  graceful fallback when unavailable
- working-memory.ts: core memory (pinned facts always in context) +
  auto-paging of archival memories by importance/recency/access score,
  5 new functions (core-add, core-remove, core-list, working-context,
  auto-page)
- skill-extract.ts: auto-generate reusable procedural skills from
  completed sessions via LLM, with reinforcement on re-extraction,
  skill-match for querying relevant skills (3 new functions)
- ProceduralMemory type extended with expectedOutcome, tags, concepts,
  sourceObservationIds
- 19 new tests, 646 total passing

Closes #90, closes #58, closes #57

* fix: add 0.8.0 to supported import versions, bump plugin.json

* fix: address CodeRabbit review — audit, fingerprint, guards, archive

- skill-extract: reject non-completed sessions, fingerprint full
  procedure (title+trigger+steps) not just title, audit reinforcement
- working-memory: add recordAudit for core-add/core-remove/auto-page,
  auto-page now archives to KV.memories instead of deleting
- reranker: cache pipelineUnavailable to avoid repeated import retries
- hybrid-search: rerank over larger pool (max(limit,20)) then slice
- types: add skill_extract/core_add/core_remove/auto_page to AuditEntry

* fix: address remaining CodeRabbit review findings

- Parse RERANK_ENABLED with === "true" instead of truthy coercion
- Remove unused project param from mem::skill-list
- Remove unused sessionId/project/query params from mem::working-context
- Use generateId("mem") for archived core entries to avoid ID collision

* fix: address CodeRabbit round-2 findings

- Make skill reinforcement idempotent (skip if sessionId already present)
- Parallelize summary + observations fetch in skill-extract
- Use continue instead of break for oversized unpinned core entries
- Buffer access-counter writes with Promise.allSettled (non-blocking)
- Decouple rerank window (fixed 20) from retrieval depth
2026-04-07 19:42:07 +01:00
Tanmay Shirbhayye 57bf5f136c fix: update graph viewer env variable instruction (#97)
* fix: update graph viewer env variable instruction

* Delete pnpm-lock.yaml

---------

Co-authored-by: tanmaishi <tanmays@>
2026-04-07 18:44:50 +01:00
Rohit Ghumare ea2eddce83 chore: bump version to 0.7.5 v0.7.5 2026-04-07 16:27:50 +01:00
Rohit Ghumare 9d607c1c37 fix: resolve 6 installation bugs breaking fresh setup (#95)
- Update zod from ^3.23.0 to ^4.0.0 (claude-agent-sdk peer dep conflict)
- Mount iii-config.yaml in docker-compose.yml (missing /app/config.yaml)
- Change host binding from 127.0.0.1 to 0.0.0.0 for Docker compatibility
- Switch npm start from index.mjs to cli.mjs (auto-starts iii-engine)
- Fix CLI health check to detect engine via any HTTP response, not just worker route
- Handle EADDRINUSE on viewer port gracefully instead of crashing
- Fix README step numbering and version in health example
2026-04-07 16:25:28 +01:00
Rohit Ghumare 1fa0dcefab chore: bump version to 0.7.4 v0.7.4 2026-04-06 16:18:04 +01:00
Rohit Ghumare 9c27eff610 feat: implement reflect — auto-synthesize insights from memory clusters (#89)
Adds mem::reflect: traverses knowledge graph, groups related memories
by concept clusters, synthesizes higher-order insights via LLM.

New files:
- src/prompts/reflect.ts — LLM prompt for insight synthesis
- src/functions/reflect.ts — 4 functions: reflect, insight-list,
  insight-search, insight-decay-sweep
- test/reflect.test.ts — 13 tests

New type: Insight (confidence-scored, fingerprint-deduped, decayable)
New KV scope: mem:insights
New MCP tools: memory_reflect, memory_insight_list (in ESSENTIAL set)
New REST: POST /reflect, GET /insights, POST /insights/search
Hooks into consolidation pipeline as "reflect" tier after semantic

Review fixes applied:
- Fixed project filter no-op (was discarding filter result)
- Fixed BFS depth tracking (standard level-count pattern)
- Added attribute-order constraint to LLM prompt
- Whitelisted fields in api::insight-search (no raw body passthrough)
- Fixed Jaccard fallback to compare document-id sets not concept strings

43 MCP tools, 103 REST endpoints, 627 tests passing
2026-04-06 16:08:34 +01:00
Rohit Ghumare 034869b42c chore: bump version to 0.7.3 v0.7.3 2026-04-06 15:38:10 +01:00
Rohit Ghumare b597e639bd feat: viewer Actions + Crystals tabs (#88)
Actions tab:
- List view with status badges, priority, tags
- Status filter dropdown (pending/active/done/blocked/cancelled)
- Search across title, description, tags
- Frontier actions highlighted with lightning bolt
- Parallel fetch of actions + frontier data

Crystals tab:
- Card layout with narrative, key outcomes, lessons
- Files affected and source action IDs
- Reuses dashboard crystals data to avoid duplicate fetch
- Search across narrative, outcomes, lessons

Review fixes applied:
- Declared frontier: [] in state init
- Sort on copy (items.slice().sort) not in-place
- Escaped tags with .map(esc)
- Guarded c.keyOutcomes/c.lessons/c.narrative with || [] in search
- Reuse dashboard crystals to avoid duplicate API call

614 tests passing
2026-04-06 13:28:07 +01:00
Rohit Ghumare 5510e94e39 fix: simplify review — temporal-graph name, test precision, stale counts
- Fix README: temporal-graph → temporal-graph-extract + temporal-query
- Fix test precision: toBeCloseTo(0.55, 1) → precision 2 (±0.005)
- Fix stale test counts: 581 → 614 across README and AGENTS.md
- Add obsidian export error-path test (errors undefined on success)

614 tests passing
2026-04-06 13:17:48 +01:00
Rohit Ghumare 1717083bff docs: complete function table — 89 functions organized by category
Fixes #92

Replaced flat 57-row table with categorized table covering all 89
mem:: functions. Organized into 22 categories: Core Memory, Search,
Memory Evolution, Knowledge Graph, Actions, Leases, Routines, Signals,
Checkpoints, Mesh, Sentinels, Sketches, Crystals, Lessons, Facets,
Diagnostics, Flow, Branch, Team, Governance, Snapshots, Export.
2026-04-06 12:41:50 +01:00
Rohit Ghumare 45eb99d656 fix: CrystallizableAction type, npm package size, add lesson + obsidian tests
Fixes #84: Change CrystallizableAction to Action in crystallize.ts:157
Fixes #85: Add "files" field to package.json (40MB → 11.6MB)
Fixes #86: Add 22 tests for all 5 lesson functions
Fixes #87: Add 10 tests for obsidian-export

613 tests passing (was 581)
2026-04-06 12:20:20 +01:00
Rohit Ghumare 031eff7322 chore: bump version to 0.7.2 across all files v0.7.2 2026-04-05 11:32:15 +01:00
Rohit Ghumare e26320e3aa feat: auto-install iii-engine, clack CLI, viewer lessons tab, README update
CLI (src/cli.ts):
- Auto-install iii-engine via curl | sh with interactive clack/prompts
- Edge cases: Windows (manual install note), curl missing, PATH fallback
- Error shows all install methods: curl | sh, cargo install, Docker
- Spinner feedback for install, engine start, readiness check

Viewer (src/viewer/index.html):
- Version v0.5.0 → v0.7.0
- Added Lessons tab with search, confidence gauges, source badges
- Added Lessons + Crystals stat cards to dashboard
- Dashboard fetches lessons and crystals data

README:
- Quick start is now single command: npx @agentmemory/agentmemory
- Prerequisites: iii-engine via curl | sh (not npm)
- Updated all stale counts and version references

AGENTS.md: test count 573 → 581

581 tests passing, all builds clean
2026-04-05 11:28:49 +01:00
Rohit Ghumare ed6f1d64d5 docs: update README for v0.7.0 — npm install, lessons, obsidian, correct counts
- Add `npm install -g @agentmemory/agentmemory` as primary install method
- Add npx agentmemory to Quick Start
- Fix stale counts: 38→41 tools, 93→100 endpoints, 573→581 tests,
  105→113 source files, 16K→20K LOC, 33→34 KV scopes, 52→57 functions
- Fix version in health example: 0.6.1→0.7.1
- Add v0.7.0 functions to table: lesson-save/recall/list/strengthen/decay-sweep, obsidian-export
- Add mem:lessons to KV scopes table
- Add 5 new REST endpoints to API table
- Add v0.7.0 env vars: LESSON_DECAY_ENABLED, OBSIDIAN_AUTO_EXPORT, AGENTMEMORY_TOOLS
- Update CONSOLIDATION_ENABLED example to true (opt-in)
- Update Node.js requirement to >=20
- Update export format reference to include v0.7.0 + lessons
2026-04-05 01:10:18 +01:00
Rohit Ghumare d3477c4592 fix: add repository.url for npm provenance verification v0.7.1 2026-04-05 01:02:22 +01:00
Rohit Ghumare 241504e5e0 fix: scope npm package as @agentmemory/agentmemory (#83)
npm rejected unscoped 'agentmemory' as too similar to existing
'agent-memory'. Publishing under the @agentmemory org scope.
2026-04-04 18:33:02 +01:00
Rohit Ghumare e8f410b537 feat: v0.7.0 — lessons, tool visibility, auto-consolidation, obsidian export, npx bootstrap (#82)
* feat: v0.7.0 — lessons, tool visibility, auto-consolidation, obsidian export, npx bootstrap

Five DX improvements based on competitive research against Mem0, Engram, CodeMem:

1. `npx agentmemory` zero-config startup
   - New CLI bootstrap (src/cli.ts) auto-detects and starts iii-engine
   - Tries `iii` binary first, falls back to `docker compose up -d`
   - Bundles iii-config.yaml and docker-compose.yml in dist/

2. Simplified MCP tool surface (7 core tools by default)
   - AGENTMEMORY_TOOLS=all unlocks all 49 tools
   - Default: save, recall, consolidate, forget, sessions, diagnose, lesson_save
   - Call handler remains unfiltered — any tool callable by name

3. Auto-consolidation on session end
   - CONSOLIDATION_ENABLED defaults to true (was false)
   - Session-end hook: session/end → crystallize → consolidate → bridge sync
   - Consolidation pipeline always registered (timer gated by config)

4. First-class lesson memory type with confidence decay
   - Lesson interface: confidence (0-1), reinforcements, decayRate, source
   - 5 functions: lesson-save, lesson-recall, lesson-list, lesson-strengthen, lesson-decay-sweep
   - Dedup via SHA-256 fingerprint — duplicate saves strengthen existing
   - Crystal lessons auto-flow into lesson system at confidence 0.6
   - Daily decay sweep with parallel KV writes

5. Obsidian-compatible Markdown export
   - Export to ~/.agentmemory/vault/ with YAML frontmatter + wikilinks
   - MOC.md (Map of Content) index file
   - Parallel KV reads, auto-export via OBSIDIAN_AUTO_EXPORT=true

Stats: 49 MCP tools, 99 REST endpoints, 573 tests passing

* docs: add AGENTS.md, fix tool/endpoint counts across README, plugin, cli

- Create AGENTS.md with strict consistency rules for MCP tools, REST
  endpoints, versions, KV scopes, and audit operations
- Fix MCP tool count: 38 → 41 across README.md (4 occurrences)
- Fix REST endpoint count: 93/95 → 99 across README.md and index.ts
- Fix plugin.json: version 0.6.1 → 0.7.0, tool count 5 → 41
- Fix cli.ts help text: 48+ → 41 MCP tools
- Fix README api.ts path reference → triggers/api.ts

* fix: address code review findings — consolidation guard, decay bug, async fs, export-import lessons

Inline fixes:
- Revert CONSOLIDATION_ENABLED to opt-in (=== "true"), matching original behavior
- Add early-exit guard in consolidation-pipeline handler when disabled
- Gate session-end crystallize+consolidation calls on CONSOLIDATION_ENABLED
- Fix lesson decay over-decay bug: add lastDecayedAt to Lesson, compute
  incremental delta instead of reapplying full age every sweep run
- Add LESSON_DECAY_ENABLED flag (default true) to gate the sweep timer

Outside diff fixes:
- Add lessons to export-import (export + import + replace cleanup)
- Log warning instead of swallowing obsidian auto-export errors

Nitpick fixes:
- Switch obsidian-export to async fs/promises (mkdir, writeFile)
- Add per-item try/catch in obsidian-export, return errors array
- Replace governance_delete with smart_search in ESSENTIAL_TOOLS (non-destructive default)
- Fix CLI whichBinary for Windows (uses "where" on win32)
- Use dynamic port in CLI error message instead of hardcoded 3111
- Return 201 for newly created lessons, 200 for strengthened
- Wrap lesson audit calls in try/catch so audit failure doesn't surface
- Fix build script to not swallow tsdown failure
- Remove exact tool count from test, use >=41 + uniqueness + required names
- Add test/consistency.test.ts: validates version, tool count, README consistency
- Add isConsolidationEnabled mock to consolidation-pipeline test

579 tests passing (573 original + 6 new consistency checks)

* fix: guard remaining audit calls, correct endpoint count, add CI + npm publish

Review fixes:
- Wrap lesson_recall and lesson_strengthen audit calls in try/catch
- Fix REST endpoint count: 99 → 100 (verified via grep) across index.ts,
  README.md, and AGENTS.md
- Use regex in consistency test for README assertions (flexible phrasing)
- Add consolidation gate tests: disabled returns early, force=true bypasses

CI/CD:
- Add .github/workflows/ci.yml — test on Node 18/20/22
- Add .github/workflows/publish.yml — auto-publish to npm on GitHub release
  (uses NPM_TOKEN secret + provenance)

Nitpick:
- Single-char term filter (t.length > 1) kept intentionally — prevents noise
  from single-letter matches; documented in AGENTS.md if needed

581 tests passing

* fix(ci): add --legacy-peer-deps for zod v3/v4 peer conflict

@anthropic-ai/claude-agent-sdk@0.2.56 requires zod@^4.0.0 as a peer
dependency but the project uses zod@^3.23.0. The lock file resolves
this locally but npm ci is strict about peer deps in CI.

* fix(ci): drop Node 18 from matrix — tsdown requires Node 20+

tsdown/rolldown uses node:util.styleText which is only available in
Node 20.12+. Updated engines field to >=20.0.0 to match.

* fix(ci): add inlineOnly: false to tsdown config, target node20

tsdown errors on CI with "Consider adding inlineOnly option" when
dependencies are bundled. Setting inlineOnly: false suppresses this.
Also updated target from node18 to node20 to match engines field.
v0.7.0
2026-04-04 17:57:01 +01:00
Rohit Ghumare fa608ed29e fix: add missing name/owner fields to marketplace.json (#75) (#81)
marketplace.json was missing required top-level name and owner fields,
and plugins[].source was incorrectly named path. Fixes plugin install
validation error in Claude Code.
2026-03-27 16:29:12 +00:00
Rohit Ghumare e5f42c4d01 docs: update README for v0.6.1 — punchy intro, updated stats (#80)
- Add two-paragraph technical pitch above the fold with 3-line quick start
- Update tool count 37→38 (memory_verify), function count 50→52, test count 573
- Add memory_verify to MCP tools table, mem::verify and mem::cascade-update to functions table
- Add citation provenance and cascading staleness to capabilities table
- Add cross-agent sync and memory trust to comparison table
- Update API endpoint count 93→95, version 0.6.0→0.6.1
2026-03-25 21:21:01 +00:00