@dsiloed/silo-link 1.13.7 → 1.15.1
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/dist/api/dsiloed-client.d.ts +5 -1
- package/dist/api/dsiloed-client.d.ts.map +1 -1
- package/dist/api/dsiloed-client.js +11 -6
- package/dist/api/dsiloed-client.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +21 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/file-log.d.ts +21 -0
- package/dist/cli/file-log.d.ts.map +1 -0
- package/dist/cli/file-log.js +52 -0
- package/dist/cli/file-log.js.map +1 -0
- package/dist/core/agent-launcher.d.ts +24 -0
- package/dist/core/agent-launcher.d.ts.map +1 -1
- package/dist/core/auto-updater.d.ts +9 -2
- package/dist/core/auto-updater.d.ts.map +1 -1
- package/dist/core/auto-updater.js +57 -36
- package/dist/core/auto-updater.js.map +1 -1
- package/dist/core/base-tmux-launcher.d.ts +73 -3
- package/dist/core/base-tmux-launcher.d.ts.map +1 -1
- package/dist/core/base-tmux-launcher.js +212 -14
- package/dist/core/base-tmux-launcher.js.map +1 -1
- package/dist/core/bridge.d.ts +38 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +226 -7
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/claude-launcher.d.ts +8 -2
- package/dist/core/claude-launcher.d.ts.map +1 -1
- package/dist/core/claude-launcher.js +19 -4
- package/dist/core/claude-launcher.js.map +1 -1
- package/dist/core/codex-launcher.d.ts +4 -2
- package/dist/core/codex-launcher.d.ts.map +1 -1
- package/dist/core/codex-launcher.js +7 -4
- package/dist/core/codex-launcher.js.map +1 -1
- package/dist/core/gemini-launcher.d.ts +4 -2
- package/dist/core/gemini-launcher.d.ts.map +1 -1
- package/dist/core/gemini-launcher.js +7 -4
- package/dist/core/gemini-launcher.js.map +1 -1
- package/dist/core/launcher-factory.d.ts +2 -1
- package/dist/core/launcher-factory.d.ts.map +1 -1
- package/dist/core/launcher-factory.js +5 -5
- package/dist/core/launcher-factory.js.map +1 -1
- package/dist/core/usage-ledger.d.ts +55 -0
- package/dist/core/usage-ledger.d.ts.map +1 -0
- package/dist/core/usage-ledger.js +82 -0
- package/dist/core/usage-ledger.js.map +1 -0
- package/dist/index.js +0 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +50 -0
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/baseline-verify.d.ts +0 -54
- package/dist/core/baseline-verify.d.ts.map +0 -1
- package/dist/core/baseline-verify.js +0 -164
- package/dist/core/baseline-verify.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-updater.js","sourceRoot":"","sources":["../../src/core/auto-updater.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto-updater.js","sourceRoot":"","sources":["../../src/core/auto-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import type { DSiloedClient } from '../api/dsiloed-client.js';
|
|
|
5
5
|
import type { WorkspaceManager } from './workspace-manager.js';
|
|
6
6
|
import type { AgentLauncher, LaunchConfig, AgentProcess } from './agent-launcher.js';
|
|
7
7
|
import type { UsageEntry } from './transcript-usage.js';
|
|
8
|
+
import type { UsageLedger, UsageReconcileTarget } from './usage-ledger.js';
|
|
8
9
|
interface TmuxSessionInfo {
|
|
9
10
|
conversationId: number;
|
|
10
11
|
startedAt: Date;
|
|
@@ -27,6 +28,8 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
27
28
|
protected idleCheckTimer: ReturnType<typeof setInterval> | null;
|
|
28
29
|
protected lastUsageReportAt: Map<number, number>;
|
|
29
30
|
protected readonly LIVE_USAGE_REPORT_INTERVAL_MS = 180000;
|
|
31
|
+
protected usageLedger: UsageLedger | null;
|
|
32
|
+
protected pendingUsageReports: Set<Promise<unknown>>;
|
|
30
33
|
protected launchingConversations: Set<number>;
|
|
31
34
|
protected enabled: boolean;
|
|
32
35
|
protected lastNudgeAt: number;
|
|
@@ -47,7 +50,7 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
47
50
|
protected pendingWorkspaceCwd: string | null;
|
|
48
51
|
protected pendingLlmAgentId: number | null;
|
|
49
52
|
protected pendingMcpToolAllowlist: string[] | null;
|
|
50
|
-
constructor(config: SiloLinkConfig, sessionManager: SessionManager, dsiloedClient?: DSiloedClient, messageQueue?: MessageQueue, workspaceManager?: WorkspaceManager);
|
|
53
|
+
constructor(config: SiloLinkConfig, sessionManager: SessionManager, dsiloedClient?: DSiloedClient, messageQueue?: MessageQueue, workspaceManager?: WorkspaceManager, usageLedger?: UsageLedger);
|
|
51
54
|
/**
|
|
52
55
|
* Close the rails-side AgentSession row for a session being torn down.
|
|
53
56
|
* Every teardown path that kills a tmux/process WITHOUT going through the
|
|
@@ -100,6 +103,8 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
100
103
|
protected abstract getAgentEnv(): Record<string, string>;
|
|
101
104
|
/** Return prefix for tmux session names (e.g., 'silolink-claude', 'silolink-gemini') */
|
|
102
105
|
protected abstract getTmuxPrefix(): string;
|
|
106
|
+
/** Return the CLI type this launcher drives ('claude' | 'gemini' | 'codex') — stamped on usage-ledger entries */
|
|
107
|
+
protected abstract getCliType(): string;
|
|
103
108
|
/** Return the log tag for this launcher (e.g., '[ClaudeLauncher]') */
|
|
104
109
|
protected abstract getLogTag(): string;
|
|
105
110
|
/** Return cost metadata key name */
|
|
@@ -212,6 +217,35 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
212
217
|
protected isResumeFailure(paneContent: string): boolean;
|
|
213
218
|
interrupt(conversationId: number, message?: string): Promise<boolean>;
|
|
214
219
|
getTmuxSessionForConversation(conversationId: number): string | null;
|
|
220
|
+
/**
|
|
221
|
+
* Resolve the agent CLI to something tmux can actually exec. Daemons are
|
|
222
|
+
* often started from non-interactive shells whose PATH misses user-level
|
|
223
|
+
* install dirs (~/.local/bin — where the claude installer puts its shim), so
|
|
224
|
+
* a bare command name that "works in my terminal" dies inside the spawned
|
|
225
|
+
* pane with ENOENT and zero surfaced error (2026-07-04). Order: explicit
|
|
226
|
+
* path as-is → PATH lookup → well-known user install locations.
|
|
227
|
+
* Returns the launchable command, or null if nothing resolves.
|
|
228
|
+
*/
|
|
229
|
+
protected resolveCommandPath(cmd: string): string | null;
|
|
230
|
+
/**
|
|
231
|
+
* Provider-specific install locations to try when the CLI isn't on PATH
|
|
232
|
+
* (e.g. Claude's ~/.claude/local). Base: none.
|
|
233
|
+
*/
|
|
234
|
+
protected getExtraCommandDirs(): string[];
|
|
235
|
+
/**
|
|
236
|
+
* Pane text that means the CLI launched but cannot work because it isn't
|
|
237
|
+
* authenticated. Providers that can detect this reliably override it; null
|
|
238
|
+
* disables the check.
|
|
239
|
+
*/
|
|
240
|
+
protected getAuthFailurePattern(): RegExp | null;
|
|
241
|
+
/**
|
|
242
|
+
* Boot-time check the bridge runs so a missing CLI is a loud startup banner
|
|
243
|
+
* instead of a silent launch failure hours later.
|
|
244
|
+
*/
|
|
245
|
+
preflightLaunchCheck(): {
|
|
246
|
+
command: string;
|
|
247
|
+
resolvedPath: string | null;
|
|
248
|
+
};
|
|
215
249
|
launchInternal(reason?: string, conversationId?: number): Promise<boolean>;
|
|
216
250
|
protected monitorTmuxSession(_sessionName: string): void;
|
|
217
251
|
protected checkTmuxSessions(): void;
|
|
@@ -223,8 +257,12 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
223
257
|
* parse their CLI's transcript override extractTranscriptUsage(); the default
|
|
224
258
|
* is none, so Claude/Codex are no-ops until implemented. Reports per-(session
|
|
225
259
|
* x model) tokens; model_api prices + persists them (idempotently).
|
|
260
|
+
*
|
|
261
|
+
* `cliSessionId` (optional) overrides the launcher's in-memory session id
|
|
262
|
+
* when locating the transcript — used by reconciliation, where the session
|
|
263
|
+
* being reported belongs to a PRIOR daemon run (ledger / Rails metadata).
|
|
226
264
|
*/
|
|
227
|
-
protected extractTranscriptUsage(_cwd: string): {
|
|
265
|
+
protected extractTranscriptUsage(_cwd: string, _cliSessionId?: string | null): {
|
|
228
266
|
cli_type: string;
|
|
229
267
|
cost_basis: 'real' | 'imputed';
|
|
230
268
|
usage: UsageEntry[];
|
|
@@ -255,7 +293,39 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
255
293
|
* intact and never blocks anything.
|
|
256
294
|
*/
|
|
257
295
|
protected captureResumeId(conversationId: number): void;
|
|
258
|
-
protected captureUsageFromTranscript(conversationId: number): boolean;
|
|
296
|
+
protected captureUsageFromTranscript(conversationId: number, final?: boolean): boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Public teardown-grade capture for a conversation whose tmux/in-memory
|
|
299
|
+
* session may already be gone (idle sweep, process-dead cleanup). Resolves
|
|
300
|
+
* agentSessionId/cwd via the usage ledger when memory can't.
|
|
301
|
+
*/
|
|
302
|
+
captureUsageForConversation(conversationId: number): boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Re-derive and report usage for a session from a PRIOR daemon run (awaited).
|
|
305
|
+
* Used by the startup reconciliation sweep for sessions that closed — or were
|
|
306
|
+
* left open — without a confirmed final usage report. The transcript is still
|
|
307
|
+
* on disk; the report targets the (possibly already-ended) AgentSession by id
|
|
308
|
+
* and is idempotent server-side.
|
|
309
|
+
*
|
|
310
|
+
* Returns 'reported' on a confirmed POST, 'no_usage' when no transcript usage
|
|
311
|
+
* exists (settle the ledger — nothing to recover), 'failed' when extraction or
|
|
312
|
+
* the POST failed (keep the ledger entry for the next sweep).
|
|
313
|
+
*/
|
|
314
|
+
reconcileUsage(target: UsageReconcileTarget): Promise<'reported' | 'no_usage' | 'failed'>;
|
|
315
|
+
/**
|
|
316
|
+
* Await in-flight usage-report POSTs, bounded by `timeoutMs`. Bridge.stop()
|
|
317
|
+
* calls this before process.exit — the teardown reports fired by kill() are
|
|
318
|
+
* async and would otherwise die with the process (their ledger entries would
|
|
319
|
+
* survive for reconciliation, but flushing now is cheaper than re-deriving).
|
|
320
|
+
*/
|
|
321
|
+
flushUsageReports(timeoutMs?: number): Promise<void>;
|
|
322
|
+
protected trackUsageReport(report: Promise<unknown>): void;
|
|
323
|
+
/**
|
|
324
|
+
* Keep the on-disk usage ledger current for a LIVE session (called from the
|
|
325
|
+
* 5s monitor tick; the ledger no-ops the write when nothing changed). The
|
|
326
|
+
* entry is what lets a daemon restart still report this session's usage.
|
|
327
|
+
*/
|
|
328
|
+
protected updateUsageLedger(conversationId: number, tmuxSession: string, cwd?: string): void;
|
|
259
329
|
protected maybeReportLiveUsage(conversationId: number): void;
|
|
260
330
|
protected checkIdle(): Promise<void>;
|
|
261
331
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { spawn, execFileSync } from 'node:child_process';
|
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
3
|
import { existsSync, copyFileSync, writeFileSync, unlinkSync, readdirSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { tmpdir } from 'node:os';
|
|
5
|
+
import { tmpdir, homedir } from 'node:os';
|
|
6
6
|
/**
|
|
7
7
|
* Abstract base class for tmux-based agent launchers.
|
|
8
8
|
* Implements all shared lifecycle, monitoring, and session management logic.
|
|
@@ -21,6 +21,11 @@ export class BaseTmuxLauncher {
|
|
|
21
21
|
// Throttle for periodic in-session usage reporting (conversationId -> last report ms).
|
|
22
22
|
lastUsageReportAt = new Map();
|
|
23
23
|
LIVE_USAGE_REPORT_INTERVAL_MS = 180_000; // 3 min
|
|
24
|
+
usageLedger;
|
|
25
|
+
// In-flight usage-report POSTs. Bridge.stop() awaits these (bounded) before
|
|
26
|
+
// process.exit — otherwise the final teardown report fired by kill() dies
|
|
27
|
+
// with the process and the session's last usage delta is lost.
|
|
28
|
+
pendingUsageReports = new Set();
|
|
24
29
|
launchingConversations = new Set();
|
|
25
30
|
enabled;
|
|
26
31
|
lastNudgeAt = 0;
|
|
@@ -47,12 +52,13 @@ export class BaseTmuxLauncher {
|
|
|
47
52
|
pendingWorkspaceCwd = null;
|
|
48
53
|
pendingLlmAgentId = null;
|
|
49
54
|
pendingMcpToolAllowlist = null;
|
|
50
|
-
constructor(config, sessionManager, dsiloedClient, messageQueue, workspaceManager) {
|
|
55
|
+
constructor(config, sessionManager, dsiloedClient, messageQueue, workspaceManager, usageLedger) {
|
|
51
56
|
this.config = config;
|
|
52
57
|
this.sessionManager = sessionManager;
|
|
53
58
|
this.dsiloedClient = dsiloedClient || null;
|
|
54
59
|
this.messageQueue = messageQueue || null;
|
|
55
60
|
this.workspaceManager = workspaceManager || null;
|
|
61
|
+
this.usageLedger = usageLedger || null;
|
|
56
62
|
this.enabled = this.checkEnabled();
|
|
57
63
|
}
|
|
58
64
|
/**
|
|
@@ -480,9 +486,10 @@ export class BaseTmuxLauncher {
|
|
|
480
486
|
// regardless of how the session ended. The CLI has already flushed its
|
|
481
487
|
// transcript to disk by now; the report is idempotent (model_api UPSERTs
|
|
482
488
|
// per session+model). conv id is encoded in the tmux name (…-conv<N>).
|
|
489
|
+
// `final: true` — a confirmed-successful POST settles the usage ledger.
|
|
483
490
|
const convMatch = tmuxSession.match(/-conv(\d+)$/);
|
|
484
491
|
if (convMatch)
|
|
485
|
-
this.captureUsageFromTranscript(Number(convMatch[1]));
|
|
492
|
+
this.captureUsageFromTranscript(Number(convMatch[1]), true);
|
|
486
493
|
try {
|
|
487
494
|
const capture = spawn('tmux', ['capture-pane', '-t', tmuxSession, '-p', '-S', '-200'], {
|
|
488
495
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
@@ -622,6 +629,62 @@ export class BaseTmuxLauncher {
|
|
|
622
629
|
return null;
|
|
623
630
|
}
|
|
624
631
|
// --- Core launch logic ---
|
|
632
|
+
/**
|
|
633
|
+
* Resolve the agent CLI to something tmux can actually exec. Daemons are
|
|
634
|
+
* often started from non-interactive shells whose PATH misses user-level
|
|
635
|
+
* install dirs (~/.local/bin — where the claude installer puts its shim), so
|
|
636
|
+
* a bare command name that "works in my terminal" dies inside the spawned
|
|
637
|
+
* pane with ENOENT and zero surfaced error (2026-07-04). Order: explicit
|
|
638
|
+
* path as-is → PATH lookup → well-known user install locations.
|
|
639
|
+
* Returns the launchable command, or null if nothing resolves.
|
|
640
|
+
*/
|
|
641
|
+
resolveCommandPath(cmd) {
|
|
642
|
+
if (process.platform === 'win32')
|
|
643
|
+
return cmd; // POSIX-only resolution; don't break Windows
|
|
644
|
+
if (cmd.includes('/'))
|
|
645
|
+
return existsSync(cmd) ? cmd : null;
|
|
646
|
+
try {
|
|
647
|
+
execFileSync('which', [cmd], { stdio: 'pipe', timeout: 5_000 });
|
|
648
|
+
return cmd; // resolvable via PATH — keep the bare name
|
|
649
|
+
}
|
|
650
|
+
catch { /* not on PATH — try known install locations */ }
|
|
651
|
+
const dirs = [
|
|
652
|
+
join(homedir(), '.local', 'bin'),
|
|
653
|
+
join(homedir(), 'bin'),
|
|
654
|
+
...this.getExtraCommandDirs(),
|
|
655
|
+
];
|
|
656
|
+
for (const dir of dirs) {
|
|
657
|
+
const candidate = join(dir, cmd);
|
|
658
|
+
if (existsSync(candidate)) {
|
|
659
|
+
console.warn(`${this.getLogTag()} "${cmd}" not on PATH — using ${candidate}`);
|
|
660
|
+
return candidate;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
return null;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Provider-specific install locations to try when the CLI isn't on PATH
|
|
667
|
+
* (e.g. Claude's ~/.claude/local). Base: none.
|
|
668
|
+
*/
|
|
669
|
+
getExtraCommandDirs() {
|
|
670
|
+
return [];
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* Pane text that means the CLI launched but cannot work because it isn't
|
|
674
|
+
* authenticated. Providers that can detect this reliably override it; null
|
|
675
|
+
* disables the check.
|
|
676
|
+
*/
|
|
677
|
+
getAuthFailurePattern() {
|
|
678
|
+
return null;
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Boot-time check the bridge runs so a missing CLI is a loud startup banner
|
|
682
|
+
* instead of a silent launch failure hours later.
|
|
683
|
+
*/
|
|
684
|
+
preflightLaunchCheck() {
|
|
685
|
+
const command = this.getCommand();
|
|
686
|
+
return { command, resolvedPath: this.resolveCommandPath(command) };
|
|
687
|
+
}
|
|
625
688
|
async launchInternal(reason = 'manual', conversationId) {
|
|
626
689
|
if (!this.enabled) {
|
|
627
690
|
console.log(`${this.getLogTag()} Not configured`);
|
|
@@ -632,7 +695,12 @@ export class BaseTmuxLauncher {
|
|
|
632
695
|
return false;
|
|
633
696
|
this.launchingConversations.add(convKey);
|
|
634
697
|
try {
|
|
635
|
-
const command = this.getCommand();
|
|
698
|
+
const command = this.resolveCommandPath(this.getCommand());
|
|
699
|
+
if (!command) {
|
|
700
|
+
console.error(`${this.getLogTag()} Agent CLI "${this.getCommand()}" not found on PATH or in known install locations (~/.local/bin, ~/.claude/local, ~/bin) — aborting launch.`);
|
|
701
|
+
this.launchingConversations.delete(convKey);
|
|
702
|
+
return false;
|
|
703
|
+
}
|
|
636
704
|
let cwd = this.getWorkingDirectory();
|
|
637
705
|
const args = [...this.getArgs()];
|
|
638
706
|
// Create worktree if workspace config provided
|
|
@@ -800,6 +868,21 @@ export class BaseTmuxLauncher {
|
|
|
800
868
|
capture.on('exit', (code) => code === 0 ? resolve(output) : reject(new Error(`exit ${code}`)));
|
|
801
869
|
capture.on('error', reject);
|
|
802
870
|
});
|
|
871
|
+
// Unauthenticated CLI: the pane sits at a login prompt forever and
|
|
872
|
+
// nothing upstream ever hears about it (2026-07-04: daemon restarted
|
|
873
|
+
// without the credential env; orchestration stage just went silent).
|
|
874
|
+
// Fail fast and loudly instead of pasting a prompt into a dead login
|
|
875
|
+
// screen. Provider-specific detection — see getAuthFailurePattern.
|
|
876
|
+
const authFailPattern = this.getAuthFailurePattern();
|
|
877
|
+
if (authFailPattern && authFailPattern.test(paneContent)) {
|
|
878
|
+
console.error(`${this.getLogTag()} Agent in "${sessionToPrompt}" is NOT LOGGED IN — aborting launch. Start the daemon from a shell with the CLI's credentials, or log the CLI in on this machine.`);
|
|
879
|
+
if (conversationId && this.dsiloedClient) {
|
|
880
|
+
this.dsiloedClient.postMessage(conversationId, '**[SiloLink]** ⚠️ Session launch aborted: the coding-agent CLI on this machine is not logged in. Fix the daemon environment (credential env var or CLI login), then retry.').catch(() => { });
|
|
881
|
+
}
|
|
882
|
+
spawn('tmux', ['kill-session', '-t', sessionToPrompt], { stdio: 'ignore' });
|
|
883
|
+
this.tmuxSessions.delete(sessionToPrompt);
|
|
884
|
+
return;
|
|
885
|
+
}
|
|
803
886
|
if (readyIndicators.some(indicator => paneContent.includes(indicator))) {
|
|
804
887
|
ready = true;
|
|
805
888
|
break;
|
|
@@ -922,6 +1005,9 @@ export class BaseTmuxLauncher {
|
|
|
922
1005
|
// mid-task death/respawn can continue the SAME session instead of starting
|
|
923
1006
|
// fresh. The transcript exists by the time the CLI has done any work.
|
|
924
1007
|
this.captureResumeId(info.conversationId);
|
|
1008
|
+
// Keep the on-disk usage ledger current (no-op write when unchanged) so
|
|
1009
|
+
// a daemon restart can still locate + report this session's usage.
|
|
1010
|
+
this.updateUsageLedger(info.conversationId, name, info.cwd);
|
|
925
1011
|
return;
|
|
926
1012
|
}
|
|
927
1013
|
this.lastUsageReportAt.delete(info.conversationId);
|
|
@@ -1031,8 +1117,12 @@ export class BaseTmuxLauncher {
|
|
|
1031
1117
|
* parse their CLI's transcript override extractTranscriptUsage(); the default
|
|
1032
1118
|
* is none, so Claude/Codex are no-ops until implemented. Reports per-(session
|
|
1033
1119
|
* x model) tokens; model_api prices + persists them (idempotently).
|
|
1120
|
+
*
|
|
1121
|
+
* `cliSessionId` (optional) overrides the launcher's in-memory session id
|
|
1122
|
+
* when locating the transcript — used by reconciliation, where the session
|
|
1123
|
+
* being reported belongs to a PRIOR daemon run (ledger / Rails metadata).
|
|
1034
1124
|
*/
|
|
1035
|
-
extractTranscriptUsage(_cwd) {
|
|
1125
|
+
extractTranscriptUsage(_cwd, _cliSessionId) {
|
|
1036
1126
|
return null;
|
|
1037
1127
|
}
|
|
1038
1128
|
/**
|
|
@@ -1110,13 +1200,23 @@ export class BaseTmuxLauncher {
|
|
|
1110
1200
|
}
|
|
1111
1201
|
// Returns true if usage was found and a report was initiated (used by the
|
|
1112
1202
|
// periodic reporter to only advance its throttle once there's something to send).
|
|
1113
|
-
|
|
1203
|
+
//
|
|
1204
|
+
// `final` marks a TEARDOWN report (pane kill, pane death, orphan reap,
|
|
1205
|
+
// process-dead): a confirmed-successful final POST settles the session's
|
|
1206
|
+
// usage-ledger entry; a failed one keeps it, so the startup reconciliation
|
|
1207
|
+
// sweep re-derives and re-reports. Live (3-min) reports never settle the
|
|
1208
|
+
// ledger — the final delta is still pending by definition.
|
|
1209
|
+
captureUsageFromTranscript(conversationId, final = false) {
|
|
1114
1210
|
if (!this.dsiloedClient)
|
|
1115
1211
|
return false;
|
|
1116
1212
|
const session = conversationId
|
|
1117
1213
|
? this.sessionManager.getByConversationId(conversationId)
|
|
1118
1214
|
: this.sessionManager.getAll()[0];
|
|
1119
|
-
|
|
1215
|
+
// Ledger fallback: after a daemon restart the in-memory session is gone,
|
|
1216
|
+
// but the persisted entry still knows the agentSessionId/cwd/session-id.
|
|
1217
|
+
const ledgerEntry = conversationId ? this.usageLedger?.get(conversationId) : undefined;
|
|
1218
|
+
const agentSessionId = session?.agentSessionId ?? ledgerEntry?.agentSessionId;
|
|
1219
|
+
if (!agentSessionId)
|
|
1120
1220
|
return false;
|
|
1121
1221
|
// Locate the transcript by the ACTUAL cwd the session launched in (stored
|
|
1122
1222
|
// at create time), NOT getWorkingDirectory() — they differ when the CLI
|
|
@@ -1128,27 +1228,125 @@ export class BaseTmuxLauncher {
|
|
|
1128
1228
|
break;
|
|
1129
1229
|
}
|
|
1130
1230
|
}
|
|
1131
|
-
cwd ||= this.getWorkingDirectory();
|
|
1231
|
+
cwd ||= ledgerEntry?.cwd || this.getWorkingDirectory();
|
|
1232
|
+
const cliSessionId = this.lastSessionId ?? session?.resumeId ?? ledgerEntry?.cliSessionId ?? null;
|
|
1132
1233
|
let extracted;
|
|
1133
1234
|
try {
|
|
1134
|
-
extracted = this.extractTranscriptUsage(cwd);
|
|
1235
|
+
extracted = this.extractTranscriptUsage(cwd, cliSessionId);
|
|
1135
1236
|
}
|
|
1136
1237
|
catch (err) {
|
|
1137
1238
|
console.error(`${this.getLogTag()} Failed to extract transcript usage:`, err);
|
|
1138
1239
|
return false;
|
|
1139
1240
|
}
|
|
1140
|
-
if (!extracted || extracted.usage.length === 0)
|
|
1241
|
+
if (!extracted || extracted.usage.length === 0) {
|
|
1242
|
+
// Final teardown with nothing in the transcript: settle the ledger so the
|
|
1243
|
+
// startup sweep doesn't chase a session that never produced usage.
|
|
1244
|
+
if (final)
|
|
1245
|
+
this.usageLedger?.remove(conversationId);
|
|
1141
1246
|
return false;
|
|
1142
|
-
|
|
1143
|
-
this.
|
|
1144
|
-
|
|
1247
|
+
}
|
|
1248
|
+
console.log(`${this.getLogTag()} Reporting usage for ${extracted.usage.length} model(s) (conv: ${conversationId}${final ? ', final' : ''})`);
|
|
1249
|
+
const report = this.dsiloedClient.reportUsage({
|
|
1250
|
+
agent_session_id: agentSessionId,
|
|
1145
1251
|
cli_type: extracted.cli_type,
|
|
1146
1252
|
cost_basis: extracted.cost_basis,
|
|
1147
|
-
cli_session_id:
|
|
1253
|
+
cli_session_id: cliSessionId,
|
|
1148
1254
|
usage: extracted.usage,
|
|
1255
|
+
}).then((ok) => {
|
|
1256
|
+
if (ok && final)
|
|
1257
|
+
this.usageLedger?.remove(conversationId);
|
|
1258
|
+
if (!ok)
|
|
1259
|
+
console.error(`${this.getLogTag()} Usage report not confirmed for conv=${conversationId}${final ? ' — ledger entry kept for reconciliation' : ''}`);
|
|
1149
1260
|
}).catch((err) => console.error(`${this.getLogTag()} Failed to report usage:`, err));
|
|
1261
|
+
this.trackUsageReport(report);
|
|
1150
1262
|
return true;
|
|
1151
1263
|
}
|
|
1264
|
+
/**
|
|
1265
|
+
* Public teardown-grade capture for a conversation whose tmux/in-memory
|
|
1266
|
+
* session may already be gone (idle sweep, process-dead cleanup). Resolves
|
|
1267
|
+
* agentSessionId/cwd via the usage ledger when memory can't.
|
|
1268
|
+
*/
|
|
1269
|
+
captureUsageForConversation(conversationId) {
|
|
1270
|
+
return this.captureUsageFromTranscript(conversationId, true);
|
|
1271
|
+
}
|
|
1272
|
+
/**
|
|
1273
|
+
* Re-derive and report usage for a session from a PRIOR daemon run (awaited).
|
|
1274
|
+
* Used by the startup reconciliation sweep for sessions that closed — or were
|
|
1275
|
+
* left open — without a confirmed final usage report. The transcript is still
|
|
1276
|
+
* on disk; the report targets the (possibly already-ended) AgentSession by id
|
|
1277
|
+
* and is idempotent server-side.
|
|
1278
|
+
*
|
|
1279
|
+
* Returns 'reported' on a confirmed POST, 'no_usage' when no transcript usage
|
|
1280
|
+
* exists (settle the ledger — nothing to recover), 'failed' when extraction or
|
|
1281
|
+
* the POST failed (keep the ledger entry for the next sweep).
|
|
1282
|
+
*/
|
|
1283
|
+
async reconcileUsage(target) {
|
|
1284
|
+
if (!this.dsiloedClient)
|
|
1285
|
+
return 'failed';
|
|
1286
|
+
const cwd = target.cwd || this.getWorkingDirectory();
|
|
1287
|
+
let extracted;
|
|
1288
|
+
try {
|
|
1289
|
+
extracted = this.extractTranscriptUsage(cwd, target.cliSessionId ?? null);
|
|
1290
|
+
}
|
|
1291
|
+
catch (err) {
|
|
1292
|
+
console.error(`${this.getLogTag()} reconcileUsage: transcript extraction failed for agent session ${target.agentSessionId}:`, err);
|
|
1293
|
+
return 'failed';
|
|
1294
|
+
}
|
|
1295
|
+
if (!extracted || extracted.usage.length === 0)
|
|
1296
|
+
return 'no_usage';
|
|
1297
|
+
const ok = await this.dsiloedClient.reportUsage({
|
|
1298
|
+
agent_session_id: target.agentSessionId,
|
|
1299
|
+
cli_type: extracted.cli_type,
|
|
1300
|
+
cost_basis: extracted.cost_basis,
|
|
1301
|
+
cli_session_id: target.cliSessionId ?? null,
|
|
1302
|
+
usage: extracted.usage,
|
|
1303
|
+
});
|
|
1304
|
+
return ok ? 'reported' : 'failed';
|
|
1305
|
+
}
|
|
1306
|
+
/**
|
|
1307
|
+
* Await in-flight usage-report POSTs, bounded by `timeoutMs`. Bridge.stop()
|
|
1308
|
+
* calls this before process.exit — the teardown reports fired by kill() are
|
|
1309
|
+
* async and would otherwise die with the process (their ledger entries would
|
|
1310
|
+
* survive for reconciliation, but flushing now is cheaper than re-deriving).
|
|
1311
|
+
*/
|
|
1312
|
+
async flushUsageReports(timeoutMs = 10_000) {
|
|
1313
|
+
if (this.pendingUsageReports.size === 0)
|
|
1314
|
+
return;
|
|
1315
|
+
console.log(`${this.getLogTag()} Flushing ${this.pendingUsageReports.size} in-flight usage report(s) before shutdown...`);
|
|
1316
|
+
let timer;
|
|
1317
|
+
await Promise.race([
|
|
1318
|
+
Promise.allSettled(Array.from(this.pendingUsageReports)),
|
|
1319
|
+
new Promise((resolve) => { timer = setTimeout(resolve, timeoutMs); }),
|
|
1320
|
+
]);
|
|
1321
|
+
if (timer)
|
|
1322
|
+
clearTimeout(timer);
|
|
1323
|
+
}
|
|
1324
|
+
trackUsageReport(report) {
|
|
1325
|
+
this.pendingUsageReports.add(report);
|
|
1326
|
+
void report
|
|
1327
|
+
.catch(() => { })
|
|
1328
|
+
.finally(() => this.pendingUsageReports.delete(report));
|
|
1329
|
+
}
|
|
1330
|
+
/**
|
|
1331
|
+
* Keep the on-disk usage ledger current for a LIVE session (called from the
|
|
1332
|
+
* 5s monitor tick; the ledger no-ops the write when nothing changed). The
|
|
1333
|
+
* entry is what lets a daemon restart still report this session's usage.
|
|
1334
|
+
*/
|
|
1335
|
+
updateUsageLedger(conversationId, tmuxSession, cwd) {
|
|
1336
|
+
if (!this.usageLedger || !conversationId)
|
|
1337
|
+
return;
|
|
1338
|
+
const session = this.sessionManager.getByConversationId(conversationId);
|
|
1339
|
+
if (!session?.agentSessionId)
|
|
1340
|
+
return;
|
|
1341
|
+
this.usageLedger.upsert({
|
|
1342
|
+
conversationId,
|
|
1343
|
+
agentSessionId: session.agentSessionId,
|
|
1344
|
+
cliType: this.getCliType(),
|
|
1345
|
+
cwd: cwd || this.getWorkingDirectory(),
|
|
1346
|
+
cliSessionId: session.resumeId || this.lastSessionId || undefined,
|
|
1347
|
+
tmuxSession,
|
|
1348
|
+
});
|
|
1349
|
+
}
|
|
1152
1350
|
// Throttled periodic report for a LIVE session. The transcript is parsed
|
|
1153
1351
|
// mid-write (cumulative-so-far) and UPSERTed, so if the daemon dies before
|
|
1154
1352
|
// teardown the session's cost is still captured up to the last interval —
|