@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.
Files changed (87) hide show
  1. package/README.md +64 -3
  2. package/dist/api/backend-health.d.ts +44 -0
  3. package/dist/api/backend-health.d.ts.map +1 -0
  4. package/dist/api/backend-health.js +80 -0
  5. package/dist/api/backend-health.js.map +1 -0
  6. package/dist/api/dsiloed-client.d.ts +7 -3
  7. package/dist/api/dsiloed-client.d.ts.map +1 -1
  8. package/dist/api/dsiloed-client.js +29 -4
  9. package/dist/api/dsiloed-client.js.map +1 -1
  10. package/dist/cable/subscription-manager.d.ts +26 -1
  11. package/dist/cable/subscription-manager.d.ts.map +1 -1
  12. package/dist/cable/subscription-manager.js +72 -13
  13. package/dist/cable/subscription-manager.js.map +1 -1
  14. package/dist/cli/claude-md-block.d.ts +1 -1
  15. package/dist/cli/claude-md-block.d.ts.map +1 -1
  16. package/dist/cli/claude-md-block.js +3 -1
  17. package/dist/cli/claude-md-block.js.map +1 -1
  18. package/dist/cli/file-log.d.ts +58 -3
  19. package/dist/cli/file-log.d.ts.map +1 -1
  20. package/dist/cli/file-log.js +110 -7
  21. package/dist/cli/file-log.js.map +1 -1
  22. package/dist/core/agent-launcher.d.ts +26 -0
  23. package/dist/core/agent-launcher.d.ts.map +1 -1
  24. package/dist/core/auto-updater.d.ts +11 -0
  25. package/dist/core/auto-updater.d.ts.map +1 -1
  26. package/dist/core/auto-updater.js +84 -15
  27. package/dist/core/auto-updater.js.map +1 -1
  28. package/dist/core/base-tmux-launcher.d.ts +95 -21
  29. package/dist/core/base-tmux-launcher.d.ts.map +1 -1
  30. package/dist/core/base-tmux-launcher.js +330 -85
  31. package/dist/core/base-tmux-launcher.js.map +1 -1
  32. package/dist/core/bridge.d.ts +28 -0
  33. package/dist/core/bridge.d.ts.map +1 -1
  34. package/dist/core/bridge.js +219 -25
  35. package/dist/core/bridge.js.map +1 -1
  36. package/dist/core/claude-launcher.d.ts +11 -4
  37. package/dist/core/claude-launcher.d.ts.map +1 -1
  38. package/dist/core/claude-launcher.js +64 -17
  39. package/dist/core/claude-launcher.js.map +1 -1
  40. package/dist/core/codex-launcher.d.ts +3 -3
  41. package/dist/core/codex-launcher.d.ts.map +1 -1
  42. package/dist/core/codex-launcher.js +9 -5
  43. package/dist/core/codex-launcher.js.map +1 -1
  44. package/dist/core/gemini-launcher.d.ts +3 -3
  45. package/dist/core/gemini-launcher.d.ts.map +1 -1
  46. package/dist/core/gemini-launcher.js +9 -5
  47. package/dist/core/gemini-launcher.js.map +1 -1
  48. package/dist/core/health-monitor.d.ts +87 -0
  49. package/dist/core/health-monitor.d.ts.map +1 -0
  50. package/dist/core/health-monitor.js +93 -0
  51. package/dist/core/health-monitor.js.map +1 -0
  52. package/dist/core/idle-completion.d.ts +57 -0
  53. package/dist/core/idle-completion.d.ts.map +1 -0
  54. package/dist/core/idle-completion.js +71 -0
  55. package/dist/core/idle-completion.js.map +1 -0
  56. package/dist/core/launch-binding.d.ts +52 -0
  57. package/dist/core/launch-binding.d.ts.map +1 -0
  58. package/dist/core/launch-binding.js +81 -0
  59. package/dist/core/launch-binding.js.map +1 -0
  60. package/dist/core/mcp-config-dir.d.ts +16 -0
  61. package/dist/core/mcp-config-dir.d.ts.map +1 -0
  62. package/dist/core/mcp-config-dir.js +37 -0
  63. package/dist/core/mcp-config-dir.js.map +1 -0
  64. package/dist/core/stray-processes.d.ts +47 -0
  65. package/dist/core/stray-processes.d.ts.map +1 -0
  66. package/dist/core/stray-processes.js +141 -0
  67. package/dist/core/stray-processes.js.map +1 -0
  68. package/dist/core/transcript-usage.d.ts +9 -0
  69. package/dist/core/transcript-usage.d.ts.map +1 -1
  70. package/dist/core/transcript-usage.js +19 -0
  71. package/dist/core/transcript-usage.js.map +1 -1
  72. package/dist/core/usage-ledger.d.ts +1 -1
  73. package/dist/core/usage-ledger.d.ts.map +1 -1
  74. package/dist/core/workspace-manager.d.ts.map +1 -1
  75. package/dist/core/workspace-manager.js +6 -2
  76. package/dist/core/workspace-manager.js.map +1 -1
  77. package/dist/mcp/server.d.ts +4 -0
  78. package/dist/mcp/server.d.ts.map +1 -1
  79. package/dist/mcp/server.js +15 -0
  80. package/dist/mcp/server.js.map +1 -1
  81. package/dist/mcp/tools/register-tools.d.ts +2 -0
  82. package/dist/mcp/tools/register-tools.d.ts.map +1 -1
  83. package/dist/mcp/tools/register-tools.js +154 -36
  84. package/dist/mcp/tools/register-tools.js.map +1 -1
  85. package/dist/types/index.d.ts +6 -0
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/package.json +3 -1
@@ -4,7 +4,7 @@ import type { MessageQueue } from './message-queue.js';
4
4
  import type { DSiloedClient } from '../api/dsiloed-client.js';
5
5
  import type { WorkspaceManager } from './workspace-manager.js';
6
6
  import type { UsageLedger } from './usage-ledger.js';
7
- import { BaseTmuxLauncher } from './base-tmux-launcher.js';
7
+ import { BaseTmuxLauncher, type LaunchIdentity } from './base-tmux-launcher.js';
8
8
  import { type UsageEntry } from './transcript-usage.js';
9
9
  /**
10
10
  * Codex CLI (OpenAI) implementation of the AgentLauncher interface.
@@ -43,7 +43,7 @@ export declare class CodexLauncher extends BaseTmuxLauncher {
43
43
  protected codexFlags(): string[];
44
44
  protected getReadyIndicator(): string[];
45
45
  protected formatPrompt(prompt: string): string;
46
- protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null): Promise<void>;
46
+ protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null, launch?: LaunchIdentity): Promise<void>;
47
47
  protected checkEnabled(): boolean;
48
48
  protected getWorkingDirectory(): string;
49
49
  protected isAutoRespawnConfigured(): boolean;
@@ -73,7 +73,7 @@ export declare class CodexLauncher extends BaseTmuxLauncher {
73
73
  * setupMcpConfig has set that up + the env-prefixed launch points codex there,
74
74
  * so the rollout lands where we look.
75
75
  */
76
- protected detectResumeId(cwd: string): string | null;
76
+ protected detectResumeId(cwd: string, notBefore?: Date): string | null;
77
77
  protected buildLaunchPrompt(reason: string, conversationId: number | undefined, agentContext: string, workspaceContext: string): {
78
78
  prompt: string;
79
79
  extraArgs: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"codex-launcher.d.ts","sourceRoot":"","sources":["../../src/core/codex-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBAE/C,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW;IAiB3B,SAAS,CAAC,UAAU,IAAI,MAAM;IAM9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAK7B,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE;IAOhC,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAwE3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAcvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAMtC,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAIvC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAW/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAOtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,IAAI;IAU7J;;;;;;;;;;;OAWG;cACgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwB7D,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAmD1C;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAK5B"}
1
+ {"version":3,"file":"codex-launcher.d.ts","sourceRoot":"","sources":["../../src/core/codex-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,SAAQ,gBAAgB;gBAE/C,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW;IAiB3B,SAAS,CAAC,UAAU,IAAI,MAAM;IAM9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAK7B,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE;IAOhC,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwEpH,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAcvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAMtC,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAIvC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAW/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAOtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,IAAI;IAU7J;;;;;;;;;;;OAWG;cACgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IA4B/E,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAmD1C;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAK5B"}
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, writeFileSync, readFileSync, copyFileSync } from
2
2
  import { join } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { BaseTmuxLauncher } from './base-tmux-launcher.js';
5
- import { locateCodexTranscript, parseCodexTranscript, codexCostBasis, isResumableCodexTranscript, } from './transcript-usage.js';
5
+ import { locateCodexTranscript, parseCodexTranscript, codexCostBasis, isResumableCodexTranscript, transcriptTouchedSince, } from './transcript-usage.js';
6
6
  /**
7
7
  * Codex CLI (OpenAI) implementation of the AgentLauncher interface.
8
8
  *
@@ -69,7 +69,7 @@ export class CodexLauncher extends BaseTmuxLauncher {
69
69
  formatPrompt(prompt) {
70
70
  return this.adaptPromptForCodex(prompt);
71
71
  }
72
- async setupMcpConfig(cwd, toolAllowlist) {
72
+ async setupMcpConfig(cwd, toolAllowlist, launch) {
73
73
  if (!this.config.jwt) {
74
74
  throw new Error('No JWT in config. Run "silolink config" to log in.');
75
75
  }
@@ -117,7 +117,7 @@ export class CodexLauncher extends BaseTmuxLauncher {
117
117
  '# Managed by SiloLink — MCP servers (regenerated each launch). stdio via bundled mcp-remote.',
118
118
  '[mcp_servers.silolink]',
119
119
  `command = ${tomlStr(bridge.command)}`,
120
- `args = ${tomlArray([...bridge.args, `http://localhost:${this.config.mcp_port}/mcp`])}`,
120
+ `args = ${tomlArray([...bridge.args, `http://localhost:${this.config.mcp_port}/mcp`, ...this.launchHeaderArgs(launch)])}`,
121
121
  `env = { PATH = ${tomlStr(pathEnv)} }`,
122
122
  '',
123
123
  '[mcp_servers.silolink_server]',
@@ -195,7 +195,7 @@ export class CodexLauncher extends BaseTmuxLauncher {
195
195
  // (-> matching session_meta) + the resumed session id. cost_basis reflects the
196
196
  // live codex auth mode (API key = real $, ChatGPT sign-in = imputed).
197
197
  extractTranscriptUsage(cwd, cliSessionId) {
198
- const transcriptPath = locateCodexTranscript(cwd, cliSessionId ?? this.lastSessionId);
198
+ const transcriptPath = locateCodexTranscript(cwd, cliSessionId ?? null);
199
199
  if (!transcriptPath)
200
200
  return null;
201
201
  const usage = parseCodexTranscript(readFileSync(transcriptPath, 'utf-8'));
@@ -215,10 +215,14 @@ export class CodexLauncher extends BaseTmuxLauncher {
215
215
  * setupMcpConfig has set that up + the env-prefixed launch points codex there,
216
216
  * so the rollout lands where we look.
217
217
  */
218
- detectResumeId(cwd) {
218
+ detectResumeId(cwd, notBefore) {
219
219
  const transcriptPath = locateCodexTranscript(cwd, null);
220
220
  if (!transcriptPath)
221
221
  return null;
222
+ if (notBefore && !transcriptTouchedSince(transcriptPath, notBefore)) {
223
+ console.warn(`[CodexLauncher] Skipping resume capture — rollout ${transcriptPath} predates this pane (started ${notBefore.toISOString()}); it belongs to an earlier session in this cwd.`);
224
+ return null;
225
+ }
222
226
  // Don't pin a meta-only rollout (session killed during warm-up before any
223
227
  // real event) — `codex resume <uuid>` on it would fail and loop. A fresh
224
228
  // launch is the safe fallback. See isResumableCodexTranscript.
@@ -1 +1 @@
1
- {"version":3,"file":"codex-launcher.js","sourceRoot":"","sources":["../../src/core/codex-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-launcher.js","sourceRoot":"","sources":["../../src/core/codex-launcher.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { MessageQueue } from './message-queue.js';
4
4
  import type { DSiloedClient } from '../api/dsiloed-client.js';
5
5
  import type { WorkspaceManager } from './workspace-manager.js';
6
6
  import type { UsageLedger } from './usage-ledger.js';
7
- import { BaseTmuxLauncher } from './base-tmux-launcher.js';
7
+ import { BaseTmuxLauncher, type LaunchIdentity } from './base-tmux-launcher.js';
8
8
  import { type UsageEntry } from './transcript-usage.js';
9
9
  /**
10
10
  * Gemini CLI implementation of the AgentLauncher interface.
@@ -21,7 +21,7 @@ export declare class GeminiLauncher extends BaseTmuxLauncher {
21
21
  protected getArgs(): string[];
22
22
  protected getReadyIndicator(): string[];
23
23
  protected formatPrompt(prompt: string): string;
24
- protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null): Promise<void>;
24
+ protected setupMcpConfig(cwd: string, toolAllowlist?: string[] | null, launch?: LaunchIdentity): Promise<void>;
25
25
  protected checkEnabled(): boolean;
26
26
  protected getWorkingDirectory(): string;
27
27
  protected isAutoRespawnConfigured(): boolean;
@@ -50,7 +50,7 @@ export declare class GeminiLauncher extends BaseTmuxLauncher {
50
50
  * session (the relaunch path is best-effort and never blocks). We still capture
51
51
  * + wire it symmetrically so resume works as soon as the CLI supports it.
52
52
  */
53
- protected detectResumeId(cwd: string): string | null;
53
+ protected detectResumeId(cwd: string, notBefore?: Date): string | null;
54
54
  protected buildLaunchPrompt(reason: string, conversationId: number | undefined, agentContext: string, workspaceContext: string): {
55
55
  prompt: string;
56
56
  extraArgs: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-launcher.d.ts","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBAEhD,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW;IAO3B,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+E3F,SAAS,CAAC,YAAY,IAAI,OAAO;IAKjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAgBvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAMtC,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAIvC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAOtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,IAAI;IAU7J;;;;;;;;;;OAUG;cACgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAmB7D,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IA2C1C;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IA0BlC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}
1
+ {"version":3,"file":"gemini-launcher.d.ts","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBAEhD,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW;IAO3B,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,OAAO,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAIvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;cAI9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+EpH,SAAS,CAAC,YAAY,IAAI,OAAO;IAKjC,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAgBvC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAMtC,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAIvC,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhD,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/C,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,UAAU,IAAI,MAAM;IAI9B,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAOtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,IAAI;IAU7J;;;;;;;;;;OAUG;cACgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAuB/E,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IA2C1C;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IA0BlC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { BaseTmuxLauncher } from './base-tmux-launcher.js';
5
- import { locateGeminiTranscript, parseGeminiTranscript, geminiCostBasis, isResumableGeminiTranscript, } from './transcript-usage.js';
5
+ import { locateGeminiTranscript, parseGeminiTranscript, geminiCostBasis, isResumableGeminiTranscript, transcriptTouchedSince, } from './transcript-usage.js';
6
6
  /**
7
7
  * Gemini CLI implementation of the AgentLauncher interface.
8
8
  *
@@ -29,7 +29,7 @@ export class GeminiLauncher extends BaseTmuxLauncher {
29
29
  formatPrompt(prompt) {
30
30
  return this.adaptPromptForGemini(prompt);
31
31
  }
32
- async setupMcpConfig(cwd, toolAllowlist) {
32
+ async setupMcpConfig(cwd, toolAllowlist, launch) {
33
33
  // Pre-accept Gemini's per-folder trust prompt for this cwd. Gemini CLI
34
34
  // gates loading local config (MCP servers, GEMINI.md, skills) behind an
35
35
  // interactive "Do you trust the files in this folder?" dialog that `--yolo`
@@ -81,7 +81,7 @@ export class GeminiLauncher extends BaseTmuxLauncher {
81
81
  const spawnEnv = { PATH: this.mcpSpawnPathEnv() };
82
82
  mcpServers.silolink = {
83
83
  command: bridge.command,
84
- args: [...bridge.args, `http://localhost:${this.config.mcp_port}/mcp`],
84
+ args: [...bridge.args, `http://localhost:${this.config.mcp_port}/mcp`, ...this.launchHeaderArgs(launch)],
85
85
  env: { ...spawnEnv },
86
86
  };
87
87
  mcpServers.silolink_server = {
@@ -160,7 +160,7 @@ export class GeminiLauncher extends BaseTmuxLauncher {
160
160
  // launch cwd (-> project slug) + the resumed session id. cost_basis reflects
161
161
  // the live Gemini auth mode (API key = real $, OAuth = imputed).
162
162
  extractTranscriptUsage(cwd, cliSessionId) {
163
- const transcriptPath = locateGeminiTranscript(cwd, cliSessionId ?? this.lastSessionId);
163
+ const transcriptPath = locateGeminiTranscript(cwd, cliSessionId ?? null);
164
164
  if (!transcriptPath)
165
165
  return null;
166
166
  const usage = parseGeminiTranscript(readFileSync(transcriptPath, 'utf-8'));
@@ -179,10 +179,14 @@ export class GeminiLauncher extends BaseTmuxLauncher {
179
179
  * session (the relaunch path is best-effort and never blocks). We still capture
180
180
  * + wire it symmetrically so resume works as soon as the CLI supports it.
181
181
  */
182
- detectResumeId(cwd) {
182
+ detectResumeId(cwd, notBefore) {
183
183
  const transcriptPath = locateGeminiTranscript(cwd, null);
184
184
  if (!transcriptPath)
185
185
  return null;
186
+ if (notBefore && !transcriptTouchedSince(transcriptPath, notBefore)) {
187
+ console.warn(`[GeminiLauncher] Skipping resume capture — transcript ${transcriptPath} predates this pane (started ${notBefore.toISOString()}); it belongs to an earlier session in this cwd.`);
188
+ return null;
189
+ }
186
190
  // Don't pin a header-only stub (session killed during warm-up before any
187
191
  // turn) — resuming it would land in an empty/invalid session. A fresh launch
188
192
  // is the safe fallback. See isResumableGeminiTranscript.
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-launcher.js","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EAAE,qBAAqB,EAAE,eAAe,EAC9D,2BAA2B,GAE5B,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,YACE,MAAsB,EACtB,cAA8B,EAC9B,aAA6B,EAC7B,YAA2B,EAC3B,gBAAmC,EACnC,WAAyB;QAEzB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC5F,CAAC;IAED,kCAAkC;IAExB,UAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC;IAChD,CAAC;IAES,OAAO;QACf,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAES,iBAAiB;QACzB,OAAO,CAAC,mBAAmB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAES,YAAY,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,aAA+B;QACzE,uEAAuE;QACvE,wEAAwE;QACxE,4EAA4E;QAC5E,2EAA2E;QAC3E,4EAA4E;QAC5E,0EAA0E;QAC1E,qDAAqD;QACrD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAErC,2DAA2D;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,6EAA6E;QAC7E,IAAI,UAAU,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,wDAAwD,CAAC;QAC7F,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;YACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,qEAAqE;QACrE,oEAAoE;QACpE,uEAAuE;QACvE,mEAAmE;QACnE,iEAAiE;QACjE,mEAAmE;QACnE,iEAAiE;QACjE,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,cAAc;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,IAAI,QAAQ,GAA4B,EAAE,CAAC;YAC3C,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7D,IAAI,GAAG,EAAE,CAAC;oBACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;YAE1E,oEAAoE;YACpE,+DAA+D;YAC/D,wEAAwE;YACxE,mEAAmE;YACnE,iEAAiE;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAClD,UAAU,CAAC,QAAQ,GAAG;gBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,oBAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAM,CAAC;gBACtE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE;aACrB,CAAC;YAEF,UAAU,CAAC,eAAe,GAAG;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE;oBACJ,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU;oBAC1B,UAAU,EAAE,yBAAyB,KAAK,EAAE;iBAC7C;gBACD,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE;aACrB,CAAC;YAEF,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;YACjC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,sDAAsD,kBAAkB,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,kBAAkB,KAAK,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAES,YAAY;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IAES,mBAAmB;QAC3B,mEAAmE;QACnE,gEAAgE;QAChE,4BAA4B;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAES,uBAAuB;QAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC3C,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,KAAK,CAAC;IACrD,CAAC;IAES,kBAAkB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IACpE,kBAAkB;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC3C,CAAC;IAES,WAAW;QACnB,OAAO;YACL,gBAAgB,EAAE,oBAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAM;YAChE,uBAAuB,EAAE,QAAQ;SAClC,CAAC;IACJ,CAAC;IAES,aAAa;QACrB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,UAAU;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,SAAS;QACjB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAES,kBAAkB;QAC1B,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,iEAAiE;IACvD,sBAAsB,CAAC,GAAW,EAAE,YAA4B;QACxE,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,KAAK,GAAG,qBAAqB,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IAED;;;;;;;;;;OAUG;IACgB,cAAc,CAAC,GAAW;QAC3C,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACjC,yEAAyE;QACzE,6EAA6E;QAC7E,yDAAyD;QACzD,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,yDAAyD,cAAc,6CAA6C,CAAC,CAAC;YACnI,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAA4B,CAAC,SAAS,CAAC;YACvE,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAES,iBAAiB,CACzB,MAAc,EACd,cAAkC,EAClC,YAAoB,EACpB,gBAAwB;QAExB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,YAAY,IAAI,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,iBAAiB,CAAC,EAAE,CAAC;YAChF,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,yCAAyC,GAAG,gBAAgB;gBACpE,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,MAAM,cAAc,GAAG,cAAc;gBACnC,CAAC,CAAC,wBAAwB,cAAc,GAAG,YAAY,IAAI;gBAC3D,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB;gBAC5C,CAAC,CAAC,uDAAuD,IAAI,CAAC,qBAAqB,GAAG;gBACtF,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE;oBACN,iEAAiE,cAAc,qHAAqH;oBACpM,WAAW;oBACX,YAAY;oBACZ,gBAAgB;iBACjB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,SAAS;aACV,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB;gBAC9F,iDAAiD,CAAC,GAAG,YAAY,GAAG,gBAAgB;YACtF,SAAS;SACV,CAAC;IACJ,CAAC;IAED,0BAA0B;IAE1B;;;;;OAKG;IACK,0BAA0B,CAAC,GAAW;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;QACpE,IAAI,OAAO,GAA2B,EAAE,CAAC;QAEzC,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACnD,IAAI,GAAG;oBAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,SAAS,gCAAgC,GAAG,EAAE,CAAC,CAAC;YACjG,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,cAAc;YAAE,OAAO,CAAC,oCAAoC;QAEjF,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QAC9B,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,yDAAyD,GAAG,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oDAAoD,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,MAAc;QACzC,OAAO,MAAM;aACV,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;aACxC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"gemini-launcher.js","sourceRoot":"","sources":["../../src/core/gemini-launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { getFileLogStatus } from '../cli/file-log.js';
2
+ import type { BackendHealthSnapshot } from '../api/backend-health.js';
3
+ import type { UsageLedgerEntry } from './usage-ledger.js';
4
+ /**
5
+ * Daemon health block.
6
+ *
7
+ * Everything that went wrong on 2026-08-23/24 had been invisible for weeks:
8
+ * six weeks of 403s, a frozen .mcp.json JWT, a credential-less boot,
9
+ * cross-env reaper kills, recycler kills, unpinned updates, resume flapping.
10
+ * The subsystems now feed this monitor; the Bridge ships `snapshot()` as
11
+ * `health` in every ActionCable heartbeat (the backend stores it on the
12
+ * daemon row and derives coded issues) and logs one `[HEALTH] {...}` line an
13
+ * hour so the file log carries the state too. Keep the payload small (< 2 KB).
14
+ */
15
+ export interface HealthSnapshot {
16
+ credentials_present: boolean | null;
17
+ claude_resolved: boolean | null;
18
+ mcp_config: {
19
+ last_write_ok: boolean | null;
20
+ last_write_at: string | null;
21
+ jwt_exp: string | null;
22
+ };
23
+ backend: BackendHealthSnapshot;
24
+ usage_ledger: {
25
+ unsettled: number;
26
+ oldest: string | null;
27
+ };
28
+ sessions: {
29
+ recycles_24h: number;
30
+ reaped_at_boot: number;
31
+ resume_captures_1h: number;
32
+ };
33
+ launch: {
34
+ last_failed_at: string | null;
35
+ last_error: string | null;
36
+ };
37
+ updater: {
38
+ state: string;
39
+ latest: string | null;
40
+ pinned: boolean | null;
41
+ };
42
+ log: {
43
+ path: string;
44
+ bytes: number;
45
+ stdout_is_log: boolean;
46
+ } | null;
47
+ }
48
+ export type UpdaterState = 'unknown' | 'disabled' | 'checking' | 'current' | 'deferred' | 'notify' | 'installing' | 'failed' | 'pinned-refused';
49
+ export interface HealthFeeds {
50
+ backend?: () => BackendHealthSnapshot;
51
+ usageLedger?: () => UsageLedgerEntry[];
52
+ recycles24h?: () => number;
53
+ jwt?: () => string | undefined;
54
+ log?: () => ReturnType<typeof getFileLogStatus>;
55
+ }
56
+ export declare class HealthMonitor {
57
+ private feeds;
58
+ private credentialsPresent;
59
+ private claudeResolved;
60
+ private mcpWrite;
61
+ private reapedAtBoot;
62
+ private launchFailure;
63
+ private resumeCaptures;
64
+ private updater;
65
+ private hourly;
66
+ attach(feeds: HealthFeeds): void;
67
+ setCredentialsPresent(present: boolean | null): void;
68
+ setClaudeResolved(resolved: boolean | null): void;
69
+ noteMcpConfigWrite(ok: boolean, now?: number): void;
70
+ noteReapedAtBoot(count: number): void;
71
+ /** Record a session-launch failure (scrubbed short message) for the health block. */
72
+ noteLaunchFailure(error: string, now?: number): void;
73
+ noteResumeCapture(now?: number): void;
74
+ setUpdater(patch: Partial<{
75
+ state: UpdaterState;
76
+ latest: string | null;
77
+ pinned: boolean | null;
78
+ }>): void;
79
+ snapshot(now?: number): HealthSnapshot;
80
+ /** One `[HEALTH] {...}` line per hour (plus one at start). */
81
+ startHourlyLog(intervalMs?: number): void;
82
+ stop(): void;
83
+ logLine(): void;
84
+ }
85
+ /** Process-wide instance the subsystems feed (launchers, client, updater, file log). */
86
+ export declare const healthMonitor: HealthMonitor;
87
+ //# sourceMappingURL=health-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../src/core/health-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { decodeJwtExpMs } from '../config/jwt-generator.js';
2
+ import { getFileLogStatus } from '../cli/file-log.js';
3
+ const HOUR_MS = 60 * 60 * 1000;
4
+ export class HealthMonitor {
5
+ feeds = {};
6
+ credentialsPresent = null;
7
+ claudeResolved = null;
8
+ mcpWrite = null;
9
+ reapedAtBoot = 0;
10
+ launchFailure = null;
11
+ resumeCaptures = [];
12
+ updater = { state: 'unknown', latest: null, pinned: null };
13
+ hourly = null;
14
+ attach(feeds) {
15
+ this.feeds = { ...this.feeds, ...feeds };
16
+ }
17
+ setCredentialsPresent(present) { this.credentialsPresent = present; }
18
+ setClaudeResolved(resolved) { this.claudeResolved = resolved; }
19
+ noteMcpConfigWrite(ok, now = Date.now()) { this.mcpWrite = { ok, at: now }; }
20
+ noteReapedAtBoot(count) { this.reapedAtBoot += count; }
21
+ /** Record a session-launch failure (scrubbed short message) for the health block. */
22
+ noteLaunchFailure(error, now = Date.now()) {
23
+ const scrubbed = String(error).replace(/\s+/g, ' ').trim().slice(0, 200);
24
+ this.launchFailure = { at: now, error: scrubbed };
25
+ }
26
+ noteResumeCapture(now = Date.now()) {
27
+ this.resumeCaptures.push(now);
28
+ this.resumeCaptures = this.resumeCaptures.filter(t => now - t < HOUR_MS);
29
+ }
30
+ setUpdater(patch) {
31
+ this.updater = { ...this.updater, ...patch };
32
+ }
33
+ snapshot(now = Date.now()) {
34
+ const safe = (fn, fallback) => {
35
+ try {
36
+ return fn ? fn() : fallback;
37
+ }
38
+ catch {
39
+ return fallback;
40
+ }
41
+ };
42
+ const ledger = safe(this.feeds.usageLedger, []);
43
+ const oldest = ledger.reduce((acc, e) => (acc === null || e.createdAt < acc ? e.createdAt : acc), null);
44
+ const jwtExp = decodeJwtExpMs(safe(this.feeds.jwt, undefined));
45
+ const log = safe(this.feeds.log ?? getFileLogStatus, null);
46
+ this.resumeCaptures = this.resumeCaptures.filter(t => now - t < HOUR_MS);
47
+ return {
48
+ credentials_present: this.credentialsPresent,
49
+ claude_resolved: this.claudeResolved,
50
+ mcp_config: {
51
+ last_write_ok: this.mcpWrite?.ok ?? null,
52
+ last_write_at: this.mcpWrite ? new Date(this.mcpWrite.at).toISOString() : null,
53
+ jwt_exp: jwtExp ? new Date(jwtExp).toISOString() : null,
54
+ },
55
+ backend: safe(this.feeds.backend, { consecutive_403: {}, blocked: [], last_429_at: null, last_5xx_at: null }),
56
+ usage_ledger: { unsettled: ledger.length, oldest },
57
+ sessions: {
58
+ recycles_24h: safe(this.feeds.recycles24h, 0),
59
+ reaped_at_boot: this.reapedAtBoot,
60
+ resume_captures_1h: this.resumeCaptures.length,
61
+ },
62
+ launch: {
63
+ last_failed_at: this.launchFailure ? new Date(this.launchFailure.at).toISOString() : null,
64
+ last_error: this.launchFailure?.error ?? null,
65
+ },
66
+ updater: { ...this.updater },
67
+ log: log ? { path: log.path, bytes: log.bytes, stdout_is_log: log.stdout_is_log } : null,
68
+ };
69
+ }
70
+ /** One `[HEALTH] {...}` line per hour (plus one at start). */
71
+ startHourlyLog(intervalMs = HOUR_MS) {
72
+ if (this.hourly)
73
+ return;
74
+ this.logLine();
75
+ this.hourly = setInterval(() => this.logLine(), intervalMs);
76
+ this.hourly.unref?.();
77
+ }
78
+ stop() {
79
+ if (this.hourly) {
80
+ clearInterval(this.hourly);
81
+ this.hourly = null;
82
+ }
83
+ }
84
+ logLine() {
85
+ try {
86
+ console.log(`[HEALTH] ${JSON.stringify(this.snapshot())}`);
87
+ }
88
+ catch { /* never let health logging break anything */ }
89
+ }
90
+ }
91
+ /** Process-wide instance the subsystems feed (launchers, client, updater, file log). */
92
+ export const healthMonitor = new HealthMonitor();
93
+ //# sourceMappingURL=health-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-monitor.js","sourceRoot":"","sources":["../../src/core/health-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { Session } from '../types/index.js';
2
+ /**
3
+ * Worker report-back starvation, daemon half (issue 4, 2026-08-24).
4
+ *
5
+ * A worker parked in remote_poll after its final report keeps heartbeating,
6
+ * so the backend's completion relay (which runs on complete!) never fires and
7
+ * the dispatcher never learns the work is done. The daemon now ends such a
8
+ * session itself, gracefully: it calls the backend complete endpoint with
9
+ * state 'idle_timeout' and then kills the pane.
10
+ *
11
+ * Two triggers, both pure functions of the Session's timestamps so they are
12
+ * unit-testable without a daemon:
13
+ * - final_report_idle: the session posted a report flagged `final` and no
14
+ * inbound work has arrived for `report_back_idle_ms` (default 2 min).
15
+ * - poll_idle: the session is in the poll loop (a remote_poll within the last
16
+ * two minutes) with zero work calls for `poll_idle_complete_ms`. OPT-IN
17
+ * (default 0 = disabled): envs that deliberately keep idle sessions alive
18
+ * (claude_idle_kill_after_ms of hours, auto-respawn off) must not have a
19
+ * daemon default end them after 20 min. The bridge additionally refuses
20
+ * to act on a poll_idle verdict while the pane is visibly active.
21
+ * Neither fires while the session still has undelivered inbound messages.
22
+ */
23
+ export declare const DEFAULT_REPORT_BACK_IDLE_MS: number;
24
+ export declare const DEFAULT_POLL_IDLE_COMPLETE_MS = 0;
25
+ /** A remote_poll older than this means the CLI is no longer in its poll loop. */
26
+ export declare const POLLING_RECENCY_MS: number;
27
+ /**
28
+ * Is the CLI in its remote_poll loop RIGHT NOW? A remote_poll within the last
29
+ * POLLING_RECENCY_MS. An empty poll stamps `lastPollAt` but deliberately not
30
+ * `lastActivity` (session-manager.recordWorkActivity), so "polling recently
31
+ * with no work past the threshold" is the daemon's one honest idle signal.
32
+ *
33
+ * Two consumers, opposite directions, same predicate (2026-08-26, Doug):
34
+ * - idle-kill / idle-completion: a polling session's pane churn ("Calling
35
+ * silolink · 8s…", "Called silolink 12 times", "● Still nothing — continuing
36
+ * to poll") is NOT work, so the pane-activity tiebreaker must not spare it.
37
+ * Six video sessions each ran to the 8h hard ceiling instead of the 4h
38
+ * threshold, and a final_report_idle completion was deferred 479 minutes.
39
+ * - wedged-session reaper / stale-on-inbound recycler: a polling session is
40
+ * alive by definition and must never be recycled as "wedged", whatever
41
+ * its pane hash does.
42
+ */
43
+ export declare function isInPollLoop(session: Pick<Session, 'lastPollAt'>, now?: number): boolean;
44
+ export interface IdleCompletionConfig {
45
+ reportBackIdleMs: number;
46
+ pollIdleCompleteMs: number;
47
+ }
48
+ export type IdleCompletionReason = 'final_report_idle' | 'poll_idle';
49
+ export declare function idleCompletionConfig(config: {
50
+ report_back_idle_ms?: number;
51
+ poll_idle_complete_ms?: number;
52
+ }): IdleCompletionConfig;
53
+ export declare function idleCompletionVerdict(session: Session, cfg: IdleCompletionConfig, hasUndelivered: boolean, now?: number): {
54
+ reason: IdleCompletionReason;
55
+ idleMs: number;
56
+ } | null;
57
+ //# sourceMappingURL=idle-completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle-completion.d.ts","sourceRoot":"","sources":["../../src/core/idle-completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,2BAA2B,QAAgB,CAAC;AACzD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEpG;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAErE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,CAMnI;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,oBAAoB,EACzB,cAAc,EAAE,OAAO,EACvB,GAAG,GAAE,MAAmB,GACvB;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBzD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Worker report-back starvation, daemon half (issue 4, 2026-08-24).
3
+ *
4
+ * A worker parked in remote_poll after its final report keeps heartbeating,
5
+ * so the backend's completion relay (which runs on complete!) never fires and
6
+ * the dispatcher never learns the work is done. The daemon now ends such a
7
+ * session itself, gracefully: it calls the backend complete endpoint with
8
+ * state 'idle_timeout' and then kills the pane.
9
+ *
10
+ * Two triggers, both pure functions of the Session's timestamps so they are
11
+ * unit-testable without a daemon:
12
+ * - final_report_idle: the session posted a report flagged `final` and no
13
+ * inbound work has arrived for `report_back_idle_ms` (default 2 min).
14
+ * - poll_idle: the session is in the poll loop (a remote_poll within the last
15
+ * two minutes) with zero work calls for `poll_idle_complete_ms`. OPT-IN
16
+ * (default 0 = disabled): envs that deliberately keep idle sessions alive
17
+ * (claude_idle_kill_after_ms of hours, auto-respawn off) must not have a
18
+ * daemon default end them after 20 min. The bridge additionally refuses
19
+ * to act on a poll_idle verdict while the pane is visibly active.
20
+ * Neither fires while the session still has undelivered inbound messages.
21
+ */
22
+ export const DEFAULT_REPORT_BACK_IDLE_MS = 2 * 60 * 1000;
23
+ export const DEFAULT_POLL_IDLE_COMPLETE_MS = 0;
24
+ /** A remote_poll older than this means the CLI is no longer in its poll loop. */
25
+ export const POLLING_RECENCY_MS = 2 * 60 * 1000;
26
+ /**
27
+ * Is the CLI in its remote_poll loop RIGHT NOW? A remote_poll within the last
28
+ * POLLING_RECENCY_MS. An empty poll stamps `lastPollAt` but deliberately not
29
+ * `lastActivity` (session-manager.recordWorkActivity), so "polling recently
30
+ * with no work past the threshold" is the daemon's one honest idle signal.
31
+ *
32
+ * Two consumers, opposite directions, same predicate (2026-08-26, Doug):
33
+ * - idle-kill / idle-completion: a polling session's pane churn ("Calling
34
+ * silolink · 8s…", "Called silolink 12 times", "● Still nothing — continuing
35
+ * to poll") is NOT work, so the pane-activity tiebreaker must not spare it.
36
+ * Six video sessions each ran to the 8h hard ceiling instead of the 4h
37
+ * threshold, and a final_report_idle completion was deferred 479 minutes.
38
+ * - wedged-session reaper / stale-on-inbound recycler: a polling session is
39
+ * alive by definition and must never be recycled as "wedged", whatever
40
+ * its pane hash does.
41
+ */
42
+ export function isInPollLoop(session, now = Date.now()) {
43
+ return !!session.lastPollAt && now - session.lastPollAt.getTime() <= POLLING_RECENCY_MS;
44
+ }
45
+ export function idleCompletionConfig(config) {
46
+ const pick = (v, d) => (typeof v === 'number' && v >= 0 ? v : d);
47
+ return {
48
+ reportBackIdleMs: pick(config.report_back_idle_ms, DEFAULT_REPORT_BACK_IDLE_MS),
49
+ pollIdleCompleteMs: pick(config.poll_idle_complete_ms, DEFAULT_POLL_IDLE_COMPLETE_MS),
50
+ };
51
+ }
52
+ export function idleCompletionVerdict(session, cfg, hasUndelivered, now = Date.now()) {
53
+ if (hasUndelivered)
54
+ return null;
55
+ if (session.mcpSessionId.startsWith('launch-pending-'))
56
+ return null; // not registered yet
57
+ const lastWork = session.lastActivity.getTime();
58
+ if (session.finalReportAt && cfg.reportBackIdleMs > 0) {
59
+ const since = Math.max(session.finalReportAt.getTime(), lastWork);
60
+ const idleMs = now - since;
61
+ if (idleMs >= cfg.reportBackIdleMs)
62
+ return { reason: 'final_report_idle', idleMs };
63
+ }
64
+ if (cfg.pollIdleCompleteMs > 0 && isInPollLoop(session, now)) {
65
+ const idleMs = now - lastWork;
66
+ if (idleMs >= cfg.pollIdleCompleteMs)
67
+ return { reason: 'poll_idle', idleMs };
68
+ }
69
+ return null;
70
+ }
71
+ //# sourceMappingURL=idle-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle-completion.js","sourceRoot":"","sources":["../../src/core/idle-completion.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAAC,OAAoC,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACzF,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,kBAAkB,CAAC;AAC1F,CAAC;AASD,MAAM,UAAU,oBAAoB,CAAC,MAAwE;IAC3G,MAAM,IAAI,GAAG,CAAC,CAAqB,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO;QACL,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;QAC/E,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAgB,EAChB,GAAyB,EACzB,cAAuB,EACvB,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,qBAAqB;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAEhD,IAAI,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;QAC3B,IAAI,MAAM,IAAI,GAAG,CAAC,gBAAgB;YAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,GAAG,CAAC,kBAAkB,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;QAC9B,IAAI,MAAM,IAAI,GAAG,CAAC,kBAAkB;YAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}