@dsiloed/silo-link 1.0.5 → 1.1.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 (57) 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 +25 -1
  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 +251 -22
  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/message-queue.d.ts +6 -0
  37. package/dist/core/message-queue.d.ts.map +1 -1
  38. package/dist/core/message-queue.js +15 -0
  39. package/dist/core/message-queue.js.map +1 -1
  40. package/dist/core/openai-launcher.d.ts +36 -0
  41. package/dist/core/openai-launcher.d.ts.map +1 -0
  42. package/dist/core/openai-launcher.js +59 -0
  43. package/dist/core/openai-launcher.js.map +1 -0
  44. package/dist/core/workspace-manager.d.ts +65 -0
  45. package/dist/core/workspace-manager.d.ts.map +1 -0
  46. package/dist/core/workspace-manager.js +299 -0
  47. package/dist/core/workspace-manager.js.map +1 -0
  48. package/dist/mcp/server.d.ts +2 -0
  49. package/dist/mcp/server.d.ts.map +1 -1
  50. package/dist/mcp/server.js.map +1 -1
  51. package/dist/mcp/tools/register-tools.d.ts +2 -0
  52. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  53. package/dist/mcp/tools/register-tools.js +251 -2
  54. package/dist/mcp/tools/register-tools.js.map +1 -1
  55. package/dist/types/index.d.ts +28 -0
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/package.json +1 -1
@@ -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"}
@@ -43,5 +43,11 @@ export declare class MessageQueue {
43
43
  * Get queue size for a session (for debugging)
44
44
  */
45
45
  queueSize(sessionId: string): number;
46
+ /**
47
+ * Check if there are messages that have NOT been delivered yet.
48
+ * Excludes messages already returned via poll/waitForMessage that are
49
+ * pending acknowledgment (i.e. Claude received them and is working on them).
50
+ */
51
+ hasUndeliveredMessages(sessionId: string): boolean;
46
52
  }
47
53
  //# sourceMappingURL=message-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/core/message-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAAkC;IAEjD,OAAO,CAAC,UAAU,CAAkC;IAEpD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAoBzD;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuC7E;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAU/C;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAW9C;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgBnB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWrC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGrC"}
1
+ {"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/core/message-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAAkC;IAEjD,OAAO,CAAC,UAAU,CAAkC;IAEpD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAoBzD;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuC7E;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAU/C;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAW9C;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgBnB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWrC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIpC;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAQnD"}
@@ -135,5 +135,20 @@ export class MessageQueue {
135
135
  queueSize(sessionId) {
136
136
  return this.queues.get(sessionId)?.length || 0;
137
137
  }
138
+ /**
139
+ * Check if there are messages that have NOT been delivered yet.
140
+ * Excludes messages already returned via poll/waitForMessage that are
141
+ * pending acknowledgment (i.e. Claude received them and is working on them).
142
+ */
143
+ hasUndeliveredMessages(sessionId) {
144
+ const queue = this.queues.get(sessionId);
145
+ if (!queue || queue.length === 0)
146
+ return false;
147
+ const ackId = this.pendingAck.get(sessionId);
148
+ if (ackId === undefined)
149
+ return queue.length > 0;
150
+ // One message was delivered (pending ack). Only "undelivered" if there are more.
151
+ return queue.length > 1;
152
+ }
138
153
  }
139
154
  //# sourceMappingURL=message-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/core/message-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/core/message-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { AgentLauncher, LaunchConfig, AgentProcess } from './agent-launcher.js';
2
+ /**
3
+ * OpenAI implementation of the AgentLauncher interface.
4
+ *
5
+ * Unlike Claude and Gemini, OpenAI does not natively support MCP.
6
+ * To use SiloLink tools, an MCP-to-function-calling adapter is needed:
7
+ *
8
+ * TODO: Implementation approach:
9
+ * - Option A: Use the OpenAI Agents SDK which has MCP client support
10
+ * (https://openai.github.io/openai-agents-python/mcp/)
11
+ * The SDK can connect to SiloLink's MCP server directly.
12
+ * - Option B: Use Codex CLI (OpenAI's coding agent) if it supports MCP
13
+ * - Option C: Build a thin adapter that translates SiloLink MCP tools
14
+ * into OpenAI function definitions, proxies calls back to SiloLink
15
+ *
16
+ * Process lifecycle:
17
+ * - Spawn via tmux (same as Claude) or as a Python subprocess
18
+ * - Session resume: Not natively supported — use conversation history replay
19
+ * - Working directory: Same worktree integration as Claude
20
+ * - Prompt injection: Send via stdin or API calls depending on approach
21
+ */
22
+ export declare class OpenAILauncher implements AgentLauncher {
23
+ launch(_config: LaunchConfig): Promise<AgentProcess | null>;
24
+ resume(_resumeId: string, _config: LaunchConfig): Promise<AgentProcess | null>;
25
+ isAlive(_process: AgentProcess): Promise<boolean>;
26
+ terminate(_process: AgentProcess): void;
27
+ terminateAll(): void;
28
+ getProcesses(): AgentProcess[];
29
+ getByConversation(_conversationId: number): AgentProcess | undefined;
30
+ nudge(): boolean;
31
+ isEnabled(): boolean;
32
+ isAutoRespawnEnabled(): boolean;
33
+ startIdleMonitor(): void;
34
+ destroy(): void;
35
+ }
36
+ //# sourceMappingURL=openai-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-launcher.d.ts","sourceRoot":"","sources":["../../src/core/openai-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErF;;;;;;;;;;;;;;;;;;;GAmBG;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,59 @@
1
+ /**
2
+ * OpenAI implementation of the AgentLauncher interface.
3
+ *
4
+ * Unlike Claude and Gemini, OpenAI does not natively support MCP.
5
+ * To use SiloLink tools, an MCP-to-function-calling adapter is needed:
6
+ *
7
+ * TODO: Implementation approach:
8
+ * - Option A: Use the OpenAI Agents SDK which has MCP client support
9
+ * (https://openai.github.io/openai-agents-python/mcp/)
10
+ * The SDK can connect to SiloLink's MCP server directly.
11
+ * - Option B: Use Codex CLI (OpenAI's coding agent) if it supports MCP
12
+ * - Option C: Build a thin adapter that translates SiloLink MCP tools
13
+ * into OpenAI function definitions, proxies calls back to SiloLink
14
+ *
15
+ * Process lifecycle:
16
+ * - Spawn via tmux (same as Claude) or as a Python subprocess
17
+ * - Session resume: Not natively supported — use conversation history replay
18
+ * - Working directory: Same worktree integration as Claude
19
+ * - Prompt injection: Send via stdin or API calls depending on approach
20
+ */
21
+ export class OpenAILauncher {
22
+ async launch(_config) {
23
+ throw new Error('OpenAILauncher not yet implemented');
24
+ }
25
+ async resume(_resumeId, _config) {
26
+ throw new Error('OpenAILauncher not yet implemented');
27
+ }
28
+ async isAlive(_process) {
29
+ return false;
30
+ }
31
+ terminate(_process) {
32
+ // TODO: Kill OpenAI process
33
+ }
34
+ terminateAll() {
35
+ // TODO: Kill all OpenAI processes
36
+ }
37
+ getProcesses() {
38
+ return [];
39
+ }
40
+ getByConversation(_conversationId) {
41
+ return undefined;
42
+ }
43
+ nudge() {
44
+ return false;
45
+ }
46
+ isEnabled() {
47
+ return false; // Not yet implemented
48
+ }
49
+ isAutoRespawnEnabled() {
50
+ return false;
51
+ }
52
+ startIdleMonitor() {
53
+ // TODO: Implement idle monitoring for OpenAI sessions
54
+ }
55
+ destroy() {
56
+ this.terminateAll();
57
+ }
58
+ }
59
+ //# sourceMappingURL=openai-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-launcher.js","sourceRoot":"","sources":["../../src/core/openai-launcher.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;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,65 @@
1
+ import type { Workspace, ConflictReport, MergeResult } from '../types/index.js';
2
+ export declare class WorkspaceManager {
3
+ private workspaces;
4
+ constructor();
5
+ /**
6
+ * Create a git worktree for a session.
7
+ * Creates a new branch from baseBranch and checks it out in an isolated directory.
8
+ */
9
+ createWorktree(sessionId: string, repoPath: string, branch: string, baseBranch?: string): Workspace;
10
+ /**
11
+ * Remove a worktree and clean up for a session.
12
+ */
13
+ removeWorktree(sessionId: string): void;
14
+ /**
15
+ * Check if any of the given files are claimed by other sessions.
16
+ */
17
+ checkConflicts(sessionId: string, files?: string[]): {
18
+ conflicts: ConflictReport[];
19
+ allClaims: {
20
+ sessionId: string;
21
+ files: string[];
22
+ }[];
23
+ };
24
+ /**
25
+ * Claim files for a session (advisory soft-lock).
26
+ * Returns which files were claimed and any conflicts with other sessions.
27
+ */
28
+ claimFiles(sessionId: string, files: string[]): {
29
+ claimed: string[];
30
+ conflicts: ConflictReport[];
31
+ };
32
+ /**
33
+ * Release file claims for a session.
34
+ */
35
+ releaseFiles(sessionId: string, files: string[]): void;
36
+ /**
37
+ * Merge the worktree branch back to baseBranch and clean up.
38
+ */
39
+ mergeAndCleanup(sessionId: string, deleteBranch?: boolean): MergeResult;
40
+ /**
41
+ * List all active workspaces.
42
+ */
43
+ listWorkspaces(): Workspace[];
44
+ /**
45
+ * Get the workspace for a specific session.
46
+ */
47
+ getWorkspace(sessionId: string): Workspace | undefined;
48
+ /**
49
+ * Get workspace by session and repo path.
50
+ */
51
+ private getBySessionAndRepo;
52
+ /**
53
+ * Persist workspace state to disk.
54
+ */
55
+ private saveState;
56
+ /**
57
+ * Load persisted workspace state from disk.
58
+ */
59
+ private loadState;
60
+ /**
61
+ * Clean up stale worktrees on startup (worktree dir no longer exists).
62
+ */
63
+ private cleanupStale;
64
+ }
65
+ //# sourceMappingURL=workspace-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../src/core/workspace-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAqC;;IAOvD;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,SAAS;IA4D1G;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA+BvC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG;QAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,EAAE,CAAA;KAAE;IAyBzI;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,cAAc,EAAE,CAAA;KAAE;IAwBlG;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,WAAW;IA8DpE;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE;IAI7B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAyBjB;;OAEG;IACH,OAAO,CAAC,YAAY;CAiBrB"}
@@ -0,0 +1,299 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { homedir } from 'node:os';
5
+ const STATE_DIR = join(homedir(), '.silolink');
6
+ const STATE_FILE = join(STATE_DIR, 'workspaces.json');
7
+ export class WorkspaceManager {
8
+ workspaces = new Map();
9
+ constructor() {
10
+ this.loadState();
11
+ this.cleanupStale();
12
+ }
13
+ /**
14
+ * Create a git worktree for a session.
15
+ * Creates a new branch from baseBranch and checks it out in an isolated directory.
16
+ */
17
+ createWorktree(sessionId, repoPath, branch, baseBranch = 'development') {
18
+ // Check if session already has a workspace for this repo
19
+ const existing = this.getBySessionAndRepo(sessionId, repoPath);
20
+ if (existing) {
21
+ throw new Error(`Session ${sessionId} already has a workspace for ${repoPath} on branch ${existing.branch}`);
22
+ }
23
+ // Resolve absolute repo path
24
+ const absRepoPath = repoPath.startsWith('/') ? repoPath : join(process.cwd(), repoPath);
25
+ // Worktree path: ~/.silolink/worktrees/<repo-name>/<branch>
26
+ const repoName = absRepoPath.split('/').pop() || 'repo';
27
+ const worktreePath = join(STATE_DIR, 'worktrees', repoName, branch);
28
+ // Ensure the parent directory exists
29
+ mkdirSync(join(STATE_DIR, 'worktrees', repoName), { recursive: true });
30
+ // Fetch latest from remote
31
+ try {
32
+ execSync(`git -C "${absRepoPath}" fetch origin ${baseBranch}`, { stdio: 'pipe' });
33
+ }
34
+ catch {
35
+ // Non-fatal: might be offline or baseBranch might be local-only
36
+ console.warn(`[WorkspaceManager] Could not fetch origin/${baseBranch} (non-fatal)`);
37
+ }
38
+ // Create the worktree with a new branch from baseBranch
39
+ try {
40
+ execSync(`git -C "${absRepoPath}" worktree add -b "${branch}" "${worktreePath}" "${baseBranch}"`, { stdio: 'pipe' });
41
+ }
42
+ catch (err) {
43
+ // Branch might already exist — try checking it out instead
44
+ try {
45
+ execSync(`git -C "${absRepoPath}" worktree add "${worktreePath}" "${branch}"`, { stdio: 'pipe' });
46
+ }
47
+ catch (innerErr) {
48
+ throw new Error(`Failed to create worktree: ${innerErr}`);
49
+ }
50
+ }
51
+ const workspace = {
52
+ sessionId,
53
+ repoPath: absRepoPath,
54
+ worktreePath,
55
+ branch,
56
+ baseBranch,
57
+ claimedFiles: [],
58
+ createdAt: new Date(),
59
+ };
60
+ this.workspaces.set(sessionId, workspace);
61
+ this.saveState();
62
+ console.log(`[WorkspaceManager] Created worktree: ${worktreePath} (branch: ${branch}, base: ${baseBranch})`);
63
+ return workspace;
64
+ }
65
+ /**
66
+ * Remove a worktree and clean up for a session.
67
+ */
68
+ removeWorktree(sessionId) {
69
+ const workspace = this.workspaces.get(sessionId);
70
+ if (!workspace)
71
+ return;
72
+ // Check for uncommitted changes
73
+ try {
74
+ const status = execSync(`git -C "${workspace.worktreePath}" status --porcelain`, { encoding: 'utf-8' }).trim();
75
+ if (status) {
76
+ console.warn(`[WorkspaceManager] Worktree ${workspace.worktreePath} has uncommitted changes — skipping removal`);
77
+ console.warn(` Uncommitted files:\n ${status.split('\n').join('\n ')}`);
78
+ // Still remove from tracking so it doesn't block future sessions
79
+ this.workspaces.delete(sessionId);
80
+ this.saveState();
81
+ return;
82
+ }
83
+ }
84
+ catch {
85
+ // Worktree directory might already be gone
86
+ }
87
+ // Remove the git worktree
88
+ try {
89
+ execSync(`git -C "${workspace.repoPath}" worktree remove "${workspace.worktreePath}" --force`, { stdio: 'pipe' });
90
+ console.log(`[WorkspaceManager] Removed worktree: ${workspace.worktreePath}`);
91
+ }
92
+ catch (err) {
93
+ console.warn(`[WorkspaceManager] Could not remove worktree ${workspace.worktreePath}: ${err}`);
94
+ }
95
+ this.workspaces.delete(sessionId);
96
+ this.saveState();
97
+ }
98
+ /**
99
+ * Check if any of the given files are claimed by other sessions.
100
+ */
101
+ checkConflicts(sessionId, files) {
102
+ const conflicts = [];
103
+ const allClaims = [];
104
+ for (const [wsSessionId, workspace] of this.workspaces) {
105
+ if (workspace.claimedFiles.length > 0) {
106
+ allClaims.push({ sessionId: wsSessionId, files: [...workspace.claimedFiles] });
107
+ }
108
+ if (wsSessionId === sessionId || !files)
109
+ continue;
110
+ for (const file of files) {
111
+ if (workspace.claimedFiles.includes(file)) {
112
+ conflicts.push({
113
+ file,
114
+ claimedBy: wsSessionId,
115
+ claimedAt: workspace.createdAt,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ return { conflicts, allClaims };
121
+ }
122
+ /**
123
+ * Claim files for a session (advisory soft-lock).
124
+ * Returns which files were claimed and any conflicts with other sessions.
125
+ */
126
+ claimFiles(sessionId, files) {
127
+ const workspace = this.workspaces.get(sessionId);
128
+ if (!workspace) {
129
+ throw new Error(`No workspace found for session ${sessionId}`);
130
+ }
131
+ const { conflicts } = this.checkConflicts(sessionId, files);
132
+ // Add files to claims (advisory — we claim even if there are conflicts, but report them)
133
+ const newClaims = [];
134
+ for (const file of files) {
135
+ if (!workspace.claimedFiles.includes(file)) {
136
+ workspace.claimedFiles.push(file);
137
+ newClaims.push(file);
138
+ }
139
+ }
140
+ if (newClaims.length > 0) {
141
+ this.saveState();
142
+ }
143
+ return { claimed: newClaims, conflicts };
144
+ }
145
+ /**
146
+ * Release file claims for a session.
147
+ */
148
+ releaseFiles(sessionId, files) {
149
+ const workspace = this.workspaces.get(sessionId);
150
+ if (!workspace)
151
+ return;
152
+ workspace.claimedFiles = workspace.claimedFiles.filter(f => !files.includes(f));
153
+ this.saveState();
154
+ }
155
+ /**
156
+ * Merge the worktree branch back to baseBranch and clean up.
157
+ */
158
+ mergeAndCleanup(sessionId, deleteBranch = true) {
159
+ const workspace = this.workspaces.get(sessionId);
160
+ if (!workspace) {
161
+ throw new Error(`No workspace found for session ${sessionId}`);
162
+ }
163
+ const result = {
164
+ success: false,
165
+ mergedBranch: workspace.branch,
166
+ baseBranch: workspace.baseBranch,
167
+ conflicts: [],
168
+ };
169
+ // Ensure all changes in worktree are committed
170
+ try {
171
+ const status = execSync(`git -C "${workspace.worktreePath}" status --porcelain`, { encoding: 'utf-8' }).trim();
172
+ if (status) {
173
+ result.conflicts = ['UNCOMMITTED_CHANGES'];
174
+ return result;
175
+ }
176
+ }
177
+ catch {
178
+ result.conflicts = ['WORKTREE_INACCESSIBLE'];
179
+ return result;
180
+ }
181
+ // Switch to the main repo and merge
182
+ try {
183
+ // Checkout baseBranch in main repo
184
+ execSync(`git -C "${workspace.repoPath}" checkout "${workspace.baseBranch}"`, { stdio: 'pipe' });
185
+ // Merge the worktree branch
186
+ try {
187
+ execSync(`git -C "${workspace.repoPath}" merge "${workspace.branch}" --no-ff -m "Merge ${workspace.branch} into ${workspace.baseBranch}"`, { stdio: 'pipe' });
188
+ result.success = true;
189
+ }
190
+ catch {
191
+ // Merge conflict — get the list of conflicting files
192
+ const conflictOutput = execSync(`git -C "${workspace.repoPath}" diff --name-only --diff-filter=U`, { encoding: 'utf-8' }).trim();
193
+ result.conflicts = conflictOutput ? conflictOutput.split('\n') : ['UNKNOWN_MERGE_CONFLICT'];
194
+ // Abort the merge so we don't leave repo in a dirty state
195
+ try {
196
+ execSync(`git -C "${workspace.repoPath}" merge --abort`, { stdio: 'pipe' });
197
+ }
198
+ catch { /* already clean */ }
199
+ return result;
200
+ }
201
+ // Clean up: remove worktree and optionally delete branch
202
+ this.removeWorktree(sessionId);
203
+ if (deleteBranch) {
204
+ try {
205
+ execSync(`git -C "${workspace.repoPath}" branch -d "${workspace.branch}"`, { stdio: 'pipe' });
206
+ }
207
+ catch {
208
+ console.warn(`[WorkspaceManager] Could not delete branch ${workspace.branch} (may have been already removed with worktree)`);
209
+ }
210
+ }
211
+ }
212
+ catch (err) {
213
+ result.conflicts = [`MERGE_ERROR: ${err}`];
214
+ }
215
+ return result;
216
+ }
217
+ /**
218
+ * List all active workspaces.
219
+ */
220
+ listWorkspaces() {
221
+ return Array.from(this.workspaces.values());
222
+ }
223
+ /**
224
+ * Get the workspace for a specific session.
225
+ */
226
+ getWorkspace(sessionId) {
227
+ return this.workspaces.get(sessionId);
228
+ }
229
+ /**
230
+ * Get workspace by session and repo path.
231
+ */
232
+ getBySessionAndRepo(sessionId, repoPath) {
233
+ const workspace = this.workspaces.get(sessionId);
234
+ if (workspace && workspace.repoPath === repoPath)
235
+ return workspace;
236
+ return undefined;
237
+ }
238
+ /**
239
+ * Persist workspace state to disk.
240
+ */
241
+ saveState() {
242
+ mkdirSync(STATE_DIR, { recursive: true });
243
+ const data = Array.from(this.workspaces.values()).map(ws => ({
244
+ sessionId: ws.sessionId,
245
+ repoPath: ws.repoPath,
246
+ worktreePath: ws.worktreePath,
247
+ branch: ws.branch,
248
+ baseBranch: ws.baseBranch,
249
+ claimedFiles: ws.claimedFiles,
250
+ createdAt: ws.createdAt.toISOString(),
251
+ }));
252
+ writeFileSync(STATE_FILE, JSON.stringify(data, null, 2));
253
+ }
254
+ /**
255
+ * Load persisted workspace state from disk.
256
+ */
257
+ loadState() {
258
+ if (!existsSync(STATE_FILE))
259
+ return;
260
+ try {
261
+ const raw = readFileSync(STATE_FILE, 'utf-8');
262
+ const data = JSON.parse(raw);
263
+ for (const ws of data) {
264
+ this.workspaces.set(ws.sessionId, {
265
+ sessionId: ws.sessionId,
266
+ repoPath: ws.repoPath,
267
+ worktreePath: ws.worktreePath,
268
+ branch: ws.branch,
269
+ baseBranch: ws.baseBranch,
270
+ claimedFiles: ws.claimedFiles,
271
+ createdAt: new Date(ws.createdAt),
272
+ });
273
+ }
274
+ console.log(`[WorkspaceManager] Loaded ${data.length} workspace(s) from disk`);
275
+ }
276
+ catch (err) {
277
+ console.warn(`[WorkspaceManager] Failed to load workspace state: ${err}`);
278
+ }
279
+ }
280
+ /**
281
+ * Clean up stale worktrees on startup (worktree dir no longer exists).
282
+ */
283
+ cleanupStale() {
284
+ const stale = [];
285
+ for (const [sessionId, workspace] of this.workspaces) {
286
+ if (!existsSync(workspace.worktreePath)) {
287
+ stale.push(sessionId);
288
+ }
289
+ }
290
+ if (stale.length > 0) {
291
+ for (const sessionId of stale) {
292
+ console.log(`[WorkspaceManager] Cleaning up stale workspace for session ${sessionId}`);
293
+ this.workspaces.delete(sessionId);
294
+ }
295
+ this.saveState();
296
+ }
297
+ }
298
+ }
299
+ //# sourceMappingURL=workspace-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/core/workspace-manager.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { DSiloedClient } from '../api/dsiloed-client.js';
4
4
  import type { SubscriptionManager } from '../cable/subscription-manager.js';
5
5
  import type { ActionCableClient } from '../cable/action-cable-client.js';
6
6
  import type { SiloLinkConfig } from '../types/index.js';
7
+ import type { WorkspaceManager } from '../core/workspace-manager.js';
7
8
  interface McpServerDeps {
8
9
  config: SiloLinkConfig;
9
10
  sessionManager: SessionManager;
@@ -11,6 +12,7 @@ interface McpServerDeps {
11
12
  dsiloedClient: DSiloedClient;
12
13
  subscriptionManager: SubscriptionManager;
13
14
  cableClient: ActionCableClient;
15
+ workspaceManager?: WorkspaceManager;
14
16
  }
15
17
  export declare class SiloLinkMcpServer {
16
18
  private app;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,UAAU,aAAa;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAyD;IAC3E,OAAO,CAAC,IAAI,CAAgB;gBAEhB,IAAI,EAAE,aAAa;IAO/B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,WAAW;IAoEnB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,UAAU,aAAa;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAyD;IAC3E,OAAO,CAAC,IAAI,CAAgB;gBAEhB,IAAI,EAAE,aAAa;IAO/B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,WAAW;IAoEnB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import type { DSiloedClient } from '../../api/dsiloed-client.js';
6
6
  import type { SubscriptionManager } from '../../cable/subscription-manager.js';
7
7
  import type { ActionCableClient } from '../../cable/action-cable-client.js';
8
8
  import type { SiloLinkConfig } from '../../types/index.js';
9
+ import type { WorkspaceManager } from '../../core/workspace-manager.js';
9
10
  interface ToolDeps {
10
11
  config: SiloLinkConfig;
11
12
  sessionManager: SessionManager;
@@ -13,6 +14,7 @@ interface ToolDeps {
13
14
  dsiloedClient: DSiloedClient;
14
15
  subscriptionManager: SubscriptionManager;
15
16
  cableClient: ActionCableClient;
17
+ workspaceManager?: WorkspaceManager;
16
18
  }
17
19
  export declare function registerTools(server: McpServer, transport: StreamableHTTPServerTransport, deps: ToolDeps): void;
18
20
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AAGpE,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAqBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,QAAQ,GACb,IAAI,CAscN"}
1
+ {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAIxE,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAqBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,QAAQ,GACb,IAAI,CAuvBN"}