@dsiloed/silo-link 1.5.4 → 1.6.4

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 (43) hide show
  1. package/README.md +41 -5
  2. package/dist/api/dsiloed-client.d.ts +0 -3
  3. package/dist/api/dsiloed-client.d.ts.map +1 -1
  4. package/dist/api/dsiloed-client.js.map +1 -1
  5. package/dist/cli/claude-md-block.d.ts +3 -1
  6. package/dist/cli/claude-md-block.d.ts.map +1 -1
  7. package/dist/cli/claude-md-block.js +37 -40
  8. package/dist/cli/claude-md-block.js.map +1 -1
  9. package/dist/cli/commands.d.ts.map +1 -1
  10. package/dist/cli/commands.js +45 -14
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/cli/daemon.d.ts +3 -3
  13. package/dist/cli/daemon.d.ts.map +1 -1
  14. package/dist/cli/daemon.js +12 -8
  15. package/dist/cli/daemon.js.map +1 -1
  16. package/dist/config/config-manager.d.ts +24 -0
  17. package/dist/config/config-manager.d.ts.map +1 -1
  18. package/dist/config/config-manager.js +168 -11
  19. package/dist/config/config-manager.js.map +1 -1
  20. package/dist/config/jwt-generator.d.ts +11 -6
  21. package/dist/config/jwt-generator.d.ts.map +1 -1
  22. package/dist/config/jwt-generator.js +20 -39
  23. package/dist/config/jwt-generator.js.map +1 -1
  24. package/dist/core/base-tmux-launcher.d.ts +13 -0
  25. package/dist/core/base-tmux-launcher.d.ts.map +1 -1
  26. package/dist/core/base-tmux-launcher.js +167 -22
  27. package/dist/core/base-tmux-launcher.js.map +1 -1
  28. package/dist/core/bridge.d.ts.map +1 -1
  29. package/dist/core/bridge.js +50 -11
  30. package/dist/core/bridge.js.map +1 -1
  31. package/dist/core/claude-launcher.d.ts +46 -0
  32. package/dist/core/claude-launcher.d.ts.map +1 -1
  33. package/dist/core/claude-launcher.js +259 -29
  34. package/dist/core/claude-launcher.js.map +1 -1
  35. package/dist/core/gemini-launcher.d.ts.map +1 -1
  36. package/dist/core/gemini-launcher.js +36 -13
  37. package/dist/core/gemini-launcher.js.map +1 -1
  38. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  39. package/dist/mcp/tools/register-tools.js +23 -18
  40. package/dist/mcp/tools/register-tools.js.map +1 -1
  41. package/dist/types/index.d.ts +4 -1
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/package.json +1 -1
@@ -25,6 +25,52 @@ export declare class ClaudeLauncher extends BaseTmuxLauncher {
25
25
  /** Wait 3s after ready for npx mcp-remote servers to finish connecting */
26
26
  protected getPostReadyDelayMs(): number;
27
27
  protected formatPrompt(prompt: string): string;
28
+ /**
29
+ * Pre-accept Claude Code's per-workspace gates for `cwd` so SiloLink-
30
+ * spawned tmux panes don't deadlock on prompts no human can answer.
31
+ *
32
+ * Two gates are pre-cleared idempotently in `~/.claude.json[projects][cwd]`:
33
+ *
34
+ * 1. **`hasTrustDialogAccepted`** — workspace trust dialog. CC shows
35
+ * "Do you trust this directory?" the first time it's invoked from a
36
+ * new cwd. `--dangerously-skip-permissions` does NOT bypass this;
37
+ * that flag governs *tool* permissions, not *workspace* trust.
38
+ *
39
+ * 2. **`enabledMcpjsonServers`** — project-scope MCP enablement list.
40
+ * When a `.mcp.json` exists in cwd, CC by default does NOT auto-enable
41
+ * its servers — they sit in a "pending approval" state and **all MCP
42
+ * loading (including user-scope!) appears suppressed** in the spawned
43
+ * session until approved. This is the gate that bit Vixen with
44
+ * "no mcp__portablemind__ tools" — the .mcp.json silolink wrote was
45
+ * sitting unapproved, and CC's response was to load 0 MCP tools at all.
46
+ * Pre-populate the list with the server names silolink registers.
47
+ *
48
+ * Per-directory only — does not weaken posture for any cwd silolink
49
+ * doesn't own. SiloLink only ever runs CC in cwds it controls
50
+ * (staging_path or `~/.silolink/worktrees/...`).
51
+ */
52
+ private ensureClaudeWorkspaceTrust;
53
+ /**
54
+ * Read MCP servers the user has configured at user-scope in ~/.claude.json
55
+ * and return only those whose name is in `config.forward_user_scope_mcp`,
56
+ * as `[name, addArgs]` pairs ready to be appended to
57
+ * `claude mcp add -s project ...`. Used by setupMcpConfig to forward the
58
+ * user's cross-tenant MCPs (e.g. portablemind) into the project-scope
59
+ * .mcp.json so they survive CC's "project file replaces user scope"
60
+ * behaviour in the spawned session.
61
+ *
62
+ * Any name listed in forward_user_scope_mcp that is missing from
63
+ * user-scope is logged as an error so the operator knows their config
64
+ * is incomplete — the agent's CC will then report "no mcp__<name>__*
65
+ * tools available" which the stuck-pane diagnostic also surfaces.
66
+ */
67
+ private readUserScopeForwardServers;
68
+ /**
69
+ * Extend the project entry's enabledMcpjsonServers list so additional
70
+ * server names (forwarded from user-scope) are auto-enabled in the
71
+ * spawned session. Idempotent.
72
+ */
73
+ private extendEnabledMcpjsonServers;
28
74
  protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null): Promise<void>;
29
75
  protected checkEnabled(): boolean;
30
76
  protected getWorkingDirectory(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-launcher.d.ts","sourceRoot":"","sources":["../../src/core/claude-launcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,YAAY,CAA6B;gBAG/C,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB;IAOrC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,4FAA4F;IAC5F,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAErC,0EAA0E;IAC1E,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAEvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAoD1C,sBAAsB,IAAI,MAAM,GAAG,IAAI;IAIvC;;OAEG;YACW,aAAa;IAe3B;;OAEG;cACsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAsG1C,IAAI,IAAI,IAAI;IAQrB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,gBAAgB;cAwCL,UAAU,CAC3B,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAgCrE,eAAe,IAAI,IAAI;CAMxB"}
1
+ {"version":3,"file":"claude-launcher.d.ts","sourceRoot":"","sources":["../../src/core/claude-launcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,YAAY,CAA6B;gBAG/C,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB;IAOrC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAa7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,4FAA4F;IAC5F,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAErC,0EAA0E;IAC1E,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAEvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,0BAA0B;IAgDlC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,2BAA2B;IA0DnC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;cAyBnB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA0G3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAiBvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IA2C1C,sBAAsB,IAAI,MAAM,GAAG,IAAI;IAIvC;;OAEG;YACW,aAAa;IAe3B;;OAEG;cACsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAsG1C,IAAI,IAAI,IAAI;IAQrB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,gBAAgB;cAwCL,UAAU,CAC3B,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAgCrE,eAAe,IAAI,IAAI;CAMxB"}
@@ -1,5 +1,7 @@
1
1
  import { execFileSync } from 'node:child_process';
2
- import jwt from 'jsonwebtoken';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
3
5
  import { BaseTmuxLauncher } from './base-tmux-launcher.js';
4
6
  /**
5
7
  * Claude Code implementation of the AgentLauncher interface.
@@ -21,7 +23,16 @@ export class ClaudeLauncher extends BaseTmuxLauncher {
21
23
  return this.config.claude_command || 'claude';
22
24
  }
23
25
  getArgs() {
24
- return ['--dangerously-skip-permissions'];
26
+ // Block recursive launches: a spawned session must NEVER be able to call
27
+ // launch_silolink_session_tool — it IS the worker, and re-dispatching
28
+ // creates a nested launch that goes nowhere. The dispatching agent (the
29
+ // one that called launch in the first place) runs server-side, not in a
30
+ // claude CLI, so this restriction doesn't affect it.
31
+ return [
32
+ '--dangerously-skip-permissions',
33
+ '--disallowedTools',
34
+ 'mcp__portablemind__launch_silolink_session_tool,mcp__silolink_server__launch_silolink_session_tool',
35
+ ];
25
36
  }
26
37
  getReadyIndicator() {
27
38
  return ['❯'];
@@ -33,13 +44,185 @@ export class ClaudeLauncher extends BaseTmuxLauncher {
33
44
  formatPrompt(prompt) {
34
45
  return prompt;
35
46
  }
47
+ /**
48
+ * Pre-accept Claude Code's per-workspace gates for `cwd` so SiloLink-
49
+ * spawned tmux panes don't deadlock on prompts no human can answer.
50
+ *
51
+ * Two gates are pre-cleared idempotently in `~/.claude.json[projects][cwd]`:
52
+ *
53
+ * 1. **`hasTrustDialogAccepted`** — workspace trust dialog. CC shows
54
+ * "Do you trust this directory?" the first time it's invoked from a
55
+ * new cwd. `--dangerously-skip-permissions` does NOT bypass this;
56
+ * that flag governs *tool* permissions, not *workspace* trust.
57
+ *
58
+ * 2. **`enabledMcpjsonServers`** — project-scope MCP enablement list.
59
+ * When a `.mcp.json` exists in cwd, CC by default does NOT auto-enable
60
+ * its servers — they sit in a "pending approval" state and **all MCP
61
+ * loading (including user-scope!) appears suppressed** in the spawned
62
+ * session until approved. This is the gate that bit Vixen with
63
+ * "no mcp__portablemind__ tools" — the .mcp.json silolink wrote was
64
+ * sitting unapproved, and CC's response was to load 0 MCP tools at all.
65
+ * Pre-populate the list with the server names silolink registers.
66
+ *
67
+ * Per-directory only — does not weaken posture for any cwd silolink
68
+ * doesn't own. SiloLink only ever runs CC in cwds it controls
69
+ * (staging_path or `~/.silolink/worktrees/...`).
70
+ */
71
+ ensureClaudeWorkspaceTrust(cwd) {
72
+ const claudeJsonPath = join(homedir(), '.claude.json');
73
+ let data = {};
74
+ try {
75
+ if (existsSync(claudeJsonPath)) {
76
+ const raw = readFileSync(claudeJsonPath, 'utf8');
77
+ if (raw.trim())
78
+ data = JSON.parse(raw);
79
+ }
80
+ }
81
+ catch (err) {
82
+ console.warn(`[ClaudeLauncher] Could not parse ${claudeJsonPath} — skipping pre-write: ${err}`);
83
+ return;
84
+ }
85
+ if (!data.projects || typeof data.projects !== 'object')
86
+ data.projects = {};
87
+ const existing = data.projects[cwd] || {};
88
+ // Names of MCP servers silolink writes to <cwd>/.mcp.json — must match
89
+ // setupMcpConfig's `servers` list. Kept in sync by code review; if a
90
+ // future server is added there, add it here too.
91
+ const SILO_PROJECT_MCP_SERVERS = ['silolink', 'silolink_server'];
92
+ const currentEnabled = Array.isArray(existing.enabledMcpjsonServers) ? existing.enabledMcpjsonServers : [];
93
+ const mergedEnabled = Array.from(new Set([...currentEnabled, ...SILO_PROJECT_MCP_SERVERS]));
94
+ const trustOk = existing.hasTrustDialogAccepted === true;
95
+ const mcpOk = SILO_PROJECT_MCP_SERVERS.every(s => currentEnabled.includes(s));
96
+ if (trustOk && mcpOk)
97
+ return; // nothing to write
98
+ data.projects[cwd] = {
99
+ ...existing,
100
+ hasTrustDialogAccepted: true,
101
+ enabledMcpjsonServers: mergedEnabled,
102
+ };
103
+ try {
104
+ writeFileSync(claudeJsonPath, JSON.stringify(data, null, 2), { encoding: 'utf8', mode: 0o600 });
105
+ console.log(`[ClaudeLauncher] Pre-accepted CC trust + project-scope MCPs for ${cwd}`);
106
+ }
107
+ catch (err) {
108
+ console.warn(`[ClaudeLauncher] Failed to write CC project state to ${claudeJsonPath}: ${err}`);
109
+ }
110
+ }
111
+ /**
112
+ * Read MCP servers the user has configured at user-scope in ~/.claude.json
113
+ * and return only those whose name is in `config.forward_user_scope_mcp`,
114
+ * as `[name, addArgs]` pairs ready to be appended to
115
+ * `claude mcp add -s project ...`. Used by setupMcpConfig to forward the
116
+ * user's cross-tenant MCPs (e.g. portablemind) into the project-scope
117
+ * .mcp.json so they survive CC's "project file replaces user scope"
118
+ * behaviour in the spawned session.
119
+ *
120
+ * Any name listed in forward_user_scope_mcp that is missing from
121
+ * user-scope is logged as an error so the operator knows their config
122
+ * is incomplete — the agent's CC will then report "no mcp__<name>__*
123
+ * tools available" which the stuck-pane diagnostic also surfaces.
124
+ */
125
+ readUserScopeForwardServers() {
126
+ const out = [];
127
+ const wantList = Array.isArray(this.config.forward_user_scope_mcp)
128
+ ? this.config.forward_user_scope_mcp
129
+ : [];
130
+ if (wantList.length === 0)
131
+ return out;
132
+ const claudeJsonPath = join(homedir(), '.claude.json');
133
+ if (!existsSync(claudeJsonPath)) {
134
+ console.error(`[ClaudeLauncher] forward_user_scope_mcp is set but ${claudeJsonPath} does not exist — none of [${wantList.join(', ')}] will be forwarded into the spawned session.`);
135
+ return out;
136
+ }
137
+ let data = {};
138
+ try {
139
+ const raw = readFileSync(claudeJsonPath, 'utf8').trim();
140
+ if (raw)
141
+ data = JSON.parse(raw);
142
+ }
143
+ catch (err) {
144
+ console.error(`[ClaudeLauncher] forward_user_scope_mcp set but ${claudeJsonPath} could not be parsed: ${err}`);
145
+ return out;
146
+ }
147
+ const userServers = data.mcpServers || {};
148
+ const want = new Set(wantList);
149
+ // Loop over the list (not the user's config) so a missing entry is
150
+ // logged loudly instead of silently absent.
151
+ for (const name of wantList) {
152
+ const cfg = userServers[name];
153
+ if (!cfg) {
154
+ console.error(`[ClaudeLauncher] forward_user_scope_mcp lists '${name}' but no such MCP server exists in user-scope ${claudeJsonPath}[mcpServers]. Add it via 'claude mcp add -s user ${name} -- <command> <args...>' (or the matching JSON entry) before relaunching the daemon. Spawned CC will not have mcp__${name}__* tools available.`);
155
+ continue;
156
+ }
157
+ // Only stdio-style servers translate cleanly back into CLI args.
158
+ if (typeof cfg !== 'object')
159
+ continue;
160
+ if (cfg.type && cfg.type !== 'stdio') {
161
+ console.warn(`[ClaudeLauncher] Skipping forward of '${name}' — unsupported server type '${cfg.type}'.`);
162
+ continue;
163
+ }
164
+ if (typeof cfg.command !== 'string') {
165
+ console.warn(`[ClaudeLauncher] Skipping forward of '${name}' — no 'command' field.`);
166
+ continue;
167
+ }
168
+ const cmdArgs = ['--', cfg.command, ...(Array.isArray(cfg.args) ? cfg.args : [])];
169
+ out.push([name, cmdArgs]);
170
+ }
171
+ // Defensive: warn (don't fail) if the user listed silolink/silolink_server
172
+ // — those are always written fresh by silolink itself, forwarding them
173
+ // would clobber the per-env JWT.
174
+ for (const name of wantList) {
175
+ if (name === 'silolink' || name === 'silolink_server') {
176
+ console.warn(`[ClaudeLauncher] Refusing to forward '${name}' — silolink writes those fresh per-env. Remove from forward_user_scope_mcp.`);
177
+ }
178
+ }
179
+ void want; // silence unused warning if linter cares
180
+ return out.filter(([n]) => n !== 'silolink' && n !== 'silolink_server');
181
+ }
182
+ /**
183
+ * Extend the project entry's enabledMcpjsonServers list so additional
184
+ * server names (forwarded from user-scope) are auto-enabled in the
185
+ * spawned session. Idempotent.
186
+ */
187
+ extendEnabledMcpjsonServers(cwd, names) {
188
+ const claudeJsonPath = join(homedir(), '.claude.json');
189
+ let data = {};
190
+ try {
191
+ if (existsSync(claudeJsonPath)) {
192
+ const raw = readFileSync(claudeJsonPath, 'utf8').trim();
193
+ if (raw)
194
+ data = JSON.parse(raw);
195
+ }
196
+ }
197
+ catch {
198
+ return;
199
+ }
200
+ if (!data.projects)
201
+ data.projects = {};
202
+ const ent = data.projects[cwd] || {};
203
+ const existing = Array.isArray(ent.enabledMcpjsonServers) ? ent.enabledMcpjsonServers : [];
204
+ const merged = Array.from(new Set([...existing, ...names]));
205
+ if (merged.length === existing.length)
206
+ return; // nothing new
207
+ data.projects[cwd] = { ...ent, enabledMcpjsonServers: merged };
208
+ try {
209
+ writeFileSync(claudeJsonPath, JSON.stringify(data, null, 2), { encoding: 'utf8', mode: 0o600 });
210
+ console.log(`[ClaudeLauncher] Pre-enabled forwarded MCP servers for ${cwd}: ${names.join(', ')}`);
211
+ }
212
+ catch (err) {
213
+ console.warn(`[ClaudeLauncher] Failed to extend enabledMcpjsonServers for ${cwd}: ${err}`);
214
+ }
215
+ }
36
216
  async setupMcpConfig(cwd, toolAllowlist) {
37
- // Generate a JWT for the dsiloed MCP server
38
- const token = jwt.sign({
39
- sub: this.config.user_sub,
40
- iat: Math.floor(Date.now() / 1000),
41
- tenant_enterprise_identifier: this.config.tenant_id,
42
- }, this.config.shared_key, { algorithm: 'HS256', expiresIn: '24h' });
217
+ // Pre-accept the per-workspace trust dialog so the upcoming `claude mcp add`
218
+ // calls (and the eventual session launch) don't deadlock on an interactive
219
+ // prompt no human can answer.
220
+ this.ensureClaudeWorkspaceTrust(cwd);
221
+ // Use the long-lived JWT minted at `silolink config` time.
222
+ const token = this.config.jwt;
223
+ if (!token) {
224
+ throw new Error('No JWT in config. Run "silolink config" to log in.');
225
+ }
43
226
  // Build the dsiloed MCP URL pointing to the same server SiloLink connects to
44
227
  let dsiloedUrl = `${this.config.host}/api/v1/mcp?categories=data,admin,conversation,utility`;
45
228
  if (toolAllowlist && toolAllowlist.length > 0) {
@@ -64,26 +247,68 @@ export class ClaudeLauncher extends BaseTmuxLauncher {
64
247
  ],
65
248
  },
66
249
  ];
250
+ // CC 2.1.x quirk: when a project-scope .mcp.json is present in cwd,
251
+ // CC stops merging in user-scope mcpServers from ~/.claude.json — the
252
+ // project file becomes the sole source of truth for that session. So
253
+ // any server we want available in the spawned CC has to be in the
254
+ // project file, even if the user already has it user-scope.
255
+ //
256
+ // Concretely: the user keeps `portablemind` (or other cross-tenant
257
+ // MCPs they want every CC to inherit) at user-scope. We don't own
258
+ // that JWT and don't want to. But we DO need to copy each entry into
259
+ // our project-scope .mcp.json so the spawned session sees it.
260
+ //
261
+ // Read user-scope mcpServers (excluding the silolink/silolink_server
262
+ // names we're writing fresh) and forward them into project scope.
263
+ const userScopeServers = this.readUserScopeForwardServers();
264
+ for (const [name, args] of userScopeServers) {
265
+ servers.push({ name, args });
266
+ }
267
+ // Pre-enable any forwarded server names too, so the project-scope
268
+ // approval gate doesn't block them. ensureClaudeWorkspaceTrust pre-
269
+ // populates silolink + silolink_server; do the rest here.
270
+ if (userScopeServers.length > 0) {
271
+ this.extendEnabledMcpjsonServers(cwd, userScopeServers.map(([n]) => n));
272
+ }
273
+ // Project-scope MCP registration (was user-scope).
274
+ //
275
+ // User-scope put one shared `silolink_server` slot in ~/.claude.json that
276
+ // every silolink env stomped on — whichever agent launched a CC last won
277
+ // the JWT, and any other agent's CC inherited the wrong identity. With
278
+ // project scope each cwd gets its own .mcp.json, and per-env staging dirs
279
+ // (see getWorkingDirectory) plus per-ticket worktrees mean each agent's
280
+ // CC has exactly one silolink_server with the correct JWT.
281
+ //
282
+ // Best-effort cleanup of any pre-existing user-scope entries with the
283
+ // same names so they don't shadow / duplicate the project-scope ones in
284
+ // CC's tool list (one of two reasons we got bit: the stale user-scope
285
+ // entry kept advertising itself even after we'd written a fresh project
286
+ // entry).
287
+ try {
288
+ execFileSync('claude', ['mcp', 'remove', '-s', 'user', 'silolink'], { cwd, stdio: 'pipe', timeout: 5000 });
289
+ }
290
+ catch { /* may not exist */ }
291
+ try {
292
+ execFileSync('claude', ['mcp', 'remove', '-s', 'user', 'silolink_server'], { cwd, stdio: 'pipe', timeout: 5000 });
293
+ }
294
+ catch { /* may not exist */ }
67
295
  for (const server of servers) {
68
296
  try {
69
- execFileSync('claude', ['mcp', 'add', '-s', 'user', server.name, ...server.args], {
297
+ execFileSync('claude', ['mcp', 'add', '-s', 'project', server.name, ...server.args], {
70
298
  cwd,
71
299
  stdio: 'pipe',
72
300
  timeout: 10000,
73
301
  });
74
302
  }
75
303
  catch {
76
- // Server may already exist at user or project scope — remove both and re-add at user scope
304
+ // Server may already exist at project scope — remove and re-add so
305
+ // the JWT/URL refresh sticks.
77
306
  try {
78
- try {
79
- execFileSync('claude', ['mcp', 'remove', '-s', 'user', server.name], { cwd, stdio: 'pipe', timeout: 5000 });
80
- }
81
- catch { /* may not exist */ }
82
307
  try {
83
308
  execFileSync('claude', ['mcp', 'remove', '-s', 'project', server.name], { cwd, stdio: 'pipe', timeout: 5000 });
84
309
  }
85
310
  catch { /* may not exist */ }
86
- execFileSync('claude', ['mcp', 'add', '-s', 'user', server.name, ...server.args], {
311
+ execFileSync('claude', ['mcp', 'add', '-s', 'project', server.name, ...server.args], {
87
312
  cwd,
88
313
  stdio: 'pipe',
89
314
  timeout: 10000,
@@ -94,13 +319,27 @@ export class ClaudeLauncher extends BaseTmuxLauncher {
94
319
  }
95
320
  }
96
321
  }
97
- console.log(`[ClaudeLauncher] Registered MCP servers for ${cwd} (host: ${this.config.host})`);
322
+ console.log(`[ClaudeLauncher] Registered project-scope MCP servers in ${cwd} (host: ${this.config.host})`);
98
323
  }
99
324
  checkEnabled() {
100
325
  return !!(this.config.claude_command && this.config.projects_path);
101
326
  }
102
327
  getWorkingDirectory() {
103
- return this.config.projects_path || process.cwd();
328
+ // Prefer the per-env staging_path so each agent's CC sees its own
329
+ // project-scoped MCP config (silolink + silolink_server JWT scoped to
330
+ // *this* env, not whichever env wrote user-scope last). projects_path
331
+ // remains the parent dir for worktrees.
332
+ const cwd = this.config.staging_path || this.config.projects_path || process.cwd();
333
+ if (this.config.staging_path && !existsSync(cwd)) {
334
+ try {
335
+ mkdirSync(cwd, { recursive: true });
336
+ console.log(`[ClaudeLauncher] Created staging dir ${cwd}`);
337
+ }
338
+ catch (err) {
339
+ console.warn(`[ClaudeLauncher] Failed to create staging dir ${cwd}: ${err}`);
340
+ }
341
+ }
342
+ return cwd;
104
343
  }
105
344
  isAutoRespawnConfigured() {
106
345
  return !!this.config.claude_auto_respawn;
@@ -144,25 +383,16 @@ export class ClaudeLauncher extends BaseTmuxLauncher {
144
383
  : `{${agentIdParam ? agentIdParam.substring(2) : ''}}`;
145
384
  this.pendingLlmAgentId = null;
146
385
  const triggerLine = this.pendingTriggerMessage
147
- ? `\n\nThe user's latest message (which triggered this session restart): "${this.pendingTriggerMessage}"\nAddress this message AFTER loading context. Do NOT ask the user to repeat themselves.`
386
+ ? `Pending user message (address after load_context): "${this.pendingTriggerMessage}"`
148
387
  : '';
149
388
  this.pendingTriggerMessage = null;
150
389
  return {
151
390
  prompt: [
152
- `Call mcp__silolink__remote_register with these exact parameters: ${registerParams}. After registering, call remote_load_context() to load the prior conversation history. Review all returned messages to understand what was discussed. Then send a remote_notify telling the user you are continuing where the last session left off. Then enter the poll loop using remote_poll. See CLAUDE.md for the poll loop pattern.`,
153
- '',
154
- 'Context: This is a new session replacing a previous one that ended.',
155
- 'Before entering the poll loop:',
156
- '1. Call remote_load_context() and review the conversation history',
157
- '2. Check your memory files for additional context on recent work',
158
- '3. Send a remote_notify summarizing what you loaded and confirming you are ready',
159
- '4. Process the user\'s pending message (if any) before entering the poll loop',
160
- '',
161
- 'CRITICAL: The user is NOT watching the terminal. You MUST send a remote_notify progress update after EVERY major step (file edits, commits, merges, deploys, errors). Do not go silent while working.',
391
+ `Fresh session (no resume). Call mcp__silolink__remote_register with ${registerParams}, then follow the SiloLink section in CLAUDE.md (call remote_load_context once, then enter the poll loop).`,
162
392
  triggerLine,
163
393
  agentContext,
164
394
  workspaceContext,
165
- ].join('\n'),
395
+ ].filter(Boolean).join('\n'),
166
396
  extraArgs,
167
397
  };
168
398
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-launcher.js","sourceRoot":"","sources":["../../src/core/claude-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-launcher.js","sourceRoot":"","sources":["../../src/core/claude-launcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-launcher.d.ts","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBAEhD,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB;IAOrC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAKjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IA2C1C;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}
1
+ {"version":3,"file":"gemini-launcher.d.ts","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBAEhD,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB;IAOrC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAKjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAgBvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAItC,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAyC1C;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -1,6 +1,5 @@
1
1
  import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import jwt from 'jsonwebtoken';
4
3
  import { BaseTmuxLauncher } from './base-tmux-launcher.js';
5
4
  /**
6
5
  * Gemini CLI implementation of the AgentLauncher interface.
@@ -29,8 +28,11 @@ export class GeminiLauncher extends BaseTmuxLauncher {
29
28
  return this.adaptPromptForGemini(prompt);
30
29
  }
31
30
  async setupMcpConfig(cwd, toolAllowlist) {
32
- // Generate a JWT for the dsiloed MCP server
33
- const token = jwt.sign({ sub: this.config.user_sub, iat: Math.floor(Date.now() / 1000) }, this.config.shared_key, { algorithm: 'HS256', expiresIn: '24h' });
31
+ // Use the long-lived JWT minted at `silolink config` time.
32
+ const token = this.config.jwt;
33
+ if (!token) {
34
+ throw new Error('No JWT in config. Run "silolink config" to log in.');
35
+ }
34
36
  // Build the dsiloed MCP URL pointing to the same server SiloLink connects to
35
37
  let dsiloedUrl = `${this.config.host}/api/v1/mcp?categories=data,admin,conversation,utility`;
36
38
  if (toolAllowlist && toolAllowlist.length > 0) {
@@ -38,8 +40,18 @@ export class GeminiLauncher extends BaseTmuxLauncher {
38
40
  url.searchParams.set('tools', toolAllowlist.join(','));
39
41
  dsiloedUrl = url.toString();
40
42
  }
41
- // Register both MCP servers in Gemini's global config (~/.gemini/settings.json)
42
- const geminiDir = join(process.env.HOME || '', '.gemini');
43
+ // Write to <cwd>/.gemini/settings.json (per-project) rather than the
44
+ // global ~/.gemini/settings.json. ClaudeLauncher had the same shape
45
+ // problem — one shared user-scope slot per server name meant whichever
46
+ // env launched a session last won the JWT, and any sibling agent's
47
+ // CLI inherited the wrong identity. ClaudeLauncher fixed this by
48
+ // moving to project scope (<cwd>/.mcp.json) plus a per-env staging
49
+ // cwd; this mirrors that fix on the Gemini side. If a Gemini CLI
50
+ // version doesn't honor a per-project settings.json, this still works
51
+ // because the per-env staging cwd means each env owns its own .gemini
52
+ // dir — no cross-agent collision regardless of which file Gemini ends
53
+ // up reading.
54
+ const geminiDir = join(cwd, '.gemini');
43
55
  const geminiSettingsPath = join(geminiDir, 'settings.json');
44
56
  try {
45
57
  let settings = {};
@@ -64,10 +76,10 @@ export class GeminiLauncher extends BaseTmuxLauncher {
64
76
  settings.mcpServers = mcpServers;
65
77
  mkdirSync(geminiDir, { recursive: true });
66
78
  writeFileSync(geminiSettingsPath, JSON.stringify(settings, null, 2));
67
- console.log(`[GeminiLauncher] Configured MCP servers in ~/.gemini/settings.json (host: ${this.config.host})`);
79
+ console.log(`[GeminiLauncher] Configured per-cwd MCP servers in ${geminiSettingsPath} (host: ${this.config.host})`);
68
80
  }
69
81
  catch (err) {
70
- console.error(`[GeminiLauncher] Failed to configure ~/.gemini/settings.json: ${err}`);
82
+ console.error(`[GeminiLauncher] Failed to configure ${geminiSettingsPath}: ${err}`);
71
83
  }
72
84
  }
73
85
  checkEnabled() {
@@ -75,7 +87,20 @@ export class GeminiLauncher extends BaseTmuxLauncher {
75
87
  return !!workDir;
76
88
  }
77
89
  getWorkingDirectory() {
78
- return this.config.projects_path || process.cwd();
90
+ // Mirror ClaudeLauncher: prefer per-env staging_path so each agent
91
+ // gets its own cwd-isolated MCP config. projects_path stays the
92
+ // parent dir for worktrees.
93
+ const cwd = this.config.staging_path || this.config.projects_path || process.cwd();
94
+ if (this.config.staging_path && !existsSync(cwd)) {
95
+ try {
96
+ mkdirSync(cwd, { recursive: true });
97
+ console.log(`[GeminiLauncher] Created staging dir ${cwd}`);
98
+ }
99
+ catch (err) {
100
+ console.warn(`[GeminiLauncher] Failed to create staging dir ${cwd}: ${err}`);
101
+ }
102
+ }
103
+ return cwd;
79
104
  }
80
105
  isAutoRespawnConfigured() {
81
106
  return !!this.config.gemini_auto_respawn;
@@ -117,18 +142,16 @@ export class GeminiLauncher extends BaseTmuxLauncher {
117
142
  ? `{ "conversation_id": ${conversationId}${agentIdParam} }`
118
143
  : `{${agentIdParam ? agentIdParam.substring(2) : ''}}`;
119
144
  const triggerLine = this.pendingTriggerMessage
120
- ? `\n\nThe user's latest message: "${this.pendingTriggerMessage}"\nAddress this AFTER loading context.`
145
+ ? `Pending user message (address after load_context): "${this.pendingTriggerMessage}"`
121
146
  : '';
122
147
  this.pendingTriggerMessage = null;
123
148
  return {
124
149
  prompt: [
125
- `Call silolink_remote_register with these exact parameters: ${registerParams}. After registering, call silolink_remote_load_context() to load prior conversation history. Then send a silolink_remote_notify telling the user you are continuing. Then enter the poll loop using silolink_remote_poll.`,
126
- '',
127
- 'CRITICAL: The user is NOT watching the terminal. You MUST send a silolink_remote_notify progress update after EVERY major step.',
150
+ `Fresh session (no resume). Call silolink_remote_register with ${registerParams}, then follow the SiloLink section in GEMINI.md (call silolink_remote_load_context once, then enter the poll loop).`,
128
151
  triggerLine,
129
152
  agentContext,
130
153
  workspaceContext,
131
- ].join('\n'),
154
+ ].filter(Boolean).join('\n'),
132
155
  extraArgs,
133
156
  };
134
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-launcher.js","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-launcher.js","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"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"}