studiograph 1.3.48-next.209 → 1.3.48-next.210

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.
Files changed (94) hide show
  1. package/dist/cli/commands/mcp.js +43 -3
  2. package/dist/cli/commands/mcp.js.map +1 -1
  3. package/dist/cli/commands/serve.js +37 -0
  4. package/dist/cli/commands/serve.js.map +1 -1
  5. package/dist/core/workspace.js +2 -1
  6. package/dist/core/workspace.js.map +1 -1
  7. package/dist/mcp/server-discovery.d.ts +73 -0
  8. package/dist/mcp/server-discovery.js +164 -0
  9. package/dist/mcp/server-discovery.js.map +1 -0
  10. package/dist/mcp/server.d.ts +14 -1
  11. package/dist/mcp/server.js +22 -1
  12. package/dist/mcp/server.js.map +1 -1
  13. package/dist/mcp/stdio-proxy.d.ts +67 -0
  14. package/dist/mcp/stdio-proxy.js +149 -0
  15. package/dist/mcp/stdio-proxy.js.map +1 -0
  16. package/dist/server/index.d.ts +7 -0
  17. package/dist/server/index.js +12 -0
  18. package/dist/server/index.js.map +1 -1
  19. package/dist/web/_app/immutable/chunks/{-2spa_ty.js → 3anKjXOb.js} +1 -1
  20. package/dist/web/_app/immutable/chunks/{DzK_EvND.js → 7xJ91z7d.js} +2 -2
  21. package/dist/web/_app/immutable/chunks/{C-TmTX5l2.js → B-TGZnCt2.js} +1 -1
  22. package/dist/web/_app/immutable/chunks/{JcpnqlPk.js → B4DG5QOL.js} +1 -1
  23. package/dist/web/_app/immutable/chunks/{z-R2Vldf2.js → B9VRF5aH2.js} +1 -1
  24. package/dist/web/_app/immutable/chunks/{8gf0UBic.js → BF0vIqH9.js} +1 -1
  25. package/dist/web/_app/immutable/chunks/{yoW0fRX1.js → BFp1K70l.js} +4 -4
  26. package/dist/web/_app/immutable/chunks/{hTPRNEu-.js → BFr7Funh.js} +1 -1
  27. package/dist/web/_app/immutable/chunks/{D9kLoQFp.js → BFx32D20.js} +2 -2
  28. package/dist/web/_app/immutable/chunks/{hjHovleV.js → BRvMjAzW.js} +2 -2
  29. package/dist/web/_app/immutable/chunks/{Cq3VfwJ3.js → B_PyL87x.js} +2 -2
  30. package/dist/web/_app/immutable/chunks/{CarU_W4g.js → BdWZJpmv.js} +2 -2
  31. package/dist/web/_app/immutable/chunks/{BuRnMKGZ.js → BfnFtsiY.js} +1 -1
  32. package/dist/web/_app/immutable/chunks/{B4_vWrbE.js → BmgXvmIG.js} +1 -1
  33. package/dist/web/_app/immutable/chunks/{CjBxftln.js → BrveeylZ.js} +1 -1
  34. package/dist/web/_app/immutable/chunks/{yweJJEAv.js → Bxk27YWG.js} +1 -1
  35. package/dist/web/_app/immutable/chunks/{DQ8hc8G4.js → C3F_NMTk.js} +1 -1
  36. package/dist/web/_app/immutable/chunks/{DHcBGJcU.js → C4PZmGUQ.js} +2 -2
  37. package/dist/web/_app/immutable/chunks/C6wYiSz8.js +1 -0
  38. package/dist/web/_app/immutable/chunks/{CqkR4dEE.js → C70saxIl.js} +1 -1
  39. package/dist/web/_app/immutable/chunks/{CbBO7xjd.js → CE1XZ5DE.js} +1 -1
  40. package/dist/web/_app/immutable/chunks/{Dg14Xiup2.js → CGkd0a-c2.js} +2 -2
  41. package/dist/web/_app/immutable/chunks/{CTDSRwA-.js → CK4z74w5.js} +1 -1
  42. package/dist/web/_app/immutable/chunks/{SzNdcEDz.js → COo3HgCZ.js} +1 -1
  43. package/dist/web/_app/immutable/chunks/{DqOvW0Ci.js → CQyBDccA.js} +1 -1
  44. package/dist/web/_app/immutable/chunks/{BF86pxyG.js → CV5OSCJc.js} +1 -1
  45. package/dist/web/_app/immutable/chunks/{DAUpeR52.js → Cg-ND0cl.js} +1 -1
  46. package/dist/web/_app/immutable/chunks/{C-ZVRZqG2.js → CjiMLTwX2.js} +1 -1
  47. package/dist/web/_app/immutable/chunks/{B3OPjHNM.js → CkoeSJ8K.js} +2 -2
  48. package/dist/web/_app/immutable/chunks/{BfwmNeLQ.js → Cp87MaaW.js} +1 -1
  49. package/dist/web/_app/immutable/chunks/{CEPTuxuw.js → Ct1uesdW.js} +1 -1
  50. package/dist/web/_app/immutable/chunks/{B3hBJ0CZ.js → Cuq8J2Td.js} +1 -1
  51. package/dist/web/_app/immutable/chunks/D1BLcNJ7.js +1 -0
  52. package/dist/web/_app/immutable/chunks/{DFo8Z02k2.js → D3F675fu2.js} +2 -2
  53. package/dist/web/_app/immutable/chunks/{XXFvJvf7.js → D4UrtGC1.js} +1 -1
  54. package/dist/web/_app/immutable/chunks/{CllJGOSl2.js → DE2TCESD2.js} +1 -1
  55. package/dist/web/_app/immutable/chunks/{DcKFKEKq2.js → DN-gIRdd2.js} +1 -1
  56. package/dist/web/_app/immutable/chunks/{iq89w22o.js → DPcejqKZ.js} +1 -1
  57. package/dist/web/_app/immutable/chunks/{dpypnVMz.js → DRPMJ-3M.js} +1 -1
  58. package/dist/web/_app/immutable/chunks/{BT7MNsRm.js → DRPnwQAm.js} +1 -1
  59. package/dist/web/_app/immutable/chunks/{BXFiQe0S2.js → DXmfl4Hq2.js} +1 -1
  60. package/dist/web/_app/immutable/chunks/{BWvxD8JC.js → DdQVGKgM.js} +1 -1
  61. package/dist/web/_app/immutable/chunks/{BVC3D6J_2.js → DiFfW--R2.js} +2 -2
  62. package/dist/web/_app/immutable/chunks/{BdtryC552.js → DsFEd8vL2.js} +1 -1
  63. package/dist/web/_app/immutable/chunks/{BA-4MmCY.js → ON7Gta0d.js} +1 -1
  64. package/dist/web/_app/immutable/chunks/{Dhi-nA7b2.js → RG7IUVLn2.js} +1 -1
  65. package/dist/web/_app/immutable/chunks/{Czkm1Z_J.js → SnzlL4ZV.js} +1 -1
  66. package/dist/web/_app/immutable/chunks/{B85YLOuO.js → Xkp5hSA1.js} +1 -1
  67. package/dist/web/_app/immutable/chunks/{8xCkZMHB2.js → golz20La2.js} +1 -1
  68. package/dist/web/_app/immutable/chunks/nXReuy-5.js +3 -0
  69. package/dist/web/_app/immutable/chunks/{NXXkP0Yl2.js → o61aZZFZ2.js} +1 -1
  70. package/dist/web/_app/immutable/entry/{app.D9x3Ozzy.js → app.dqA31fjy.js} +2 -2
  71. package/dist/web/_app/immutable/entry/start.BB1XrAea.js +1 -0
  72. package/dist/web/_app/immutable/nodes/{0.dg_UMka-.js → 0.dALEQAnu.js} +2 -2
  73. package/dist/web/_app/immutable/nodes/{1.DmQYkamr.js → 1.aFU32Ukj.js} +1 -1
  74. package/dist/web/_app/immutable/nodes/{10.BEAGT9ix.js → 10.C2wB-OnW.js} +1 -1
  75. package/dist/web/_app/immutable/nodes/{11.BCpAYiCX.js → 11.CI3a8Rj5.js} +1 -1
  76. package/dist/web/_app/immutable/nodes/{12.BD2-phrA.js → 12.CsTvsKzB.js} +1 -1
  77. package/dist/web/_app/immutable/nodes/{14.Car_Z8Ge.js → 14.B31HrQ26.js} +1 -1
  78. package/dist/web/_app/immutable/nodes/{16.Dx-_Q88K.js → 16.DAP8cwVb.js} +1 -1
  79. package/dist/web/_app/immutable/nodes/{17.DPlV4PKK.js → 17.CmwXtCDY.js} +1 -1
  80. package/dist/web/_app/immutable/nodes/{2.De5Q8inl.js → 2.BuGXEIlN.js} +4 -4
  81. package/dist/web/_app/immutable/nodes/{3.CB85wmwM.js → 3.CmhZJWHE.js} +3 -3
  82. package/dist/web/_app/immutable/nodes/{4.CuBxISNV.js → 4.BRfoPTm-.js} +3 -3
  83. package/dist/web/_app/immutable/nodes/{5.BacpN2b7.js → 5.C7gPuZM_.js} +1 -1
  84. package/dist/web/_app/immutable/nodes/{6.NCIMY9Md.js → 6.qKODVbya.js} +2 -2
  85. package/dist/web/_app/immutable/nodes/{7.CuBtDBRM.js → 7.BZO37zAJ.js} +1 -1
  86. package/dist/web/_app/immutable/nodes/{8.CK9UmlO8.js → 8.xF_Dd1BO.js} +1 -1
  87. package/dist/web/_app/immutable/nodes/{9.1L0aYtSp.js → 9.Bow4UyKV.js} +1 -1
  88. package/dist/web/_app/version.json +1 -1
  89. package/dist/web/index.html +13 -13
  90. package/package.json +1 -1
  91. package/dist/web/_app/immutable/chunks/D8RiXQGX.js +0 -1
  92. package/dist/web/_app/immutable/chunks/DF37Jk8z.js +0 -3
  93. package/dist/web/_app/immutable/chunks/HqKvrUJa.js +0 -1
  94. package/dist/web/_app/immutable/entry/start.CASYyKnT.js +0 -1
@@ -24,17 +24,32 @@
24
24
  * MCP protocol. Use console.error() for any diagnostic output.
25
25
  */
26
26
  import { Command } from 'commander';
27
+ import { resolve } from 'path';
28
+ import { realpathSync } from 'fs';
27
29
  import { Workspace } from '../../core/workspace.js';
28
30
  import { WorkspaceManager } from '../../core/workspace-manager.js';
29
31
  import { loadUserConfig } from '../../core/user-config.js';
30
32
  import { tryResolve } from '../../core/secrets/read-flip.js';
31
33
  import { AuthService } from '../../services/auth-service.js';
32
- import { startMcpServer } from '../../mcp/server.js';
34
+ import { resolveStdioUser, createInProcessMcpClient } from '../../mcp/server.js';
35
+ import { StdioProxy } from '../../mcp/stdio-proxy.js';
33
36
  export const mcpCommand = new Command('mcp')
34
37
  .description('Start the Studiograph MCP server for Claude Desktop integration')
35
38
  .argument('[workspace]', 'Path to workspace (defaults to current directory)')
36
39
  .action(async (workspaceArg) => {
37
- const workspacePath = workspaceArg ?? process.cwd();
40
+ // Canonicalize (absolute + symlinks resolved) so the discovery
41
+ // `workspacePath` match against the running server is exact. The server
42
+ // writes `process.cwd()`, which Node already real-path-resolves; without
43
+ // realpath here a symlinked path (e.g. macOS /tmp → /private/tmp) would
44
+ // mismatch and the proxy would needlessly fall back to a local write.
45
+ const requested = resolve(workspaceArg ?? process.cwd());
46
+ let workspacePath = requested;
47
+ try {
48
+ workspacePath = realpathSync(requested);
49
+ }
50
+ catch {
51
+ /* path may not exist yet — the isWorkspace() check below handles it */
52
+ }
38
53
  const workspace = new Workspace(workspacePath);
39
54
  if (!workspace.isWorkspace()) {
40
55
  process.stderr.write('Not a Studiograph workspace.\n' +
@@ -60,6 +75,31 @@ export const mcpCommand = new Command('mcp')
60
75
  };
61
76
  const workspaceManager = new WorkspaceManager(workspacePath, config, gitUser);
62
77
  const authService = new AuthService(workspacePath);
63
- await startMcpServer(workspaceManager, authService);
78
+ // Resolve identity up front so the proxy fails closed (same message as the
79
+ // old direct stdio server) before opening the stdio transport.
80
+ const user = resolveStdioUser(authService);
81
+ const token = process.env.STUDIOGRAPH_MCP_TOKEN?.trim();
82
+ if (!user || !token) {
83
+ process.stderr.write('Studiograph MCP: STUDIOGRAPH_MCP_TOKEN is required.\n' +
84
+ 'Generate a token with:\n' +
85
+ ' curl -X POST http://<host>/api/auth/tokens \\\n' +
86
+ ' -H "Content-Type: application/json" \\\n' +
87
+ ' -b __sg_token=<your-jwt> \\\n' +
88
+ ' -d \'{"name":"claude-desktop"}\'\n' +
89
+ 'Then set STUDIOGRAPH_MCP_TOKEN=<token> in your Claude Desktop MCP config env.\n');
90
+ process.exit(1);
91
+ }
92
+ // Audit signal (stderr only — stdout is the JSON-RPC channel). Preserves the
93
+ // identity line the old direct stdio server logged on startup.
94
+ process.stderr.write(`Studiograph MCP: authenticated as ${user.email}\n`);
95
+ // Transparent stdio→HTTP proxy: forward tool calls to the running local
96
+ // server (so writes merge into any open editor) when one is reachable, else
97
+ // fall back to an in-process server (safe: no server ⇒ no live editor).
98
+ const proxy = new StdioProxy({
99
+ workspacePath,
100
+ token,
101
+ buildLocalClient: () => createInProcessMcpClient(workspaceManager, authService, user),
102
+ });
103
+ await proxy.start();
64
104
  });
65
105
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,iEAAiE,CAAC;KAC9E,QAAQ,CAAC,aAAa,EAAE,mDAAmD,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,YAAqB,EAAE,EAAE;IACtC,MAAM,aAAa,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC;YAChC,gGAAgG,CACjG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAE5C,kEAAkE;IAClE,oEAAoE;IACpE,oEAAoE;IACpE,gEAAgE;IAChE,oEAAoE;IACpE,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,CAAS,yBAAyB,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;IACnF,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;IACzC,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG;QACd,EAAE,EAAK,KAAK;QACZ,IAAI,EAAG,iBAAiB;QACxB,KAAK,EAAE,2BAA2B;KACnC,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,aAAa,EACb,MAAM,EACN,OAAO,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,cAAc,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,11 @@
14
14
  import { Command } from 'commander';
15
15
  import { join } from 'path';
16
16
  import { homedir } from 'os';
17
+ import { randomUUID } from 'crypto';
17
18
  import { exec, spawnSync } from 'child_process';
18
19
  import { existsSync } from 'fs';
19
20
  import { Workspace } from '../../core/workspace.js';
21
+ import { writeServerInfo, deleteServerInfo } from '../../mcp/server-discovery.js';
20
22
  import { WorkspaceManager } from '../../core/workspace-manager.js';
21
23
  import { loadUserConfig, resolveApiKey, propagateApiKeyToEnv } from '../../core/user-config.js';
22
24
  import { promptLLMSetupIfNeeded } from '../setup-wizard.js';
@@ -239,6 +241,9 @@ export const serveCommand = new Command('serve')
239
241
  }
240
242
  const port = parseInt(process.env.PORT || opts.port, 10);
241
243
  const host = process.env.HOST || opts.host;
244
+ // Random per-boot id used by the stdio MCP proxy to confirm it is talking
245
+ // to the server that owns this workspace before forwarding tool calls.
246
+ const serverId = randomUUID();
242
247
  const server = await createServer({
243
248
  workspaceManager,
244
249
  workspacePath: process.cwd(),
@@ -247,6 +252,7 @@ export const serveCommand = new Command('serve')
247
252
  port,
248
253
  host,
249
254
  authCryptoOptions,
255
+ serverId,
250
256
  });
251
257
  // Try to listen, auto-incrementing port if in use
252
258
  let actualPort = port;
@@ -265,6 +271,29 @@ export const serveCommand = new Command('serve')
265
271
  process.exit(1);
266
272
  }
267
273
  }
274
+ // Publish the discovery file now that the listen port is known. Always use
275
+ // the loopback url regardless of bind host — the stdio proxy only ever
276
+ // sends a Bearer token to a loopback address. Removed after server.close()
277
+ // in the shutdown path below.
278
+ try {
279
+ writeServerInfo(process.cwd(), {
280
+ url: `http://127.0.0.1:${actualPort}`,
281
+ pid: process.pid,
282
+ workspacePath: process.cwd(),
283
+ serverId,
284
+ });
285
+ }
286
+ catch (err) {
287
+ // Non-fatal, but loud: without server.json the stdio MCP proxy can't
288
+ // discover this server and falls back to writing in-process, which can
289
+ // clobber unsaved edits in an open live editor. (Same observable state as
290
+ // running a server build that predates the proxy — the documented rollout
291
+ // case.) If this fires while the server is otherwise healthy, .studiograph
292
+ // is likely read-only/full and needs attention.
293
+ console.warn('[serve] WARNING: failed to write .studiograph/server.json — the stdio MCP ' +
294
+ 'proxy will not discover this server and may write locally, risking live-edit ' +
295
+ 'data loss. Check .studiograph permissions/disk:', err instanceof Error ? err.message : err);
296
+ }
268
297
  // The asset caption/extract pass now runs as a live in-process drain
269
298
  // (AssetIndexService) constructed inside createServer — it captions new
270
299
  // uploads while the server runs AND does the boot recovery sweep that used
@@ -313,6 +342,14 @@ export const serveCommand = new Command('serve')
313
342
  catch (err) {
314
343
  console.error('[serve] shutdown error:', err);
315
344
  }
345
+ finally {
346
+ // Always remove the discovery file, even if server.close() threw — a
347
+ // stale server.json is otherwise left pointing at a dead port. (The
348
+ // probe's pid-alive + serverId checks already make a stale file safe,
349
+ // but cleaning it up keeps the common case tidy.) Runs after close()
350
+ // so the file never points at a still-listening-but-closing server.
351
+ deleteServerInfo(process.cwd());
352
+ }
316
353
  process.exit(exitCode);
317
354
  };
318
355
  process.once('SIGTERM', () => shutdown('SIGTERM', 0));
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,8 @@ export class Workspace {
56
56
  // Create .gitignore for .studiograph
57
57
  const gitignorePath = join(studiographDir, '.gitignore');
58
58
  writeFileSync(gitignorePath, '# Ignore sensitive local config\n*.local\nauth.db\nauth.db-wal\nauth.db-shm\nauth-secret\napi-keys\n' +
59
- '# Yjs binary snapshot state (per-instance, not git-friendly)\nyjs-state/\n');
59
+ '# Yjs binary snapshot state (per-instance, not git-friendly)\nyjs-state/\n' +
60
+ '# Running-server discovery file (per-instance, ephemeral)\nserver.json\n');
60
61
  // Create scaffolded ABOUT.md
61
62
  this.writeAbout('## Vision\n\n## Mission\n\n## Profile\n\n## Capabilities\n\n## Values\n');
62
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Local-server discovery for the stdio MCP proxy (Increment 1 of the unified
3
+ * multi-peer editing model — see ~/.claude/plans/indexed-stirring-turtle.md).
4
+ *
5
+ * When `studiograph serve` is running it writes `.studiograph/server.json`
6
+ * describing how to reach it ({ url, pid, workspacePath, serverId }). The stdio
7
+ * proxy (`stdio-proxy.ts`) reads that file and decides, per tool call, whether
8
+ * to forward to the live HTTP server (so writes go through BodyWriteCoordinator
9
+ * and merge into any open editor) or to fall back to an in-process server (safe:
10
+ * no server ⇒ no live editor to clobber).
11
+ *
12
+ * SECURITY (Codex-hardened):
13
+ * - The Bearer token is only ever sent to a LOOPBACK url. A non-loopback url in
14
+ * server.json is treated as "no server" — never trusted, never sent a token.
15
+ * - A 401/403 from the probe means "server present, auth rejected" → FAIL LOUD.
16
+ * We must NOT fall back to a local in-process write in that case, because a
17
+ * live editor may be open; a silent local write is the exact data-loss path
18
+ * this increment removes.
19
+ * - Identity is the serverId echo + workspacePath match, NOT team_name.
20
+ */
21
+ export interface ServerInfo {
22
+ /** Loopback HTTP base url, e.g. "http://127.0.0.1:3000" (no trailing slash). */
23
+ url: string;
24
+ /** PID of the serve process — primary staleness guard. */
25
+ pid: number;
26
+ /** Absolute workspace path the server is bound to. */
27
+ workspacePath: string;
28
+ /** Random per-boot id echoed by GET /api/server-info. */
29
+ serverId: string;
30
+ }
31
+ export type ProbeResult = {
32
+ mode: 'remote';
33
+ url: string;
34
+ serverId: string;
35
+ } | {
36
+ mode: 'local';
37
+ } | {
38
+ mode: 'fail';
39
+ reason: string;
40
+ };
41
+ /** Path to the discovery file for a workspace. */
42
+ export declare function serverInfoPath(workspacePath: string): string;
43
+ /**
44
+ * Atomically write the discovery file (tmp + rename, like SessionManager's
45
+ * pending-commits persistence) and make sure `server.json` is gitignored in
46
+ * `.studiograph/.gitignore` (covers workspaces created before this template
47
+ * change). Best-effort on the gitignore — a failure there never blocks serve.
48
+ */
49
+ export declare function writeServerInfo(workspacePath: string, info: ServerInfo): void;
50
+ /** Best-effort removal of the discovery file (called after server.close()). */
51
+ export declare function deleteServerInfo(workspacePath: string): void;
52
+ /** Read + parse the discovery file. Returns null on missing or malformed JSON. */
53
+ export declare function readServerInfo(workspacePath: string): ServerInfo | null;
54
+ /** Append `entry` to a `.gitignore` file if not already present (one per line). */
55
+ export declare function ensureGitignoreEntry(gitignorePath: string, entry: string): void;
56
+ /** True only for loopback hosts. The Bearer token is never sent elsewhere. */
57
+ export declare function isLoopbackUrl(url: string): boolean;
58
+ /** True if a process with `pid` exists (signal 0 probe). */
59
+ export declare function isPidAlive(pid: number): boolean;
60
+ export interface ProbeDeps {
61
+ fetchFn?: typeof fetch;
62
+ isPidAliveFn?: (pid: number) => boolean;
63
+ readInfoFn?: (workspacePath: string) => ServerInfo | null;
64
+ }
65
+ /**
66
+ * Decide whether the stdio proxy should forward to the live local server.
67
+ *
68
+ * Returns `remote` only when every identity check passes; `fail` only when the
69
+ * server is reachable but rejects our token (401/403); `local` for every other
70
+ * case (no file, dead pid, non-loopback, wrong workspace, connection refused,
71
+ * or a different server answering on the port).
72
+ */
73
+ export declare function probeServer(workspacePath: string, token: string, deps?: ProbeDeps): Promise<ProbeResult>;
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Local-server discovery for the stdio MCP proxy (Increment 1 of the unified
3
+ * multi-peer editing model — see ~/.claude/plans/indexed-stirring-turtle.md).
4
+ *
5
+ * When `studiograph serve` is running it writes `.studiograph/server.json`
6
+ * describing how to reach it ({ url, pid, workspacePath, serverId }). The stdio
7
+ * proxy (`stdio-proxy.ts`) reads that file and decides, per tool call, whether
8
+ * to forward to the live HTTP server (so writes go through BodyWriteCoordinator
9
+ * and merge into any open editor) or to fall back to an in-process server (safe:
10
+ * no server ⇒ no live editor to clobber).
11
+ *
12
+ * SECURITY (Codex-hardened):
13
+ * - The Bearer token is only ever sent to a LOOPBACK url. A non-loopback url in
14
+ * server.json is treated as "no server" — never trusted, never sent a token.
15
+ * - A 401/403 from the probe means "server present, auth rejected" → FAIL LOUD.
16
+ * We must NOT fall back to a local in-process write in that case, because a
17
+ * live editor may be open; a silent local write is the exact data-loss path
18
+ * this increment removes.
19
+ * - Identity is the serverId echo + workspacePath match, NOT team_name.
20
+ */
21
+ import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'fs';
22
+ import { join } from 'path';
23
+ /** Path to the discovery file for a workspace. */
24
+ export function serverInfoPath(workspacePath) {
25
+ return join(workspacePath, '.studiograph', 'server.json');
26
+ }
27
+ /**
28
+ * Atomically write the discovery file (tmp + rename, like SessionManager's
29
+ * pending-commits persistence) and make sure `server.json` is gitignored in
30
+ * `.studiograph/.gitignore` (covers workspaces created before this template
31
+ * change). Best-effort on the gitignore — a failure there never blocks serve.
32
+ */
33
+ export function writeServerInfo(workspacePath, info) {
34
+ const path = serverInfoPath(workspacePath);
35
+ const tmp = `${path}.tmp`;
36
+ writeFileSync(tmp, JSON.stringify(info, null, 2), 'utf-8');
37
+ renameSync(tmp, path);
38
+ try {
39
+ ensureGitignoreEntry(join(workspacePath, '.studiograph', '.gitignore'), 'server.json');
40
+ }
41
+ catch {
42
+ /* non-fatal — server.json is ephemeral; worst case it shows as untracked */
43
+ }
44
+ }
45
+ /** Best-effort removal of the discovery file (called after server.close()). */
46
+ export function deleteServerInfo(workspacePath) {
47
+ try {
48
+ unlinkSync(serverInfoPath(workspacePath));
49
+ }
50
+ catch {
51
+ /* already gone / never written */
52
+ }
53
+ }
54
+ /** Read + parse the discovery file. Returns null on missing or malformed JSON. */
55
+ export function readServerInfo(workspacePath) {
56
+ const path = serverInfoPath(workspacePath);
57
+ if (!existsSync(path))
58
+ return null;
59
+ try {
60
+ const raw = JSON.parse(readFileSync(path, 'utf-8'));
61
+ if (raw &&
62
+ typeof raw.url === 'string' &&
63
+ typeof raw.pid === 'number' &&
64
+ typeof raw.workspacePath === 'string' &&
65
+ typeof raw.serverId === 'string') {
66
+ return raw;
67
+ }
68
+ return null;
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ }
74
+ /** Append `entry` to a `.gitignore` file if not already present (one per line). */
75
+ export function ensureGitignoreEntry(gitignorePath, entry) {
76
+ if (existsSync(gitignorePath)) {
77
+ const content = readFileSync(gitignorePath, 'utf-8');
78
+ if (content.split('\n').some(line => line.trim() === entry))
79
+ return;
80
+ const sep = content.endsWith('\n') ? '' : '\n';
81
+ writeFileSync(gitignorePath, `${content}${sep}${entry}\n`);
82
+ }
83
+ else {
84
+ writeFileSync(gitignorePath, `${entry}\n`);
85
+ }
86
+ }
87
+ /** True only for loopback hosts. The Bearer token is never sent elsewhere. */
88
+ export function isLoopbackUrl(url) {
89
+ let host;
90
+ try {
91
+ host = new URL(url).hostname;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ // Node keeps the brackets on IPv6 hostnames ("[::1]") — strip them.
97
+ if (host.startsWith('[') && host.endsWith(']'))
98
+ host = host.slice(1, -1);
99
+ return host === '127.0.0.1' || host === 'localhost' || host === '::1';
100
+ }
101
+ /** True if a process with `pid` exists (signal 0 probe). */
102
+ export function isPidAlive(pid) {
103
+ if (!Number.isInteger(pid) || pid <= 0)
104
+ return false;
105
+ try {
106
+ process.kill(pid, 0);
107
+ return true;
108
+ }
109
+ catch (err) {
110
+ // EPERM = process exists but we can't signal it → still alive.
111
+ return err?.code === 'EPERM';
112
+ }
113
+ }
114
+ /**
115
+ * Decide whether the stdio proxy should forward to the live local server.
116
+ *
117
+ * Returns `remote` only when every identity check passes; `fail` only when the
118
+ * server is reachable but rejects our token (401/403); `local` for every other
119
+ * case (no file, dead pid, non-loopback, wrong workspace, connection refused,
120
+ * or a different server answering on the port).
121
+ */
122
+ export async function probeServer(workspacePath, token, deps = {}) {
123
+ const fetchFn = deps.fetchFn ?? fetch;
124
+ const pidAlive = deps.isPidAliveFn ?? isPidAlive;
125
+ const readInfo = deps.readInfoFn ?? readServerInfo;
126
+ const info = readInfo(workspacePath);
127
+ if (!info)
128
+ return { mode: 'local' };
129
+ if (!pidAlive(info.pid))
130
+ return { mode: 'local' };
131
+ if (!isLoopbackUrl(info.url))
132
+ return { mode: 'local' };
133
+ if (info.workspacePath !== workspacePath)
134
+ return { mode: 'local' };
135
+ let res;
136
+ try {
137
+ res = await fetchFn(`${info.url}/api/server-info`, {
138
+ headers: { Authorization: `Bearer ${token}` },
139
+ });
140
+ }
141
+ catch {
142
+ // ECONNREFUSED / DNS / abort → the pid is alive but isn't this server
143
+ // (pid reuse, or a server mid-shutdown). Treat as no server.
144
+ return { mode: 'local' };
145
+ }
146
+ if (res.status === 401 || res.status === 403) {
147
+ return { mode: 'fail', reason: `server rejected token (HTTP ${res.status})` };
148
+ }
149
+ if (!res.ok)
150
+ return { mode: 'local' };
151
+ let body;
152
+ try {
153
+ body = await res.json();
154
+ }
155
+ catch {
156
+ return { mode: 'local' };
157
+ }
158
+ if (body?.serverId !== info.serverId || body?.workspacePath !== workspacePath) {
159
+ // A different studiograph instance is answering on that port.
160
+ return { mode: 'local' };
161
+ }
162
+ return { mode: 'remote', url: info.url, serverId: info.serverId };
163
+ }
164
+ //# sourceMappingURL=server-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-discovery.js","sourceRoot":"","sources":["../../src/mcp/server-discovery.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,19 @@
14
14
  * log.error writes to stderr (via console.error under the hood), which
15
15
  * preserves the stdio-transport invariant.
16
16
  */
17
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
17
18
  import { WorkspaceManager } from '../core/workspace-manager.js';
18
- import { AuthService } from '../services/auth-service.js';
19
+ import { AuthService, type AuthUser } from '../services/auth-service.js';
19
20
  export declare function startMcpServer(workspaceManager: WorkspaceManager, authService: AuthService): Promise<void>;
21
+ export declare function resolveStdioUser(authService: AuthService): AuthUser | null;
22
+ /**
23
+ * Build an in-process MCP server (full tool surface, same as stdio/HTTP) and
24
+ * return a connected `Client` wired to it over an in-memory transport. Used by
25
+ * the stdio proxy as the LOCAL fallback when no live HTTP server is reachable —
26
+ * in that case there is no open editor, so a direct write is safe.
27
+ *
28
+ * Identity is the resolved per-user `STUDIOGRAPH_MCP_TOKEN`, threaded through
29
+ * `registerTools` exactly as the real stdio server does, so access control is
30
+ * identical on both upstreams.
31
+ */
32
+ export declare function createInProcessMcpClient(workspaceManager: WorkspaceManager, authService: AuthService, user: AuthUser): Promise<Client>;
@@ -16,6 +16,8 @@
16
16
  */
17
17
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
18
18
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
19
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
20
+ import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
19
21
  import { registerTools, MCP_SERVER_INFO, MCP_INSTRUCTIONS } from './tools.js';
20
22
  import { log } from '../utils/log.js';
21
23
  export async function startMcpServer(workspaceManager, authService) {
@@ -41,10 +43,29 @@ export async function startMcpServer(workspaceManager, authService) {
41
43
  process.exit(0);
42
44
  });
43
45
  }
44
- function resolveStdioUser(authService) {
46
+ export function resolveStdioUser(authService) {
45
47
  const token = process.env.STUDIOGRAPH_MCP_TOKEN?.trim();
46
48
  if (!token)
47
49
  return null;
48
50
  return authService.verifyApiToken(token) ?? authService.verifyToken(token);
49
51
  }
52
+ /**
53
+ * Build an in-process MCP server (full tool surface, same as stdio/HTTP) and
54
+ * return a connected `Client` wired to it over an in-memory transport. Used by
55
+ * the stdio proxy as the LOCAL fallback when no live HTTP server is reachable —
56
+ * in that case there is no open editor, so a direct write is safe.
57
+ *
58
+ * Identity is the resolved per-user `STUDIOGRAPH_MCP_TOKEN`, threaded through
59
+ * `registerTools` exactly as the real stdio server does, so access control is
60
+ * identical on both upstreams.
61
+ */
62
+ export async function createInProcessMcpClient(workspaceManager, authService, user) {
63
+ const server = new McpServer(MCP_SERVER_INFO, { instructions: MCP_INSTRUCTIONS });
64
+ registerTools(server, workspaceManager, authService, { user });
65
+ const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
66
+ await server.connect(serverTransport);
67
+ const client = new Client({ name: 'studiograph-stdio-proxy-local', version: '1.0.0' });
68
+ await client.connect(clientTransport);
69
+ return client;
70
+ }
50
71
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAkC,EAClC,WAAwB;IAExB,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uDAAuD;YACvD,0BAA0B;YAC1B,mDAAmD;YACnD,iDAAiD;YACjD,sCAAsC;YACtC,2CAA2C;YAC3C,iFAAiF,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAElF,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,GAAG,CAAC,KAAK,CAAC,uCAAuC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAEhE,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAwB;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAkC,EAClC,WAAwB;IAExB,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uDAAuD;YACvD,0BAA0B;YAC1B,mDAAmD;YACnD,iDAAiD;YACjD,sCAAsC;YACtC,2CAA2C;YAC3C,iFAAiF,CAClF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAElF,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,GAAG,CAAC,KAAK,CAAC,uCAAuC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAEhE,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,gBAAkC,EAClC,WAAwB,EACxB,IAAc;IAEd,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClF,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;IAChF,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC"}