@dsiloed/silo-link 1.0.6 → 1.2.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.
Files changed (53) hide show
  1. package/README.md +67 -2
  2. package/dist/cable/action-cable-client.d.ts +5 -0
  3. package/dist/cable/action-cable-client.d.ts.map +1 -1
  4. package/dist/cable/action-cable-client.js +14 -0
  5. package/dist/cable/action-cable-client.js.map +1 -1
  6. package/dist/cable/subscription-manager.d.ts.map +1 -1
  7. package/dist/cable/subscription-manager.js +23 -5
  8. package/dist/cable/subscription-manager.js.map +1 -1
  9. package/dist/cli/claude-md-block.d.ts +6 -0
  10. package/dist/cli/claude-md-block.d.ts.map +1 -0
  11. package/dist/cli/claude-md-block.js +84 -0
  12. package/dist/cli/claude-md-block.js.map +1 -0
  13. package/dist/cli/commands.d.ts.map +1 -1
  14. package/dist/cli/commands.js +80 -1
  15. package/dist/cli/commands.js.map +1 -1
  16. package/dist/core/agent-launcher.d.ts +101 -0
  17. package/dist/core/agent-launcher.d.ts.map +1 -0
  18. package/dist/core/agent-launcher.js +2 -0
  19. package/dist/core/agent-launcher.js.map +1 -0
  20. package/dist/core/bridge.d.ts +1 -0
  21. package/dist/core/bridge.d.ts.map +1 -1
  22. package/dist/core/bridge.js +105 -2
  23. package/dist/core/bridge.js.map +1 -1
  24. package/dist/core/claude-launcher.d.ts +50 -5
  25. package/dist/core/claude-launcher.d.ts.map +1 -1
  26. package/dist/core/claude-launcher.js +238 -13
  27. package/dist/core/claude-launcher.js.map +1 -1
  28. package/dist/core/gemini-launcher.d.ts +32 -0
  29. package/dist/core/gemini-launcher.d.ts.map +1 -0
  30. package/dist/core/gemini-launcher.js +55 -0
  31. package/dist/core/gemini-launcher.js.map +1 -0
  32. package/dist/core/launcher-factory.d.ts +13 -0
  33. package/dist/core/launcher-factory.d.ts.map +1 -0
  34. package/dist/core/launcher-factory.js +24 -0
  35. package/dist/core/launcher-factory.js.map +1 -0
  36. package/dist/core/openai-launcher.d.ts +36 -0
  37. package/dist/core/openai-launcher.d.ts.map +1 -0
  38. package/dist/core/openai-launcher.js +59 -0
  39. package/dist/core/openai-launcher.js.map +1 -0
  40. package/dist/core/workspace-manager.d.ts +65 -0
  41. package/dist/core/workspace-manager.d.ts.map +1 -0
  42. package/dist/core/workspace-manager.js +299 -0
  43. package/dist/core/workspace-manager.js.map +1 -0
  44. package/dist/mcp/server.d.ts +2 -0
  45. package/dist/mcp/server.d.ts.map +1 -1
  46. package/dist/mcp/server.js.map +1 -1
  47. package/dist/mcp/tools/register-tools.d.ts +2 -0
  48. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  49. package/dist/mcp/tools/register-tools.js +253 -3
  50. package/dist/mcp/tools/register-tools.js.map +1 -1
  51. package/dist/types/index.d.ts +28 -0
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  /**
3
- * Manages Claude Code child processes.
3
+ * Claude Code implementation of the AgentLauncher interface.
4
4
  *
5
5
  * Strategy:
6
6
  * - For SiloLink-spawned sessions: nudge via stdin when idle (preserves context)
@@ -13,8 +13,10 @@ export class ClaudeLauncher {
13
13
  config;
14
14
  sessionManager;
15
15
  dsiloedClient;
16
+ workspaceManager;
16
17
  childProcess = null;
17
18
  tmuxSessions = new Map(); // tmuxName -> conversationId
19
+ tmuxSessionWorkspaces = new Map(); // tmuxName -> sessionId (for worktree cleanup)
18
20
  tmuxMonitorTimer = null;
19
21
  idleCheckTimer = null;
20
22
  launchingConversations = new Set();
@@ -27,11 +29,14 @@ export class ClaudeLauncher {
27
29
  lastClaudeSessionId = null;
28
30
  // Message that triggered the current launch (included in prompt for context)
29
31
  pendingTriggerMessage = null;
30
- constructor(config, sessionManager, dsiloedClient, messageQueue) {
32
+ // Workspace config for the next launch (set by control channel or API)
33
+ pendingWorkspaceConfig = null;
34
+ constructor(config, sessionManager, dsiloedClient, messageQueue, workspaceManager) {
31
35
  this.config = config;
32
36
  this.sessionManager = sessionManager;
33
37
  this.dsiloedClient = dsiloedClient || null;
34
38
  this.messageQueue = messageQueue || null;
39
+ this.workspaceManager = workspaceManager || null;
35
40
  this.enabled = !!(config.claude_command && config.claude_working_directory);
36
41
  }
37
42
  isEnabled() {
@@ -68,8 +73,9 @@ export class ClaudeLauncher {
68
73
  }
69
74
  /**
70
75
  * Launch a new Claude Code session. Uses --resume if a previous session ID is available.
76
+ * This is the internal launch method — use launchAgent() for the AgentLauncher interface.
71
77
  */
72
- async launch(reason = 'manual', conversationId) {
78
+ async launchInternal(reason = 'manual', conversationId) {
73
79
  if (!this.enabled) {
74
80
  console.log('[ClaudeLauncher] Not configured — set claude_command and claude_working_directory in config');
75
81
  return false;
@@ -82,14 +88,39 @@ export class ClaudeLauncher {
82
88
  this.launchingConversations.add(convKey);
83
89
  try {
84
90
  const command = this.config.claude_command || 'claude';
85
- const cwd = this.config.claude_working_directory || process.cwd();
91
+ let cwd = this.config.claude_working_directory || process.cwd();
86
92
  const args = ['--dangerously-skip-permissions'];
93
+ // Create a worktree if workspace config is provided
94
+ let workspaceSessionId = null;
95
+ let workspaceBranch = null;
96
+ const wsConfig = this.pendingWorkspaceConfig;
97
+ this.pendingWorkspaceConfig = null;
98
+ if (wsConfig && this.workspaceManager) {
99
+ // Use a temporary session ID for the worktree (will be updated when Claude registers)
100
+ workspaceSessionId = `tmux-${Date.now()}`;
101
+ workspaceBranch = wsConfig.branch;
102
+ try {
103
+ const workspace = this.workspaceManager.createWorktree(workspaceSessionId, wsConfig.repoPath, wsConfig.branch, wsConfig.baseBranch || 'development');
104
+ cwd = workspace.worktreePath;
105
+ console.log(`[ClaudeLauncher] Created worktree at ${cwd} (branch: ${wsConfig.branch})`);
106
+ }
107
+ catch (err) {
108
+ console.error(`[ClaudeLauncher] Failed to create worktree: ${err}`);
109
+ // Fall back to normal cwd
110
+ workspaceSessionId = null;
111
+ workspaceBranch = null;
112
+ }
113
+ }
87
114
  let prompt;
115
+ // Build workspace context string for inclusion in prompts
116
+ const workspaceContext = workspaceSessionId
117
+ ? `\n\nWORKSPACE: You are working in an isolated git worktree at "${cwd}" on branch "${workspaceBranch}". This is separate from the main repo — your changes won't affect other sessions. Use remote_workspace_claim to claim files before editing, and remote_workspace_check to see what other sessions are working on.`
118
+ : '';
88
119
  // Try to resume previous session if we have an ID
89
120
  if (this.lastClaudeSessionId && (reason === 'process-exit' || reason === 'inbound-message')) {
90
121
  args.push('--resume', this.lastClaudeSessionId);
91
122
  console.log(`[ClaudeLauncher] Resuming session: ${this.lastClaudeSessionId}`);
92
- prompt = 'Continue polling SiloLink for messages. Check memory for context if needed.';
123
+ prompt = 'Continue polling SiloLink for messages. Check memory for context if needed.' + workspaceContext;
93
124
  }
94
125
  else {
95
126
  if (reason === 'process-exit' || reason === 'inbound-message') {
@@ -112,16 +143,19 @@ export class ClaudeLauncher {
112
143
  '',
113
144
  '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.',
114
145
  triggerLine,
146
+ workspaceContext,
115
147
  ].join('\n');
116
148
  }
117
149
  else {
118
- prompt = this.config.claude_session_prompt ||
119
- 'Register with SiloLink as "portablemind" and enter the poll loop.';
150
+ prompt = (this.config.claude_session_prompt ||
151
+ 'Register with SiloLink as "portablemind" and enter the poll loop.') + workspaceContext;
120
152
  }
121
153
  }
122
154
  console.log(`[ClaudeLauncher] Launching Claude Code via tmux (reason: ${reason})`);
123
155
  console.log(` Command: ${command} ${args.join(' ')}`);
124
156
  console.log(` Working directory: ${cwd}`);
157
+ if (workspaceBranch)
158
+ console.log(` Workspace branch: ${workspaceBranch}`);
125
159
  console.log(` Prompt: ${prompt.substring(0, 100)}...`);
126
160
  const tmuxSession = `silolink-claude-${Date.now()}`;
127
161
  // Create a new tmux session running Claude Code in a real TTY
@@ -146,10 +180,17 @@ export class ClaudeLauncher {
146
180
  });
147
181
  if (!sessionExists) {
148
182
  console.error(`[ClaudeLauncher] tmux session ${tmuxSession} failed to start`);
183
+ // Clean up worktree if we created one
184
+ if (workspaceSessionId && this.workspaceManager) {
185
+ this.workspaceManager.removeWorktree(workspaceSessionId);
186
+ }
149
187
  return false;
150
188
  }
151
189
  console.log(`[ClaudeLauncher] tmux session "${tmuxSession}" created`);
152
190
  this.tmuxSessions.set(tmuxSession, conversationId || 0);
191
+ if (workspaceSessionId) {
192
+ this.tmuxSessionWorkspaces.set(tmuxSession, workspaceSessionId);
193
+ }
153
194
  // Send the prompt to Claude via tmux send-keys after MCP servers initialize
154
195
  const sessionToPrompt = tmuxSession;
155
196
  const promptToSend = prompt;
@@ -197,6 +238,13 @@ export class ClaudeLauncher {
197
238
  }
198
239
  }
199
240
  }
241
+ /**
242
+ * Set workspace configuration for the next launch.
243
+ * The worktree will be created when launch() is called.
244
+ */
245
+ setWorkspaceConfig(config) {
246
+ this.pendingWorkspaceConfig = config;
247
+ }
200
248
  /**
201
249
  * Called when an inbound message arrives and no active session can handle it.
202
250
  * @param triggerMessage - Content of the message that triggered the launch (included in prompt)
@@ -214,7 +262,7 @@ export class ClaudeLauncher {
214
262
  }
215
263
  // Store trigger message so the launch prompt can include it
216
264
  this.pendingTriggerMessage = triggerMessage || null;
217
- return this.launch('inbound-message', conversationId);
265
+ return this.launchInternal('inbound-message', conversationId);
218
266
  }
219
267
  /**
220
268
  * Check for idle sessions — nudge if process alive, respawn if dead.
@@ -228,6 +276,12 @@ export class ClaudeLauncher {
228
276
  const now = Date.now();
229
277
  if (sessions.length === 0)
230
278
  return;
279
+ // Don't nudge sessions that were just created — give them time to
280
+ // process the launch prompt and initial messages before intervening.
281
+ const startupGracePeriod = 90000; // 90 seconds
282
+ const allPastStartup = sessions.every(s => now - s.createdAt.getTime() > startupGracePeriod);
283
+ if (!allPastStartup)
284
+ return;
231
285
  const allIdle = sessions.every(s => now - s.lastActivity.getTime() > idleTimeout);
232
286
  if (!allIdle) {
233
287
  // Activity detected — reset nudge counter and update snapshots
@@ -259,13 +313,38 @@ export class ClaudeLauncher {
259
313
  const hungSessions = sessions.filter(s => this.messageQueue.hasUndeliveredMessages(s.sessionId));
260
314
  for (const s of hungSessions) {
261
315
  this.killByConversation(s.conversationId);
316
+ if (this.messageQueue) {
317
+ this.messageQueue.clearSession(s.sessionId);
318
+ }
262
319
  this.sessionManager.unregister(s.sessionId);
263
- // Relaunch for this conversation
264
- await this.launch('inbound-message', s.conversationId);
320
+ // Wait for tmux kill to complete before relaunching
321
+ await new Promise(resolve => setTimeout(resolve, 2000));
322
+ await this.launchInternal('inbound-message', s.conversationId);
265
323
  }
266
324
  this.nudgeCount = 0;
267
325
  return;
268
326
  }
327
+ // Kill zombie sessions — only if a session hasn't made any MCP tool call in 10 minutes
328
+ // AND has undelivered messages waiting. A session doing non-MCP work (file edits, bash
329
+ // commands, etc.) is not a zombie — it's just not using SiloLink tools.
330
+ const zombieTimeout = 10 * 60 * 1000; // 10 minutes
331
+ const zombieSessions = sessions.filter(s => now - s.lastActivity.getTime() > zombieTimeout &&
332
+ this.messageQueue?.hasUndeliveredMessages(s.sessionId));
333
+ for (const s of zombieSessions) {
334
+ console.log(`[ClaudeLauncher] Zombie session detected (no MCP activity for ${Math.round((now - s.lastActivity.getTime()) / 60000)}min, has undelivered messages) — killing conv=${s.conversationId}`);
335
+ this.killByConversation(s.conversationId);
336
+ // Clear queue before unregister so messages can be re-buffered on relaunch
337
+ if (this.messageQueue) {
338
+ this.messageQueue.clearSession(s.sessionId);
339
+ }
340
+ this.sessionManager.unregister(s.sessionId);
341
+ // Wait for tmux kill to complete before relaunching
342
+ await new Promise(resolve => setTimeout(resolve, 2000));
343
+ console.log(`[ClaudeLauncher] Relaunching for conversation ${s.conversationId} after zombie cleanup`);
344
+ this.launchInternal('inbound-message', s.conversationId).catch(err => {
345
+ console.error(`[ClaudeLauncher] Relaunch after zombie kill failed: ${err}`);
346
+ });
347
+ }
269
348
  // Only nudge if there are messages waiting — no point nudging an idle session
270
349
  // that's already polling with nothing to do
271
350
  if (hasUndelivered) {
@@ -281,7 +360,7 @@ export class ClaudeLauncher {
281
360
  }
282
361
  console.log(`[ClaudeLauncher] Sessions orphaned (process dead), respawning...`);
283
362
  this.nudgeCount = 0;
284
- await this.launch('process-exit', lastConvId);
363
+ await this.launchInternal('process-exit', lastConvId);
285
364
  }
286
365
  }
287
366
  /**
@@ -299,6 +378,13 @@ export class ClaudeLauncher {
299
378
  check.on('exit', (code) => {
300
379
  if (code !== 0) {
301
380
  console.log(`[ClaudeLauncher] tmux session "${name}" ended`);
381
+ // Clean up worktree if this session had one
382
+ const wsSessionId = this.tmuxSessionWorkspaces.get(name);
383
+ if (wsSessionId && this.workspaceManager) {
384
+ console.log(`[ClaudeLauncher] Cleaning up worktree for workspace session ${wsSessionId}`);
385
+ this.workspaceManager.removeWorktree(wsSessionId);
386
+ this.tmuxSessionWorkspaces.delete(name);
387
+ }
302
388
  this.tmuxSessions.delete(name);
303
389
  if (this.tmuxSessions.size === 0 && this.tmuxMonitorTimer) {
304
390
  clearInterval(this.tmuxMonitorTimer);
@@ -315,16 +401,46 @@ export class ClaudeLauncher {
315
401
  if (this.tmuxSessions.size === 0)
316
402
  return false;
317
403
  const now = Date.now();
318
- if (now - this.lastNudgeAt < 10000)
404
+ // Exponential backoff: 30s, 60s, 120s, 240s, ... (capped at 5 min)
405
+ const baseInterval = 30000;
406
+ const interval = Math.min(baseInterval * Math.pow(2, this.nudgeCount), 5 * 60 * 1000);
407
+ if (now - this.lastNudgeAt < interval)
319
408
  return false;
320
409
  this.lastNudgeAt = now;
321
410
  const message = 'Continue polling SiloLink for messages. Do not stop the poll loop.';
322
411
  for (const [name] of this.tmuxSessions) {
323
412
  spawn('tmux', ['send-keys', '-t', name, message, 'Enter'], { stdio: 'ignore' });
324
413
  }
325
- console.log(`[ClaudeLauncher] Nudged ${this.tmuxSessions.size} Claude session(s) via tmux`);
414
+ console.log(`[ClaudeLauncher] Nudged ${this.tmuxSessions.size} Claude session(s) via tmux (attempt ${this.nudgeCount + 1}, next in ${Math.round(interval / 1000)}s)`);
326
415
  return true;
327
416
  }
417
+ /**
418
+ * Interrupt the Claude session for a specific conversation.
419
+ * Sends Escape to stop current work, then redirects Claude to check
420
+ * for new messages via remote_poll.
421
+ */
422
+ async interrupt(conversationId, message) {
423
+ for (const [name, convId] of this.tmuxSessions) {
424
+ if (convId === conversationId) {
425
+ console.log(`[ClaudeLauncher] Interrupting tmux session "${name}" (conversation ${conversationId})`);
426
+ // Send Escape to interrupt current work
427
+ spawn('tmux', ['send-keys', '-t', name, 'Escape'], { stdio: 'ignore' });
428
+ // Wait for Claude to stop
429
+ await new Promise(resolve => setTimeout(resolve, 2000));
430
+ // Tell Claude to check for the new message
431
+ const redirect = message
432
+ || 'The user interrupted you. Check remote_poll for their latest message and follow those instructions instead.';
433
+ const escapedRedirect = redirect.replace(/"/g, '\\"').replace(/\n/g, ' ');
434
+ spawn('tmux', ['send-keys', '-t', name, escapedRedirect], { stdio: 'ignore' });
435
+ await new Promise(resolve => setTimeout(resolve, 500));
436
+ spawn('tmux', ['send-keys', '-t', name, 'Enter'], { stdio: 'ignore' });
437
+ console.log(`[ClaudeLauncher] Interrupt sent to "${name}"`);
438
+ return true;
439
+ }
440
+ }
441
+ console.log(`[ClaudeLauncher] No tmux session found for conversation ${conversationId} to interrupt`);
442
+ return false;
443
+ }
328
444
  /**
329
445
  * Kill the Claude session for a specific conversation.
330
446
  */
@@ -332,6 +448,12 @@ export class ClaudeLauncher {
332
448
  for (const [name, convId] of this.tmuxSessions) {
333
449
  if (convId === conversationId) {
334
450
  console.log(`[ClaudeLauncher] Killing tmux session "${name}" (conversation ${conversationId})`);
451
+ // Clean up worktree
452
+ const wsSessionId = this.tmuxSessionWorkspaces.get(name);
453
+ if (wsSessionId && this.workspaceManager) {
454
+ this.workspaceManager.removeWorktree(wsSessionId);
455
+ this.tmuxSessionWorkspaces.delete(name);
456
+ }
335
457
  spawn('tmux', ['kill-session', '-t', name], { stdio: 'ignore' });
336
458
  this.tmuxSessions.delete(name);
337
459
  return;
@@ -345,9 +467,15 @@ export class ClaudeLauncher {
345
467
  kill() {
346
468
  for (const [name] of this.tmuxSessions) {
347
469
  console.log(`[ClaudeLauncher] Killing tmux session "${name}"`);
470
+ // Clean up worktree
471
+ const wsSessionId = this.tmuxSessionWorkspaces.get(name);
472
+ if (wsSessionId && this.workspaceManager) {
473
+ this.workspaceManager.removeWorktree(wsSessionId);
474
+ }
348
475
  spawn('tmux', ['kill-session', '-t', name], { stdio: 'ignore' });
349
476
  }
350
477
  this.tmuxSessions.clear();
478
+ this.tmuxSessionWorkspaces.clear();
351
479
  if (this.tmuxMonitorTimer) {
352
480
  clearInterval(this.tmuxMonitorTimer);
353
481
  this.tmuxMonitorTimer = null;
@@ -357,6 +485,103 @@ export class ClaudeLauncher {
357
485
  this.childProcess = null;
358
486
  }
359
487
  }
488
+ // ---- AgentLauncher interface methods ----
489
+ /**
490
+ * Launch a new agent process (AgentLauncher interface).
491
+ */
492
+ async launch(config) {
493
+ if (config.workspace) {
494
+ this.setWorkspaceConfig(config.workspace);
495
+ }
496
+ if (config.triggerMessage) {
497
+ this.pendingTriggerMessage = config.triggerMessage;
498
+ }
499
+ if (config.sessionPrompt) {
500
+ this.config.claude_session_prompt = config.sessionPrompt;
501
+ }
502
+ const success = await this.launchInternal(config.reason, config.conversationId);
503
+ if (!success)
504
+ return null;
505
+ // Find the process we just created (most recent tmux session)
506
+ const entries = Array.from(this.tmuxSessions.entries());
507
+ const latest = entries[entries.length - 1];
508
+ if (!latest)
509
+ return null;
510
+ const [processId, conversationId] = latest;
511
+ const wsSessionId = this.tmuxSessionWorkspaces.get(processId);
512
+ return {
513
+ processId,
514
+ conversationId,
515
+ workingDirectory: this.config.claude_working_directory || process.cwd(),
516
+ branch: config.workspace?.branch,
517
+ workspaceSessionId: wsSessionId || undefined,
518
+ startedAt: new Date(),
519
+ };
520
+ }
521
+ /**
522
+ * Resume a previous session by ID.
523
+ */
524
+ async resume(resumeId, config) {
525
+ this.setLastResumeId(resumeId);
526
+ return this.launch({ ...config, reason: 'process-exit' });
527
+ }
528
+ /**
529
+ * Check if a specific process is still alive.
530
+ */
531
+ async isAlive(process) {
532
+ return new Promise(resolve => {
533
+ const check = spawn('tmux', ['has-session', '-t', process.processId], { stdio: 'ignore' });
534
+ check.on('exit', code => resolve(code === 0));
535
+ check.on('error', () => resolve(false));
536
+ });
537
+ }
538
+ /**
539
+ * Terminate a specific agent process.
540
+ */
541
+ terminate(process) {
542
+ this.killByConversation(process.conversationId);
543
+ }
544
+ /**
545
+ * Terminate all managed agent processes.
546
+ */
547
+ terminateAll() {
548
+ this.kill();
549
+ }
550
+ /**
551
+ * Get all currently running agent processes.
552
+ */
553
+ getProcesses() {
554
+ const processes = [];
555
+ for (const [processId, conversationId] of this.tmuxSessions) {
556
+ const wsSessionId = this.tmuxSessionWorkspaces.get(processId);
557
+ processes.push({
558
+ processId,
559
+ conversationId,
560
+ workingDirectory: this.config.claude_working_directory || process.cwd(),
561
+ workspaceSessionId: wsSessionId,
562
+ startedAt: new Date(), // Approximate — we don't track exact start time per tmux session
563
+ });
564
+ }
565
+ return processes;
566
+ }
567
+ /**
568
+ * Get the process handling a specific conversation.
569
+ */
570
+ getByConversation(conversationId) {
571
+ for (const [processId, convId] of this.tmuxSessions) {
572
+ if (convId === conversationId) {
573
+ const wsSessionId = this.tmuxSessionWorkspaces.get(processId);
574
+ return {
575
+ processId,
576
+ conversationId,
577
+ workingDirectory: this.config.claude_working_directory || process.cwd(),
578
+ workspaceSessionId: wsSessionId,
579
+ startedAt: new Date(),
580
+ };
581
+ }
582
+ }
583
+ return undefined;
584
+ }
360
585
  destroy() {
361
586
  this.stopIdleMonitor();
362
587
  this.kill();
@@ -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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"}
@@ -0,0 +1,32 @@
1
+ import type { AgentLauncher, LaunchConfig, AgentProcess } from './agent-launcher.js';
2
+ /**
3
+ * Gemini implementation of the AgentLauncher interface.
4
+ *
5
+ * Google Gemini supports MCP natively, so the SiloLink tool layer
6
+ * (remote_register, remote_poll, remote_notify, etc.) should work
7
+ * without modification. The launcher only needs to handle process
8
+ * lifecycle — spawning a Gemini CLI session and managing its state.
9
+ *
10
+ * TODO: Implementation notes:
11
+ * - Gemini CLI: `gemini` command (or Google AI Studio CLI)
12
+ * - MCP support: Native — configure via gemini's MCP config
13
+ * - Session resume: Check if Gemini CLI supports session persistence
14
+ * - Working directory: Same worktree integration as Claude
15
+ * - Prompt injection: Same tmux send-keys approach as Claude,
16
+ * or use Gemini's stdin pipe if supported
17
+ */
18
+ export declare class GeminiLauncher implements AgentLauncher {
19
+ launch(_config: LaunchConfig): Promise<AgentProcess | null>;
20
+ resume(_resumeId: string, _config: LaunchConfig): Promise<AgentProcess | null>;
21
+ isAlive(_process: AgentProcess): Promise<boolean>;
22
+ terminate(_process: AgentProcess): void;
23
+ terminateAll(): void;
24
+ getProcesses(): AgentProcess[];
25
+ getByConversation(_conversationId: number): AgentProcess | undefined;
26
+ nudge(): boolean;
27
+ isEnabled(): boolean;
28
+ isAutoRespawnEnabled(): boolean;
29
+ startIdleMonitor(): void;
30
+ destroy(): void;
31
+ }
32
+ //# sourceMappingURL=gemini-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-launcher.d.ts","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,YAAW,aAAa;IAC5C,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAI3D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAI9E,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,YAAY,IAAI,IAAI;IAIpB,YAAY,IAAI,YAAY,EAAE;IAI9B,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIpE,KAAK,IAAI,OAAO;IAIhB,SAAS,IAAI,OAAO;IAIpB,oBAAoB,IAAI,OAAO;IAI/B,gBAAgB,IAAI,IAAI;IAIxB,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Gemini implementation of the AgentLauncher interface.
3
+ *
4
+ * Google Gemini supports MCP natively, so the SiloLink tool layer
5
+ * (remote_register, remote_poll, remote_notify, etc.) should work
6
+ * without modification. The launcher only needs to handle process
7
+ * lifecycle — spawning a Gemini CLI session and managing its state.
8
+ *
9
+ * TODO: Implementation notes:
10
+ * - Gemini CLI: `gemini` command (or Google AI Studio CLI)
11
+ * - MCP support: Native — configure via gemini's MCP config
12
+ * - Session resume: Check if Gemini CLI supports session persistence
13
+ * - Working directory: Same worktree integration as Claude
14
+ * - Prompt injection: Same tmux send-keys approach as Claude,
15
+ * or use Gemini's stdin pipe if supported
16
+ */
17
+ export class GeminiLauncher {
18
+ async launch(_config) {
19
+ throw new Error('GeminiLauncher not yet implemented');
20
+ }
21
+ async resume(_resumeId, _config) {
22
+ throw new Error('GeminiLauncher not yet implemented');
23
+ }
24
+ async isAlive(_process) {
25
+ return false;
26
+ }
27
+ terminate(_process) {
28
+ // TODO: Kill Gemini process
29
+ }
30
+ terminateAll() {
31
+ // TODO: Kill all Gemini processes
32
+ }
33
+ getProcesses() {
34
+ return [];
35
+ }
36
+ getByConversation(_conversationId) {
37
+ return undefined;
38
+ }
39
+ nudge() {
40
+ return false;
41
+ }
42
+ isEnabled() {
43
+ return false; // Not yet implemented
44
+ }
45
+ isAutoRespawnEnabled() {
46
+ return false;
47
+ }
48
+ startIdleMonitor() {
49
+ // TODO: Implement idle monitoring for Gemini sessions
50
+ }
51
+ destroy() {
52
+ this.terminateAll();
53
+ }
54
+ }
55
+ //# sourceMappingURL=gemini-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-launcher.js","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,MAAM,CAAC,OAAqB;QAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAAqB;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAsB;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,CAAC,QAAsB;QAC9B,4BAA4B;IAC9B,CAAC;IAED,YAAY;QACV,kCAAkC;IACpC,CAAC;IAED,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,iBAAiB,CAAC,eAAuB;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,CAAC,sBAAsB;IACtC,CAAC;IAED,oBAAoB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;QACd,sDAAsD;IACxD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { SiloLinkConfig } from '../types/index.js';
2
+ import type { SessionManager } from './session-manager.js';
3
+ import type { MessageQueue } from './message-queue.js';
4
+ import type { DSiloedClient } from '../api/dsiloed-client.js';
5
+ import type { WorkspaceManager } from './workspace-manager.js';
6
+ import type { AgentLauncher } from './agent-launcher.js';
7
+ export type AgentProvider = 'claude' | 'gemini' | 'openai';
8
+ /**
9
+ * Creates the appropriate AgentLauncher based on provider configuration.
10
+ * Falls back to ClaudeLauncher if no provider is specified.
11
+ */
12
+ export declare function createLauncher(provider: AgentProvider | undefined, config: SiloLinkConfig, sessionManager: SessionManager, dsiloedClient?: DSiloedClient, messageQueue?: MessageQueue, workspaceManager?: WorkspaceManager): AgentLauncher;
13
+ //# sourceMappingURL=launcher-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-factory.d.ts","sourceRoot":"","sources":["../../src/core/launcher-factory.ts"],"names":[],"mappings":"AAAA,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,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,aAAa,CAmBf"}
@@ -0,0 +1,24 @@
1
+ import { ClaudeLauncher } from './claude-launcher.js';
2
+ import { GeminiLauncher } from './gemini-launcher.js';
3
+ import { OpenAILauncher } from './openai-launcher.js';
4
+ /**
5
+ * Creates the appropriate AgentLauncher based on provider configuration.
6
+ * Falls back to ClaudeLauncher if no provider is specified.
7
+ */
8
+ export function createLauncher(provider, config, sessionManager, dsiloedClient, messageQueue, workspaceManager) {
9
+ const resolvedProvider = provider || config.agent_provider || 'claude';
10
+ switch (resolvedProvider) {
11
+ case 'claude':
12
+ return new ClaudeLauncher(config, sessionManager, dsiloedClient, messageQueue, workspaceManager);
13
+ case 'gemini':
14
+ console.log('[LauncherFactory] Gemini provider selected (stub — not yet implemented)');
15
+ return new GeminiLauncher();
16
+ case 'openai':
17
+ console.log('[LauncherFactory] OpenAI provider selected (stub — not yet implemented)');
18
+ return new OpenAILauncher();
19
+ default:
20
+ console.warn(`[LauncherFactory] Unknown provider "${resolvedProvider}", falling back to Claude`);
21
+ return new ClaudeLauncher(config, sessionManager, dsiloedClient, messageQueue, workspaceManager);
22
+ }
23
+ }
24
+ //# sourceMappingURL=launcher-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-factory.js","sourceRoot":"","sources":["../../src/core/launcher-factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAmC,EACnC,MAAsB,EACtB,cAA8B,EAC9B,aAA6B,EAC7B,YAA2B,EAC3B,gBAAmC;IAEnC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC;IAEvE,QAAQ,gBAAgB,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAEnG,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,IAAI,cAAc,EAAE,CAAC;QAE9B,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,IAAI,cAAc,EAAE,CAAC;QAE9B;YACE,OAAO,CAAC,IAAI,CAAC,uCAAuC,gBAAgB,2BAA2B,CAAC,CAAC;YACjG,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACrG,CAAC;AACH,CAAC"}