Commit Graph
7 Commits
Author SHA1 Message Date
Deshraj YadavandClaude Fable 5 a07756f6d7 fix(mem0-agent): accept --session-id after the subcommand
The generated manifest writes 'mem0-agent context --session-id $CLAUDE_SESSION_ID',
but the flag was only on the top-level parser, so argparse rejected it and every
SessionStart hook exited 2 -- the plugin would install and silently do nothing.

Both orders now work, and a new test runs every command line in the manifest
through the parser so a manifest/CLI mismatch fails the build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 02:02:29 -07:00
Deshraj YadavandClaude Fable 5 a2ae930e9f fix(mem0-agent): add required userConfig title to the plugin manifest
The loader validates userConfig.<key>.title as a required string; without it the
install fails with 'invalid manifest file'. Manifest shape now matches the v1
plugin's exactly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 01:58:09 -07:00
Deshraj YadavandClaude Fable 5 e11d2a4a06 fix(mem0-agent): emit the Claude Code manifest at hooks/hooks.json
Claude Code auto-discovers a plugin's hooks at <plugin>/hooks/hooks.json. The
generator was writing to hooks/generated/, so the manifest existed but was never
loaded and no hook would have fired on install.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 01:49:27 -07:00
Deshraj YadavandClaude Fable 5 ba1de5f87b fix(mem0-agent): non-blocking stdin, clean session_state, lint
Found by running the CLI live against a scratch project:
- hook_input() blocked forever on an open stdin pipe with no data. A real hook
  writes JSON and closes the pipe, but any manual invocation hung; now polled
  with select() and never blocks.
- the open-thread snapshot was filling with progress lines and file-modification
  lists -- v1's exact failure -- so it now filters turns through the same
  hard-drop rules the capture gate uses.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 02:12:23 -07:00
Deshraj YadavandClaude Fable 5 4d5f2e653c feat(mem0-agent): capture gate, eval harness, and mixed-window fix
- triggers.py: hard-drop rules now filter PER TURN, so a durable fact sitting
  between two progress lines survives instead of being dropped with them. The
  eval harness caught this: 3 mixed-window fixtures were being destroyed
  client-side before the extractor ever saw them.
- widened flag rules for 13 plainly durable windows the gate was missing
  (standing preferences, X-over-Y decisions, stated rules, diagnoses, verified
  procedures); verified procedures moved from aggressive to balanced
- eval/: 56 labeled fixtures from the audited v1 corpus plus offline and live
  runners with a --check regression gate
- un-ignore integrations/mem0-agent/eval (root .gitignore excluded it silently)

Offline scorecard: hard_drop_recall 1.000, extract_recall 1.000,
flag_precision 1.000, 0 misclassified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 02:02:37 -07:00
Deshraj YadavandClaude Fable 5 3ea00cf88c feat(mem0-agent): read path, hooks, maintenance, CLI and skills
- pack.py: single-call context pack, budgeted, sanitized, cached, with
  served-id tracking that turns a citation into POSITIVE feedback
- assist.py: error-signature lookup (never raw stdout, which returned 0 results in v1)
- maintain.py: transactional consolidation (add merged -> verify -> delete sources)
- transcript.py: JSONL parsing into non-overlapping windows via a cursor
- cli.py: the twelve commands the hooks invoke; detached assist queues a block
  that the next prompt hook drains, keeping the hot path network-free
- hooks generated from one spec; plugin manifest, MCP wiring, five skills

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 01:56:38 -07:00
Deshraj YadavandClaude Fable 5 e102b21180 feat(mem0-agent): WS0+WS1 foundation - verified contract, config, client core
Encodes the platform contract validated against the live API:
- project_id/org_id pinned in request body (query params are ignored)
- latest_only=True enforced on every read
- metadata.type as the read-time taxonomy (categorization lags ~4h)
- NOT filters take a list; delete_all takes query params; fields repeated

Includes project config (write-gate instructions, 6 custom categories, decay),
verified filter recipes, circuit breaker, session-scoped state, keychain auth,
and identity/project resolution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 01:45:10 -07:00