@dsiloed/silo-link 1.3.0 → 1.5.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 (58) hide show
  1. package/dist/api/dsiloed-client.d.ts +30 -0
  2. package/dist/api/dsiloed-client.d.ts.map +1 -1
  3. package/dist/api/dsiloed-client.js +66 -0
  4. package/dist/api/dsiloed-client.js.map +1 -1
  5. package/dist/cable/subscription-manager.d.ts +7 -3
  6. package/dist/cable/subscription-manager.d.ts.map +1 -1
  7. package/dist/cable/subscription-manager.js +36 -11
  8. package/dist/cable/subscription-manager.js.map +1 -1
  9. package/dist/cli/commands.d.ts.map +1 -1
  10. package/dist/cli/commands.js +118 -27
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/config/config-manager.d.ts +4 -4
  13. package/dist/config/config-manager.d.ts.map +1 -1
  14. package/dist/config/config-manager.js +30 -15
  15. package/dist/config/config-manager.js.map +1 -1
  16. package/dist/core/agent-launcher.d.ts +30 -1
  17. package/dist/core/agent-launcher.d.ts.map +1 -1
  18. package/dist/core/base-tmux-launcher.d.ts +106 -0
  19. package/dist/core/base-tmux-launcher.d.ts.map +1 -0
  20. package/dist/core/base-tmux-launcher.js +506 -0
  21. package/dist/core/base-tmux-launcher.js.map +1 -0
  22. package/dist/core/bridge.d.ts +19 -2
  23. package/dist/core/bridge.d.ts.map +1 -1
  24. package/dist/core/bridge.js +155 -37
  25. package/dist/core/bridge.js.map +1 -1
  26. package/dist/core/claude-launcher.d.ts +28 -100
  27. package/dist/core/claude-launcher.d.ts.map +1 -1
  28. package/dist/core/claude-launcher.js +164 -487
  29. package/dist/core/claude-launcher.js.map +1 -1
  30. package/dist/core/gemini-launcher.d.ts +37 -27
  31. package/dist/core/gemini-launcher.d.ts.map +1 -1
  32. package/dist/core/gemini-launcher.js +135 -38
  33. package/dist/core/gemini-launcher.js.map +1 -1
  34. package/dist/core/launcher-factory.d.ts.map +1 -1
  35. package/dist/core/launcher-factory.js +1 -2
  36. package/dist/core/launcher-factory.js.map +1 -1
  37. package/dist/core/openai-launcher.d.ts +14 -17
  38. package/dist/core/openai-launcher.d.ts.map +1 -1
  39. package/dist/core/openai-launcher.js +23 -44
  40. package/dist/core/openai-launcher.js.map +1 -1
  41. package/dist/core/session-manager.d.ts +3 -0
  42. package/dist/core/session-manager.d.ts.map +1 -1
  43. package/dist/core/session-manager.js +11 -0
  44. package/dist/core/session-manager.js.map +1 -1
  45. package/dist/core/workspace-manager.d.ts.map +1 -1
  46. package/dist/core/workspace-manager.js +53 -16
  47. package/dist/core/workspace-manager.js.map +1 -1
  48. package/dist/mcp/server.d.ts +3 -0
  49. package/dist/mcp/server.d.ts.map +1 -1
  50. package/dist/mcp/server.js +19 -2
  51. package/dist/mcp/server.js.map +1 -1
  52. package/dist/mcp/tools/register-tools.d.ts +2 -0
  53. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  54. package/dist/mcp/tools/register-tools.js +174 -16
  55. package/dist/mcp/tools/register-tools.js.map +1 -1
  56. package/dist/types/index.d.ts +11 -1
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/package.json +1 -1
@@ -6,9 +6,9 @@ import { ActionCableClient } from '../cable/action-cable-client.js';
6
6
  import { SubscriptionManager } from '../cable/subscription-manager.js';
7
7
  import { SessionManager } from '../core/session-manager.js';
8
8
  import { MessageQueue } from '../core/message-queue.js';
9
- import { ClaudeLauncher } from '../core/claude-launcher.js';
10
9
  import { SiloLinkMcpServer } from '../mcp/server.js';
11
10
  import { WorkspaceManager } from '../core/workspace-manager.js';
11
+ import { createLauncher } from '../core/launcher-factory.js';
12
12
  export class Bridge {
13
13
  config;
14
14
  jwt;
@@ -17,12 +17,14 @@ export class Bridge {
17
17
  subscriptionManager;
18
18
  sessionManager;
19
19
  messageQueue;
20
- claudeLauncher;
20
+ launchers = new Map();
21
+ defaultProvider;
21
22
  workspaceManager;
22
23
  mcpServer;
23
24
  shuttingDown = false;
24
- constructor() {
25
- this.config = loadConfig();
25
+ startedAt = null;
26
+ constructor(env) {
27
+ this.config = loadConfig(env);
26
28
  this.jwt = new JwtGenerator(this.config);
27
29
  this.dsiloedClient = new DSiloedClient(this.config, this.jwt);
28
30
  this.cableClient = new ActionCableClient(this.config, this.jwt);
@@ -38,8 +40,15 @@ export class Bridge {
38
40
  });
39
41
  this.messageQueue = new MessageQueue();
40
42
  this.workspaceManager = new WorkspaceManager();
41
- this.claudeLauncher = new ClaudeLauncher(this.config, this.sessionManager, this.dsiloedClient, this.messageQueue, this.workspaceManager);
42
- this.subscriptionManager = new SubscriptionManager(this.cableClient, this.messageQueue, this.sessionManager, this.claudeLauncher, this.dsiloedClient);
43
+ this.defaultProvider = this.config.agent_provider || 'claude';
44
+ // Create launchers for all supported providers
45
+ const claudeLauncher = createLauncher('claude', this.config, this.sessionManager, this.dsiloedClient, this.messageQueue, this.workspaceManager);
46
+ this.launchers.set('claude', claudeLauncher);
47
+ const geminiLauncher = createLauncher('gemini', this.config, this.sessionManager, this.dsiloedClient, this.messageQueue, this.workspaceManager);
48
+ this.launchers.set('gemini', geminiLauncher);
49
+ // Default launcher is used for auto-launch on inbound messages
50
+ const defaultLauncher = this.getLauncher();
51
+ this.subscriptionManager = new SubscriptionManager(this.cableClient, this.messageQueue, this.sessionManager, defaultLauncher, this.dsiloedClient);
43
52
  this.mcpServer = new SiloLinkMcpServer({
44
53
  config: this.config,
45
54
  sessionManager: this.sessionManager,
@@ -48,8 +57,29 @@ export class Bridge {
48
57
  subscriptionManager: this.subscriptionManager,
49
58
  cableClient: this.cableClient,
50
59
  workspaceManager: this.workspaceManager,
60
+ launcher: defaultLauncher,
61
+ startedAt: () => this.startedAt,
51
62
  });
52
63
  }
64
+ /**
65
+ * Get a launcher by provider, falling back to the default.
66
+ */
67
+ getLauncher(provider) {
68
+ if (provider && this.launchers.has(provider)) {
69
+ return this.launchers.get(provider);
70
+ }
71
+ return this.launchers.get(this.defaultProvider);
72
+ }
73
+ /**
74
+ * Find the launcher that owns a given conversation.
75
+ */
76
+ getLauncherForConversation(conversationId) {
77
+ for (const launcher of this.launchers.values()) {
78
+ if (launcher.getByConversation(conversationId))
79
+ return launcher;
80
+ }
81
+ return undefined;
82
+ }
53
83
  async start() {
54
84
  // Check for tmux — required for launching Claude Code sessions
55
85
  try {
@@ -100,14 +130,17 @@ export class Bridge {
100
130
  await this.cleanupStaleAgentSessions();
101
131
  // Workspaces remain in workspaces.json but no placeholder agent sessions are created.
102
132
  // Agent sessions are only created when a real Claude session launches and registers.
103
- // Start Claude auto-respawn monitor if configured
104
- this.claudeLauncher.startIdleMonitor();
133
+ // Start idle monitors for all enabled launchers
134
+ for (const launcher of this.launchers.values()) {
135
+ launcher.startIdleMonitor();
136
+ }
105
137
  // Handle shutdown signals
106
138
  const shutdown = () => this.stop();
107
139
  process.on('SIGTERM', shutdown);
108
140
  process.on('SIGINT', shutdown);
109
141
  // Start heartbeat broadcast so the frontend knows we're alive
110
142
  this.startHeartbeat();
143
+ this.startedAt = new Date();
111
144
  console.log('SiloLink ready.\n');
112
145
  }
113
146
  heartbeatTimer = null;
@@ -148,8 +181,10 @@ export class Bridge {
148
181
  }
149
182
  // Stop JWT refresh
150
183
  this.jwt.stopAutoRefresh();
151
- // Kill Claude processes FIRST so they don't lose in-flight messages
152
- this.claudeLauncher.destroy();
184
+ // Kill all agent processes FIRST so they don't lose in-flight messages
185
+ for (const launcher of this.launchers.values()) {
186
+ launcher.destroy();
187
+ }
153
188
  // Then unregister all sessions and complete their agent sessions
154
189
  const sessions = this.sessionManager.getAll();
155
190
  for (const session of sessions) {
@@ -193,7 +228,7 @@ export class Bridge {
193
228
  }
194
229
  // Capture resume ID from metadata if available
195
230
  if (session.metadata?.claude_resume_id) {
196
- this.claudeLauncher.setLastResumeId(session.metadata.claude_resume_id);
231
+ this.getLauncher('claude').setLastResumeId(session.metadata.claude_resume_id);
197
232
  }
198
233
  try {
199
234
  await this.dsiloedClient.completeAgentSession(session.id);
@@ -249,41 +284,96 @@ export class Bridge {
249
284
  if (convId) {
250
285
  this.subscriptionManager.subscribe(convId);
251
286
  }
252
- // Build prompt
287
+ // Select the coding agent launcher (default or per-session override)
288
+ const launcher = this.getLauncher(cmd.coding_agent);
289
+ const providerName = cmd.coding_agent || this.defaultProvider;
290
+ // Build prompt with provider-appropriate MCP tool name prefix
291
+ // Claude uses mcp__silolink__remote_*, Gemini uses silolink_remote_*
292
+ const toolPrefix = providerName === 'gemini' ? 'silolink_' : 'mcp__silolink__';
293
+ const docFile = providerName === 'gemini' ? 'GEMINI.md' : 'CLAUDE.md';
294
+ const agentIdParam = cmd.llm_agent_id ? `, "llm_agent_id": ${cmd.llm_agent_id}` : '';
253
295
  const registerParams = convId
254
- ? `{ "conversation_id": ${convId} }`
255
- : `{ "session_name": "${name}" }`;
256
- const readyInstruction = 'After registering, IMMEDIATELY send a remote_notify message telling the user you are ready (e.g. "Session ready! How can I help?"). Then enter the poll loop.';
257
- const progressInstruction = 'CRITICAL: The user is NOT watching the terminal — they are communicating via PortableMind. You MUST send a remote_notify progress update after EVERY major step (e.g. file edits, commits, merges, deploys, errors). Do not go silent while working.';
296
+ ? `{ "conversation_id": ${convId}${agentIdParam} }`
297
+ : `{ "session_name": "${name}"${agentIdParam} }`;
298
+ const readyInstruction = `After registering, IMMEDIATELY send a ${toolPrefix}remote_notify message telling the user you are ready (e.g. "Session ready! How can I help?"). Then enter the poll loop.`;
299
+ const progressInstruction = `CRITICAL: The user is NOT watching the terminal — they are communicating via PortableMind. You MUST send a ${toolPrefix}remote_notify progress update after EVERY major step (e.g. file edits, commits, merges, deploys, errors). Do not go silent while working.`;
300
+ // Inject workflow context so the agent can complete its stage
301
+ const workflowInstruction = cmd.orchestration_execution_id && cmd.orchestration_stage_execution_id
302
+ ? `\n\nORCHESTRATION CONTEXT: You are running as part of a orchestration pipeline. When you finish your work, you MUST call ${toolPrefix}remote_orchestration_stage_complete with orchestration_stage_execution_id: ${cmd.orchestration_stage_execution_id}, success: true/false, output: "<summary>", and any artifacts you produced (key, artifact_type: llm_file|project|task_set|json_data, llm_file_id/project_id if applicable). Orchestration Execution ID: ${cmd.orchestration_execution_id}.`
303
+ : '';
304
+ const serverToolInstruction = `\n\nMCP SERVERS: Use "mcp__silolink__" prefix for SiloLink tools (remote_register, remote_notify, remote_poll, remote_orchestration_stage_complete). Use "mcp__silolink_server__" prefix for server tools (orchestration_checkout_tool, orchestration_stage_complete_tool, conversation_chat_tool, create_llm_file_tool). Do NOT use "mcp__portablemind__" — that may point to a different environment.`;
258
305
  const sessionPrompt = cmd.prompt
259
- ? `${cmd.prompt}\n\nIMPORTANT: First call mcp__silolink__remote_register with these exact parameters: ${registerParams}. ${readyInstruction} ${progressInstruction} See CLAUDE.md for the poll loop pattern.`
260
- : `Call mcp__silolink__remote_register with these exact parameters: ${registerParams}. ${readyInstruction} See CLAUDE.md for the poll loop pattern.`;
261
- this.config.claude_session_prompt = sessionPrompt;
262
- // Set workspace config if provided
263
- if (cmd.repo_path && cmd.branch) {
264
- this.claudeLauncher.setWorkspaceConfig({
265
- repoPath: cmd.repo_path,
306
+ ? `${cmd.prompt}${workflowInstruction}${serverToolInstruction}\n\nIMPORTANT: First call ${toolPrefix}remote_register with these exact parameters: ${registerParams}. ${readyInstruction} ${progressInstruction} See ${docFile} for the poll loop pattern.`
307
+ : `Call ${toolPrefix}remote_register with these exact parameters: ${registerParams}. ${readyInstruction} See ${docFile} for the poll loop pattern.`;
308
+ // Set the prompt on the correct config field for the selected provider
309
+ if (providerName === 'gemini') {
310
+ this.config.gemini_session_prompt = sessionPrompt;
311
+ }
312
+ else {
313
+ this.config.claude_session_prompt = sessionPrompt;
314
+ }
315
+ console.log(`[SiloLink] Using ${providerName} launcher for session`);
316
+ // Set LlmAgent ID for SDLC agent orchestration
317
+ if (cmd.llm_agent_id) {
318
+ launcher.setLlmAgentId(cmd.llm_agent_id);
319
+ }
320
+ // Set workspace config if branch provided (creates worktree)
321
+ // Resolve repo_path using local projects_path if configured.
322
+ // If no repo_path provided, fall back to projects_path as CWD.
323
+ const resolvedRepoPath = cmd.repo_path
324
+ ? this.resolveLocalRepoPath(cmd.repo_path)
325
+ : this.config.projects_path || undefined;
326
+ if (resolvedRepoPath && cmd.branch) {
327
+ launcher.setWorkspaceConfig({
328
+ repoPath: resolvedRepoPath,
266
329
  branch: cmd.branch,
267
330
  baseBranch: cmd.base_branch,
268
331
  });
269
332
  }
333
+ else if (resolvedRepoPath) {
334
+ // repo_path without branch — just set CWD, no worktree
335
+ launcher.setRepoCwd(resolvedRepoPath);
336
+ }
337
+ // Set MCP tool allowlist for stage-specific tool filtering
338
+ if (cmd.mcp_tool_allowlist) {
339
+ launcher.setMcpToolAllowlist(cmd.mcp_tool_allowlist);
340
+ }
270
341
  // Post an initial message so the user knows the session is starting
271
342
  if (convId) {
272
- this.dsiloedClient.postMessage(convId, '**[Claude Code]** Starting session... Claude is initializing and will be ready shortly.')
343
+ const agentDisplayName = providerName === 'gemini' ? 'Gemini' : 'Claude Code';
344
+ this.dsiloedClient.postMessage(convId, `**[${agentDisplayName}]** Starting session... ${agentDisplayName} is initializing and will be ready shortly.`)
273
345
  .catch(err => console.error('[SiloLink] Failed to post startup message:', err));
274
346
  }
275
- const launched = await this.claudeLauncher.launchInternal('control-channel', convId);
347
+ // Store the provider so remote_register can tag the session
348
+ if (convId) {
349
+ this.sessionManager.setPendingProvider(convId, providerName);
350
+ }
351
+ const launched = await launcher.launchInternal('control-channel', convId);
276
352
  console.log(`[SiloLink] Launch command result: ${launched ? 'started' : 'skipped (already running?)'}`);
353
+ // Report tmux session name back so the orchestration monitor can track it
354
+ if (launched && convId && (cmd.orchestration_stage_execution_id || cmd.orchestration_execution_id)) {
355
+ const tmuxName = launcher.getTmuxSessionForConversation(convId);
356
+ if (tmuxName) {
357
+ this.cableClient.sendCommand('SilolinkControlChannel', {
358
+ type: 'tmux_session_started',
359
+ conversation_id: convId,
360
+ tmux_session_name: tmuxName,
361
+ orchestration_stage_execution_id: cmd.orchestration_stage_execution_id,
362
+ });
363
+ }
364
+ }
277
365
  break;
278
366
  }
279
367
  case 'stop': {
280
368
  if (cmd.conversation_id) {
281
- this.claudeLauncher.killByConversation(cmd.conversation_id);
369
+ const stopLauncher = this.getLauncherForConversation(cmd.conversation_id) || this.getLauncher();
370
+ stopLauncher.killByConversation(cmd.conversation_id);
282
371
  console.log(`[SiloLink] Stop command executed — killed session for conversation ${cmd.conversation_id}`);
283
372
  }
284
373
  else {
285
- this.claudeLauncher.kill();
286
- console.log('[SiloLink] Stop command executed — all Claude sessions killed');
374
+ for (const l of this.launchers.values())
375
+ l.kill();
376
+ console.log('[SiloLink] Stop command executed — all sessions killed');
287
377
  }
288
378
  break;
289
379
  }
@@ -302,7 +392,8 @@ export class Bridge {
302
392
  convId = session?.conversationId;
303
393
  }
304
394
  if (convId) {
305
- const proc = this.claudeLauncher.getByConversation(convId);
395
+ const peekLauncher = this.getLauncherForConversation(convId) || this.getLauncher();
396
+ const proc = peekLauncher.getByConversation(convId);
306
397
  tmuxSessions = proc ? [proc.processId] : [];
307
398
  }
308
399
  else {
@@ -346,16 +437,20 @@ export class Bridge {
346
437
  case 'interrupt': {
347
438
  const intConvId = cmd.conversation_id;
348
439
  if (intConvId) {
349
- const interrupted = await this.claudeLauncher.interrupt(intConvId);
440
+ const intLauncher = this.getLauncherForConversation(intConvId) || this.getLauncher();
441
+ const interrupted = await intLauncher.interrupt(intConvId);
350
442
  console.log(`[SiloLink] Interrupt command result: ${interrupted ? 'sent' : 'no session found'}`);
351
443
  }
352
444
  else {
353
- // Interrupt all sessions
354
- const processes = this.claudeLauncher.getProcesses();
355
- for (const proc of processes) {
356
- await this.claudeLauncher.interrupt(proc.conversationId);
445
+ // Interrupt all sessions across all launchers
446
+ let totalProcesses = 0;
447
+ for (const l of this.launchers.values()) {
448
+ for (const proc of l.getProcesses()) {
449
+ await l.interrupt(proc.conversationId);
450
+ totalProcesses++;
451
+ }
357
452
  }
358
- console.log(`[SiloLink] Interrupt sent to ${processes.length} session(s)`);
453
+ console.log(`[SiloLink] Interrupt sent to ${totalProcesses} session(s)`);
359
454
  }
360
455
  break;
361
456
  }
@@ -374,7 +469,8 @@ export class Bridge {
374
469
  receivedAt: new Date(),
375
470
  });
376
471
  // Also nudge via tmux in case the session isn't polling
377
- this.claudeLauncher.nudge();
472
+ const nudgeLauncher = this.getLauncherForConversation(nudgeConvId) || this.getLauncher();
473
+ nudgeLauncher.nudge();
378
474
  console.log(`[SiloLink] Nudge sent to session ${session.sessionId} (conversation ${nudgeConvId})`);
379
475
  }
380
476
  else {
@@ -393,7 +489,8 @@ export class Bridge {
393
489
  receivedAt: new Date(),
394
490
  });
395
491
  }
396
- this.claudeLauncher.nudge();
492
+ for (const l of this.launchers.values())
493
+ l.nudge();
397
494
  console.log(`[SiloLink] Nudge sent to ${sessions.length} session(s)`);
398
495
  }
399
496
  break;
@@ -407,10 +504,31 @@ export class Bridge {
407
504
  console.log(`[SiloLink] Unknown control command: ${cmd.type}`);
408
505
  }
409
506
  }
507
+ /**
508
+ * Resolve a server-side repo path to a local path using projects_path config.
509
+ * e.g., "/home/rholmes/projects/silo_link" → "/home/user/Desktop/projects/silo_link"
510
+ */
511
+ resolveLocalRepoPath(serverPath) {
512
+ const localProjectsPath = this.config.projects_path;
513
+ if (!localProjectsPath)
514
+ return serverPath;
515
+ // Extract the repo name (last path segment) and join with local projects path
516
+ const repoName = serverPath.split('/').pop();
517
+ if (!repoName)
518
+ return serverPath;
519
+ const resolved = `${localProjectsPath.replace(/\/$/, '')}/${repoName}`;
520
+ if (resolved !== serverPath) {
521
+ console.log(`[SiloLink] Resolved repo path: ${serverPath} → ${resolved}`);
522
+ }
523
+ return resolved;
524
+ }
410
525
  getStatus() {
526
+ const now = Date.now();
411
527
  return {
412
528
  state: this.cableClient.getState(),
413
529
  sessions: this.sessionManager.getAll().length,
530
+ startedAt: this.startedAt?.toISOString() ?? null,
531
+ uptimeSeconds: this.startedAt ? Math.floor((now - this.startedAt.getTime()) / 1000) : null,
414
532
  config: {
415
533
  host: this.config.host,
416
534
  tenant: this.config.tenant_id,
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/core/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/core/bridge.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { SiloLinkConfig, WorkspaceLaunchConfig } from '../types/index.js';
1
+ import type { SiloLinkConfig } from '../types/index.js';
2
2
  import type { SessionManager } from './session-manager.js';
3
3
  import type { MessageQueue } from './message-queue.js';
4
4
  import type { DSiloedClient } from '../api/dsiloed-client.js';
5
5
  import type { WorkspaceManager } from './workspace-manager.js';
6
- import type { AgentLauncher, LaunchConfig, AgentProcess } from './agent-launcher.js';
6
+ import { BaseTmuxLauncher } from './base-tmux-launcher.js';
7
7
  /**
8
8
  * Claude Code implementation of the AgentLauncher interface.
9
9
  *
@@ -14,113 +14,41 @@ import type { AgentLauncher, LaunchConfig, AgentProcess } from './agent-launcher
14
14
  * - Store Claude session ID in DSiloed agent_session metadata
15
15
  * - Kill all child processes on SiloLink shutdown
16
16
  */
17
- export declare class ClaudeLauncher implements AgentLauncher {
18
- private config;
19
- private sessionManager;
20
- private dsiloedClient;
21
- private workspaceManager;
17
+ export declare class ClaudeLauncher extends BaseTmuxLauncher {
22
18
  private childProcess;
23
- private tmuxSessions;
24
- private tmuxSessionWorkspaces;
25
- private tmuxMonitorTimer;
26
- private idleCheckTimer;
27
- private launchingConversations;
28
- private messageQueue;
29
- private enabled;
30
- private lastNudgeAt;
31
- private nudgeCount;
32
- private lastActivitySnapshot;
33
- private lastClaudeSessionId;
34
- private pendingTriggerMessage;
35
- private pendingWorkspaceConfig;
36
- private pendingWorkspaceCwd;
37
19
  constructor(config: SiloLinkConfig, sessionManager: SessionManager, dsiloedClient?: DSiloedClient, messageQueue?: MessageQueue, workspaceManager?: WorkspaceManager);
38
- isEnabled(): boolean;
39
- isAutoRespawnEnabled(): boolean;
40
- hasLiveProcess(): boolean;
20
+ protected getCommand(): string;
21
+ protected getArgs(): string[];
22
+ protected getReadyIndicator(): string[];
23
+ /** Wait 5s before checking — Claude Code shows ❯ in its welcome screen before it's ready */
24
+ protected getMinReadyWaitMs(): number;
25
+ /** Wait 3s after ready for npx mcp-remote servers to finish connecting */
26
+ protected getPostReadyDelayMs(): number;
27
+ protected formatPrompt(prompt: string): string;
28
+ protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null): Promise<void>;
29
+ protected checkEnabled(): boolean;
30
+ protected getWorkingDirectory(): string;
31
+ protected isAutoRespawnConfigured(): boolean;
32
+ protected getIdleTimeoutMs(): number;
33
+ protected getSessionPrompt(): string | undefined;
34
+ protected getAgentEnv(): Record<string, string>;
35
+ protected getTmuxPrefix(): string;
36
+ protected getLogTag(): string;
37
+ protected getCostMetadataKey(): string;
38
+ protected buildLaunchPrompt(reason: string, conversationId: number | undefined, agentContext: string, workspaceContext: string): {
39
+ prompt: string;
40
+ extraArgs: string[];
41
+ };
41
42
  getLastClaudeSessionId(): string | null;
42
- setLastResumeId(resumeId: string): void;
43
- /**
44
- * Start the idle monitor that nudges idle sessions or respawns dead ones.
45
- */
46
- startIdleMonitor(): void;
47
- stopIdleMonitor(): void;
48
- /**
49
- * Launch a new Claude Code session. Uses --resume if a previous session ID is available.
50
- * This is the internal launch method — use launchAgent() for the AgentLauncher interface.
51
- */
52
- launchInternal(reason?: string, conversationId?: number): Promise<boolean>;
53
43
  /**
54
44
  * Store the Claude resume ID in the DSiloed agent session metadata.
55
45
  */
56
46
  private storeResumeId;
57
47
  /**
58
- * Set workspace configuration for the next launch.
59
- * The worktree will be created when launch() is called.
60
- */
61
- setWorkspaceConfig(config: WorkspaceLaunchConfig | null): void;
62
- /**
63
- * Called when an inbound message arrives and no active session can handle it.
64
- * @param triggerMessage - Content of the message that triggered the launch (included in prompt)
65
- */
66
- launchOnMessage(conversationId?: number, triggerMessage?: string): Promise<boolean>;
67
- /**
68
- * Check for idle sessions — nudge if process alive, respawn if dead.
69
- * If a session has been nudged multiple times without responding and has
70
- * pending messages, kill and relaunch it (hung session recovery).
71
- */
72
- private checkIdle;
73
- /**
74
- * Monitor a tmux session and detect when it exits.
75
- */
76
- private monitorTmuxSession;
77
- private checkTmuxSessions;
78
- /**
79
- * Send a message to all running Claude sessions via tmux send-keys.
80
- */
81
- nudge(): boolean;
82
- /**
83
- * Interrupt the Claude session for a specific conversation.
84
- * Sends Escape to stop current work, then redirects Claude to check
85
- * for new messages via remote_poll.
86
- */
87
- interrupt(conversationId: number, message?: string): Promise<boolean>;
88
- /**
89
- * Kill the Claude session for a specific conversation.
90
- */
91
- killByConversation(conversationId: number): void;
92
- /**
93
- * Kill all running Claude Code sessions.
48
+ * Extended idle checking with Claude-specific hung session recovery.
94
49
  */
50
+ protected checkIdle(): Promise<void>;
95
51
  kill(): void;
96
- /**
97
- * Launch a new agent process (AgentLauncher interface).
98
- */
99
- launch(config: LaunchConfig): Promise<AgentProcess | null>;
100
- /**
101
- * Resume a previous session by ID.
102
- */
103
- resume(resumeId: string, config: LaunchConfig): Promise<AgentProcess | null>;
104
- /**
105
- * Check if a specific process is still alive.
106
- */
107
- isAlive(process: AgentProcess): Promise<boolean>;
108
- /**
109
- * Terminate a specific agent process.
110
- */
111
- terminate(process: AgentProcess): void;
112
- /**
113
- * Terminate all managed agent processes.
114
- */
115
- terminateAll(): void;
116
- /**
117
- * Get all currently running agent processes.
118
- */
119
- getProcesses(): AgentProcess[];
120
- /**
121
- * Get the process handling a specific conversation.
122
- */
123
- getByConversation(conversationId: number): AgentProcess | undefined;
124
- destroy(): void;
52
+ stopIdleMonitor(): void;
125
53
  }
126
54
  //# sourceMappingURL=claude-launcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-launcher.d.ts","sourceRoot":"","sources":["../../src/core/claude-launcher.ts"],"names":[],"mappings":"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"}
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;IAkG1C,IAAI,IAAI,IAAI;IAQrB,eAAe,IAAI,IAAI;CAMxB"}