cfsa-antigravity 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -57,7 +57,33 @@ Every install now scaffolds a shared `.memory/` root at the project level. It is
57
57
  └── migrate/ # legacy memory import helpers
58
58
  ```
59
59
 
60
- The installer also creates `.mcp.json` so supported runtimes can talk to the shared project-local memory daemon through their own MCP clients, and it merges Claude hook entries into `.claude/settings.json` for automatic capture and daemon startup. The daemon writes runtime state into `.memory/runtime/`, and the semantic index writes retrieval artifacts into `.memory/schema/semantic-index.json` plus `.memory/schema/semantic-manifest.json`.
60
+ The installer ships the shared memory runtime into `.memory/`, including the project-local MCP server under `.memory/mcp-server/`. Tool-specific MCP client config is intentionally **not** managed by the kit — users wire their own `.mcp.json` / editor settings for the tools they actually use. The daemon writes runtime state into `.memory/runtime/`, and the semantic index writes retrieval artifacts into `.memory/schema/semantic-index.json` plus `.memory/schema/semantic-manifest.json`.
61
+
62
+ ### MCP client setup and first graph compile
63
+
64
+ The kit installs the **server/runtime** only. You must configure your tool's MCP client yourself.
65
+
66
+ For tools that use a workspace `.mcp.json`, point the tool at the shared server entrypoint:
67
+
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "cfsa-memory": {
72
+ "command": "node",
73
+ "args": [".memory/mcp-server/client.mjs"],
74
+ "env": {
75
+ "MEMORY_ROOT": ".memory",
76
+ "CFSA_MEMORY_HOST": "127.0.0.1",
77
+ "CFSA_MEMORY_PORT": "4317",
78
+ "CFSA_MEMORY_URL": "http://127.0.0.1:4317/mcp",
79
+ "CFSA_MEMORY_HEALTH_URL": "http://127.0.0.1:4317/health"
80
+ }
81
+ }
82
+ }
83
+ }
84
+ ```
85
+
86
+ For an existing project, after wiring your MCP client, trigger the initial graph/index build by running the memory compile path (`memory_compile` via MCP, or the direct compile script fallback) before opening Obsidian. Verify files like `.memory/schema/spec-graph.json` and `.memory/wiki/hubs/spec-graph.md` exist, then open Obsidian at `.memory/`.
61
87
 
62
88
  This replaces fragmented runtime-local memory as the canonical project memory layer. Runtime-local memory files remain legacy inputs for migration.
63
89
 
@@ -101,8 +127,10 @@ A fresh `init` now installs:
101
127
  - your selected runtime directories (`.agent/`, `.claude/`, `.factory/`)
102
128
  - `docs/`
103
129
  - shared `.memory/`
104
- - `.mcp.json` with the `cfsa-memory` server registration
105
- - merged Claude hooks in `.claude/settings.json` when Claude is installed
130
+ - the shared memory MCP server/runtime under `.memory/mcp-server/`
131
+ - the rest of the `.memory` scaffold needed to compile graph/index artifacts locally
132
+
133
+ Tool-specific MCP client config (such as `.mcp.json`) is user-managed and documented above.
106
134
 
107
135
  Use `--migrate-memory` when upgrading an older installation that still has runtime-local memory you want imported into `.memory/`.
108
136
 
package/bin/cli.mjs CHANGED
@@ -403,7 +403,7 @@ function installMemoryScaffold(targetDir, opts) {
403
403
 
404
404
  if (opts.dryRun) {
405
405
  info(`Would copy ${c.bold}.memory/${c.reset} (${countFiles(srcMemoryDir)} files)`);
406
- info(`Would merge ${c.bold}.mcp.json${c.reset} and ${c.bold}.claude/settings.json${c.reset}`);
406
+ info(`Would install the shared memory runtime only; MCP client config remains user-managed`);
407
407
  return;
408
408
  }
409
409
 
@@ -419,82 +419,8 @@ function installMemoryScaffold(targetDir, opts) {
419
419
  info(`Merged ${c.bold}.memory/${c.reset}`);
420
420
  }
421
421
 
422
- const mcpPath = join(targetDir, ".mcp.json");
423
- const currentMcp = readJsonFile(mcpPath, {});
424
- const nextMcp = {
425
- ...currentMcp,
426
- mcpServers: {
427
- ...(currentMcp.mcpServers || {}),
428
- "cfsa-memory": {
429
- command: "node",
430
- args: [".memory/mcp-server/client.mjs"],
431
- env: {
432
- MEMORY_ROOT: ".memory",
433
- CFSA_MEMORY_HOST: "127.0.0.1",
434
- CFSA_MEMORY_PORT: "4317",
435
- CFSA_MEMORY_URL: "http://127.0.0.1:4317/mcp",
436
- CFSA_MEMORY_HEALTH_URL: "http://127.0.0.1:4317/health"
437
- }
438
- }
439
- }
440
- };
441
- writeJsonFile(mcpPath, nextMcp);
442
- info(`Updated ${c.bold}.mcp.json${c.reset}`);
443
-
444
- const claudeSettingsPath = join(targetDir, ".claude", "settings.json");
445
- const currentClaudeSettings = readJsonFile(claudeSettingsPath, {});
446
- const memoryHooks = {
447
- SessionStart: [
448
- {
449
- hooks: [
450
- {
451
- type: "command",
452
- command: "node .memory/hooks/session-start.mjs"
453
- }
454
- ]
455
- }
456
- ],
457
- PreCompact: [
458
- {
459
- matcher: "manual|auto",
460
- hooks: [
461
- {
462
- type: "command",
463
- command: "node .memory/hooks/pre-compact.mjs"
464
- }
465
- ]
466
- }
467
- ],
468
- Stop: [
469
- {
470
- hooks: [
471
- {
472
- type: "command",
473
- command: "node .memory/hooks/session-end.mjs"
474
- }
475
- ]
476
- }
477
- ]
478
- };
479
- const daemonHooks = {
480
- SessionStart: [
481
- {
482
- hooks: [
483
- {
484
- type: "command",
485
- command: "node .memory/mcp-server/start.mjs"
486
- }
487
- ]
488
- }
489
- ]
490
- };
491
-
492
- const nextClaudeSettings = {
493
- ...currentClaudeSettings,
494
- hooks: mergeHookConfig(mergeHookConfig(currentClaudeSettings.hooks || {}, daemonHooks), memoryHooks)
495
- };
496
- writeJsonFile(claudeSettingsPath, nextClaudeSettings);
497
- info(`Updated ${c.bold}.claude/settings.json${c.reset}`);
422
+ info(`Installed ${c.bold}.memory/${c.reset} runtime scaffold`);
423
+ info(`MCP client configuration is user-managed; see the README for tool-specific setup and the initial graph compile step.`);
498
424
  }
499
425
 
500
426
  async function migrateMemory(targetDir) {
@@ -664,7 +590,7 @@ async function cmdInit(opts) {
664
590
  log("");
665
591
  log(`${c.bold}Next steps:${c.reset}`);
666
592
  log(` 1. Open your project in your agent of choice`);
667
- log(` 2. Verify ${c.cyan}.memory/${c.reset}, ${c.cyan}.mcp.json${c.reset}, and ${c.cyan}.claude/settings.json${c.reset}`);
593
+ log(` 2. Verify ${c.cyan}.memory/${c.reset} and configure your tool-specific MCP client manually if needed (see README)`);
668
594
  log(` 3. Run ${c.cyan}/ideate${c.reset} to start the pipeline`);
669
595
  log("");
670
596
  log(`${c.dim}Documentation: https://github.com/RepairYourTech/cfsa-antigravity${c.reset}`);
@@ -814,7 +740,6 @@ function cmdStatus() {
814
740
  { path: ".memory/wiki/hubs/phases.md", label: "Phase graph hub" },
815
741
  { path: ".memory/wiki/hubs/operations.md", label: "Operations graph hub" },
816
742
  { path: ".memory/wiki/hubs/surfaces.md", label: "Surface graph hub" },
817
- { path: ".mcp.json", label: "MCP config" },
818
743
  ];
819
744
 
820
745
  if (!args.json) {
@@ -869,24 +794,27 @@ function cmdStatus() {
869
794
  const mcpConfig = JSON.parse(readFileSync(mcpPath, "utf-8"));
870
795
  if (mcpConfig.mcpServers?.["cfsa-memory"]?.args?.includes(".memory/mcp-server/client.mjs")) {
871
796
  if (!args.json) {
872
- info(` MCP registration ${c.dim}(cfsa-memory configured)${c.reset}`);
797
+ info(` MCP client config ${c.dim}(cfsa-memory configured)${c.reset}`);
873
798
  }
874
- statusJson.memoryHealth.push({ label: "MCP registration", status: "present", detail: "cfsa-memory configured" });
799
+ statusJson.memoryHealth.push({ label: "MCP client config", status: "present", detail: "cfsa-memory configured" });
875
800
  totalInstalled++;
876
801
  } else {
877
802
  if (!args.json) {
878
- warn(" MCP registration — cfsa-memory missing or misconfigured");
803
+ warn(" MCP client config present but cfsa-memory is not configured");
879
804
  }
880
- statusJson.memoryHealth.push({ label: "MCP registration", status: "missing", detail: "cfsa-memory missing or misconfigured" });
881
- totalMissing++;
805
+ statusJson.memoryHealth.push({ label: "MCP client config", status: "partial", detail: "present but cfsa-memory is not configured" });
882
806
  }
883
807
  } catch {
884
808
  if (!args.json) {
885
- warn(" MCP config — invalid JSON");
809
+ warn(" MCP client config — invalid JSON");
886
810
  }
887
- statusJson.memoryHealth.push({ label: "MCP config", status: "invalid" });
888
- totalMissing++;
811
+ statusJson.memoryHealth.push({ label: "MCP client config", status: "invalid" });
812
+ }
813
+ } else {
814
+ if (!args.json) {
815
+ warn(" MCP client config — user-managed (not configured here)");
889
816
  }
817
+ statusJson.memoryHealth.push({ label: "MCP client config", status: "user-managed", detail: "configure your tool manually if needed" });
890
818
  }
891
819
 
892
820
  const claudeSettingsPath = join(targetDir, ".claude", "settings.json");
@@ -896,9 +824,9 @@ function cmdStatus() {
896
824
  const hasHooks = Boolean(claudeSettings.hooks?.SessionStart?.length);
897
825
  if (hasHooks) {
898
826
  if (!args.json) {
899
- info(` Claude memory hooks ${c.dim}(configured)${c.reset}`);
827
+ info(` Claude settings ${c.dim}(hooks configured)${c.reset}`);
900
828
  }
901
- statusJson.memoryHealth.push({ label: "Claude memory hooks", status: "present", detail: "configured" });
829
+ statusJson.memoryHealth.push({ label: "Claude settings", status: "present", detail: "hooks configured" });
902
830
  totalInstalled++;
903
831
  } else {
904
832
  if (!args.json) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cfsa-antigravity",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "CFSA Pipeline — Constraint-First Specification Architecture for AI agents. Production-grade from line one.",
5
5
  "scripts": {
6
6
  "changeset": "changeset",
@@ -1,6 +1,6 @@
1
1
  # Kit Sync State
2
2
 
3
3
  upstream: https://github.com/RepairYourTech/cfsa-antigravity
4
- last_synced_commit: 5605aba29a84c4b3149b7115b73f77297aafd83b
5
- last_synced_at: 2026-04-14T15:34:01Z
6
- kit_version: 3.0.0
4
+ last_synced_commit: a2ac251f783e2da4afa0c7f3b10d3d98fac585b7
5
+ last_synced_at: 2026-04-15T05:09:13Z
6
+ kit_version: 3.0.1
@@ -30,11 +30,12 @@ Project root canonical memory / Obsidian vault:
30
30
 
31
31
  The `.memory/` directory is the canonical project memory layer and is designed to function as an Obsidian-friendly vault inside the project. `.claude/memory/` exists only for Claude-native bridge guidance and session-specific conventions.
32
32
 
33
- A Claude install also gets:
34
- - `.mcp.json` with the `cfsa-memory` client registration
35
- - `.claude/settings.json` hook entries for SessionStart, PreCompact, and Stop
36
- - daemon startup through `.memory/mcp-server/start.mjs`
37
- - initial `.memory/schema/` compilation during `init`
33
+ A Claude install also gets the shared `.memory/` runtime scaffold, including:
34
+ - the `cfsa-memory` server under `.memory/mcp-server/`
35
+ - daemon startup helpers under `.memory/mcp-server/start.mjs`
36
+ - compile/runtime helpers under `.memory/pipeline/` and `.memory/hooks/`
37
+
38
+ Tool-specific MCP client config and Claude hook wiring are user-managed. If you want Claude to talk to the shared memory daemon, add the appropriate MCP client config yourself and then run the initial compile before opening Obsidian at `.memory/`.
38
39
 
39
40
  All runtimes should read and write shared project memory through `.memory/` and the MCP bridge.
40
41
 
@@ -1,6 +1,6 @@
1
1
  # Kit Sync State
2
2
 
3
3
  upstream: https://github.com/RepairYourTech/cfsa-antigravity
4
- last_synced_commit: 5605aba29a84c4b3149b7115b73f77297aafd83b
5
- last_synced_at: 2026-04-14T15:34:01Z
6
- kit_version: 3.0.0
4
+ last_synced_commit: a2ac251f783e2da4afa0c7f3b10d3d98fac585b7
5
+ last_synced_at: 2026-04-15T05:09:13Z
6
+ kit_version: 3.0.1
@@ -1,6 +1,6 @@
1
1
  # Kit Sync State
2
2
 
3
3
  upstream: https://github.com/RepairYourTech/cfsa-antigravity
4
- last_synced_commit: 5605aba29a84c4b3149b7115b73f77297aafd83b
5
- last_synced_at: 2026-04-14T15:34:01Z
6
- kit_version: 3.0.0
4
+ last_synced_commit: a2ac251f783e2da4afa0c7f3b10d3d98fac585b7
5
+ last_synced_at: 2026-04-15T05:09:13Z
6
+ kit_version: 3.0.1
@@ -6,5 +6,14 @@ Stdio MCP server for the unified `.memory/` system.
6
6
  - `index.mjs` — stdio JSON-RPC MCP entrypoint
7
7
  - `tools/` — individual tool adapters that call the pipeline
8
8
 
9
+ ## Ownership boundary
10
+ The kit installs the MCP **server/runtime** into the workspace. Tool-specific MCP client configuration (for example `.mcp.json` or editor-specific MCP settings) is user-managed.
11
+
12
+ ## Initial bootstrap
13
+ For an existing project:
14
+ 1. wire your tool's MCP client to this server entrypoint
15
+ 2. run the initial memory compile (`memory_compile` or the direct compile fallback)
16
+ 3. verify graph/index artifacts exist under `.memory/schema/` and `.memory/wiki/`
17
+
9
18
  ## Extension pattern
10
19
  Expose new memory capabilities by adding a tool file under `tools/` and wiring it into `index.mjs`.
@@ -165,15 +165,25 @@ npx cfsa-antigravity init
165
165
 
166
166
  ### Unified memory scaffold
167
167
 
168
- `init` now also installs a shared `.memory/` directory plus `.mcp.json`. The `.memory/` directory is designed to function as an Obsidian vault inside the project.
168
+ `init` now installs a shared `.memory/` directory. The `.memory/` directory is designed to function as an Obsidian vault inside the project.
169
169
 
170
170
  - `.memory/raw/` stores append-only session and event captures
171
171
  - `.memory/wiki/` stores compiled patterns, decisions, blockers, and knowledge pages
172
172
  - `.memory/schema/` stores machine-readable retrieval artifacts, including semantic index/manifests
173
- - `.memory/mcp-server/client.mjs` is the per-runtime MCP client entrypoint to the shared daemon
173
+ - `.memory/mcp-server/client.mjs` is the MCP bridge entrypoint for the shared daemon
174
174
  - `.memory/mcp-server/daemon.mjs` is the shared project-local MCP daemon
175
175
  - `.memory/hooks/` contains Claude-oriented hook entrypoints
176
176
 
177
+ The kit installs the memory **server/runtime** only. `.mcp.json` and other tool-specific MCP client settings are user-managed.
178
+
179
+ ### Initial graph compile for existing projects
180
+
181
+ After installing or updating the `.memory` runtime in an existing project:
182
+ 1. Configure your tool's MCP client manually.
183
+ 2. Trigger the first memory compile (`memory_compile` via MCP, or the direct compile script fallback).
184
+ 3. Verify graph/index artifacts exist under `.memory/schema/` and `.memory/wiki/`.
185
+ 4. Open Obsidian at `.memory/`.
186
+
177
187
  If you are upgrading an older project with siloed runtime-local memory, run:
178
188
 
179
189
  ```bash
@@ -274,8 +274,10 @@ The kit now separates runtime execution state from shared project memory:
274
274
 
275
275
  - Runtime progress still lives under `.agent/progress/`, `.claude/progress/`, and `.factory/progress/`
276
276
  - Canonical cross-runtime memory lives under `.memory/`
277
- - Claude uses hooks in `.claude/settings.json` to flush and compile memory automatically
278
- - All runtimes can access the same memory through `.mcp.json` -> `cfsa-memory` -> `.memory/mcp-server/client.mjs` -> shared daemon `.memory/mcp-server/daemon.mjs`
277
+ - Claude can use hooks in `.claude/settings.json` to flush and compile memory automatically when the user chooses to wire them
278
+ - All runtimes can access the same memory through their own MCP client config -> `cfsa-memory` -> `.memory/mcp-server/client.mjs` -> shared daemon `.memory/mcp-server/daemon.mjs`
279
+
280
+ The kit ships the server/runtime. Tool-specific MCP client configuration (for example `.mcp.json`) remains user-managed.
279
281
 
280
282
  This lets Claude, Antigravity, Factory, Codex, and future runtimes query the same project memory without each runtime owning a separate canonical store.
281
283