@dsiloed/silo-link 1.19.15 → 1.19.17
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 +64 -3
- package/dist/api/backend-health.d.ts +44 -0
- package/dist/api/backend-health.d.ts.map +1 -0
- package/dist/api/backend-health.js +80 -0
- package/dist/api/backend-health.js.map +1 -0
- package/dist/api/dsiloed-client.d.ts +7 -3
- package/dist/api/dsiloed-client.d.ts.map +1 -1
- package/dist/api/dsiloed-client.js +29 -4
- package/dist/api/dsiloed-client.js.map +1 -1
- package/dist/cable/subscription-manager.d.ts +26 -1
- package/dist/cable/subscription-manager.d.ts.map +1 -1
- package/dist/cable/subscription-manager.js +72 -13
- package/dist/cable/subscription-manager.js.map +1 -1
- package/dist/cli/claude-md-block.d.ts +1 -1
- package/dist/cli/claude-md-block.d.ts.map +1 -1
- package/dist/cli/claude-md-block.js +3 -1
- package/dist/cli/claude-md-block.js.map +1 -1
- package/dist/cli/file-log.d.ts +58 -3
- package/dist/cli/file-log.d.ts.map +1 -1
- package/dist/cli/file-log.js +110 -7
- package/dist/cli/file-log.js.map +1 -1
- package/dist/core/agent-launcher.d.ts +26 -0
- package/dist/core/agent-launcher.d.ts.map +1 -1
- package/dist/core/auto-updater.d.ts +11 -0
- package/dist/core/auto-updater.d.ts.map +1 -1
- package/dist/core/auto-updater.js +84 -15
- package/dist/core/auto-updater.js.map +1 -1
- package/dist/core/base-tmux-launcher.d.ts +95 -21
- package/dist/core/base-tmux-launcher.d.ts.map +1 -1
- package/dist/core/base-tmux-launcher.js +330 -85
- package/dist/core/base-tmux-launcher.js.map +1 -1
- package/dist/core/bridge.d.ts +28 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +219 -25
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/claude-launcher.d.ts +11 -4
- package/dist/core/claude-launcher.d.ts.map +1 -1
- package/dist/core/claude-launcher.js +64 -17
- package/dist/core/claude-launcher.js.map +1 -1
- package/dist/core/codex-launcher.d.ts +3 -3
- package/dist/core/codex-launcher.d.ts.map +1 -1
- package/dist/core/codex-launcher.js +9 -5
- package/dist/core/codex-launcher.js.map +1 -1
- package/dist/core/gemini-launcher.d.ts +3 -3
- package/dist/core/gemini-launcher.d.ts.map +1 -1
- package/dist/core/gemini-launcher.js +9 -5
- package/dist/core/gemini-launcher.js.map +1 -1
- package/dist/core/health-monitor.d.ts +87 -0
- package/dist/core/health-monitor.d.ts.map +1 -0
- package/dist/core/health-monitor.js +93 -0
- package/dist/core/health-monitor.js.map +1 -0
- package/dist/core/idle-completion.d.ts +57 -0
- package/dist/core/idle-completion.d.ts.map +1 -0
- package/dist/core/idle-completion.js +71 -0
- package/dist/core/idle-completion.js.map +1 -0
- package/dist/core/launch-binding.d.ts +52 -0
- package/dist/core/launch-binding.d.ts.map +1 -0
- package/dist/core/launch-binding.js +81 -0
- package/dist/core/launch-binding.js.map +1 -0
- package/dist/core/mcp-config-dir.d.ts +16 -0
- package/dist/core/mcp-config-dir.d.ts.map +1 -0
- package/dist/core/mcp-config-dir.js +37 -0
- package/dist/core/mcp-config-dir.js.map +1 -0
- package/dist/core/stray-processes.d.ts +47 -0
- package/dist/core/stray-processes.d.ts.map +1 -0
- package/dist/core/stray-processes.js +141 -0
- package/dist/core/stray-processes.js.map +1 -0
- package/dist/core/transcript-usage.d.ts +9 -0
- package/dist/core/transcript-usage.d.ts.map +1 -1
- package/dist/core/transcript-usage.js +19 -0
- package/dist/core/transcript-usage.js.map +1 -1
- package/dist/core/usage-ledger.d.ts +1 -1
- package/dist/core/usage-ledger.d.ts.map +1 -1
- package/dist/core/workspace-manager.d.ts.map +1 -1
- package/dist/core/workspace-manager.js +6 -2
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -0
- 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 +154 -36
- package/dist/mcp/tools/register-tools.js.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Launch → MCP transport binding.
|
|
3
|
+
*
|
|
4
|
+
* 2026-08-24 (conv 3369 / 3337): the daemon launched a pane for conversation
|
|
5
|
+
* 3369 and pre-registered its session, but the CC inside called
|
|
6
|
+
* remote_register with conversation_id 3337 (copied from boilerplate in its
|
|
7
|
+
* task text). The only caller identity remote_register had was the HTTP
|
|
8
|
+
* mcp-session-id — nothing tied a transport to the pane it ran in — so the
|
|
9
|
+
* daemon believed it, created a SECOND Session + AgentSession for 3337, and
|
|
10
|
+
* left 3369's pre-registered entry orphaned. One worker, two rows.
|
|
11
|
+
*
|
|
12
|
+
* Each launch now mints a token that rides into the spawned CLI's MCP config
|
|
13
|
+
* as an `X-SiloLink-Launch` header on the local silolink server entry. When
|
|
14
|
+
* the CLI's mcp-remote bridge initializes against this daemon, the MCP server
|
|
15
|
+
* reads the header and binds transport.sessionId → the launch. remote_register
|
|
16
|
+
* can then tell which pane is calling, adopt the pre-registered session for
|
|
17
|
+
* the LAUNCHED conversation, and hand the backend the agent_session_id /
|
|
18
|
+
* launch_correlation_id the launch payload carried.
|
|
19
|
+
*/
|
|
20
|
+
export declare const LAUNCH_HEADER = "X-SiloLink-Launch";
|
|
21
|
+
export interface LaunchBinding {
|
|
22
|
+
token: string;
|
|
23
|
+
conversationId: number;
|
|
24
|
+
/** AgentSession row the backend pre-created for this launch, when the launch payload carried it. */
|
|
25
|
+
agentSessionId?: number;
|
|
26
|
+
/** Backend-side correlation id for the same row. */
|
|
27
|
+
launchCorrelationId?: string;
|
|
28
|
+
createdAt: number;
|
|
29
|
+
}
|
|
30
|
+
export interface LaunchLinkage {
|
|
31
|
+
agentSessionId?: number;
|
|
32
|
+
launchCorrelationId?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class LaunchBindingRegistry {
|
|
35
|
+
private byToken;
|
|
36
|
+
private byTransport;
|
|
37
|
+
private static readonly MAX_AGE_MS;
|
|
38
|
+
/** Called by the launcher when it writes a launch's MCP config. */
|
|
39
|
+
register(binding: Omit<LaunchBinding, 'createdAt'> & {
|
|
40
|
+
createdAt?: number;
|
|
41
|
+
}): LaunchBinding;
|
|
42
|
+
/** Called by the MCP server on transport initialize. Unknown tokens bind nothing. */
|
|
43
|
+
bindTransport(transportSessionId: string, token: string | undefined): LaunchBinding | undefined;
|
|
44
|
+
unbindTransport(transportSessionId: string): void;
|
|
45
|
+
forTransport(transportSessionId: string | undefined): LaunchBinding | undefined;
|
|
46
|
+
forConversation(conversationId: number): LaunchBinding | undefined;
|
|
47
|
+
/** Drop the launch binding once its conversation's session is gone for good. */
|
|
48
|
+
forgetConversation(conversationId: number): void;
|
|
49
|
+
size(): number;
|
|
50
|
+
private prune;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=launch-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-binding.d.ts","sourceRoot":"","sources":["../../src/core/launch-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,sBAAsB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAW3F,qFAAqF;IACrF,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS;IAQ/F,eAAe,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAIjD,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS;IAI/E,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOlE,gFAAgF;IAChF,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAShD,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,KAAK;CAKd"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Launch → MCP transport binding.
|
|
3
|
+
*
|
|
4
|
+
* 2026-08-24 (conv 3369 / 3337): the daemon launched a pane for conversation
|
|
5
|
+
* 3369 and pre-registered its session, but the CC inside called
|
|
6
|
+
* remote_register with conversation_id 3337 (copied from boilerplate in its
|
|
7
|
+
* task text). The only caller identity remote_register had was the HTTP
|
|
8
|
+
* mcp-session-id — nothing tied a transport to the pane it ran in — so the
|
|
9
|
+
* daemon believed it, created a SECOND Session + AgentSession for 3337, and
|
|
10
|
+
* left 3369's pre-registered entry orphaned. One worker, two rows.
|
|
11
|
+
*
|
|
12
|
+
* Each launch now mints a token that rides into the spawned CLI's MCP config
|
|
13
|
+
* as an `X-SiloLink-Launch` header on the local silolink server entry. When
|
|
14
|
+
* the CLI's mcp-remote bridge initializes against this daemon, the MCP server
|
|
15
|
+
* reads the header and binds transport.sessionId → the launch. remote_register
|
|
16
|
+
* can then tell which pane is calling, adopt the pre-registered session for
|
|
17
|
+
* the LAUNCHED conversation, and hand the backend the agent_session_id /
|
|
18
|
+
* launch_correlation_id the launch payload carried.
|
|
19
|
+
*/
|
|
20
|
+
export const LAUNCH_HEADER = 'X-SiloLink-Launch';
|
|
21
|
+
export class LaunchBindingRegistry {
|
|
22
|
+
byToken = new Map();
|
|
23
|
+
byTransport = new Map();
|
|
24
|
+
static MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
25
|
+
/** Called by the launcher when it writes a launch's MCP config. */
|
|
26
|
+
register(binding) {
|
|
27
|
+
const full = { createdAt: Date.now(), ...binding };
|
|
28
|
+
// One live binding per conversation: a relaunch supersedes the old token.
|
|
29
|
+
for (const [tok, b] of this.byToken) {
|
|
30
|
+
if (b.conversationId === full.conversationId && tok !== full.token)
|
|
31
|
+
this.byToken.delete(tok);
|
|
32
|
+
}
|
|
33
|
+
this.byToken.set(full.token, full);
|
|
34
|
+
this.prune();
|
|
35
|
+
return full;
|
|
36
|
+
}
|
|
37
|
+
/** Called by the MCP server on transport initialize. Unknown tokens bind nothing. */
|
|
38
|
+
bindTransport(transportSessionId, token) {
|
|
39
|
+
if (!token)
|
|
40
|
+
return undefined;
|
|
41
|
+
const binding = this.byToken.get(token);
|
|
42
|
+
if (!binding)
|
|
43
|
+
return undefined;
|
|
44
|
+
this.byTransport.set(transportSessionId, binding);
|
|
45
|
+
return binding;
|
|
46
|
+
}
|
|
47
|
+
unbindTransport(transportSessionId) {
|
|
48
|
+
this.byTransport.delete(transportSessionId);
|
|
49
|
+
}
|
|
50
|
+
forTransport(transportSessionId) {
|
|
51
|
+
return transportSessionId ? this.byTransport.get(transportSessionId) : undefined;
|
|
52
|
+
}
|
|
53
|
+
forConversation(conversationId) {
|
|
54
|
+
for (const b of this.byToken.values()) {
|
|
55
|
+
if (b.conversationId === conversationId)
|
|
56
|
+
return b;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
/** Drop the launch binding once its conversation's session is gone for good. */
|
|
61
|
+
forgetConversation(conversationId) {
|
|
62
|
+
for (const [tok, b] of this.byToken) {
|
|
63
|
+
if (b.conversationId === conversationId)
|
|
64
|
+
this.byToken.delete(tok);
|
|
65
|
+
}
|
|
66
|
+
for (const [tid, b] of this.byTransport) {
|
|
67
|
+
if (b.conversationId === conversationId)
|
|
68
|
+
this.byTransport.delete(tid);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
size() {
|
|
72
|
+
return this.byToken.size;
|
|
73
|
+
}
|
|
74
|
+
prune(now = Date.now()) {
|
|
75
|
+
for (const [tok, b] of this.byToken) {
|
|
76
|
+
if (now - b.createdAt > LaunchBindingRegistry.MAX_AGE_MS)
|
|
77
|
+
this.byToken.delete(tok);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=launch-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-binding.js","sourceRoot":"","sources":["../../src/core/launch-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory (relative to the launch cwd) holding the per-session MCP config
|
|
3
|
+
* files written by the launchers. Each file carries the session's Bearer JWT,
|
|
4
|
+
* so this directory must never be committed — see ensureGitExcluded and the
|
|
5
|
+
* WorkspaceManager auto-commit pathspec.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MCP_CONFIG_DIR = ".silolink-mcp";
|
|
8
|
+
/**
|
|
9
|
+
* Best-effort: register `.silolink-mcp/` in the enclosing git repo's
|
|
10
|
+
* `info/exclude` so no `git add -A` (ours or the agent's) can pick it up,
|
|
11
|
+
* independent of the repo's own .gitignore. Works for linked worktrees too —
|
|
12
|
+
* git resolves `--git-path info/exclude` to the common dir. No-op outside a
|
|
13
|
+
* repo or on any failure; returns true only when the entry is present.
|
|
14
|
+
*/
|
|
15
|
+
export declare function ensureGitExcluded(cwd: string): boolean;
|
|
16
|
+
//# sourceMappingURL=mcp-config-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config-dir.d.ts","sourceRoot":"","sources":["../../src/core/mcp-config-dir.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAetD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
4
|
+
/**
|
|
5
|
+
* Directory (relative to the launch cwd) holding the per-session MCP config
|
|
6
|
+
* files written by the launchers. Each file carries the session's Bearer JWT,
|
|
7
|
+
* so this directory must never be committed — see ensureGitExcluded and the
|
|
8
|
+
* WorkspaceManager auto-commit pathspec.
|
|
9
|
+
*/
|
|
10
|
+
export const MCP_CONFIG_DIR = '.silolink-mcp';
|
|
11
|
+
/**
|
|
12
|
+
* Best-effort: register `.silolink-mcp/` in the enclosing git repo's
|
|
13
|
+
* `info/exclude` so no `git add -A` (ours or the agent's) can pick it up,
|
|
14
|
+
* independent of the repo's own .gitignore. Works for linked worktrees too —
|
|
15
|
+
* git resolves `--git-path info/exclude` to the common dir. No-op outside a
|
|
16
|
+
* repo or on any failure; returns true only when the entry is present.
|
|
17
|
+
*/
|
|
18
|
+
export function ensureGitExcluded(cwd) {
|
|
19
|
+
const entry = `${MCP_CONFIG_DIR}/`;
|
|
20
|
+
try {
|
|
21
|
+
let excludePath = execFileSync('git', ['-C', cwd, 'rev-parse', '--git-path', 'info/exclude'], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
22
|
+
if (!excludePath)
|
|
23
|
+
return false;
|
|
24
|
+
if (!isAbsolute(excludePath))
|
|
25
|
+
excludePath = join(cwd, excludePath);
|
|
26
|
+
const current = existsSync(excludePath) ? readFileSync(excludePath, 'utf-8') : '';
|
|
27
|
+
if (current.split(/\r?\n/).some((l) => l.trim() === entry || l.trim() === MCP_CONFIG_DIR))
|
|
28
|
+
return true;
|
|
29
|
+
mkdirSync(dirname(excludePath), { recursive: true });
|
|
30
|
+
appendFileSync(excludePath, `${current.length && !current.endsWith('\n') ? '\n' : ''}${entry}\n`);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=mcp-config-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config-dir.js","sourceRoot":"","sources":["../../src/core/mcp-config-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,GAAG,cAAc,GAAG,CAAC;IACnC,IAAI,CAAC;QACH,IAAI,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAC1F,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,cAAc,CAAC;YAAE,OAAO,IAAI,CAAC;QACvG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,cAAc,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stray-process reaping for killed panes (2026-08-26).
|
|
3
|
+
*
|
|
4
|
+
* `tmux kill-session` takes the pane's shell and the CLI with it, but anything
|
|
5
|
+
* the CLI started detached — a backgrounded `ffmpeg`, a `nohup node …`, a
|
|
6
|
+
* `setsid` render — is re-parented to init and keeps running. One orphaned
|
|
7
|
+
* ffmpeg from a finished Doug video session ran 6h43m at 114% CPU on the
|
|
8
|
+
* fleet laptop, long after its session had been idle-killed. Lineage is gone
|
|
9
|
+
* by the time we look, but the ENVIRONMENT survives: every pane is launched
|
|
10
|
+
* with SILOLINK_PANE=<env>:conv<id>, inherited by every descendant. So:
|
|
11
|
+
*
|
|
12
|
+
* 1. snapshot the marker's pids BEFORE the kill (a relaunch of the same
|
|
13
|
+
* conversation seconds later is never in the set);
|
|
14
|
+
* 2. after a grace period, SIGTERM whichever of those pids still carry the
|
|
15
|
+
* marker (pid-reuse guard); SIGKILL the ones that ignore SIGTERM.
|
|
16
|
+
*
|
|
17
|
+
* Pure functions with injectable process listing / signalling so the policy
|
|
18
|
+
* is unit-testable; the default lister reads /proc on Linux and `ps -E` on
|
|
19
|
+
* macOS (which shows environments for the caller's own processes — all a
|
|
20
|
+
* daemon's panes are its own).
|
|
21
|
+
*/
|
|
22
|
+
export declare const PANE_MARKER_KEY = "SILOLINK_PANE";
|
|
23
|
+
export interface StrayProcess {
|
|
24
|
+
pid: number;
|
|
25
|
+
command: string;
|
|
26
|
+
}
|
|
27
|
+
export interface StraySnapshot {
|
|
28
|
+
marker: string;
|
|
29
|
+
pids: StrayProcess[];
|
|
30
|
+
}
|
|
31
|
+
export interface ReapResult {
|
|
32
|
+
killed: StrayProcess[];
|
|
33
|
+
escalated: StrayProcess[];
|
|
34
|
+
}
|
|
35
|
+
export type ProcessLister = (marker: string) => StrayProcess[];
|
|
36
|
+
export type Signaller = (pid: number, signal: 'SIGTERM' | 'SIGKILL') => void;
|
|
37
|
+
export interface ReapOptions {
|
|
38
|
+
/** How long to let the tmux kill propagate before sweeping (and between TERM and KILL). */
|
|
39
|
+
graceMs?: number;
|
|
40
|
+
lister?: ProcessLister;
|
|
41
|
+
signal?: Signaller;
|
|
42
|
+
sleep?: (ms: number) => Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export declare const defaultProcessLister: ProcessLister;
|
|
45
|
+
export declare function snapshotStrayProcesses(marker: string, lister?: ProcessLister): StraySnapshot;
|
|
46
|
+
export declare function reapStrayProcesses(snapshot: StraySnapshot, opts?: ReapOptions): Promise<ReapResult>;
|
|
47
|
+
//# sourceMappingURL=stray-processes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stray-processes.d.ts","sourceRoot":"","sources":["../../src/core/stray-processes.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC9D,MAAM,WAAW,aAAa;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAE;AACvE,MAAM,WAAW,UAAU;IAAG,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE;AAEjF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AAC/D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAoDD,eAAO,MAAM,oBAAoB,EAAE,aAG7B,CAAC;AAKP,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAAoC,GAAG,aAAa,CAElH;AAQD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB7G"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { execFileSync } from 'node:child_process';
|
|
3
|
+
/**
|
|
4
|
+
* Stray-process reaping for killed panes (2026-08-26).
|
|
5
|
+
*
|
|
6
|
+
* `tmux kill-session` takes the pane's shell and the CLI with it, but anything
|
|
7
|
+
* the CLI started detached — a backgrounded `ffmpeg`, a `nohup node …`, a
|
|
8
|
+
* `setsid` render — is re-parented to init and keeps running. One orphaned
|
|
9
|
+
* ffmpeg from a finished Doug video session ran 6h43m at 114% CPU on the
|
|
10
|
+
* fleet laptop, long after its session had been idle-killed. Lineage is gone
|
|
11
|
+
* by the time we look, but the ENVIRONMENT survives: every pane is launched
|
|
12
|
+
* with SILOLINK_PANE=<env>:conv<id>, inherited by every descendant. So:
|
|
13
|
+
*
|
|
14
|
+
* 1. snapshot the marker's pids BEFORE the kill (a relaunch of the same
|
|
15
|
+
* conversation seconds later is never in the set);
|
|
16
|
+
* 2. after a grace period, SIGTERM whichever of those pids still carry the
|
|
17
|
+
* marker (pid-reuse guard); SIGKILL the ones that ignore SIGTERM.
|
|
18
|
+
*
|
|
19
|
+
* Pure functions with injectable process listing / signalling so the policy
|
|
20
|
+
* is unit-testable; the default lister reads /proc on Linux and `ps -E` on
|
|
21
|
+
* macOS (which shows environments for the caller's own processes — all a
|
|
22
|
+
* daemon's panes are its own).
|
|
23
|
+
*/
|
|
24
|
+
export const PANE_MARKER_KEY = 'SILOLINK_PANE';
|
|
25
|
+
function listLinux(marker) {
|
|
26
|
+
const needle = `${PANE_MARKER_KEY}=${marker}`;
|
|
27
|
+
const out = [];
|
|
28
|
+
let entries;
|
|
29
|
+
try {
|
|
30
|
+
entries = readdirSync('/proc');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
if (!/^\d+$/.test(entry))
|
|
37
|
+
continue;
|
|
38
|
+
const pid = Number(entry);
|
|
39
|
+
if (pid === process.pid || pid === process.ppid)
|
|
40
|
+
continue;
|
|
41
|
+
let environ;
|
|
42
|
+
try {
|
|
43
|
+
environ = readFileSync(`/proc/${pid}/environ`, 'latin1');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue;
|
|
47
|
+
} // gone, or not ours
|
|
48
|
+
if (!environ.split('\0').includes(needle))
|
|
49
|
+
continue;
|
|
50
|
+
let command = '';
|
|
51
|
+
try {
|
|
52
|
+
command = readFileSync(`/proc/${pid}/cmdline`, 'utf8').split('\0').filter(Boolean).join(' ');
|
|
53
|
+
}
|
|
54
|
+
catch { /* racing exit */ }
|
|
55
|
+
out.push({ pid, command: command.slice(0, 160) });
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* macOS: `ps -E` prints argv followed by the environment on one line with no
|
|
61
|
+
* separator, so a process whose ARGV merely mentions the marker (a `sh -c
|
|
62
|
+
* "env SILOLINK_PANE=… cmd"` wrapper, an editor with the string open, this
|
|
63
|
+
* daemon's own launch command) would match too. Each candidate is therefore
|
|
64
|
+
* confirmed against `ps -o command=` (argv only): the marker must be absent
|
|
65
|
+
* there, i.e. it came from the environment.
|
|
66
|
+
*/
|
|
67
|
+
function listDarwin(marker) {
|
|
68
|
+
const needle = `${PANE_MARKER_KEY}=${marker}`;
|
|
69
|
+
let text;
|
|
70
|
+
try {
|
|
71
|
+
text = execFileSync('ps', ['-E', '-ww', '-ax', '-o', 'pid=,command='], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const out = [];
|
|
77
|
+
for (const line of text.split('\n')) {
|
|
78
|
+
const m = line.match(/^\s*(\d+)\s+(.*)$/);
|
|
79
|
+
if (!m)
|
|
80
|
+
continue;
|
|
81
|
+
const pid = Number(m[1]);
|
|
82
|
+
if (pid === process.pid || pid === process.ppid)
|
|
83
|
+
continue;
|
|
84
|
+
if (!m[2].split(/\s+/).includes(needle))
|
|
85
|
+
continue;
|
|
86
|
+
let argv;
|
|
87
|
+
try {
|
|
88
|
+
argv = execFileSync('ps', ['-ww', '-o', 'command=', '-p', String(pid)], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
continue;
|
|
92
|
+
} // exited between the two calls
|
|
93
|
+
if (argv.includes(needle))
|
|
94
|
+
continue; // marker is in argv, not env — not a pane descendant
|
|
95
|
+
out.push({ pid, command: argv.slice(0, 160) });
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
export const defaultProcessLister = (marker) => process.platform === 'linux' ? listLinux(marker)
|
|
100
|
+
: process.platform === 'darwin' ? listDarwin(marker)
|
|
101
|
+
: [];
|
|
102
|
+
const defaultSignaller = (pid, signal) => process.kill(pid, signal);
|
|
103
|
+
const defaultSleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
104
|
+
export function snapshotStrayProcesses(marker, lister = defaultProcessLister) {
|
|
105
|
+
return { marker, pids: lister(marker) };
|
|
106
|
+
}
|
|
107
|
+
/** Pids from the snapshot that are still alive AND still carry the marker. */
|
|
108
|
+
function survivors(snapshot, lister) {
|
|
109
|
+
const wanted = new Set(snapshot.pids.map(p => p.pid));
|
|
110
|
+
return lister(snapshot.marker).filter(p => wanted.has(p.pid));
|
|
111
|
+
}
|
|
112
|
+
export async function reapStrayProcesses(snapshot, opts = {}) {
|
|
113
|
+
const graceMs = opts.graceMs ?? 3000;
|
|
114
|
+
const lister = opts.lister ?? defaultProcessLister;
|
|
115
|
+
const signal = opts.signal ?? defaultSignaller;
|
|
116
|
+
const sleep = opts.sleep ?? defaultSleep;
|
|
117
|
+
const result = { killed: [], escalated: [] };
|
|
118
|
+
if (snapshot.pids.length === 0)
|
|
119
|
+
return result;
|
|
120
|
+
await sleep(graceMs); // let kill-session's SIGHUP do its work first
|
|
121
|
+
const termed = survivors(snapshot, lister);
|
|
122
|
+
for (const p of termed) {
|
|
123
|
+
try {
|
|
124
|
+
signal(p.pid, 'SIGTERM');
|
|
125
|
+
result.killed.push(p);
|
|
126
|
+
}
|
|
127
|
+
catch { /* exited between list and kill */ }
|
|
128
|
+
}
|
|
129
|
+
if (termed.length === 0)
|
|
130
|
+
return result;
|
|
131
|
+
await sleep(graceMs);
|
|
132
|
+
for (const p of survivors(snapshot, lister)) {
|
|
133
|
+
try {
|
|
134
|
+
signal(p.pid, 'SIGKILL');
|
|
135
|
+
result.escalated.push(p);
|
|
136
|
+
}
|
|
137
|
+
catch { /* gone */ }
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=stray-processes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stray-processes.js","sourceRoot":"","sources":["../../src/core/stray-processes.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,15 @@ export declare function parseClaudeTranscript(content: string): UsageEntry[];
|
|
|
46
46
|
* the newest file in the cwd's project-slug dir.
|
|
47
47
|
*/
|
|
48
48
|
export declare function locateClaudeTranscript(cwd: string, sessionId: string | null): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* True when a transcript was written at/after `since` — i.e. it can belong to a
|
|
51
|
+
* pane that started then. Discovery picks "the newest transcript in the cwd",
|
|
52
|
+
* which on a shared cwd is often an EARLIER session's file; requiring the file
|
|
53
|
+
* to have been touched since the pane started rejects those. Uses the later of
|
|
54
|
+
* mtime and birthtime (birthtime is 0/ctime on filesystems without it). A few
|
|
55
|
+
* seconds of slack absorbs clock granularity between the spawn and the stat.
|
|
56
|
+
*/
|
|
57
|
+
export declare function transcriptTouchedSince(path: string, since: Date): boolean;
|
|
49
58
|
/**
|
|
50
59
|
* True when a Claude Code transcript actually contains a resumable conversation
|
|
51
60
|
* — i.e. at least one real `user` or `assistant` turn. A transcript can exist on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-usage.d.ts","sourceRoot":"","sources":["../../src/core/transcript-usage.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAgCnE;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAgCnE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAe3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBjE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAuBjE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA0BhE;AAED,mFAAmF;AACnF,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAmC3F;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAqClE;AA2CD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAuC1F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAgBnD;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAOpD"}
|
|
1
|
+
{"version":3,"file":"transcript-usage.d.ts","sourceRoot":"","sources":["../../src/core/transcript-usage.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAgCnE;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAgCnE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAe3F;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAQzE;AAGD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBjE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAuBjE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA0BhE;AAED,mFAAmF;AACnF,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAmC3F;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAqClE;AA2CD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAuC1F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAgBnD;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAOpD"}
|
|
@@ -139,6 +139,25 @@ export function locateClaudeTranscript(cwd, sessionId) {
|
|
|
139
139
|
const files = readdirSync(slugDir).filter((f) => f.endsWith('.jsonl')).map((f) => join(slugDir, f));
|
|
140
140
|
return files.sort((a, b) => statMtime(b) - statMtime(a))[0] ?? null;
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* True when a transcript was written at/after `since` — i.e. it can belong to a
|
|
144
|
+
* pane that started then. Discovery picks "the newest transcript in the cwd",
|
|
145
|
+
* which on a shared cwd is often an EARLIER session's file; requiring the file
|
|
146
|
+
* to have been touched since the pane started rejects those. Uses the later of
|
|
147
|
+
* mtime and birthtime (birthtime is 0/ctime on filesystems without it). A few
|
|
148
|
+
* seconds of slack absorbs clock granularity between the spawn and the stat.
|
|
149
|
+
*/
|
|
150
|
+
export function transcriptTouchedSince(path, since) {
|
|
151
|
+
try {
|
|
152
|
+
const st = statSync(path);
|
|
153
|
+
const touched = Math.max(st.mtimeMs, st.birthtimeMs || 0);
|
|
154
|
+
return touched >= since.getTime() - TRANSCRIPT_FRESHNESS_SLACK_MS;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const TRANSCRIPT_FRESHNESS_SLACK_MS = 5000;
|
|
142
161
|
/**
|
|
143
162
|
* True when a Claude Code transcript actually contains a resumable conversation
|
|
144
163
|
* — i.e. at least one real `user` or `assistant` turn. A transcript can exist on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-usage.js","sourceRoot":"","sources":["../../src/core/transcript-usage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transcript-usage.js","sourceRoot":"","sources":["../../src/core/transcript-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export interface UsageReconcileTarget {
|
|
|
32
32
|
* Result of trying to settle one ledger entry.
|
|
33
33
|
* Everything except 'failed' settles the entry; 'failed' keeps it for a retry.
|
|
34
34
|
*/
|
|
35
|
-
export type UsageReconcileOutcome = 'reported' | 'no_usage' | 'rejected' | 'failed';
|
|
35
|
+
export type UsageReconcileOutcome = 'reported' | 'no_usage' | 'rejected' | 'failed' | 'blocked';
|
|
36
36
|
/**
|
|
37
37
|
* Disk-backed registry of sessions with potentially-unreported usage
|
|
38
38
|
* (~/.silolink/usage-ledger.json). Entries are upserted while a session is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-ledger.d.ts","sourceRoot":"","sources":["../../src/core/usage-ledger.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-ledger.d.ts","sourceRoot":"","sources":["../../src/core/usage-ledger.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhG;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;;;;;;;;OAWG;gBACS,QAAQ,GAAE,MAA0B,EAAE,KAAK,CAAC,EAAE,MAAM;IAMhE;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI;IAsBtE,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIzD,iHAAiH;IACjH,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIpC,MAAM,IAAI,gBAAgB,EAAE;IAI5B,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,IAAI;CAgBb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../src/core/workspace-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../src/core/workspace-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAqC;IAKvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,QAAQ,GAAE,MAA0B;IAOhD;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,SAAS;IAyJ1G,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,iBAAiB;IA6BzB;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAwFvC;;;;;;OAMG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBxC;;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;IAuEpE;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE;IAI7B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAOjE;;OAEG;IACH,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAOlE;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,IAAI,EAAE;QAC3B,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,SAAS,GAAG,SAAS;IAazB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,OAAO,CAAC,SAAS;IA0BjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAG/B;IAEF;;;;;;;OAOG;IACH,mBAAmB,IAAI,IAAI;IA2D3B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MCP_CONFIG_DIR } from './mcp-config-dir.js';
|
|
1
2
|
import { execFileSync } from 'node:child_process';
|
|
2
3
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync, rmSync, readdirSync, statSync } from 'node:fs';
|
|
3
4
|
import { join } from 'node:path';
|
|
@@ -275,10 +276,13 @@ export class WorkspaceManager {
|
|
|
275
276
|
this.saveState();
|
|
276
277
|
return;
|
|
277
278
|
}
|
|
278
|
-
// Auto-commit uncommitted changes so they aren't lost
|
|
279
|
+
// Auto-commit uncommitted changes so they aren't lost. `.silolink-mcp/` is the
|
|
280
|
+
// launcher's per-session MCP config and carries the session Bearer JWT — it must
|
|
281
|
+
// NEVER ride along (it did on 2026-08-25 and tripped the repo's gitleaks gate).
|
|
282
|
+
// Excluded by pathspec here regardless of the repo's .gitignore.
|
|
279
283
|
if (hasUncommitted) {
|
|
280
284
|
try {
|
|
281
|
-
execFileSync('git', ['-C', workspace.worktreePath, 'add', '-A'], { stdio: 'pipe' });
|
|
285
|
+
execFileSync('git', ['-C', workspace.worktreePath, 'add', '-A', '--', '.', `:(exclude)${MCP_CONFIG_DIR}`], { stdio: 'pipe' });
|
|
282
286
|
execFileSync('git', ['-C', workspace.worktreePath, 'commit', '-m',
|
|
283
287
|
`chore: auto-commit from SiloLink session cleanup (branch: ${workspace.branch})`], { stdio: 'pipe' });
|
|
284
288
|
console.log(`[WorkspaceManager] Auto-committed uncommitted changes in ${workspace.branch}`);
|