@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.
- package/README.md +67 -2
- package/dist/cable/action-cable-client.d.ts +5 -0
- package/dist/cable/action-cable-client.d.ts.map +1 -1
- package/dist/cable/action-cable-client.js +14 -0
- package/dist/cable/action-cable-client.js.map +1 -1
- package/dist/cable/subscription-manager.d.ts.map +1 -1
- package/dist/cable/subscription-manager.js +23 -5
- package/dist/cable/subscription-manager.js.map +1 -1
- package/dist/cli/claude-md-block.d.ts +6 -0
- package/dist/cli/claude-md-block.d.ts.map +1 -0
- package/dist/cli/claude-md-block.js +84 -0
- package/dist/cli/claude-md-block.js.map +1 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +80 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/agent-launcher.d.ts +101 -0
- package/dist/core/agent-launcher.d.ts.map +1 -0
- package/dist/core/agent-launcher.js +2 -0
- package/dist/core/agent-launcher.js.map +1 -0
- package/dist/core/bridge.d.ts +1 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +105 -2
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/claude-launcher.d.ts +50 -5
- package/dist/core/claude-launcher.d.ts.map +1 -1
- package/dist/core/claude-launcher.js +238 -13
- package/dist/core/claude-launcher.js.map +1 -1
- package/dist/core/gemini-launcher.d.ts +32 -0
- package/dist/core/gemini-launcher.d.ts.map +1 -0
- package/dist/core/gemini-launcher.js +55 -0
- package/dist/core/gemini-launcher.js.map +1 -0
- package/dist/core/launcher-factory.d.ts +13 -0
- package/dist/core/launcher-factory.d.ts.map +1 -0
- package/dist/core/launcher-factory.js +24 -0
- package/dist/core/launcher-factory.js.map +1 -0
- package/dist/core/openai-launcher.d.ts +36 -0
- package/dist/core/openai-launcher.d.ts.map +1 -0
- package/dist/core/openai-launcher.js +59 -0
- package/dist/core/openai-launcher.js.map +1 -0
- package/dist/core/workspace-manager.d.ts +65 -0
- package/dist/core/workspace-manager.d.ts.map +1 -0
- package/dist/core/workspace-manager.js +299 -0
- package/dist/core/workspace-manager.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/register-tools.d.ts +2 -0
- package/dist/mcp/tools/register-tools.d.ts.map +1 -1
- package/dist/mcp/tools/register-tools.js +253 -3
- package/dist/mcp/tools/register-tools.js.map +1 -1
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,9 @@ Claude Code (tmux) ──MCP──► :3579 ──REST API──► ├─
|
|
|
29
29
|
- **Control Channel** — launch/stop/status commands via ActionCable from the UI
|
|
30
30
|
- **Channel linking** — command Claude from Slack, Discord, Teams, or SMS
|
|
31
31
|
- **Session continuity** — `remote_load_context` restores prior conversation history on session restart
|
|
32
|
+
- **Workspace isolation** — git worktrees give each session its own branch and working directory
|
|
33
|
+
- **File claim tracking** — advisory soft-locks with cross-session conflict notifications
|
|
34
|
+
- **Provider abstraction** — `AgentLauncher` interface supports Claude, Gemini, and OpenAI adapters
|
|
32
35
|
|
|
33
36
|
## Installation
|
|
34
37
|
|
|
@@ -55,6 +58,7 @@ Creates `~/.silolink/config.json`:
|
|
|
55
58
|
| `mcp_port` | Local port for the MCP server | `3579` |
|
|
56
59
|
| `reconnect_interval_ms` | Base reconnect delay | `5000` |
|
|
57
60
|
| `max_reconnect_attempts` | Max reconnect tries | `20` |
|
|
61
|
+
| `agent_provider` | AI provider: `claude`, `gemini`, `openai` | `claude` |
|
|
58
62
|
| `claude_command` | Path to Claude CLI binary | `claude` |
|
|
59
63
|
| `claude_working_directory` | Working directory for spawned sessions | — |
|
|
60
64
|
| `claude_auto_respawn` | Auto-respawn on idle/exit | `false` |
|
|
@@ -176,6 +180,11 @@ tmux attach -t silolink-claude-1774363497579
|
|
|
176
180
|
| `remote_wait_for_command` | Block until next message (prefer `remote_poll`) | Yes |
|
|
177
181
|
| `remote_sessions` | List active sessions | No |
|
|
178
182
|
| `remote_unregister` | Unregister and clean up | No |
|
|
183
|
+
| `remote_workspace_create` | Create an isolated git worktree for this session | No |
|
|
184
|
+
| `remote_workspace_claim` | Claim files (advisory soft-lock) with conflict detection | No |
|
|
185
|
+
| `remote_workspace_check` | Check file claims across all sessions | No |
|
|
186
|
+
| `remote_workspace_merge` | Merge worktree branch back and clean up | No |
|
|
187
|
+
| `remote_workspace_list` | List all active workspaces | No |
|
|
179
188
|
|
|
180
189
|
### remote_register
|
|
181
190
|
|
|
@@ -220,6 +229,57 @@ Input: { question: "Should I proceed?", timeout?: 300 }
|
|
|
220
229
|
Output: { response: "Yes", sender_name: "rholmes" }
|
|
221
230
|
```
|
|
222
231
|
|
|
232
|
+
## Workspace Isolation
|
|
233
|
+
|
|
234
|
+
Multiple sessions can work on the same repo without conflicts using git worktrees:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
Session A: feature/auth ──► ~/.silolink/worktrees/myapp/feature/auth/
|
|
238
|
+
Session B: feature/api ──► ~/.silolink/worktrees/myapp/feature/api/
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Creating a Workspace
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// Agent creates a worktree on session start
|
|
245
|
+
remote_workspace_create({ repo: "/home/user/myapp", branch: "feature/auth" })
|
|
246
|
+
// → { worktree_path: "~/.silolink/worktrees/myapp/feature/auth", branch: "feature/auth" }
|
|
247
|
+
|
|
248
|
+
// Claim files before editing (advisory — warns on conflicts, doesn't block)
|
|
249
|
+
remote_workspace_claim({ files: ["src/auth.ts", "src/middleware.ts"] })
|
|
250
|
+
// → { claimed: [...], conflicts: [] }
|
|
251
|
+
|
|
252
|
+
// Check what other sessions are working on
|
|
253
|
+
remote_workspace_check({})
|
|
254
|
+
// → { all_claims: [{ session_id: "session-B", files: ["src/api.ts"] }] }
|
|
255
|
+
|
|
256
|
+
// When done, merge back
|
|
257
|
+
remote_workspace_merge({})
|
|
258
|
+
// → { success: true, merged_branch: "feature/auth" }
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Cross-Session Conflict Notifications
|
|
262
|
+
|
|
263
|
+
When session A claims files that session B already owns, both sessions receive automatic notifications via their message queues and DSiloed conversations.
|
|
264
|
+
|
|
265
|
+
### Launcher Integration
|
|
266
|
+
|
|
267
|
+
The control channel `launch` command supports workspace params:
|
|
268
|
+
|
|
269
|
+
```json
|
|
270
|
+
{ "type": "launch", "conversation_id": 123, "repo_path": "/home/user/myapp", "branch": "feature/auth" }
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Provider Selection
|
|
274
|
+
|
|
275
|
+
Set `agent_provider` in `~/.silolink/config.json`:
|
|
276
|
+
|
|
277
|
+
```json
|
|
278
|
+
{ "agent_provider": "claude" }
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Supported providers: `claude` (default, fully implemented), `gemini` (stub), `openai` (stub).
|
|
282
|
+
|
|
223
283
|
## Control Channel API
|
|
224
284
|
|
|
225
285
|
SiloLink subscribes to a tenant-scoped ActionCable control channel on startup. The DSiloed UI sends commands via REST:
|
|
@@ -343,7 +403,12 @@ src/
|
|
|
343
403
|
bridge.ts # Main orchestrator — startup, shutdown, control channel
|
|
344
404
|
session-manager.ts # Session registry with 3-map lookup + validation
|
|
345
405
|
message-queue.ts # Per-session inbound queue with acknowledgment protocol
|
|
346
|
-
|
|
406
|
+
agent-launcher.ts # AgentLauncher interface and types
|
|
407
|
+
claude-launcher.ts # Claude Code launcher (tmux-based, implements AgentLauncher)
|
|
408
|
+
gemini-launcher.ts # Gemini launcher stub (implements AgentLauncher)
|
|
409
|
+
openai-launcher.ts # OpenAI launcher stub (implements AgentLauncher)
|
|
410
|
+
launcher-factory.ts # Provider selection factory
|
|
411
|
+
workspace-manager.ts # Git worktree lifecycle, file claims, conflict detection
|
|
347
412
|
cable/
|
|
348
413
|
action-cable-client.ts # ActionCable WebSocket client with auto-reconnect
|
|
349
414
|
subscription-manager.ts # Conversation subscriptions, echo prevention, message buffering
|
|
@@ -352,7 +417,7 @@ src/
|
|
|
352
417
|
mcp/
|
|
353
418
|
server.ts # MCP server (Streamable HTTP on Express)
|
|
354
419
|
tools/
|
|
355
|
-
register-tools.ts # All
|
|
420
|
+
register-tools.ts # All 14 MCP tool definitions
|
|
356
421
|
types/
|
|
357
422
|
index.ts # Shared TypeScript interfaces
|
|
358
423
|
```
|
|
@@ -20,6 +20,11 @@ export declare class ActionCableClient extends EventEmitter {
|
|
|
20
20
|
* Subscribe to a generic ActionCable channel (not conversation-specific).
|
|
21
21
|
*/
|
|
22
22
|
subscribeChannel(channelName: string, params?: Record<string, unknown>): void;
|
|
23
|
+
/**
|
|
24
|
+
* Send an action message to a subscribed channel.
|
|
25
|
+
* This calls the `command` action on the Rails channel, which broadcasts the data.
|
|
26
|
+
*/
|
|
27
|
+
sendCommand(channel: string, data: Record<string, unknown>): void;
|
|
23
28
|
private sendSubscribe;
|
|
24
29
|
private handleMessage;
|
|
25
30
|
private scheduleReconnect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-cable-client.d.ts","sourceRoot":"","sources":["../../src/cable/action-cable-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAU/D,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,sBAAsB,CAA0B;gBAE5C,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY;IAMrD,QAAQ,IAAI,eAAe;IAI3B,OAAO,IAAI,IAAI;IAgDf,UAAU,IAAI,IAAI;IAelB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAavC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAa7E,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;IAgErB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
1
|
+
{"version":3,"file":"action-cable-client.d.ts","sourceRoot":"","sources":["../../src/cable/action-cable-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAU/D,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,sBAAsB,CAA0B;gBAE5C,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY;IAMrD,QAAQ,IAAI,eAAe;IAI3B,OAAO,IAAI,IAAI;IAgDf,UAAU,IAAI,IAAI;IAelB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAavC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAa7E;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWjE,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;IAgErB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -107,6 +107,20 @@ export class ActionCableClient extends EventEmitter {
|
|
|
107
107
|
this.sendSubscribe(identifier);
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Send an action message to a subscribed channel.
|
|
112
|
+
* This calls the `command` action on the Rails channel, which broadcasts the data.
|
|
113
|
+
*/
|
|
114
|
+
sendCommand(channel, data) {
|
|
115
|
+
const identifier = JSON.stringify({ channel });
|
|
116
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
117
|
+
this.ws.send(JSON.stringify({
|
|
118
|
+
command: 'message',
|
|
119
|
+
identifier,
|
|
120
|
+
data: JSON.stringify({ action: 'command', ...data }),
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
110
124
|
sendSubscribe(identifier) {
|
|
111
125
|
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
112
126
|
this.ws.send(JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-cable-client.js","sourceRoot":"","sources":["../../src/cable/action-cable-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action-cable-client.js","sourceRoot":"","sources":["../../src/cable/action-cable-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,MAAM,CAAiB;IACvB,GAAG,CAAe;IAClB,EAAE,GAAqB,IAAI,CAAC;IAC5B,KAAK,GAAoB,cAAc,CAAC;IACxC,iBAAiB,GAAG,CAAC,CAAC;IACtB,cAAc,GAAyC,IAAI,CAAC;IAC5D,oBAAoB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACtD,sBAAsB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAExD,YAAY,MAAsB,EAAE,GAAiB;QACnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;YAAE,OAAO;QAEtE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,GAAG,MAAM,gBAAgB,kBAAkB,CAAC,KAAK,CAAC,cAAc,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAExH,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,wDAAwD;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;gBACzD,MAAM,OAAO,GAAI,QAAQ,CAAC,OAAmC,EAAE,IAAI,CAAC;gBACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,kBAAkB,IAAI,OAAO,KAAK,mBAAmB,CAAC;gBAC9G,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YACnD,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,YAAY,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;gBACpE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,cAAsB;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,qBAAqB;YAC9B,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,WAAW,CAAC,cAAsB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,qBAAqB;YAC9B,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1B,OAAO,EAAE,aAAa;gBACtB,UAAU;aACX,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,WAAmB,EAAE,MAAgC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,WAAW;YACpB,GAAG,MAAM;SACV,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,WAAW,EAAE,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAe,EAAE,IAA6B;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1B,OAAO,EAAE,SAAS;gBAClB,UAAU;gBACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;aACrD,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,UAAkB;QACtC,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1B,OAAO,EAAE,WAAW;gBACpB,UAAU;aACX,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAA8B;QAClD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,SAAS;gBACZ,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;gBACzB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,qEAAqE;gBACrE,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1D,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBACD,MAAM;YAER,KAAK,MAAM;gBACT,wCAAwC;gBACxC,MAAM;YAER,KAAK,sBAAsB;gBACzB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACrD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBACD,MAAM;YAER,KAAK,qBAAqB;gBACxB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,CAAC;gBACD,MAAM;YAER;gBACE,sDAAsD;gBACtD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC5C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAG5C,CAAC;wBAEF,IAAI,MAAM,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;4BAChD,qDAAqD;4BACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;wBACnD,CAAC;6BAAM,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;4BAClC,uBAAuB;4BACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gCACnB,cAAc,EAAE,MAAM,CAAC,eAAe;gCACtC,IAAI,EAAE,QAAQ,CAAC,OAAO;6BACvB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,+BAA+B;oBACjC,CAAC;gBACH,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACjE,uEAAuE;YACvE,+DAA+D;YAC/D,OAAO,CAAC,IAAI,CAAC,yCAAyC,IAAI,CAAC,MAAM,CAAC,sBAAsB,qCAAqC,CAAC,CAAC;YAC/H,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,yDAAyD;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAC1C,KAAK,CACN,CAAC;QACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-manager.d.ts","sourceRoot":"","sources":["../../src/cable/subscription-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,kBAAkB,CAAgB;IAE1C,OAAO,CAAC,eAAe,CAA4C;gBAGjE,WAAW,EAAE,iBAAiB,EAC9B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa;IAa/B,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIvC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAanC;;;OAGG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAWrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO/C,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"subscription-manager.d.ts","sourceRoot":"","sources":["../../src/cable/subscription-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,kBAAkB,CAAgB;IAE1C,OAAO,CAAC,eAAe,CAA4C;gBAGjE,WAAW,EAAE,iBAAiB,EAC9B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa;IAa/B,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIvC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAanC;;;OAGG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAWrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO/C,OAAO,CAAC,kBAAkB;CAgG3B"}
|
|
@@ -96,12 +96,30 @@ export class SubscriptionManager {
|
|
|
96
96
|
// Route to correct session by conversation ID
|
|
97
97
|
const session = this.sessionManager.getByConversationId(conversationId);
|
|
98
98
|
if (session) {
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
// Check if session is stale (no MCP activity for 2+ minutes).
|
|
100
|
+
// This catches cases where Claude went idle and stopped generating
|
|
101
|
+
// but didn't unregister — the tmux is alive but nobody is polling.
|
|
102
|
+
const staleCutoff = 2 * 60 * 1000; // 2 minutes
|
|
103
|
+
const sessionAge = Date.now() - session.lastActivity.getTime();
|
|
104
|
+
if (sessionAge > staleCutoff && this.claudeLauncher?.isEnabled()) {
|
|
105
|
+
console.log(`[SiloLink] Session ${session.sessionId} is stale (no MCP activity for ${Math.round(sessionAge / 60000)}min) — recycling for conv=${conversationId}`);
|
|
106
|
+
// Kill the stale tmux session
|
|
107
|
+
this.claudeLauncher.killByConversation(conversationId);
|
|
108
|
+
// Clean up the dead session
|
|
109
|
+
this.messageQueue.clearSession(session.sessionId);
|
|
110
|
+
this.sessionManager.unregister(session.sessionId);
|
|
111
|
+
// Fall through to the auto-launch path below
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.log(`[SiloLink] Enqueuing to session ${session.sessionId}`);
|
|
115
|
+
this.messageQueue.enqueue(session.sessionId, inbound);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
101
118
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
119
|
+
// No active session (either never had one, or stale session was just recycled)
|
|
120
|
+
{
|
|
121
|
+
console.log(`[SiloLink] No active session for conversation ${conversationId}`);
|
|
122
|
+
// Auto-launch Claude Code if configured
|
|
105
123
|
if (this.claudeLauncher?.isEnabled()) {
|
|
106
124
|
console.log(`[SiloLink] Triggering auto-launch for inbound message...`);
|
|
107
125
|
// Let the user know we're restarting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-manager.js","sourceRoot":"","sources":["../../src/cable/subscription-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subscription-manager.js","sourceRoot":"","sources":["../../src/cable/subscription-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SiloLink CLAUDE.md block that instructs Claude Code how to use SiloLink.
|
|
3
|
+
* This is the canonical source — `silolink setup-claude-md` writes it into projects.
|
|
4
|
+
*/
|
|
5
|
+
export declare const SILOLINK_CLAUDE_MD_BLOCK = "## Remote Communication (SiloLink)\n\nWhen the SiloLink MCP server is connected:\n\n1. At the start of every session, register with `remote_register({ session_name: \"<project_name>\" })`.\n If a `conversation_id` is provided in the launch prompt, pass it: `remote_register({ session_name: \"<name>\", conversation_id: <id> })`.\n2. **Session Continuity**: If you registered with an existing `conversation_id`, immediately call\n `remote_load_context()` to load prior conversation history. Review the returned messages to\n understand what was discussed and continue seamlessly. If a `resume_id` is returned, note it\n for reference but continue with the loaded history context.\n3. **ALL communication with the user MUST go through SiloLink** \u2014 never write to the terminal.\n The user is communicating via PortableMind, not watching the terminal.\n4. Send progress updates with `remote_notify()` for long-running tasks.\n5. When you need human input, use `remote_ask()` for quick questions that expect an immediate reply.\n6. When idle or waiting for input, use the **poll loop** (NOT `remote_wait_for_command`):\n - Call `remote_poll()` \u2014 this returns instantly\n - If `{ pending: true }`: sleep 3 seconds, then poll again\n - If a message is received: **process it immediately** (see rule 9), send result via `remote_notify()`, then resume polling\n - **Idle timeout**: If you receive `pending: true` continuously for 5 minutes (~100 polls),\n send `remote_notify({ message: \"Going idle \u2014 I will restart automatically when you send a message.\" })`,\n then call `remote_unregister()` to cleanly release the session, and then **exit the session**\n (stop generating). SiloLink's auto-launch will start a fresh session when the next message\n arrives. This prevents wasting tokens on idle polling.\n - The idle counter resets to zero whenever you receive and process a message.\n - This timeout only applies to idle polling \u2014 never exit while actively working on a task.\n7. Between major tasks, poll once with `remote_poll()` to check for new instructions.\n8. If you have no active task, always enter the poll loop. This includes\n after context compaction \u2014 re-enter the loop immediately.\n9. **CRITICAL \u2014 Every message from `remote_poll()` is NEW and MUST be processed.**\n `remote_poll()` uses an acknowledge-on-next-call design: once a message is returned to you,\n it is removed from the queue. It will never be returned again. This means:\n - If `remote_poll()` returns a message, it has **not** been processed yet \u2014 you must handle it.\n - Never dismiss a polled message as \"old\" or \"stale\" \u2014 the queue guarantees freshness.\n - Messages from `remote_load_context()` are **historical context only** (already processed\n by a previous session). Messages from `remote_poll()` are **always actionable**.\n - If you are unsure whether a message needs a response, respond anyway \u2014 a duplicate\n acknowledgment is far better than ignoring the user.\n\n### Why remote_poll instead of remote_wait_for_command\n\n`remote_wait_for_command` blocks for up to 30 minutes. If Claude Code cancels the tool call\n(user interruption, internal timeout), the message can be lost. `remote_poll` is non-blocking \u2014\neach call takes milliseconds, so there's no cancellation window. Messages are guaranteed to\nsurvive in the queue until successfully delivered.\n\n### Poll loop pattern\n\n```\n// Register (use conversation_id if provided in launch prompt)\nremote_register({ session_name: \"portablemind\" })\n// OR with specific conversation:\nremote_register({ session_name: \"my-session\", conversation_id: 123 })\n\n// If attaching to existing conversation, load prior context\ncontext = remote_load_context()\n// Review context.history to understand what was discussed\n// context.resume_id available if prior Claude session existed\n\n// Then poll loop with idle timeout\nidle_polls = 0\nwhile (idle) {\n result = remote_poll()\n if (result.pending) {\n idle_polls++\n if (idle_polls >= 100) { // ~5 minutes at 3s intervals\n remote_notify({ message: \"Going idle \u2014 I will restart automatically when you send a message.\" })\n remote_unregister() // Clean up session so auto-launch works on next message\n exit // Stop generating. SiloLink auto-launch handles restart.\n }\n sleep(3 seconds)\n continue\n }\n idle_polls = 0 // Reset on message received\n // Got a message \u2014 process it\n handle(result.message)\n remote_notify({ message: \"Done: ...\" })\n}\n```\n";
|
|
6
|
+
//# sourceMappingURL=claude-md-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md-block.d.ts","sourceRoot":"","sources":["../../src/cli/claude-md-block.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,ohJA8EpC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SiloLink CLAUDE.md block that instructs Claude Code how to use SiloLink.
|
|
3
|
+
* This is the canonical source — `silolink setup-claude-md` writes it into projects.
|
|
4
|
+
*/
|
|
5
|
+
export const SILOLINK_CLAUDE_MD_BLOCK = `## Remote Communication (SiloLink)
|
|
6
|
+
|
|
7
|
+
When the SiloLink MCP server is connected:
|
|
8
|
+
|
|
9
|
+
1. At the start of every session, register with \`remote_register({ session_name: "<project_name>" })\`.
|
|
10
|
+
If a \`conversation_id\` is provided in the launch prompt, pass it: \`remote_register({ session_name: "<name>", conversation_id: <id> })\`.
|
|
11
|
+
2. **Session Continuity**: If you registered with an existing \`conversation_id\`, immediately call
|
|
12
|
+
\`remote_load_context()\` to load prior conversation history. Review the returned messages to
|
|
13
|
+
understand what was discussed and continue seamlessly. If a \`resume_id\` is returned, note it
|
|
14
|
+
for reference but continue with the loaded history context.
|
|
15
|
+
3. **ALL communication with the user MUST go through SiloLink** — never write to the terminal.
|
|
16
|
+
The user is communicating via PortableMind, not watching the terminal.
|
|
17
|
+
4. Send progress updates with \`remote_notify()\` for long-running tasks.
|
|
18
|
+
5. When you need human input, use \`remote_ask()\` for quick questions that expect an immediate reply.
|
|
19
|
+
6. When idle or waiting for input, use the **poll loop** (NOT \`remote_wait_for_command\`):
|
|
20
|
+
- Call \`remote_poll()\` — this returns instantly
|
|
21
|
+
- If \`{ pending: true }\`: sleep 3 seconds, then poll again
|
|
22
|
+
- If a message is received: **process it immediately** (see rule 9), send result via \`remote_notify()\`, then resume polling
|
|
23
|
+
- **Idle timeout**: If you receive \`pending: true\` continuously for 5 minutes (~100 polls),
|
|
24
|
+
send \`remote_notify({ message: "Going idle — I will restart automatically when you send a message." })\`,
|
|
25
|
+
then call \`remote_unregister()\` to cleanly release the session, and then **exit the session**
|
|
26
|
+
(stop generating). SiloLink's auto-launch will start a fresh session when the next message
|
|
27
|
+
arrives. This prevents wasting tokens on idle polling.
|
|
28
|
+
- The idle counter resets to zero whenever you receive and process a message.
|
|
29
|
+
- This timeout only applies to idle polling — never exit while actively working on a task.
|
|
30
|
+
7. Between major tasks, poll once with \`remote_poll()\` to check for new instructions.
|
|
31
|
+
8. If you have no active task, always enter the poll loop. This includes
|
|
32
|
+
after context compaction — re-enter the loop immediately.
|
|
33
|
+
9. **CRITICAL — Every message from \`remote_poll()\` is NEW and MUST be processed.**
|
|
34
|
+
\`remote_poll()\` uses an acknowledge-on-next-call design: once a message is returned to you,
|
|
35
|
+
it is removed from the queue. It will never be returned again. This means:
|
|
36
|
+
- If \`remote_poll()\` returns a message, it has **not** been processed yet — you must handle it.
|
|
37
|
+
- Never dismiss a polled message as "old" or "stale" — the queue guarantees freshness.
|
|
38
|
+
- Messages from \`remote_load_context()\` are **historical context only** (already processed
|
|
39
|
+
by a previous session). Messages from \`remote_poll()\` are **always actionable**.
|
|
40
|
+
- If you are unsure whether a message needs a response, respond anyway — a duplicate
|
|
41
|
+
acknowledgment is far better than ignoring the user.
|
|
42
|
+
|
|
43
|
+
### Why remote_poll instead of remote_wait_for_command
|
|
44
|
+
|
|
45
|
+
\`remote_wait_for_command\` blocks for up to 30 minutes. If Claude Code cancels the tool call
|
|
46
|
+
(user interruption, internal timeout), the message can be lost. \`remote_poll\` is non-blocking —
|
|
47
|
+
each call takes milliseconds, so there's no cancellation window. Messages are guaranteed to
|
|
48
|
+
survive in the queue until successfully delivered.
|
|
49
|
+
|
|
50
|
+
### Poll loop pattern
|
|
51
|
+
|
|
52
|
+
\`\`\`
|
|
53
|
+
// Register (use conversation_id if provided in launch prompt)
|
|
54
|
+
remote_register({ session_name: "portablemind" })
|
|
55
|
+
// OR with specific conversation:
|
|
56
|
+
remote_register({ session_name: "my-session", conversation_id: 123 })
|
|
57
|
+
|
|
58
|
+
// If attaching to existing conversation, load prior context
|
|
59
|
+
context = remote_load_context()
|
|
60
|
+
// Review context.history to understand what was discussed
|
|
61
|
+
// context.resume_id available if prior Claude session existed
|
|
62
|
+
|
|
63
|
+
// Then poll loop with idle timeout
|
|
64
|
+
idle_polls = 0
|
|
65
|
+
while (idle) {
|
|
66
|
+
result = remote_poll()
|
|
67
|
+
if (result.pending) {
|
|
68
|
+
idle_polls++
|
|
69
|
+
if (idle_polls >= 100) { // ~5 minutes at 3s intervals
|
|
70
|
+
remote_notify({ message: "Going idle — I will restart automatically when you send a message." })
|
|
71
|
+
remote_unregister() // Clean up session so auto-launch works on next message
|
|
72
|
+
exit // Stop generating. SiloLink auto-launch handles restart.
|
|
73
|
+
}
|
|
74
|
+
sleep(3 seconds)
|
|
75
|
+
continue
|
|
76
|
+
}
|
|
77
|
+
idle_polls = 0 // Reset on message received
|
|
78
|
+
// Got a message — process it
|
|
79
|
+
handle(result.message)
|
|
80
|
+
remote_notify({ message: "Done: ..." })
|
|
81
|
+
}
|
|
82
|
+
\`\`\`
|
|
83
|
+
`;
|
|
84
|
+
//# sourceMappingURL=claude-md-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md-block.js","sourceRoot":"","sources":["../../src/cli/claude-md-block.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAiP9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -2,8 +2,10 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
+
import fs from 'node:fs';
|
|
5
6
|
import { interactiveConfig, configExists, loadConfig } from '../config/config-manager.js';
|
|
6
7
|
import { writePidFile, readPidFile, removePidFile, isProcessRunning } from './daemon.js';
|
|
8
|
+
import { SILOLINK_CLAUDE_MD_BLOCK } from './claude-md-block.js';
|
|
7
9
|
import { Bridge } from '../core/bridge.js';
|
|
8
10
|
const program = new Command();
|
|
9
11
|
program
|
|
@@ -122,7 +124,7 @@ program
|
|
|
122
124
|
if (opts.prompt) {
|
|
123
125
|
config.claude_session_prompt = opts.prompt;
|
|
124
126
|
}
|
|
125
|
-
const launched = await launcher.
|
|
127
|
+
const launched = await launcher.launchInternal('cli');
|
|
126
128
|
if (!launched) {
|
|
127
129
|
console.error('Failed to launch Claude Code');
|
|
128
130
|
process.exit(1);
|
|
@@ -134,11 +136,88 @@ program
|
|
|
134
136
|
process.exit(0);
|
|
135
137
|
});
|
|
136
138
|
});
|
|
139
|
+
program
|
|
140
|
+
.command('interrupt')
|
|
141
|
+
.description('Interrupt the active Claude session and redirect to check for new messages')
|
|
142
|
+
.option('-c, --conversation <id>', 'Conversation ID to interrupt (default: all)')
|
|
143
|
+
.action(async (opts) => {
|
|
144
|
+
if (!configExists()) {
|
|
145
|
+
console.error('Config not found. Run "silolink config" first.');
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
const config = loadConfig();
|
|
149
|
+
const convId = opts.conversation ? parseInt(opts.conversation, 10) : undefined;
|
|
150
|
+
try {
|
|
151
|
+
const { JwtGenerator } = await import('../config/jwt-generator.js');
|
|
152
|
+
const jwt = new JwtGenerator(config);
|
|
153
|
+
const token = jwt.generate();
|
|
154
|
+
const body = {};
|
|
155
|
+
if (convId)
|
|
156
|
+
body.conversation_id = convId;
|
|
157
|
+
const res = await fetch(`${config.host}/api/v1/silolink/interrupt`, {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: {
|
|
160
|
+
'Content-Type': 'application/json',
|
|
161
|
+
'Authorization': `Bearer ${token}`,
|
|
162
|
+
'Tenant-Id': config.tenant_id,
|
|
163
|
+
},
|
|
164
|
+
body: JSON.stringify(body),
|
|
165
|
+
});
|
|
166
|
+
const data = await res.json();
|
|
167
|
+
if (data.success) {
|
|
168
|
+
console.log(data.message || 'Interrupt sent');
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.error(`Failed: ${data.message || res.status}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
console.error(`Failed to send interrupt: ${err}`);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
137
178
|
program
|
|
138
179
|
.command('config')
|
|
139
180
|
.description('Configure SiloLink')
|
|
140
181
|
.action(async () => {
|
|
141
182
|
await interactiveConfig();
|
|
142
183
|
});
|
|
184
|
+
program
|
|
185
|
+
.command('setup-claude-md')
|
|
186
|
+
.description('Add SiloLink instructions to a CLAUDE.md file')
|
|
187
|
+
.argument('[path]', 'Path to CLAUDE.md or directory containing it', '.')
|
|
188
|
+
.action((targetPath) => {
|
|
189
|
+
const resolved = path.resolve(targetPath);
|
|
190
|
+
const filePath = fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()
|
|
191
|
+
? path.join(resolved, 'CLAUDE.md')
|
|
192
|
+
: resolved;
|
|
193
|
+
const marker = '## Remote Communication (SiloLink)';
|
|
194
|
+
if (fs.existsSync(filePath)) {
|
|
195
|
+
const existing = fs.readFileSync(filePath, 'utf-8');
|
|
196
|
+
if (existing.includes(marker)) {
|
|
197
|
+
// Replace existing SiloLink block
|
|
198
|
+
const startIdx = existing.indexOf(marker);
|
|
199
|
+
// Find the next ## heading (same level) or end of file
|
|
200
|
+
const afterMarker = existing.substring(startIdx + marker.length);
|
|
201
|
+
const nextHeadingMatch = afterMarker.match(/\n## (?!#)/);
|
|
202
|
+
const endIdx = nextHeadingMatch
|
|
203
|
+
? startIdx + marker.length + nextHeadingMatch.index
|
|
204
|
+
: existing.length;
|
|
205
|
+
const updated = existing.substring(0, startIdx) + SILOLINK_CLAUDE_MD_BLOCK.trimEnd() + '\n' + existing.substring(endIdx);
|
|
206
|
+
fs.writeFileSync(filePath, updated, 'utf-8');
|
|
207
|
+
console.log(`Updated SiloLink section in ${filePath}`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// Append to existing file
|
|
211
|
+
const separator = existing.endsWith('\n') ? '\n' : '\n\n';
|
|
212
|
+
fs.writeFileSync(filePath, existing + separator + SILOLINK_CLAUDE_MD_BLOCK, 'utf-8');
|
|
213
|
+
console.log(`Added SiloLink section to ${filePath}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Create new file
|
|
218
|
+
fs.writeFileSync(filePath, SILOLINK_CLAUDE_MD_BLOCK, 'utf-8');
|
|
219
|
+
console.log(`Created ${filePath} with SiloLink instructions`);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
143
222
|
export { program };
|
|
144
223
|
//# sourceMappingURL=commands.js.map
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { WorkspaceLaunchConfig } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for launching an agent process.
|
|
4
|
+
*/
|
|
5
|
+
export interface LaunchConfig {
|
|
6
|
+
/** Reason for the launch (e.g., 'manual', 'process-exit', 'inbound-message', 'control-channel') */
|
|
7
|
+
reason: string;
|
|
8
|
+
/** DSiloed conversation ID to associate with this session */
|
|
9
|
+
conversationId?: number;
|
|
10
|
+
/** Custom prompt to send to the agent on startup */
|
|
11
|
+
sessionPrompt?: string;
|
|
12
|
+
/** Message that triggered this launch (included in prompt for context) */
|
|
13
|
+
triggerMessage?: string;
|
|
14
|
+
/** Workspace config for git worktree isolation */
|
|
15
|
+
workspace?: WorkspaceLaunchConfig;
|
|
16
|
+
/** Previous session ID for resuming context */
|
|
17
|
+
resumeId?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Represents a running agent process managed by the launcher.
|
|
21
|
+
*/
|
|
22
|
+
export interface AgentProcess {
|
|
23
|
+
/** Unique identifier for this process (e.g., tmux session name) */
|
|
24
|
+
processId: string;
|
|
25
|
+
/** DSiloed conversation ID this process is handling */
|
|
26
|
+
conversationId: number;
|
|
27
|
+
/** Working directory the process is running in */
|
|
28
|
+
workingDirectory: string;
|
|
29
|
+
/** Git branch if workspace isolation is active */
|
|
30
|
+
branch?: string;
|
|
31
|
+
/** Workspace session ID for worktree cleanup */
|
|
32
|
+
workspaceSessionId?: string;
|
|
33
|
+
/** When this process was started */
|
|
34
|
+
startedAt: Date;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Provider-agnostic interface for launching and managing AI agent processes.
|
|
38
|
+
* Implementations exist for Claude Code, with stubs for Gemini and OpenAI.
|
|
39
|
+
*
|
|
40
|
+
* All providers share the same MCP tool layer (SiloLink tools work identically
|
|
41
|
+
* regardless of which AI is calling them). The launcher handles the
|
|
42
|
+
* provider-specific process lifecycle: spawning, health checks, resumption,
|
|
43
|
+
* and cleanup.
|
|
44
|
+
*/
|
|
45
|
+
export interface AgentLauncher {
|
|
46
|
+
/**
|
|
47
|
+
* Launch a new agent process.
|
|
48
|
+
* Creates the process (e.g., tmux session) and sends the initial prompt.
|
|
49
|
+
* @returns The launched process, or null if launch failed.
|
|
50
|
+
*/
|
|
51
|
+
launch(config: LaunchConfig): Promise<AgentProcess | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Resume a previous session by ID.
|
|
54
|
+
* Attempts to restore context from a prior conversation.
|
|
55
|
+
* @returns The resumed process, or null if resume failed (falls back to fresh launch).
|
|
56
|
+
*/
|
|
57
|
+
resume(resumeId: string, config: LaunchConfig): Promise<AgentProcess | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if a specific process is still alive.
|
|
60
|
+
*/
|
|
61
|
+
isAlive(process: AgentProcess): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Terminate a specific agent process.
|
|
64
|
+
* Cleans up worktrees and other resources.
|
|
65
|
+
*/
|
|
66
|
+
terminate(process: AgentProcess): void;
|
|
67
|
+
/**
|
|
68
|
+
* Terminate all managed agent processes.
|
|
69
|
+
*/
|
|
70
|
+
terminateAll(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get all currently running agent processes.
|
|
73
|
+
*/
|
|
74
|
+
getProcesses(): AgentProcess[];
|
|
75
|
+
/**
|
|
76
|
+
* Get the process handling a specific conversation.
|
|
77
|
+
*/
|
|
78
|
+
getByConversation(conversationId: number): AgentProcess | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Nudge idle processes to resume polling for messages.
|
|
81
|
+
* @returns true if any processes were nudged.
|
|
82
|
+
*/
|
|
83
|
+
nudge(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Whether this launcher is properly configured and ready to use.
|
|
86
|
+
*/
|
|
87
|
+
isEnabled(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Whether auto-respawn is enabled for dead processes.
|
|
90
|
+
*/
|
|
91
|
+
isAutoRespawnEnabled(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Start monitoring for idle/dead processes.
|
|
94
|
+
*/
|
|
95
|
+
startIdleMonitor(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Stop monitoring and clean up all resources.
|
|
98
|
+
*/
|
|
99
|
+
destroy(): void;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=agent-launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-launcher.d.ts","sourceRoot":"","sources":["../../src/core/agent-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mGAAmG;IACnG,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE7E;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE,CAAC;IAE/B;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAEpE;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IAErB;;OAEG;IACH,oBAAoB,IAAI,OAAO,CAAC;IAEhC;;OAEG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-launcher.js","sourceRoot":"","sources":["../../src/core/agent-launcher.ts"],"names":[],"mappings":""}
|