clitrigger 0.1.4 → 0.1.6

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 (112) hide show
  1. package/README.md +124 -100
  2. package/README_KR.md +243 -0
  3. package/dist/client/assets/index-BiXO2oR3.js +541 -0
  4. package/dist/client/assets/index-tGOot928.css +1 -0
  5. package/dist/client/index.html +2 -2
  6. package/dist/server/data/cli-models-registry.json +34 -0
  7. package/dist/server/db/queries.d.ts +95 -48
  8. package/dist/server/db/queries.d.ts.map +1 -1
  9. package/dist/server/db/queries.js +328 -129
  10. package/dist/server/db/queries.js.map +1 -1
  11. package/dist/server/db/schema.d.ts.map +1 -1
  12. package/dist/server/db/schema.js +67 -35
  13. package/dist/server/db/schema.js.map +1 -1
  14. package/dist/server/index.d.ts.map +1 -1
  15. package/dist/server/index.js +27 -13
  16. package/dist/server/index.js.map +1 -1
  17. package/dist/server/lib/git.d.ts +3 -0
  18. package/dist/server/lib/git.d.ts.map +1 -0
  19. package/dist/server/lib/git.js +7 -0
  20. package/dist/server/lib/git.js.map +1 -0
  21. package/dist/server/routes/{pipelines.d.ts → analytics.d.ts} +1 -1
  22. package/dist/server/routes/analytics.d.ts.map +1 -0
  23. package/dist/server/routes/analytics.js +102 -0
  24. package/dist/server/routes/analytics.js.map +1 -0
  25. package/dist/server/routes/cli-status.d.ts +3 -0
  26. package/dist/server/routes/cli-status.d.ts.map +1 -0
  27. package/dist/server/routes/cli-status.js +28 -0
  28. package/dist/server/routes/cli-status.js.map +1 -0
  29. package/dist/server/routes/discussions.js +5 -5
  30. package/dist/server/routes/discussions.js.map +1 -1
  31. package/dist/server/routes/execution.d.ts.map +1 -1
  32. package/dist/server/routes/execution.js +9 -5
  33. package/dist/server/routes/execution.js.map +1 -1
  34. package/dist/server/routes/images.d.ts +21 -0
  35. package/dist/server/routes/images.d.ts.map +1 -1
  36. package/dist/server/routes/images.js +163 -1
  37. package/dist/server/routes/images.js.map +1 -1
  38. package/dist/server/routes/logs.js +3 -3
  39. package/dist/server/routes/logs.js.map +1 -1
  40. package/dist/server/routes/models.d.ts.map +1 -1
  41. package/dist/server/routes/models.js +2 -0
  42. package/dist/server/routes/models.js.map +1 -1
  43. package/dist/server/routes/planner.d.ts +3 -0
  44. package/dist/server/routes/planner.d.ts.map +1 -0
  45. package/dist/server/routes/planner.js +344 -0
  46. package/dist/server/routes/planner.js.map +1 -0
  47. package/dist/server/routes/projects.d.ts.map +1 -1
  48. package/dist/server/routes/projects.js +159 -1
  49. package/dist/server/routes/projects.js.map +1 -1
  50. package/dist/server/routes/schedules.d.ts.map +1 -1
  51. package/dist/server/routes/schedules.js +39 -0
  52. package/dist/server/routes/schedules.js.map +1 -1
  53. package/dist/server/routes/sessions.d.ts +3 -0
  54. package/dist/server/routes/sessions.d.ts.map +1 -0
  55. package/dist/server/routes/sessions.js +200 -0
  56. package/dist/server/routes/sessions.js.map +1 -0
  57. package/dist/server/routes/todos.d.ts.map +1 -1
  58. package/dist/server/routes/todos.js +16 -4
  59. package/dist/server/routes/todos.js.map +1 -1
  60. package/dist/server/services/claude-manager.d.ts.map +1 -1
  61. package/dist/server/services/claude-manager.js +63 -28
  62. package/dist/server/services/claude-manager.js.map +1 -1
  63. package/dist/server/services/cli-adapters.d.ts +60 -0
  64. package/dist/server/services/cli-adapters.d.ts.map +1 -1
  65. package/dist/server/services/cli-adapters.js +123 -5
  66. package/dist/server/services/cli-adapters.js.map +1 -1
  67. package/dist/server/services/cli-status.d.ts +8 -0
  68. package/dist/server/services/cli-status.d.ts.map +1 -0
  69. package/dist/server/services/cli-status.js +57 -0
  70. package/dist/server/services/cli-status.js.map +1 -0
  71. package/dist/server/services/discussion-orchestrator.d.ts.map +1 -1
  72. package/dist/server/services/discussion-orchestrator.js +33 -6
  73. package/dist/server/services/discussion-orchestrator.js.map +1 -1
  74. package/dist/server/services/log-streamer.d.ts +12 -0
  75. package/dist/server/services/log-streamer.d.ts.map +1 -1
  76. package/dist/server/services/log-streamer.js +117 -31
  77. package/dist/server/services/log-streamer.js.map +1 -1
  78. package/dist/server/services/model-sync.d.ts +22 -0
  79. package/dist/server/services/model-sync.d.ts.map +1 -0
  80. package/dist/server/services/model-sync.js +181 -0
  81. package/dist/server/services/model-sync.js.map +1 -0
  82. package/dist/server/services/orchestrator.d.ts +18 -0
  83. package/dist/server/services/orchestrator.d.ts.map +1 -1
  84. package/dist/server/services/orchestrator.js +81 -11
  85. package/dist/server/services/orchestrator.js.map +1 -1
  86. package/dist/server/services/pty-output-filter.d.ts.map +1 -1
  87. package/dist/server/services/pty-output-filter.js +91 -8
  88. package/dist/server/services/pty-output-filter.js.map +1 -1
  89. package/dist/server/services/session-manager.d.ts +22 -0
  90. package/dist/server/services/session-manager.d.ts.map +1 -0
  91. package/dist/server/services/session-manager.js +249 -0
  92. package/dist/server/services/session-manager.js.map +1 -0
  93. package/dist/server/services/worktree-manager.d.ts +11 -1
  94. package/dist/server/services/worktree-manager.d.ts.map +1 -1
  95. package/dist/server/services/worktree-manager.js +128 -32
  96. package/dist/server/services/worktree-manager.js.map +1 -1
  97. package/dist/server/websocket/events.d.ts +13 -22
  98. package/dist/server/websocket/events.d.ts.map +1 -1
  99. package/dist/server/websocket/index.d.ts.map +1 -1
  100. package/dist/server/websocket/index.js +17 -1
  101. package/dist/server/websocket/index.js.map +1 -1
  102. package/package.json +3 -3
  103. package/README_EN.md +0 -219
  104. package/dist/client/assets/index-B4peRpUi.js +0 -134
  105. package/dist/client/assets/index-Bjyoy6lB.css +0 -1
  106. package/dist/server/routes/pipelines.d.ts.map +0 -1
  107. package/dist/server/routes/pipelines.js +0 -315
  108. package/dist/server/routes/pipelines.js.map +0 -1
  109. package/dist/server/services/pipeline-orchestrator.d.ts +0 -43
  110. package/dist/server/services/pipeline-orchestrator.d.ts.map +0 -1
  111. package/dist/server/services/pipeline-orchestrator.js +0 -503
  112. package/dist/server/services/pipeline-orchestrator.js.map +0 -1
@@ -15,11 +15,9 @@ export class ClaudeManager {
15
15
  async startClaude(worktreePath, prompt, model, extraOptions, mode = 'headless', tool = 'claude', maxTurns, projectPath, sandboxMode, continueSession) {
16
16
  const adapter = getAdapter(tool);
17
17
  const args = adapter.buildArgs({ mode, prompt, model, extraOptions, maxTurns, workDir: worktreePath, projectPath: projectPath || worktreePath, sandboxMode, continueSession });
18
- if (adapter.requiresTty || (mode === 'interactive' && tool === 'claude')) {
18
+ if (adapter.requiresTty || mode === 'interactive') {
19
19
  const stdinPrompt = adapter.needsStdin(mode) ? adapter.formatStdinPrompt(prompt, mode) : undefined;
20
- // Only Claude has a TUI that requires delayed stdin delivery (wait for ready indicator)
21
- const delayStdin = tool === 'claude';
22
- const result = await this.startWithPty(adapter.command, args, worktreePath, adapter.displayName, stdinPrompt, mode === 'interactive', delayStdin);
20
+ const result = await this.startWithPty(adapter, args, worktreePath, stdinPrompt, mode === 'interactive');
23
21
  return { ...result, command: adapter.command, args };
24
22
  }
25
23
  const result = await this.startWithSpawn(adapter, args, worktreePath, prompt, mode);
@@ -28,8 +26,16 @@ export class ClaudeManager {
28
26
  /**
29
27
  * Spawn using node-pty for CLIs that require a TTY.
30
28
  */
31
- startWithPty(command, args, cwd, displayName, stdinPrompt, interactive, delayStdin = true) {
29
+ startWithPty(adapter, args, cwd, stdinPrompt, interactive) {
32
30
  return new Promise((resolve, reject) => {
31
+ const command = adapter.command;
32
+ const displayName = adapter.displayName;
33
+ const delayStdin = !!adapter.delayStdinUntilReady;
34
+ const autoRespondRules = adapter.autoRespondRules ?? [];
35
+ const readyPattern = adapter.readyIndicatorPattern;
36
+ // PTY submit sequence: most Ink-based TUIs accept '\r', but Gemini
37
+ // needs '\r\n'. Replaces a trailing '\n' on writes going to the PTY.
38
+ const submitSeq = adapter.stdinSubmitSequence ?? '\r';
33
39
  let ptyProcess;
34
40
  try {
35
41
  // On Windows, use cmd.exe to resolve .cmd shims (e.g. codex.cmd)
@@ -47,8 +53,17 @@ export class ClaudeManager {
47
53
  return;
48
54
  }
49
55
  const pid = ptyProcess.pid;
50
- // ANSI escape code stripper
51
- const stripAnsi = (str) => str.replace(/\x1B\[[0-9;]*[A-Za-z]|\x1B\].*?(?:\x07|\x1B\\)|\x1B[()][A-Z0-9]|\x1B[>=<]|\x1B\[[\?]?[0-9;]*[hlJKm]/g, '');
56
+ // ANSI escape code stripper — replaces cursor movement with spaces to preserve word gaps
57
+ const stripAnsi = (str) => {
58
+ // Step 1: Replace cursor movement/positioning sequences with a space
59
+ // C=forward, G=column absolute, H/f=row;col position
60
+ let result = str.replace(/\x1B\[\d*[CG]|\x1B\[\d+;\d+[Hf]/g, ' ');
61
+ // Step 2: Strip all remaining ANSI sequences
62
+ result = result.replace(/\x1B\[[0-9;]*[A-Za-z]|\x1B\].*?(?:\x07|\x1B\\)|\x1B[()][A-Z0-9]|\x1B[>=<]|\x1B\[[\?]?[0-9;]*[hlJKm]/g, '');
63
+ // Step 3: Collapse runs of multiple spaces into one
64
+ result = result.replace(/ {2,}/g, ' ');
65
+ return result;
66
+ };
52
67
  // Create a Readable stream from pty data (PTY merges stdout+stderr)
53
68
  const stdoutStream = new Readable({ read() { } });
54
69
  let stdinDelivered = false;
@@ -58,26 +73,47 @@ export class ClaudeManager {
58
73
  const filterState = interactive ? createPtyFilterState() : null;
59
74
  ptyProcess.onData((data) => {
60
75
  const clean = stripAnsi(data);
61
- // Auto-confirm workspace trust prompt (shown when Claude CLI runs without --print)
62
- if (!trustPending && !exited && /Yes,\s*I\s*trust\s*this/i.test(clean)) {
63
- trustPending = true;
64
- try {
65
- ptyProcess.write('\r');
76
+ // Run adapter-defined auto-respond rules.
77
+ // Blocking rules (trust dialogs) pin trustPending so the initial prompt is
78
+ // deferred until the ready indicator reappears. Non-blocking rules (update
79
+ // notices) dismiss themselves inline without holding back the main prompt.
80
+ for (const rule of autoRespondRules) {
81
+ if (!rule.pattern.test(clean))
82
+ continue;
83
+ if (rule.blocksInitialPrompt) {
84
+ if (!trustPending && !exited) {
85
+ trustPending = true;
86
+ try {
87
+ ptyProcess.write(rule.response);
88
+ }
89
+ catch { /* PTY may have exited */ }
90
+ }
91
+ }
92
+ else if (!exited) {
93
+ try {
94
+ ptyProcess.write(rule.response);
95
+ }
96
+ catch { /* PTY may have exited */ }
66
97
  }
67
- catch { /* PTY may have exited */ }
68
98
  }
69
- // Clear pending flag once trust is confirmed (CLI proceeds past the prompt)
70
- if (trustPending && /Welcome\s*back|›|>\s*$/.test(clean) && !/trust/i.test(clean)) {
71
- trustPending = false;
99
+ // Clear blocking flag once the CLI is back at a ready indicator AND no
100
+ // blocking rule still matches. Reset stdinDelivered so the initial prompt
101
+ // is (re)sent — handles Gemini's in-process restart after trust approval.
102
+ if (trustPending && readyPattern?.test(clean)) {
103
+ const stillBlocking = autoRespondRules.some(r => r.blocksInitialPrompt && r.pattern.test(clean));
104
+ if (!stillBlocking) {
105
+ trustPending = false;
106
+ stdinDelivered = false;
107
+ }
72
108
  }
73
- // Detect CLI ready state and deliver prompt via stdin (Claude TUI only).
74
- // Non-Claude CLIs get immediate delivery (see below), so this only runs with delayStdin.
109
+ // Detect CLI ready state and deliver the initial prompt via PTY stdin.
110
+ // Non-delayed adapters send immediately in the fallback block below.
75
111
  if (delayStdin && stdinPrompt && !stdinDelivered && !exited && !trustPending) {
76
- if (/[›>$%]\s*$/.test(clean)) {
112
+ const readyMatched = readyPattern?.test(clean) ?? false;
113
+ if (readyMatched || /[›>$%⏵]\s*$/.test(clean) || /[☰○]\s*$/.test(clean)) {
77
114
  stdinDelivered = true;
78
- // PTY requires \r (carriage return) to submit, not \n (line feed)
79
115
  try {
80
- ptyProcess.write(stdinPrompt.replace(/\n$/, '\r'));
116
+ ptyProcess.write(stdinPrompt.replace(/\n$/, submitSeq));
81
117
  }
82
118
  catch { /* PTY may have exited */ }
83
119
  }
@@ -107,9 +143,8 @@ export class ClaudeManager {
107
143
  if (interactive) {
108
144
  const ptyWritable = new Writable({
109
145
  write(chunk, _encoding, callback) {
110
- // PTY requires \r (carriage return) to submit, not \n (line feed)
111
146
  try {
112
- ptyProcess.write(chunk.toString().replace(/\n$/, '\r'));
147
+ ptyProcess.write(chunk.toString().replace(/\n$/, submitSeq));
113
148
  }
114
149
  catch { /* PTY may have exited */ }
115
150
  callback();
@@ -132,29 +167,29 @@ export class ClaudeManager {
132
167
  resolveExit(exitCode);
133
168
  });
134
169
  });
135
- // Stdin delivery: immediate for non-Claude CLIs, delayed for Claude TUI
170
+ // Stdin delivery: immediate for adapters without delayStdin, otherwise
171
+ // wait for the ready indicator (handled in onData) with a 5s fallback.
136
172
  if (stdinPrompt && !delayStdin) {
137
173
  setImmediate(() => {
138
174
  if (!stdinDelivered && !exited) {
139
175
  stdinDelivered = true;
140
176
  try {
141
- ptyProcess.write(stdinPrompt.replace(/\n$/, '\r'));
177
+ ptyProcess.write(stdinPrompt.replace(/\n$/, submitSeq));
142
178
  }
143
179
  catch { /* PTY may have exited */ }
144
180
  }
145
181
  });
146
182
  }
147
183
  else if (stdinPrompt && delayStdin) {
148
- // Fallback: if ready-state detection doesn't trigger within 10s, send anyway
149
184
  setTimeout(() => {
150
185
  if (!stdinDelivered && !exited) {
151
186
  stdinDelivered = true;
152
187
  try {
153
- ptyProcess.write(stdinPrompt.replace(/\n$/, '\r'));
188
+ ptyProcess.write(stdinPrompt.replace(/\n$/, submitSeq));
154
189
  }
155
190
  catch { /* PTY may have exited */ }
156
191
  }
157
- }, 10000);
192
+ }, 5000);
158
193
  }
159
194
  setImmediate(() => {
160
195
  resolve({
@@ -1 +1 @@
1
- {"version":3,"file":"claude-manager.js","sourceRoot":"","sources":["../../../src/server/services/claude-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-manager.js","sourceRoot":"","sources":["../../../src/server/services/claude-manager.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,44 @@
1
1
  export type CliTool = 'claude' | 'gemini' | 'codex';
2
2
  export type CliMode = 'headless' | 'interactive' | 'verbose';
3
3
  export type SandboxMode = 'strict' | 'permissive';
4
+ export interface ProbedModel {
5
+ value: string;
6
+ label: string;
7
+ }
8
+ /**
9
+ * Best-effort parse of a CLI --help dump to extract supported model identifiers.
10
+ *
11
+ * Heuristic: looks for lines that mention the `--model` flag and collects any
12
+ * comma/space-separated identifiers on the same (or next) line that match
13
+ * known model naming patterns (e.g. "claude-sonnet-4-6", "gpt-4.1", "o3",
14
+ * "gemini-2.5-pro"). Returns an empty array if nothing plausible is found;
15
+ * callers should treat empty as "probe failed, use registry".
16
+ */
17
+ export declare function parseHelpForModels(helpText: string): ProbedModel[];
4
18
  /**
5
19
  * Validate and sanitize extra CLI options from user input.
6
20
  * Only allows simple flags like --flag or --flag=value.
7
21
  */
8
22
  export declare function sanitizeExtraOptions(extraOptions: string): string[];
23
+ /**
24
+ * A rule for auto-responding to a CLI's in-process prompt (trust dialog,
25
+ * update notice, etc). Matched against PTY stdout after ANSI stripping.
26
+ */
27
+ export interface AutoRespondRule {
28
+ /** Label for logs */
29
+ name: string;
30
+ /** Regex to match the prompt in the stripped PTY output */
31
+ pattern: RegExp;
32
+ /** Exact string written to PTY in response (include trailing \r to submit) */
33
+ response: string;
34
+ /**
35
+ * If true, defer initial-prompt delivery until this rule's pattern stops
36
+ * matching AND the ready indicator appears. Use for trust dialogs that
37
+ * steal stdin. Non-blocking rules (e.g. update prompts) get dismissed in
38
+ * place without holding up the initial prompt.
39
+ */
40
+ blocksInitialPrompt?: boolean;
41
+ }
9
42
  export interface CliAdapter {
10
43
  /** Executable command name */
11
44
  command: string;
@@ -33,6 +66,33 @@ export interface CliAdapter {
33
66
  requiresTty?: boolean;
34
67
  /** Output format: 'stream-json' for structured JSON lines, 'text' for plain text */
35
68
  outputFormat?: 'text' | 'stream-json';
69
+ /**
70
+ * Defer writing the initial prompt to PTY stdin until the CLI's ready
71
+ * indicator appears (or a fallback timeout elapses). Prevents the prompt
72
+ * from being consumed by startup banners or trust dialogs.
73
+ */
74
+ delayStdinUntilReady?: boolean;
75
+ /**
76
+ * Regex that matches the CLI's "ready for input" state in stripped PTY
77
+ * output. Used both to time initial-prompt delivery and to detect the
78
+ * end of a blocking auto-respond rule (e.g. trust dialog dismissed).
79
+ */
80
+ readyIndicatorPattern?: RegExp;
81
+ /** Ordered list of prompts to auto-respond to while the PTY runs */
82
+ autoRespondRules?: AutoRespondRule[];
83
+ /**
84
+ * Byte sequence written to PTY stdin to submit a line of user input.
85
+ * Replaces a trailing '\n' in writes going through the interactive relay
86
+ * and the initial-prompt delivery. Default: '\r'. Some TUIs (e.g. Gemini)
87
+ * only treat '\r\n' as Enter; others need '\n'.
88
+ */
89
+ stdinSubmitSequence?: string;
90
+ /**
91
+ * Best-effort probe for currently supported models. Returns null when the
92
+ * CLI is unreachable or its help output yields no recognizable model ids;
93
+ * callers should fall back to the bundled registry.
94
+ */
95
+ probeModels?(): Promise<ProbedModel[] | null>;
36
96
  }
37
97
  export declare function getAdapter(tool: CliTool): CliAdapter;
38
98
  export declare function supportsInteractiveMode(tool: CliTool): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-adapters.d.ts","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAQlD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBnE;AASD,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;IACrN,yCAAyC;IACzC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,uCAAuC;IACvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1D,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACvC;AAuGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"cli-adapters.d.ts","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAqBlE;AAoCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBnE;AASD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;IACrN,yCAAyC;IACzC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,uCAAuC;IACvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1D,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;AA+JD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE9D"}
@@ -1,5 +1,66 @@
1
1
  import path from 'path';
2
+ import { execFile } from 'child_process';
2
3
  import { isModelSupported } from '../db/queries.js';
4
+ const PROBE_TIMEOUT_MS = 5_000;
5
+ /**
6
+ * Best-effort parse of a CLI --help dump to extract supported model identifiers.
7
+ *
8
+ * Heuristic: looks for lines that mention the `--model` flag and collects any
9
+ * comma/space-separated identifiers on the same (or next) line that match
10
+ * known model naming patterns (e.g. "claude-sonnet-4-6", "gpt-4.1", "o3",
11
+ * "gemini-2.5-pro"). Returns an empty array if nothing plausible is found;
12
+ * callers should treat empty as "probe failed, use registry".
13
+ */
14
+ export function parseHelpForModels(helpText) {
15
+ if (!helpText || typeof helpText !== 'string')
16
+ return [];
17
+ // Identifier shape CLI vendors tend to use for model slugs
18
+ const modelIdPattern = /\b(?:claude-[a-z0-9-]+|gpt-[0-9][0-9a-z.-]*|o[0-9][0-9a-z.-]*|gemini-[0-9][0-9a-z.-]*)\b/gi;
19
+ const lines = helpText.split(/\r?\n/);
20
+ const collected = new Set();
21
+ for (let i = 0; i < lines.length; i++) {
22
+ const line = lines[i];
23
+ if (!/--model\b/i.test(line))
24
+ continue;
25
+ // Scan current line + next 3 lines (help text often puts choices below)
26
+ const window = lines.slice(i, Math.min(i + 4, lines.length)).join(' ');
27
+ const matches = window.match(modelIdPattern);
28
+ if (matches) {
29
+ for (const m of matches)
30
+ collected.add(m.toLowerCase());
31
+ }
32
+ }
33
+ return Array.from(collected).map((value) => ({ value, label: value }));
34
+ }
35
+ function runHelp(command) {
36
+ return new Promise((resolve) => {
37
+ const opts = {
38
+ timeout: PROBE_TIMEOUT_MS,
39
+ maxBuffer: 1024 * 1024,
40
+ };
41
+ if (process.platform === 'win32')
42
+ opts.shell = true;
43
+ execFile(command, ['--help'], opts, (error, stdout, stderr) => {
44
+ if (error && !stdout && !stderr) {
45
+ resolve(null);
46
+ return;
47
+ }
48
+ resolve((stdout || '') + '\n' + (stderr || ''));
49
+ });
50
+ });
51
+ }
52
+ async function probeViaHelp(command) {
53
+ try {
54
+ const help = await runHelp(command);
55
+ if (!help)
56
+ return null;
57
+ const parsed = parseHelpForModels(help);
58
+ return parsed.length > 0 ? parsed : null;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
3
64
  // Allowed CLI option patterns (flags that are safe to pass through)
4
65
  const ALLOWED_OPTION_PATTERN = /^--?[a-zA-Z][a-zA-Z0-9_-]*(?:=\S+)?$/;
5
66
  // Dangerous shell characters that could enable injection
@@ -45,6 +106,16 @@ const claudeAdapter = {
45
106
  displayName: 'Claude CLI',
46
107
  supportsInteractive: true,
47
108
  outputFormat: 'stream-json',
109
+ delayStdinUntilReady: true,
110
+ readyIndicatorPattern: /Welcome\s*back|›|>\s*$/,
111
+ autoRespondRules: [
112
+ {
113
+ name: 'claude-trust',
114
+ pattern: /Yes,\s*I\s*trust\s*this/i,
115
+ response: '\r',
116
+ blocksInitialPrompt: true,
117
+ },
118
+ ],
48
119
  buildArgs({ mode, prompt, model, extraOptions, maxTurns, sandboxMode, continueSession }) {
49
120
  const normalizedModel = normalizeModel(model, 'claude');
50
121
  const args = [];
@@ -77,17 +148,46 @@ const claudeAdapter = {
77
148
  return prompt + '\n';
78
149
  return prompt + TASK_COMPLETION_SUFFIX + '\n';
79
150
  },
151
+ probeModels() {
152
+ return probeViaHelp('claude');
153
+ },
80
154
  };
81
155
  const geminiAdapter = {
82
156
  command: 'gemini',
83
157
  displayName: 'Gemini CLI',
84
- buildArgs({ mode, prompt, model, extraOptions }) {
158
+ supportsInteractive: true,
159
+ delayStdinUntilReady: true,
160
+ // Gemini's TUI only treats \r\n (CRLF) as Enter; a lone \r leaves the
161
+ // character in the input box without submitting.
162
+ stdinSubmitSequence: '\r\n',
163
+ // Gemini welcome screen fixed tokens shown after trust dialog is dismissed
164
+ readyIndicatorPattern: /Type your message|Shortcuts|ctrl\+y/i,
165
+ autoRespondRules: [
166
+ {
167
+ name: 'gemini-trust-folder',
168
+ // First-run folder trust dialog. Option 1 = "Trust folder" (current dir only)
169
+ pattern: /Do you trust the files in this folder\?|Trust folder/i,
170
+ response: '1\r',
171
+ blocksInitialPrompt: true,
172
+ },
173
+ {
174
+ // Provisional pattern; refine once the actual update prompt is captured in logs.
175
+ // Decline updates to avoid unexpected CLI version changes mid-session.
176
+ name: 'gemini-update-prompt',
177
+ pattern: /update available.*\(y\/n\)|install.*new.*version.*\?/i,
178
+ response: 'n\r',
179
+ },
180
+ ],
181
+ buildArgs({ mode, prompt, model, extraOptions, continueSession }) {
85
182
  // Gemini CLI: --yolo auto-approves all tool actions (file writes, shell commands)
86
- // -p enables headless (non-interactive) mode; prompt text is delivered via stdin pipe
183
+ // --prompt= enables headless mode with empty value; actual prompt delivered via stdin pipe.
184
+ // Must use --prompt= (single arg) instead of -p '' because Windows cmd.exe drops empty string args.
87
185
  const normalizedModel = normalizeModel(model, 'gemini');
88
186
  const args = ['--yolo'];
89
187
  if (mode !== 'interactive')
90
- args.push('-p');
188
+ args.push('--prompt=');
189
+ if (continueSession)
190
+ args.push('--resume', 'latest');
91
191
  if (normalizedModel)
92
192
  args.push('--model', normalizedModel);
93
193
  if (extraOptions) {
@@ -101,13 +201,28 @@ const geminiAdapter = {
101
201
  formatStdinPrompt(prompt) {
102
202
  return prompt + '\n';
103
203
  },
204
+ probeModels() {
205
+ return probeViaHelp('gemini');
206
+ },
104
207
  };
105
208
  const codexAdapter = {
106
209
  command: 'codex',
107
210
  displayName: 'Codex CLI',
108
- buildArgs({ mode, prompt, model, extraOptions, workDir, projectPath, sandboxMode }) {
211
+ supportsInteractive: true,
212
+ delayStdinUntilReady: true,
213
+ // Typical Codex TUI input-cursor glyphs. 5s fallback in claude-manager handles miss.
214
+ readyIndicatorPattern: /▍|›|>\s*$/,
215
+ // No auto-respond rules yet — add once real startup/update prompts are captured.
216
+ autoRespondRules: [],
217
+ buildArgs({ mode, prompt, model, extraOptions, workDir, projectPath, sandboxMode, continueSession }) {
109
218
  const normalizedModel = normalizeModel(model, 'codex');
110
- const args = ['exec'];
219
+ const args = [];
220
+ if (mode !== 'interactive') {
221
+ args.push('exec');
222
+ if (continueSession) {
223
+ args.push('resume', '--last');
224
+ }
225
+ }
111
226
  if (sandboxMode === 'strict') {
112
227
  // Use --full-auto (workspace-write sandbox) with --add-dir to allow git metadata access.
113
228
  // Git worktree metadata lives at <projectPath>/.git/worktrees/, so we whitelist the .git dir.
@@ -133,6 +248,9 @@ const codexAdapter = {
133
248
  formatStdinPrompt(prompt) {
134
249
  return prompt + '\n';
135
250
  },
251
+ probeModels() {
252
+ return probeViaHelp('codex');
253
+ },
136
254
  };
137
255
  const adapters = {
138
256
  claude: claudeAdapter,
@@ -1 +1 @@
1
- {"version":3,"file":"cli-adapters.js","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-adapters.js","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAWpD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzD,2DAA2D;IAC3D,MAAM,cAAc,GAAG,4FAA4F,CAAC;IAEpH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,wEAAwE;QACxE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAA4D;YACpE,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,IAAI,GAAG,IAAI;SACvB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpD,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC5D,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAEtE,yDAAyD;AACzD,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEjE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB,EAAE,OAAgB;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,WAAW,KAAK,2CAA2C,CAAC,CAAC;IAChG,OAAO,SAAS,CAAC;AACnB,CAAC;AAoED,MAAM,sBAAsB,GAAG;;;;;6FAK8D,CAAC;AAE9F,MAAM,aAAa,GAAe;IAChC,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,YAAY;IACzB,mBAAmB,EAAE,IAAI;IACzB,YAAY,EAAE,aAAa;IAC3B,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,wBAAwB;IAC/C,gBAAgB,EAAE;QAChB;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,0BAA0B;YACnC,QAAQ,EAAE,IAAI;YACd,mBAAmB,EAAE,IAAI;SAC1B;KACF;IACD,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;QACrF,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,eAAe;YAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,eAAe;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzE,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,kFAAkF;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU,CAAC,KAAK;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,iBAAiB,CAAC,MAAM,EAAE,IAAI;QAC5B,IAAI,IAAI,KAAK,aAAa;YAAE,OAAO,MAAM,GAAG,IAAI,CAAC;QACjD,OAAO,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC;IAChD,CAAC;IACD,WAAW;QACT,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAe;IAChC,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,YAAY;IACzB,mBAAmB,EAAE,IAAI;IACzB,oBAAoB,EAAE,IAAI;IAC1B,sEAAsE;IACtE,iDAAiD;IACjD,mBAAmB,EAAE,MAAM;IAC3B,2EAA2E;IAC3E,qBAAqB,EAAE,sCAAsC;IAC7D,gBAAgB,EAAE;QAChB;YACE,IAAI,EAAE,qBAAqB;YAC3B,8EAA8E;YAC9E,OAAO,EAAE,uDAAuD;YAChE,QAAQ,EAAE,KAAK;YACf,mBAAmB,EAAE,IAAI;SAC1B;QACD;YACE,iFAAiF;YACjF,uEAAuE;YACvE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,uDAAuD;YAChE,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;QAC9D,kFAAkF;QAClF,4FAA4F;QAC5F,oGAAoG;QACpG,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,eAAe;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,eAAe;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU,CAAC,KAAK;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,iBAAiB,CAAC,MAAM;QACtB,OAAO,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,WAAW;QACT,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAe;IAC/B,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,WAAW;IACxB,mBAAmB,EAAE,IAAI;IACzB,oBAAoB,EAAE,IAAI;IAC1B,qFAAqF;IACrF,qBAAqB,EAAE,WAAW;IAClC,iFAAiF;IACjF,gBAAgB,EAAE,EAAE;IACpB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE;QACjG,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,yFAAyF;YACzF,8FAA8F;YAC9F,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzB,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,eAAe;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU,CAAC,KAAK;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,iBAAiB,CAAC,MAAM;QACtB,OAAO,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,WAAW;QACT,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC;AAEF,MAAM,QAAQ,GAAgC;IAC5C,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC;AAChD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface CliToolStatus {
2
+ tool: string;
3
+ installed: boolean;
4
+ version: string | null;
5
+ }
6
+ export declare function checkAllTools(): Promise<CliToolStatus[]>;
7
+ export declare function clearCache(): void;
8
+ //# sourceMappingURL=cli-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-status.d.ts","sourceRoot":"","sources":["../../../src/server/services/cli-status.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAsCD,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CA0B9D;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
@@ -0,0 +1,57 @@
1
+ import { execFile } from 'child_process';
2
+ import { maybeTriggerSync } from './model-sync.js';
3
+ const CACHE_TTL = 60_000; // 60 seconds
4
+ const CHECK_TIMEOUT = 5_000; // 5 seconds
5
+ const cache = new Map();
6
+ const TOOLS = [
7
+ { tool: 'claude', command: 'claude' },
8
+ { tool: 'gemini', command: 'gemini' },
9
+ { tool: 'codex', command: 'codex' },
10
+ ];
11
+ function checkTool(tool, command) {
12
+ return new Promise((resolve) => {
13
+ const opts = { timeout: CHECK_TIMEOUT };
14
+ // Windows needs shell:true to resolve .cmd shims (claude.cmd, gemini.cmd, etc.)
15
+ if (process.platform === 'win32')
16
+ opts.shell = true;
17
+ execFile(command, ['--version'], opts, async (error, stdout) => {
18
+ if (error) {
19
+ resolve({ tool, installed: false, version: null });
20
+ return;
21
+ }
22
+ // Parse version from stdout (first line, trim whitespace)
23
+ const version = stdout.trim().split('\n')[0].trim() || null;
24
+ // Await model reconciliation so clients that read /api/models right
25
+ // after this request see the post-sync cli_models state.
26
+ await maybeTriggerSync(tool, version);
27
+ resolve({ tool, installed: true, version });
28
+ });
29
+ });
30
+ }
31
+ export async function checkAllTools() {
32
+ const now = Date.now();
33
+ const needsCheck = [];
34
+ const results = [];
35
+ for (const t of TOOLS) {
36
+ const cached = cache.get(t.tool);
37
+ if (cached && now - cached.timestamp < CACHE_TTL) {
38
+ results.push(cached.status);
39
+ }
40
+ else {
41
+ needsCheck.push(t);
42
+ }
43
+ }
44
+ if (needsCheck.length > 0) {
45
+ const checked = await Promise.all(needsCheck.map((t) => checkTool(t.tool, t.command)));
46
+ for (const status of checked) {
47
+ cache.set(status.tool, { status, timestamp: now });
48
+ results.push(status);
49
+ }
50
+ }
51
+ // Return in consistent order
52
+ return TOOLS.map((t) => results.find((r) => r.tool === t.tool));
53
+ }
54
+ export function clearCache() {
55
+ cache.clear();
56
+ }
57
+ //# sourceMappingURL=cli-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-status.js","sourceRoot":"","sources":["../../../src/server/services/cli-status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discussion-orchestrator.d.ts","sourceRoot":"","sources":["../../../src/server/services/discussion-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,qBAAa,sBAAsB;IACjC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwF1D;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBzD;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D;;OAEG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAyBlG;;OAEG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5H;;OAEG;YACW,YAAY;IAsH1B;;OAEG;YACW,iBAAiB;IAuE/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAqFvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAsK7B;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
1
+ {"version":3,"file":"discussion-orchestrator.d.ts","sourceRoot":"","sources":["../../../src/server/services/discussion-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,qBAAa,sBAAsB;IACjC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsF1D;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBzD;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D;;OAEG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAyBlG;;OAEG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5H;;OAEG;YACW,YAAY;IA2H1B;;OAEG;YACW,iBAAiB;IAuE/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgHvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAsK7B;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}