@dsiloed/silo-link 1.11.1 → 1.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +53 -5
  2. package/dist/cable/subscription-manager.d.ts +2 -1
  3. package/dist/cable/subscription-manager.d.ts.map +1 -1
  4. package/dist/cable/subscription-manager.js +39 -15
  5. package/dist/cable/subscription-manager.js.map +1 -1
  6. package/dist/cli/commands.d.ts.map +1 -1
  7. package/dist/cli/commands.js +58 -2
  8. package/dist/cli/commands.js.map +1 -1
  9. package/dist/core/bridge.d.ts.map +1 -1
  10. package/dist/core/bridge.js +24 -9
  11. package/dist/core/bridge.js.map +1 -1
  12. package/dist/core/codex-launcher.d.ts +89 -0
  13. package/dist/core/codex-launcher.d.ts.map +1 -0
  14. package/dist/core/codex-launcher.js +296 -0
  15. package/dist/core/codex-launcher.js.map +1 -0
  16. package/dist/core/launcher-factory.d.ts +1 -1
  17. package/dist/core/launcher-factory.d.ts.map +1 -1
  18. package/dist/core/launcher-factory.js +4 -4
  19. package/dist/core/launcher-factory.js.map +1 -1
  20. package/dist/core/report-usage.d.ts +51 -0
  21. package/dist/core/report-usage.d.ts.map +1 -0
  22. package/dist/core/report-usage.js +112 -0
  23. package/dist/core/report-usage.js.map +1 -0
  24. package/dist/core/session-manager.d.ts +9 -0
  25. package/dist/core/session-manager.d.ts.map +1 -1
  26. package/dist/core/session-manager.js +21 -5
  27. package/dist/core/session-manager.js.map +1 -1
  28. package/dist/core/transcript-usage.d.ts +36 -0
  29. package/dist/core/transcript-usage.d.ts.map +1 -1
  30. package/dist/core/transcript-usage.js +190 -0
  31. package/dist/core/transcript-usage.js.map +1 -1
  32. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  33. package/dist/mcp/tools/register-tools.js +8 -1
  34. package/dist/mcp/tools/register-tools.js.map +1 -1
  35. package/dist/types/index.d.ts +9 -2
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,112 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { basename } from 'node:path';
3
+ import { parseClaudeTranscript, parseGeminiTranscript, parseCodexTranscript, locateClaudeTranscript, locateGeminiTranscript, locateCodexTranscript, claudeCostBasis, geminiCostBasis, codexCostBasis, } from './transcript-usage.js';
4
+ const PARSERS = {
5
+ claude: parseClaudeTranscript,
6
+ gemini: parseGeminiTranscript,
7
+ codex: parseCodexTranscript,
8
+ };
9
+ const LOCATORS = {
10
+ claude: locateClaudeTranscript,
11
+ gemini: locateGeminiTranscript,
12
+ codex: locateCodexTranscript,
13
+ };
14
+ const COST_BASIS = {
15
+ claude: claudeCostBasis,
16
+ gemini: geminiCostBasis,
17
+ codex: codexCostBasis,
18
+ };
19
+ /**
20
+ * Locate + parse a coding-agent transcript into the per-model usage summary the
21
+ * report_coding_usage endpoint expects. Pure (no network) so it's unit-testable.
22
+ */
23
+ export function collectUsage(opts) {
24
+ const cli = opts.cli;
25
+ const cwd = opts.cwd || process.cwd();
26
+ const sessionId = opts.sessionId ?? null;
27
+ const transcriptPath = opts.transcriptPath && existsSync(opts.transcriptPath)
28
+ ? opts.transcriptPath
29
+ : LOCATORS[cli](cwd, sessionId);
30
+ const usage = transcriptPath && existsSync(transcriptPath)
31
+ ? PARSERS[cli](readFileSync(transcriptPath, 'utf8'))
32
+ : [];
33
+ return {
34
+ cli,
35
+ cost_basis: COST_BASIS[cli](),
36
+ cli_session_id: sessionId,
37
+ usage,
38
+ transcriptPath,
39
+ };
40
+ }
41
+ /**
42
+ * Collect usage for a coding session and POST it to model_api's
43
+ * report_coding_usage endpoint, attributed to the configured user. Returns the
44
+ * collected usage even when nothing is posted (empty usage / dry run) so callers
45
+ * can log what happened. Never throws on HTTP failure — returns posted: false.
46
+ */
47
+ export async function reportUsage(config, opts) {
48
+ const collected = collectUsage(opts);
49
+ if (collected.usage.length === 0) {
50
+ return { posted: false, message: 'No usage found in transcript', collected };
51
+ }
52
+ if (opts.dryRun) {
53
+ return { posted: false, message: 'Dry run — not posted', collected };
54
+ }
55
+ const body = {
56
+ cli_type: collected.cli,
57
+ cost_basis: collected.cost_basis,
58
+ cli_session_id: collected.cli_session_id,
59
+ session_name: opts.sessionName || defaultSessionName(opts.cli, opts.cwd || process.cwd()),
60
+ usage: collected.usage,
61
+ };
62
+ try {
63
+ const res = await fetch(`${config.host}/api/v1/silolink/report_coding_usage`, {
64
+ method: 'POST',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ 'Authorization': `Bearer ${opts.getToken()}`,
68
+ 'Tenant-Id': config.tenant_id,
69
+ },
70
+ body: JSON.stringify(body),
71
+ });
72
+ const data = (await res.json().catch(() => ({})));
73
+ return {
74
+ posted: !!data.success,
75
+ status: res.status,
76
+ recorded: data.recorded,
77
+ skipped: data.skipped,
78
+ agent_session_id: data.agent_session_id,
79
+ message: data.message,
80
+ collected,
81
+ };
82
+ }
83
+ catch (err) {
84
+ return { posted: false, message: `POST failed: ${err.message}`, collected };
85
+ }
86
+ }
87
+ function defaultSessionName(cli, cwd) {
88
+ const label = { claude: 'Claude Code', gemini: 'Gemini', codex: 'Codex' }[cli];
89
+ return `${label} — ${basename(cwd) || cwd}`;
90
+ }
91
+ /**
92
+ * Read a coding-agent hook's JSON payload from stdin (when invoked as a Stop /
93
+ * SessionEnd hook). Returns {} when there's no piped input or it isn't JSON.
94
+ * Claude Code passes { session_id, transcript_path, cwd, ... } on stdin.
95
+ */
96
+ export async function readHookStdin() {
97
+ if (process.stdin.isTTY)
98
+ return {};
99
+ try {
100
+ const chunks = [];
101
+ for await (const chunk of process.stdin)
102
+ chunks.push(chunk);
103
+ const raw = Buffer.concat(chunks).toString('utf8').trim();
104
+ if (!raw)
105
+ return {};
106
+ return JSON.parse(raw);
107
+ }
108
+ catch {
109
+ return {};
110
+ }
111
+ }
112
+ //# sourceMappingURL=report-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-usage.js","sourceRoot":"","sources":["../../src/core/report-usage.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,15 @@ export declare class SessionManager {
11
11
  register(session: Session): void;
12
12
  /** Store the provider for a conversation before the session registers */
13
13
  setPendingProvider(conversationId: number, provider: string): void;
14
+ /**
15
+ * True when a deliberate launch was kicked off for this conversation and the
16
+ * session hasn't registered yet (within `windowMs`). Lets the inbound
17
+ * auto-launcher skip conversations already being launched (e.g. a UI Codex
18
+ * launch) instead of spawning a duplicate default-provider session. The window
19
+ * bounds it so a launch that dies before registering doesn't suppress recovery
20
+ * forever.
21
+ */
22
+ pendingLaunch(conversationId: number, windowMs?: number): boolean;
14
23
  unregister(sessionId: string): Session | undefined;
15
24
  get(sessionId: string): Session | undefined;
16
25
  getByMcpSessionId(mcpSessionId: string): Session | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,qBAAqB,CAAkC;IAC/D,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,gBAAgB,CAAC,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAgC;gBAGlD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAC7C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO;IAO7C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAYhC,yEAAyE;IACzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAUlD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK5D;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAUjE,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKhE,MAAM,IAAI,OAAO,EAAE;IASnB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3C;;;OAGG;IACH,QAAQ,IAAI,OAAO;IAyDnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,IAAI,IAAI;CAShB"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,qBAAqB,CAAkC;IAK/D,OAAO,CAAC,gBAAgB,CAA4D;IACpF,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,gBAAgB,CAAC,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAgC;gBAGlD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAC7C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO;IAO7C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAYhC,yEAAyE;IACzE,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlE;;;;;;;OAOG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,SAAgB,GAAG,OAAO;IAKxE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAUlD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK5D;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAUjE,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKhE,MAAM,IAAI,OAAO,EAAE;IASnB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3C;;;OAGG;IACH,QAAQ,IAAI,OAAO;IAyDnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,IAAI,IAAI;CAShB"}
@@ -3,7 +3,11 @@ export class SessionManager {
3
3
  sessions = new Map();
4
4
  mcpToSession = new Map();
5
5
  conversationToSession = new Map();
6
- pendingProviders = new Map(); // conversationId -> provider
6
+ // conversationId -> { provider, at }. Set by the Bridge when it kicks off a
7
+ // deliberate launch; cleared when that session registers. Doubles as a
8
+ // "launch in flight" signal so the inbound auto-launcher doesn't spawn a
9
+ // SECOND (default-provider) session for a conversation already being launched.
10
+ pendingProviders = new Map();
7
11
  cleanupTimer = null;
8
12
  onSessionCleaned;
9
13
  shouldEvict;
@@ -14,9 +18,9 @@ export class SessionManager {
14
18
  }
15
19
  register(session) {
16
20
  // Apply pending provider if set (from Bridge launch)
17
- const provider = this.pendingProviders.get(session.conversationId);
18
- if (provider) {
19
- session.agentProvider = provider;
21
+ const pending = this.pendingProviders.get(session.conversationId);
22
+ if (pending) {
23
+ session.agentProvider = pending.provider;
20
24
  this.pendingProviders.delete(session.conversationId);
21
25
  }
22
26
  this.sessions.set(session.sessionId, session);
@@ -25,7 +29,19 @@ export class SessionManager {
25
29
  }
26
30
  /** Store the provider for a conversation before the session registers */
27
31
  setPendingProvider(conversationId, provider) {
28
- this.pendingProviders.set(conversationId, provider);
32
+ this.pendingProviders.set(conversationId, { provider, at: Date.now() });
33
+ }
34
+ /**
35
+ * True when a deliberate launch was kicked off for this conversation and the
36
+ * session hasn't registered yet (within `windowMs`). Lets the inbound
37
+ * auto-launcher skip conversations already being launched (e.g. a UI Codex
38
+ * launch) instead of spawning a duplicate default-provider session. The window
39
+ * bounds it so a launch that dies before registering doesn't suppress recovery
40
+ * forever.
41
+ */
42
+ pendingLaunch(conversationId, windowMs = 3 * 60 * 1000) {
43
+ const pending = this.pendingProviders.get(conversationId);
44
+ return !!pending && Date.now() - pending.at < windowMs;
29
45
  }
30
46
  unregister(sessionId) {
31
47
  const session = this.sessions.get(sessionId);
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,42 @@ export declare function claudeCostBasis(): 'real' | 'imputed';
55
55
  * the slug when the session id isn't known.
56
56
  */
57
57
  export declare function locateGeminiTranscript(cwd: string, sessionId: string | null): string | null;
58
+ /**
59
+ * Parse a Codex CLI rollout transcript (JSONL) into per-model token totals.
60
+ *
61
+ * Codex writes one rollout file per session under ~/.codex/sessions/YYYY/MM/DD/.
62
+ * Each line is `{ timestamp, type, payload }`. Token usage arrives in
63
+ * `token_count` event payloads carrying `info.total_token_usage` — a CUMULATIVE
64
+ * running total for the whole session (NOT a per-turn delta). So we take the
65
+ * LAST total_token_usage we see rather than summing (summing cumulative totals
66
+ * would massively overcount). The model is read from the session_meta /
67
+ * turn_context line(s); the most recent wins.
68
+ *
69
+ * Codex `TokenUsage` keys map straight onto model_api's OpenAI pricing
70
+ * convention (input_tokens is cache-INCLUSIVE, output_tokens is
71
+ * reasoning-INCLUSIVE — model_api subtracts the subsets itself), so we forward
72
+ * the raw cumulative values:
73
+ * input_tokens <- input_tokens (incl. cached)
74
+ * cache_read_input_tokens<- cached_input_tokens
75
+ * output_tokens <- output_tokens (incl. reasoning)
76
+ * reasoning_tokens <- reasoning_output_tokens
77
+ */
78
+ export declare function parseCodexTranscript(content: string): UsageEntry[];
79
+ /**
80
+ * Locate a Codex rollout transcript. Rollouts live under
81
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-<ts>-<uuid>.jsonl. When sessionId is
82
+ * known, match it in the filename or the session_meta header; otherwise pick the
83
+ * newest rollout whose session_meta cwd matches, falling back to the newest
84
+ * rollout overall.
85
+ */
86
+ export declare function locateCodexTranscript(cwd: string, sessionId: string | null): string | null;
87
+ /**
88
+ * Codex billing basis: API key (env OPENAI_API_KEY, or an api-key entry in
89
+ * ~/.codex/auth.json) => real metered dollars; "Sign in with ChatGPT" (OAuth
90
+ * tokens, no api key) => subscription/imputed. Defaults to 'imputed' when the
91
+ * auth config can't be read.
92
+ */
93
+ export declare function codexCostBasis(): 'real' | 'imputed';
58
94
  /**
59
95
  * Real metered billing vs subscription-imputed, read from the live Gemini auth
60
96
  * config: an explicit API key means real dollars; OAuth (personal account)
@@ -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,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;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,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"}
@@ -187,6 +187,196 @@ export function locateGeminiTranscript(cwd, sessionId) {
187
187
  .map((f) => join(chatsDir, f))
188
188
  .sort((a, b) => statMtime(b) - statMtime(a))[0] ?? null;
189
189
  }
190
+ function codexHome() {
191
+ return process.env.CODEX_HOME || join(homedir(), '.codex');
192
+ }
193
+ /**
194
+ * Parse a Codex CLI rollout transcript (JSONL) into per-model token totals.
195
+ *
196
+ * Codex writes one rollout file per session under ~/.codex/sessions/YYYY/MM/DD/.
197
+ * Each line is `{ timestamp, type, payload }`. Token usage arrives in
198
+ * `token_count` event payloads carrying `info.total_token_usage` — a CUMULATIVE
199
+ * running total for the whole session (NOT a per-turn delta). So we take the
200
+ * LAST total_token_usage we see rather than summing (summing cumulative totals
201
+ * would massively overcount). The model is read from the session_meta /
202
+ * turn_context line(s); the most recent wins.
203
+ *
204
+ * Codex `TokenUsage` keys map straight onto model_api's OpenAI pricing
205
+ * convention (input_tokens is cache-INCLUSIVE, output_tokens is
206
+ * reasoning-INCLUSIVE — model_api subtracts the subsets itself), so we forward
207
+ * the raw cumulative values:
208
+ * input_tokens <- input_tokens (incl. cached)
209
+ * cache_read_input_tokens<- cached_input_tokens
210
+ * output_tokens <- output_tokens (incl. reasoning)
211
+ * reasoning_tokens <- reasoning_output_tokens
212
+ */
213
+ export function parseCodexTranscript(content) {
214
+ let model = 'unknown';
215
+ let lastUsage = null;
216
+ let lastTimestamp;
217
+ for (const line of content.split('\n')) {
218
+ const trimmed = line.trim();
219
+ if (!trimmed)
220
+ continue;
221
+ let obj;
222
+ try {
223
+ obj = JSON.parse(trimmed);
224
+ }
225
+ catch {
226
+ continue;
227
+ }
228
+ const ts = obj.timestamp;
229
+ const m = findModel(obj);
230
+ if (m)
231
+ model = m;
232
+ const usage = findTotalTokenUsage(obj);
233
+ if (usage) {
234
+ lastUsage = usage;
235
+ if (typeof ts === 'string')
236
+ lastTimestamp = ts;
237
+ }
238
+ }
239
+ if (!lastUsage)
240
+ return [];
241
+ return [{
242
+ model,
243
+ input_tokens: num(lastUsage.input_tokens),
244
+ output_tokens: num(lastUsage.output_tokens),
245
+ cache_read_input_tokens: num(lastUsage.cached_input_tokens),
246
+ reasoning_tokens: num(lastUsage.reasoning_output_tokens),
247
+ usage_at: lastTimestamp,
248
+ }];
249
+ }
250
+ /**
251
+ * Deep-search for the LAST object that looks like a Codex config carrying a
252
+ * model name — session_meta / turn_context payloads have `model` alongside
253
+ * config-ish siblings (cwd, model_provider, model_context_window, …). We avoid
254
+ * picking up a stray `model` on an unrelated object by requiring one of those
255
+ * siblings; falling back to any `model` string only if nothing better is found.
256
+ */
257
+ function findModel(root) {
258
+ let strong = null;
259
+ let weak = null;
260
+ const visit = (x) => {
261
+ if (!x || typeof x !== 'object')
262
+ return;
263
+ if (Array.isArray(x)) {
264
+ x.forEach(visit);
265
+ return;
266
+ }
267
+ const obj = x;
268
+ if (typeof obj.model === 'string' && obj.model) {
269
+ const configish = ['cwd', 'model_provider', 'model_context_window', 'instructions', 'reasoning_effort']
270
+ .some((k) => k in obj);
271
+ if (configish)
272
+ strong = obj.model;
273
+ else
274
+ weak ??= obj.model;
275
+ }
276
+ for (const key of Object.keys(obj))
277
+ visit(obj[key]);
278
+ };
279
+ visit(root);
280
+ return strong ?? weak;
281
+ }
282
+ /** Deep-search for a cumulative `total_token_usage` block, if present. */
283
+ function findTotalTokenUsage(root) {
284
+ let found = null;
285
+ const visit = (x) => {
286
+ if (!x || typeof x !== 'object')
287
+ return;
288
+ if (Array.isArray(x)) {
289
+ x.forEach(visit);
290
+ return;
291
+ }
292
+ const obj = x;
293
+ const ttu = obj.total_token_usage;
294
+ if (ttu && typeof ttu === 'object')
295
+ found = ttu;
296
+ for (const key of Object.keys(obj))
297
+ visit(obj[key]);
298
+ };
299
+ visit(root);
300
+ return found;
301
+ }
302
+ /**
303
+ * Locate a Codex rollout transcript. Rollouts live under
304
+ * ~/.codex/sessions/YYYY/MM/DD/rollout-<ts>-<uuid>.jsonl. When sessionId is
305
+ * known, match it in the filename or the session_meta header; otherwise pick the
306
+ * newest rollout whose session_meta cwd matches, falling back to the newest
307
+ * rollout overall.
308
+ */
309
+ export function locateCodexTranscript(cwd, sessionId) {
310
+ const sessionsDir = join(codexHome(), 'sessions');
311
+ if (!existsSync(sessionsDir))
312
+ return null;
313
+ let files;
314
+ try {
315
+ files = readdirSync(sessionsDir, { recursive: true })
316
+ .map((f) => String(f))
317
+ .filter((f) => f.endsWith('.jsonl'))
318
+ .map((f) => join(sessionsDir, f));
319
+ }
320
+ catch {
321
+ return null;
322
+ }
323
+ if (files.length === 0)
324
+ return null;
325
+ if (sessionId) {
326
+ const byName = files.find((f) => f.includes(sessionId));
327
+ if (byName)
328
+ return byName;
329
+ for (const f of files) {
330
+ try {
331
+ const firstLine = readFileSync(f, 'utf8').split('\n', 1)[0];
332
+ const header = JSON.parse(firstLine);
333
+ if (header.id === sessionId || header.payload?.id === sessionId)
334
+ return f;
335
+ }
336
+ catch {
337
+ // unreadable header — keep scanning
338
+ }
339
+ }
340
+ }
341
+ const byMtime = files.sort((a, b) => statMtime(b) - statMtime(a));
342
+ const matchingCwd = byMtime.find((f) => {
343
+ try {
344
+ const firstLine = readFileSync(f, 'utf8').split('\n', 1)[0];
345
+ return firstLine.includes(`"cwd":"${cwd}"`) || firstLine.includes(`"cwd": "${cwd}"`);
346
+ }
347
+ catch {
348
+ return false;
349
+ }
350
+ });
351
+ return matchingCwd ?? byMtime[0] ?? null;
352
+ }
353
+ /**
354
+ * Codex billing basis: API key (env OPENAI_API_KEY, or an api-key entry in
355
+ * ~/.codex/auth.json) => real metered dollars; "Sign in with ChatGPT" (OAuth
356
+ * tokens, no api key) => subscription/imputed. Defaults to 'imputed' when the
357
+ * auth config can't be read.
358
+ */
359
+ export function codexCostBasis() {
360
+ if (process.env.OPENAI_API_KEY)
361
+ return 'real';
362
+ try {
363
+ // codex auth.json (validated against codex-cli 0.141.0):
364
+ // { auth_mode: 'chatgpt' | 'apikey', OPENAI_API_KEY: string|null, tokens, ... }
365
+ const auth = JSON.parse(readFileSync(join(codexHome(), 'auth.json'), 'utf8'));
366
+ if (auth.auth_mode === 'apikey')
367
+ return 'real';
368
+ if (auth.auth_mode === 'chatgpt')
369
+ return 'imputed';
370
+ if (auth.OPENAI_API_KEY)
371
+ return 'real';
372
+ if (auth.tokens)
373
+ return 'imputed';
374
+ }
375
+ catch {
376
+ // fall through
377
+ }
378
+ return 'imputed';
379
+ }
190
380
  function statMtime(path) {
191
381
  try {
192
382
  return statSync(path).mtimeMs;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,QAAQ,GACb,IAAI,CAy/BN"}
1
+ {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAiCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,QAAQ,GACb,IAAI,CAkgCN"}
@@ -17,7 +17,8 @@ function getSessionForTransport(transport, sessionManager) {
17
17
  function getAgentPrefix(session) {
18
18
  switch (session.agentProvider) {
19
19
  case 'gemini': return '**[Gemini]**';
20
- case 'openai': return '**[OpenAI]**';
20
+ case 'codex':
21
+ case 'openai': return '**[Codex]**'; // 'openai' is the legacy alias for the Codex CLI
21
22
  default: return '**[Claude Code]**';
22
23
  }
23
24
  }
@@ -138,6 +139,12 @@ export function registerTools(server, transport, deps) {
138
139
  if (agentSession) {
139
140
  session.agentSessionId = agentSession.id;
140
141
  setAgentStatus(session, 'agent_session_idle', dsiloedClient);
142
+ // Persist which coding agent this conversation runs so a later restart
143
+ // (auto-launch on inbound) relaunches with the SAME provider instead of
144
+ // the daemon default — e.g. a Codex conversation stays Codex.
145
+ if (session.agentProvider) {
146
+ dsiloedClient.mergeAgentSessionMetadata(agentSession.id, { coding_agent: session.agentProvider }, agentSession.metadata).catch(() => { });
147
+ }
141
148
  // Sync workspace metadata if a worktree exists for this conversation.
142
149
  // Match by conversation ID first (deterministic), then fall back to
143
150
  // unclaimed workspace from the launcher's temp session ID.