fathom-mcp 0.3.0 → 0.4.0

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/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.2.0 (2026-02-26)
3
+ ## 0.4.0 (2026-02-26)
4
+
5
+ - **Breaking:** removed `architecture` field everywhere — `agents` array is the only field
6
+ - Cleaned up all backward compatibility shims across config, server, API, and frontend
7
+ - Renamed `_get_architecture` → `_get_agent` in persistent session manager
8
+
9
+ ## 0.3.0 (2026-02-26)
4
10
 
5
11
  Multi-agent support.
6
12
 
@@ -9,9 +15,10 @@ Multi-agent support.
9
15
  - **Per-agent config writers** — `.mcp.json`, `.codex/config.toml`, `.gemini/settings.json`, `opencode.json`
10
16
  - **Agent instructions boilerplate** — `fathom-agents.md` template for memory discipline, vault conventions, cross-workspace communication
11
17
  - **Conditional hooks** — hook setup only for Claude Code (other agents don't support hooks)
12
- - **`agents` array** replaces legacy `architecture` string in `.fathom.json` — backward compatible
18
+ - **`agents` array** in `.fathom.json` — workspace config stores which agents are configured
13
19
  - **Server-side agent dispatch** — persistent sessions launch the correct agent CLI per workspace
14
- - **Status command** — now shows configured agents per workspace
20
+ - **Agent type registration** — init wizard sends primary agent type when registering workspace
21
+ - **Status command** — shows configured agents per workspace
15
22
 
16
23
  ## 0.1.0 (2026-02-25)
17
24
 
package/README.md CHANGED
@@ -100,10 +100,6 @@ npx fathom-mcp status # Check server connection + workspace status
100
100
  2. `.fathom.json` (walked up from cwd to filesystem root)
101
101
  3. Built-in defaults
102
102
 
103
- ### Backward compatibility
104
-
105
- The `agents` array replaces the legacy `architecture` string field. Old configs with `architecture: "claude-code"` are automatically migrated to `agents: ["claude-code"]` at read time.
106
-
107
103
  ## Hooks (Claude Code only)
108
104
 
109
105
  Hooks are only available in Claude Code and are configured in `.claude/settings.local.json`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fathom-mcp",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "MCP server for Fathom — vault operations, search, rooms, and cross-workspace communication",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli.js CHANGED
@@ -14,7 +14,7 @@ import path from "path";
14
14
  import readline from "readline";
15
15
  import { fileURLToPath } from "url";
16
16
 
17
- import { resolveConfig, writeConfig, findConfigFile } from "./config.js";
17
+ import { resolveConfig, writeConfig } from "./config.js";
18
18
  import { createClient } from "./server-client.js";
19
19
 
20
20
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -253,7 +253,8 @@ async function runInit() {
253
253
  const agent = AGENTS[key];
254
254
  const isDetected = detected.includes(key);
255
255
  const mark = isDetected ? "✓" : " ";
256
- const hint = isDetected ? ` (${key === "windsurf" ? "~/.codeium/windsurf/ found" : `.${key === "claude-code" ? "claude" : key === "vscode" ? "vscode" : key}/ found`})` : "";
256
+ const markers = { "claude-code": ".claude/", "codex": ".codex/", "gemini": ".gemini/", "opencode": "opencode.json" };
257
+ const hint = isDetected ? ` (${markers[key] || key} found)` : "";
257
258
  console.log(` ${mark} ${agent.name}${hint}`);
258
259
  }
259
260
 
@@ -410,6 +411,7 @@ async function runInit() {
410
411
  vault,
411
412
  description,
412
413
  agents: selectedAgents,
414
+ type: selectedAgents[0] || "local",
413
415
  });
414
416
  if (regResult.ok) {
415
417
  console.log(` ✓ Registered workspace "${workspace}" with server`);
@@ -471,7 +473,7 @@ async function runStatus() {
471
473
  } else {
472
474
  const agentLabel = profile.agents?.length > 0
473
475
  ? ` [${profile.agents.join(", ")}]`
474
- : profile.architecture ? ` [${profile.architecture}]` : "";
476
+ : "";
475
477
  const runStatus = profile.running ? "running" : "stopped";
476
478
  console.log(` ${name}: ${runStatus}${agentLabel}`);
477
479
  }
package/src/config.js CHANGED
@@ -68,11 +68,8 @@ export function resolveConfig(startDir = process.cwd()) {
68
68
  if (config.server) result.server = config.server;
69
69
  if (config.apiKey) result.apiKey = config.apiKey;
70
70
  if (config.description) result.description = config.description;
71
- // Backward compat: migrate legacy `architecture` string to `agents` array
72
71
  if (config.agents && Array.isArray(config.agents)) {
73
72
  result.agents = config.agents;
74
- } else if (config.architecture) {
75
- result.agents = [config.architecture];
76
73
  }
77
74
  if (config.hooks) {
78
75
  result.hooks = { ...result.hooks, ...config.hooks };
package/src/index.js CHANGED
@@ -456,7 +456,7 @@ async function main() {
456
456
  client.registerWorkspace(config.workspace, config._projectDir, {
457
457
  vault: config._rawVault,
458
458
  description: config.description,
459
- architecture: config.architecture,
459
+ agents: config.agents,
460
460
  }).catch(() => {});
461
461
  }
462
462
 
@@ -104,13 +104,12 @@ export function createClient(config) {
104
104
  return request("GET", "/api/workspaces/profiles");
105
105
  }
106
106
 
107
- async function registerWorkspace(name, projectPath, { vault, description, agents, architecture } = {}) {
107
+ async function registerWorkspace(name, projectPath, { vault, description, agents, type } = {}) {
108
108
  const body = { name, path: projectPath };
109
109
  if (vault) body.vault = vault;
110
110
  if (description) body.description = description;
111
111
  if (agents && agents.length > 0) body.agents = agents;
112
- // Legacy fallback
113
- if (architecture && !agents?.length) body.architecture = architecture;
112
+ if (type) body.type = type;
114
113
  return request("POST", "/api/workspaces", { body });
115
114
  }
116
115