clitrigger 0.1.5 → 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.
- package/README.md +121 -97
- package/README_KR.md +243 -0
- package/dist/client/assets/index-BiXO2oR3.js +541 -0
- package/dist/client/assets/index-tGOot928.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/server/data/cli-models-registry.json +34 -0
- package/dist/server/db/queries.d.ts +95 -48
- package/dist/server/db/queries.d.ts.map +1 -1
- package/dist/server/db/queries.js +328 -129
- package/dist/server/db/queries.js.map +1 -1
- package/dist/server/db/schema.d.ts.map +1 -1
- package/dist/server/db/schema.js +67 -35
- package/dist/server/db/schema.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +27 -13
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/git.d.ts +3 -0
- package/dist/server/lib/git.d.ts.map +1 -0
- package/dist/server/lib/git.js +7 -0
- package/dist/server/lib/git.js.map +1 -0
- package/dist/server/routes/{pipelines.d.ts → analytics.d.ts} +1 -1
- package/dist/server/routes/analytics.d.ts.map +1 -0
- package/dist/server/routes/analytics.js +102 -0
- package/dist/server/routes/analytics.js.map +1 -0
- package/dist/server/routes/cli-status.d.ts +3 -0
- package/dist/server/routes/cli-status.d.ts.map +1 -0
- package/dist/server/routes/cli-status.js +28 -0
- package/dist/server/routes/cli-status.js.map +1 -0
- package/dist/server/routes/discussions.js +5 -5
- package/dist/server/routes/discussions.js.map +1 -1
- package/dist/server/routes/execution.d.ts.map +1 -1
- package/dist/server/routes/execution.js +9 -5
- package/dist/server/routes/execution.js.map +1 -1
- package/dist/server/routes/images.d.ts +21 -0
- package/dist/server/routes/images.d.ts.map +1 -1
- package/dist/server/routes/images.js +163 -1
- package/dist/server/routes/images.js.map +1 -1
- package/dist/server/routes/logs.js +3 -3
- package/dist/server/routes/logs.js.map +1 -1
- package/dist/server/routes/models.d.ts.map +1 -1
- package/dist/server/routes/models.js +2 -0
- package/dist/server/routes/models.js.map +1 -1
- package/dist/server/routes/planner.d.ts +3 -0
- package/dist/server/routes/planner.d.ts.map +1 -0
- package/dist/server/routes/planner.js +344 -0
- package/dist/server/routes/planner.js.map +1 -0
- package/dist/server/routes/projects.d.ts.map +1 -1
- package/dist/server/routes/projects.js +159 -1
- package/dist/server/routes/projects.js.map +1 -1
- package/dist/server/routes/schedules.d.ts.map +1 -1
- package/dist/server/routes/schedules.js +39 -0
- package/dist/server/routes/schedules.js.map +1 -1
- package/dist/server/routes/sessions.d.ts +3 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +200 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/todos.d.ts.map +1 -1
- package/dist/server/routes/todos.js +16 -4
- package/dist/server/routes/todos.js.map +1 -1
- package/dist/server/services/claude-manager.d.ts.map +1 -1
- package/dist/server/services/claude-manager.js +63 -28
- package/dist/server/services/claude-manager.js.map +1 -1
- package/dist/server/services/cli-adapters.d.ts +60 -0
- package/dist/server/services/cli-adapters.d.ts.map +1 -1
- package/dist/server/services/cli-adapters.js +123 -5
- package/dist/server/services/cli-adapters.js.map +1 -1
- package/dist/server/services/cli-status.d.ts +8 -0
- package/dist/server/services/cli-status.d.ts.map +1 -0
- package/dist/server/services/cli-status.js +57 -0
- package/dist/server/services/cli-status.js.map +1 -0
- package/dist/server/services/discussion-orchestrator.d.ts.map +1 -1
- package/dist/server/services/discussion-orchestrator.js +33 -6
- package/dist/server/services/discussion-orchestrator.js.map +1 -1
- package/dist/server/services/log-streamer.d.ts +12 -0
- package/dist/server/services/log-streamer.d.ts.map +1 -1
- package/dist/server/services/log-streamer.js +117 -31
- package/dist/server/services/log-streamer.js.map +1 -1
- package/dist/server/services/model-sync.d.ts +22 -0
- package/dist/server/services/model-sync.d.ts.map +1 -0
- package/dist/server/services/model-sync.js +181 -0
- package/dist/server/services/model-sync.js.map +1 -0
- package/dist/server/services/orchestrator.d.ts +18 -0
- package/dist/server/services/orchestrator.d.ts.map +1 -1
- package/dist/server/services/orchestrator.js +81 -11
- package/dist/server/services/orchestrator.js.map +1 -1
- package/dist/server/services/pty-output-filter.d.ts.map +1 -1
- package/dist/server/services/pty-output-filter.js +91 -8
- package/dist/server/services/pty-output-filter.js.map +1 -1
- package/dist/server/services/session-manager.d.ts +22 -0
- package/dist/server/services/session-manager.d.ts.map +1 -0
- package/dist/server/services/session-manager.js +249 -0
- package/dist/server/services/session-manager.js.map +1 -0
- package/dist/server/services/worktree-manager.d.ts +11 -1
- package/dist/server/services/worktree-manager.d.ts.map +1 -1
- package/dist/server/services/worktree-manager.js +128 -32
- package/dist/server/services/worktree-manager.js.map +1 -1
- package/dist/server/websocket/events.d.ts +13 -22
- package/dist/server/websocket/events.d.ts.map +1 -1
- package/dist/server/websocket/index.d.ts.map +1 -1
- package/dist/server/websocket/index.js +17 -1
- package/dist/server/websocket/index.js.map +1 -1
- package/package.json +3 -3
- package/README_EN.md +0 -219
- package/dist/client/assets/index-B4peRpUi.js +0 -134
- package/dist/client/assets/index-Bjyoy6lB.css +0 -1
- package/dist/server/routes/pipelines.d.ts.map +0 -1
- package/dist/server/routes/pipelines.js +0 -315
- package/dist/server/routes/pipelines.js.map +0 -1
- package/dist/server/services/pipeline-orchestrator.d.ts +0 -43
- package/dist/server/services/pipeline-orchestrator.d.ts.map +0 -1
- package/dist/server/services/pipeline-orchestrator.js +0 -503
- 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 ||
|
|
18
|
+
if (adapter.requiresTty || mode === 'interactive') {
|
|
19
19
|
const stdinPrompt = adapter.needsStdin(mode) ? adapter.formatStdinPrompt(prompt, mode) : undefined;
|
|
20
|
-
|
|
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(
|
|
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) =>
|
|
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
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
70
|
-
|
|
71
|
-
|
|
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
|
|
74
|
-
// Non-
|
|
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
|
-
|
|
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$/,
|
|
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$/,
|
|
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
|
|
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$/,
|
|
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$/,
|
|
188
|
+
ptyProcess.write(stdinPrompt.replace(/\n$/, submitSeq));
|
|
154
189
|
}
|
|
155
190
|
catch { /* PTY may have exited */ }
|
|
156
191
|
}
|
|
157
|
-
},
|
|
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":"
|
|
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
|
-
|
|
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
|
-
//
|
|
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('
|
|
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
|
-
|
|
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 = [
|
|
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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-adapters.js","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|