fathom-mcp 0.3.1 → 0.4.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/CHANGELOG.md +8 -6
- package/README.md +0 -4
- package/fathom-agents.md +0 -0
- package/package.json +1 -1
- package/src/cli.js +4 -3
- package/src/config.js +0 -3
- package/src/index.js +3 -10
- package/src/server-client.js +10 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.4.0 (2026-02-26)
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
-
|
|
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
|
|
7
8
|
|
|
8
|
-
## 0.
|
|
9
|
+
## 0.3.0 (2026-02-26)
|
|
9
10
|
|
|
10
11
|
Multi-agent support.
|
|
11
12
|
|
|
@@ -14,9 +15,10 @@ Multi-agent support.
|
|
|
14
15
|
- **Per-agent config writers** — `.mcp.json`, `.codex/config.toml`, `.gemini/settings.json`, `opencode.json`
|
|
15
16
|
- **Agent instructions boilerplate** — `fathom-agents.md` template for memory discipline, vault conventions, cross-workspace communication
|
|
16
17
|
- **Conditional hooks** — hook setup only for Claude Code (other agents don't support hooks)
|
|
17
|
-
- **`agents` array**
|
|
18
|
+
- **`agents` array** in `.fathom.json` — workspace config stores which agents are configured
|
|
18
19
|
- **Server-side agent dispatch** — persistent sessions launch the correct agent CLI per workspace
|
|
19
|
-
- **
|
|
20
|
+
- **Agent type registration** — init wizard sends primary agent type when registering workspace
|
|
21
|
+
- **Status command** — shows configured agents per workspace
|
|
20
22
|
|
|
21
23
|
## 0.1.0 (2026-02-25)
|
|
22
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/fathom-agents.md
CHANGED
|
File without changes
|
package/package.json
CHANGED
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
|
|
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
|
|
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
|
|
|
@@ -472,7 +473,7 @@ async function runStatus() {
|
|
|
472
473
|
} else {
|
|
473
474
|
const agentLabel = profile.agents?.length > 0
|
|
474
475
|
? ` [${profile.agents.join(", ")}]`
|
|
475
|
-
:
|
|
476
|
+
: "";
|
|
476
477
|
const runStatus = profile.running ? "running" : "stopped";
|
|
477
478
|
console.log(` ${name}: ${runStatus}${agentLabel}`);
|
|
478
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
|
@@ -270,7 +270,7 @@ const tools = [
|
|
|
270
270
|
{
|
|
271
271
|
name: "fathom_send",
|
|
272
272
|
description:
|
|
273
|
-
"Send a message to another workspace's
|
|
273
|
+
"Send a message to another workspace's agent instance — for cross-workspace coordination, " +
|
|
274
274
|
"sharing findings, or requesting action. Use fathom_workspaces first to discover valid " +
|
|
275
275
|
"targets. The target agent sees: 'Message from workspace ({from}): {message}'",
|
|
276
276
|
inputSchema: {
|
|
@@ -424,14 +424,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
424
424
|
result = await client.listWorkspaces();
|
|
425
425
|
break;
|
|
426
426
|
case "fathom_send":
|
|
427
|
-
|
|
428
|
-
result = await client.request?.("POST", `/api/room/${encodeURIComponent("__dm__")}`, {
|
|
429
|
-
body: { message: `Message from workspace (${config.workspace}): ${args.message}`, sender: config.workspace },
|
|
430
|
-
});
|
|
431
|
-
// For now, fall back to error until server implements /api/send
|
|
432
|
-
if (!result || result.error) {
|
|
433
|
-
result = { error: "fathom_send requires a running fathom-server with session management. This feature is being migrated." };
|
|
434
|
-
}
|
|
427
|
+
result = await client.sendToWorkspace(args.workspace, args.message, config.workspace);
|
|
435
428
|
break;
|
|
436
429
|
default:
|
|
437
430
|
result = { error: `Unknown tool: ${name}` };
|
|
@@ -456,7 +449,7 @@ async function main() {
|
|
|
456
449
|
client.registerWorkspace(config.workspace, config._projectDir, {
|
|
457
450
|
vault: config._rawVault,
|
|
458
451
|
description: config.description,
|
|
459
|
-
|
|
452
|
+
agents: config.agents,
|
|
460
453
|
}).catch(() => {});
|
|
461
454
|
}
|
|
462
455
|
|
package/src/server-client.js
CHANGED
|
@@ -98,20 +98,26 @@ export function createClient(config) {
|
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
// --- Direct messaging -------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
async function sendToWorkspace(target, message, from) {
|
|
104
|
+
return request("POST", `/api/send/${encodeURIComponent(target)}`, {
|
|
105
|
+
body: { message, from: from || workspace },
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
101
109
|
// --- Workspaces ------------------------------------------------------------
|
|
102
110
|
|
|
103
111
|
async function listWorkspaces() {
|
|
104
112
|
return request("GET", "/api/workspaces/profiles");
|
|
105
113
|
}
|
|
106
114
|
|
|
107
|
-
async function registerWorkspace(name, projectPath, { vault, description, agents,
|
|
115
|
+
async function registerWorkspace(name, projectPath, { vault, description, agents, type } = {}) {
|
|
108
116
|
const body = { name, path: projectPath };
|
|
109
117
|
if (vault) body.vault = vault;
|
|
110
118
|
if (description) body.description = description;
|
|
111
119
|
if (agents && agents.length > 0) body.agents = agents;
|
|
112
120
|
if (type) body.type = type;
|
|
113
|
-
// Legacy fallback
|
|
114
|
-
if (architecture && !agents?.length) body.architecture = architecture;
|
|
115
121
|
return request("POST", "/api/workspaces", { body });
|
|
116
122
|
}
|
|
117
123
|
|
|
@@ -164,6 +170,7 @@ export function createClient(config) {
|
|
|
164
170
|
roomRead,
|
|
165
171
|
roomList,
|
|
166
172
|
roomDescribe,
|
|
173
|
+
sendToWorkspace,
|
|
167
174
|
listWorkspaces,
|
|
168
175
|
registerWorkspace,
|
|
169
176
|
notifyAccess,
|