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.
- package/README.md +124 -100
- 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
|
@@ -6,13 +6,15 @@ export function createPtyFilterState() {
|
|
|
6
6
|
return { lineBuffer: '', recentLines: [], inResponseBlock: false };
|
|
7
7
|
}
|
|
8
8
|
// ── Noise detection patterns ──
|
|
9
|
+
const SPINNER_CHARS = '✶✻✽✢✧✦✱·⊹◈⟡⋆✸✹✺⊛⊕⊗*++*✚✕✖';
|
|
9
10
|
const NOISE_PATTERNS = [
|
|
10
11
|
// Box drawing / separator lines (allow trailing prompt chars like > $ %)
|
|
11
12
|
/^[\s─━│┃╭╮╰╯┌┐└┘┬┴├┤┼╋═║╔╗╚╝╠╣╦╩╬░█▓▒>$%›]+$/,
|
|
12
13
|
// Claude banner frame
|
|
13
14
|
/╭.*Claude|╰─/,
|
|
14
|
-
// Status bar: model/team info
|
|
15
|
+
// Status bar: model/team info (with or without brackets)
|
|
15
16
|
/^\[.*(?:Haiku|Sonnet|Opus|Claude).*\]\s*│/i,
|
|
17
|
+
/(?:Haiku|Sonnet|Opus)\s+\d+(?:\.\d+)?.*(?:Team|Plan|Pro|Max)/i,
|
|
16
18
|
// Context/Usage progress bars
|
|
17
19
|
/(?:Context|Usage)\s+[█░▓▒]+/,
|
|
18
20
|
// Hook count line
|
|
@@ -21,12 +23,16 @@ const NOISE_PATTERNS = [
|
|
|
21
23
|
/⏵/,
|
|
22
24
|
// TUI hints
|
|
23
25
|
/(?:ctrl|shift)\+\w+\s+to\s+/i,
|
|
24
|
-
// Tip
|
|
25
|
-
/^⎿\s*Tip
|
|
26
|
+
// Ink status sub-line (⎿ followed by short status word: Tip, Hmm, Loading, etc.)
|
|
27
|
+
/^⎿\s*(?:Tip|Hmm|Loading|Processing|Running|Waiting|Thinking|Done|Working)/i,
|
|
28
|
+
// Ink short status line on its own (Hmm…, Loading…)
|
|
29
|
+
/^(?:Hmm|Thinking|Loading|Processing|Running|Waiting|Working)\s*…?$/i,
|
|
26
30
|
// Spinner frames: allow optional (thinking)/(thought for Ns) suffix after …
|
|
27
|
-
/^[
|
|
31
|
+
/^[✶✻✽✢✧✦✱·⊹◈⟡⋆✸✹✺⊛⊕⊗*++*✚✕✖]\s*.{0,60}…/,
|
|
32
|
+
// Thinking animation chars mixed with (thinking) text (e.g. "✶(thinking)(thinking) ✻(thinking)✻")
|
|
33
|
+
/^[✶✻✽✢✧✦✱·⊹◈⟡⋆✸✹✺⊛⊕⊗*++*✚✕✖\s]*\(?think(?:ing)?\)?[✶✻✽✢✧✦✱·⊹◈⟡⋆✸✹✺⊛⊕⊗*++*✚✕✖\s(thinking)]*$/,
|
|
28
34
|
// Thinking indicators
|
|
29
|
-
/^\(?think(?:ing)?\)?(?:\(?think(?:ing)?\))*$/,
|
|
35
|
+
/^\(?think(?:ing)?\)?(?:\s*\(?think(?:ing)?\)?)*$/,
|
|
30
36
|
/^\(thought for \d+/,
|
|
31
37
|
/thought? (?:for )?\d+s?\)/,
|
|
32
38
|
// Welcome screen elements
|
|
@@ -35,10 +41,20 @@ const NOISE_PATTERNS = [
|
|
|
35
41
|
/^No\s+recent\s+activity/i,
|
|
36
42
|
/^Recent\s+activity/i,
|
|
37
43
|
/^Run\s+\/init\s+to\s+create/i,
|
|
38
|
-
// Claude logo chars (
|
|
44
|
+
// Claude logo chars (standalone or mixed with sidebar text via pipe)
|
|
39
45
|
/^[▐▛▜▌▝▘█▀▄▓░▒\s]+$/,
|
|
46
|
+
/^[▐▛▜▌▝▘█▀▄▓░▒\s]+\|/,
|
|
40
47
|
// User input echo (already logged as [>>>] via WebSocket)
|
|
41
48
|
/^>\s/,
|
|
49
|
+
// Numbered prompt echo (e.g. "3> 뭐해?" or "3 > 뭐해?" — CLI echoes user input with prompt number)
|
|
50
|
+
/^\d+\s*>\s/,
|
|
51
|
+
// CLI status bar / prompt line (e.g. "────...──> [Haiku 4.5 | Team] │ repo git:(main)")
|
|
52
|
+
/^[─━]+.*\bgit:\(/,
|
|
53
|
+
// Working directory path line (e.g. "C:\path\.worktrees\branch..." or "/path/.worktrees/...")
|
|
54
|
+
/^[A-Z]:[\\\/].*[\\\/]\.?worktrees?\b/i,
|
|
55
|
+
/^\/.*\/\.?worktrees?\b/,
|
|
56
|
+
// TUI menu/mode indicators (☰ ○ etc.)
|
|
57
|
+
/^[☰○⏵◉◎●○\s]+$/,
|
|
42
58
|
// Cost display
|
|
43
59
|
/^\$\d+\.\d+/,
|
|
44
60
|
// CLITrigger prompt template echo (repeated back by TUI)
|
|
@@ -48,6 +64,61 @@ const NOISE_PATTERNS = [
|
|
|
48
64
|
/^After completing the task.*commit/,
|
|
49
65
|
/^IMPORTANT.*(?:working directory|Do NOT access)/i,
|
|
50
66
|
];
|
|
67
|
+
/**
|
|
68
|
+
* Detects lines that are animation-frame collisions — typically produced when
|
|
69
|
+
* multiple spinner refreshes concatenate without a real line break. Such lines
|
|
70
|
+
* are composed almost entirely of spinner chars, "(thinking)" markers,
|
|
71
|
+
* whitespace, `…`, and short character fragments.
|
|
72
|
+
*/
|
|
73
|
+
function isAnimationCollision(line) {
|
|
74
|
+
// Strip all pure-noise tokens and see what meaningful content remains.
|
|
75
|
+
const stripped = line
|
|
76
|
+
.replace(/\(thought for \d+s?\)/gi, '')
|
|
77
|
+
.replace(/\(?think(?:ing)?\)?/gi, '')
|
|
78
|
+
.replace(new RegExp(`[${SPINNER_CHARS}…\\s]`, 'g'), '');
|
|
79
|
+
// If nothing or only punctuation remains, it's pure noise.
|
|
80
|
+
if (stripped.length === 0)
|
|
81
|
+
return true;
|
|
82
|
+
// Keep lines with real response signals.
|
|
83
|
+
if (/[●\[\]]/.test(line))
|
|
84
|
+
return false;
|
|
85
|
+
// Multiple "(thinking)" occurrences on one line = animation collision.
|
|
86
|
+
const thinkingCount = (line.match(/\(thinking\)/gi) || []).length;
|
|
87
|
+
if (thinkingCount >= 2)
|
|
88
|
+
return true;
|
|
89
|
+
// Three or more spinner chars interspersed with text = collision.
|
|
90
|
+
const spinnerCount = (line.match(new RegExp(`[${SPINNER_CHARS}]`, 'g')) || []).length;
|
|
91
|
+
if (spinnerCount >= 3)
|
|
92
|
+
return true;
|
|
93
|
+
// Single leading spinner char followed by fragmented short-word content
|
|
94
|
+
// (e.g. "✶ r P ec", "* t i a n" — spinner frames where cursor repositioning
|
|
95
|
+
// became spaces). Require ≥3 tokens, all ≤3 chars, to avoid catching real
|
|
96
|
+
// markdown bullets like "* First item".
|
|
97
|
+
const spinnerLeadMatch = line.match(new RegExp(`^[${SPINNER_CHARS}]\\s+(.+)$`));
|
|
98
|
+
if (spinnerLeadMatch) {
|
|
99
|
+
// Strip trailing (thinking)/(thought for Ns) markers so the remaining
|
|
100
|
+
// tokens represent only the fragmented word content.
|
|
101
|
+
const suffix = spinnerLeadMatch[1]
|
|
102
|
+
.replace(/\(thought for \d+s?\)/gi, '')
|
|
103
|
+
.replace(/\(thinking\)/gi, '')
|
|
104
|
+
.trim();
|
|
105
|
+
const tokens = suffix.length > 0 ? suffix.split(/\s+/) : [];
|
|
106
|
+
if (tokens.length >= 3 && tokens.every((t) => t.length <= 3))
|
|
107
|
+
return true;
|
|
108
|
+
// Shorter fragments (≥2 tokens) need a stricter bound to avoid
|
|
109
|
+
// swallowing real markdown bullets like "* Go now".
|
|
110
|
+
if (tokens.length >= 2 && tokens.every((t) => t.length <= 2))
|
|
111
|
+
return true;
|
|
112
|
+
// Single short-word fragment (e.g. "* Lea", "* Le") — spinner word redraw
|
|
113
|
+
// caught mid-animation. Rare as a real markdown bullet.
|
|
114
|
+
if (tokens.length === 1 && tokens[0].length <= 3)
|
|
115
|
+
return true;
|
|
116
|
+
// All content was "(thinking)" noise — suppress.
|
|
117
|
+
if (tokens.length === 0)
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
51
122
|
/** Returns true if the line is TUI noise that should be suppressed. */
|
|
52
123
|
export function isNoiseLine(line) {
|
|
53
124
|
const trimmed = line.trim();
|
|
@@ -69,6 +140,9 @@ export function isNoiseLine(line) {
|
|
|
69
140
|
if (pattern.test(trimmed))
|
|
70
141
|
return true;
|
|
71
142
|
}
|
|
143
|
+
// Detect concatenated animation frames (multiple spinners / (thinking) on one line)
|
|
144
|
+
if (isAnimationCollision(trimmed))
|
|
145
|
+
return true;
|
|
72
146
|
return false;
|
|
73
147
|
}
|
|
74
148
|
const DEDUP_CAPACITY = 20;
|
|
@@ -78,9 +152,18 @@ const DEDUP_CAPACITY = 20;
|
|
|
78
152
|
*/
|
|
79
153
|
export function filterInteractivePtyOutput(chunk, state) {
|
|
80
154
|
state.lineBuffer += chunk;
|
|
81
|
-
|
|
82
|
-
//
|
|
155
|
+
// Split on any line boundary — including bare \r, which TUI animations use
|
|
156
|
+
// to overwrite the current line. Without this, spinner frames concatenate
|
|
157
|
+
// into one long line and bypass the per-line noise filter.
|
|
158
|
+
const segments = state.lineBuffer.split(/\r\n|\r|\n/);
|
|
159
|
+
// Last segment is incomplete (no trailing separator) — keep in buffer
|
|
83
160
|
state.lineBuffer = segments.pop() || '';
|
|
161
|
+
// Runaway buffer guard: if no line break has arrived in a very long time,
|
|
162
|
+
// force-process the buffer so we don't accumulate indefinitely.
|
|
163
|
+
if (state.lineBuffer.length > 4096) {
|
|
164
|
+
segments.push(state.lineBuffer);
|
|
165
|
+
state.lineBuffer = '';
|
|
166
|
+
}
|
|
84
167
|
const kept = [];
|
|
85
168
|
for (const raw of segments) {
|
|
86
169
|
const line = raw.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-output-filter.js","sourceRoot":"","sources":["../../../src/server/services/pty-output-filter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,iCAAiC;AAEjC,MAAM,cAAc,GAAa;IAC/B,yEAAyE;IACzE,8CAA8C;IAC9C,sBAAsB;IACtB,cAAc;IACd,
|
|
1
|
+
{"version":3,"file":"pty-output-filter.js","sourceRoot":"","sources":["../../../src/server/services/pty-output-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class SessionManager {
|
|
2
|
+
/**
|
|
3
|
+
* Start a session (always interactive mode).
|
|
4
|
+
*/
|
|
5
|
+
startSession(sessionId: string): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Stop a running session.
|
|
8
|
+
*/
|
|
9
|
+
stopSession(sessionId: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Classify a filtered PTY output line into a log type.
|
|
12
|
+
* Heuristic: ● prefix = assistant response, [Tool: ...] = tool call, else = output.
|
|
13
|
+
*/
|
|
14
|
+
private classifyPtyLine;
|
|
15
|
+
/**
|
|
16
|
+
* Stream PTY output to session logs with heuristic classification.
|
|
17
|
+
* Accumulates consecutive assistant lines into a single log entry.
|
|
18
|
+
*/
|
|
19
|
+
private streamToSessionLogs;
|
|
20
|
+
}
|
|
21
|
+
export declare const sessionManager: SessionManager;
|
|
22
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/session-manager.ts"],"names":[],"mappings":"AAMA,qBAAa,cAAc;IACzB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2GpD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAkF5B;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { claudeManager } from './claude-manager.js';
|
|
2
|
+
import { worktreeManager } from './worktree-manager.js';
|
|
3
|
+
import { getAdapter, supportsInteractiveMode } from './cli-adapters.js';
|
|
4
|
+
import { broadcaster } from '../websocket/broadcaster.js';
|
|
5
|
+
import * as queries from '../db/queries.js';
|
|
6
|
+
export class SessionManager {
|
|
7
|
+
/**
|
|
8
|
+
* Start a session (always interactive mode).
|
|
9
|
+
*/
|
|
10
|
+
async startSession(sessionId) {
|
|
11
|
+
const session = queries.getSessionById(sessionId);
|
|
12
|
+
if (!session)
|
|
13
|
+
throw new Error('Session not found');
|
|
14
|
+
const project = queries.getProjectById(session.project_id);
|
|
15
|
+
if (!project)
|
|
16
|
+
throw new Error('Project not found');
|
|
17
|
+
const cliTool = (session.cli_tool || project.cli_tool || 'claude');
|
|
18
|
+
if (!supportsInteractiveMode(cliTool)) {
|
|
19
|
+
throw new Error(`${cliTool} does not support interactive mode`);
|
|
20
|
+
}
|
|
21
|
+
const adapter = getAdapter(cliTool);
|
|
22
|
+
const cliModel = session.cli_model || project.claude_model || undefined;
|
|
23
|
+
const prompt = session.description || '';
|
|
24
|
+
const useWorktree = !!session.use_worktree && !!project.is_git_repo;
|
|
25
|
+
// Mark as running
|
|
26
|
+
queries.updateSessionStatus(sessionId, 'running');
|
|
27
|
+
let workDir = project.path;
|
|
28
|
+
let worktreePath = null;
|
|
29
|
+
let branchName = null;
|
|
30
|
+
// Worktree setup
|
|
31
|
+
if (useWorktree) {
|
|
32
|
+
// Reuse existing worktree if available
|
|
33
|
+
if (session.worktree_path && session.branch_name && await worktreeManager.isValidWorktree(session.worktree_path)) {
|
|
34
|
+
worktreePath = session.worktree_path;
|
|
35
|
+
branchName = session.branch_name;
|
|
36
|
+
workDir = worktreePath;
|
|
37
|
+
queries.createSessionLog(sessionId, 'output', `Reusing existing worktree on branch ${branchName}`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
branchName = worktreeManager.sanitizeBranchName(`session-${session.title}`);
|
|
41
|
+
try {
|
|
42
|
+
worktreePath = await worktreeManager.createWorktree(project.path, branchName);
|
|
43
|
+
workDir = worktreePath;
|
|
44
|
+
queries.createSessionLog(sessionId, 'output', `Created worktree on branch ${branchName}`);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
48
|
+
queries.updateSessionStatus(sessionId, 'failed');
|
|
49
|
+
queries.createSessionLog(sessionId, 'error', `Failed to create worktree: ${message}`);
|
|
50
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status: 'failed' });
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
let pid;
|
|
56
|
+
let exitPromise;
|
|
57
|
+
try {
|
|
58
|
+
const result = await claudeManager.startClaude(workDir, prompt, cliModel, undefined, 'interactive', cliTool, undefined, project.path, undefined, false);
|
|
59
|
+
pid = result.pid;
|
|
60
|
+
exitPromise = result.exitPromise;
|
|
61
|
+
// Stream stdout/stderr to session_logs
|
|
62
|
+
this.streamToSessionLogs(sessionId, result.stdout, result.stderr);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
66
|
+
queries.updateSessionStatus(sessionId, 'failed');
|
|
67
|
+
queries.createSessionLog(sessionId, 'error', `Failed to start ${adapter.displayName}: ${message}`);
|
|
68
|
+
// Clean up worktree on failure
|
|
69
|
+
if (useWorktree && worktreePath && !session.worktree_path) {
|
|
70
|
+
try {
|
|
71
|
+
await worktreeManager.removeWorktree(project.path, worktreePath);
|
|
72
|
+
}
|
|
73
|
+
catch { /* ignore */ }
|
|
74
|
+
}
|
|
75
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status: 'failed' });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
queries.updateSession(sessionId, { process_pid: pid, branch_name: branchName, worktree_path: worktreePath });
|
|
79
|
+
const logMsg = useWorktree
|
|
80
|
+
? `Started ${adapter.displayName} (PID: ${pid}) on branch ${branchName} [interactive]`
|
|
81
|
+
: `Started ${adapter.displayName} (PID: ${pid}) [interactive]`;
|
|
82
|
+
queries.createSessionLog(sessionId, 'output', logMsg);
|
|
83
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status: 'running' });
|
|
84
|
+
// Handle process exit
|
|
85
|
+
exitPromise.then((exitCode) => {
|
|
86
|
+
const current = queries.getSessionById(sessionId);
|
|
87
|
+
if (current && current.status === 'running') {
|
|
88
|
+
const status = exitCode === 0 ? 'completed' : 'failed';
|
|
89
|
+
const msg = exitCode === 0
|
|
90
|
+
? `${adapter.displayName} session completed.`
|
|
91
|
+
: `${adapter.displayName} exited with code ${exitCode}.`;
|
|
92
|
+
try {
|
|
93
|
+
queries.updateSessionStatus(sessionId, status);
|
|
94
|
+
queries.createSessionLog(sessionId, exitCode === 0 ? 'output' : 'error', msg);
|
|
95
|
+
queries.updateSession(sessionId, { process_pid: 0 });
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
try {
|
|
99
|
+
queries.updateSessionStatus(sessionId, status);
|
|
100
|
+
}
|
|
101
|
+
catch { /* ignore */ }
|
|
102
|
+
}
|
|
103
|
+
broadcaster.broadcast({ type: 'session:log', sessionId, message: msg, logType: exitCode === 0 ? 'output' : 'error' });
|
|
104
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status });
|
|
105
|
+
}
|
|
106
|
+
}).catch(() => {
|
|
107
|
+
try {
|
|
108
|
+
queries.updateSessionStatus(sessionId, 'failed');
|
|
109
|
+
queries.updateSession(sessionId, { process_pid: 0 });
|
|
110
|
+
}
|
|
111
|
+
catch { /* ignore */ }
|
|
112
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status: 'failed' });
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Stop a running session.
|
|
117
|
+
*/
|
|
118
|
+
async stopSession(sessionId) {
|
|
119
|
+
const session = queries.getSessionById(sessionId);
|
|
120
|
+
if (!session)
|
|
121
|
+
throw new Error('Session not found');
|
|
122
|
+
if (session.process_pid) {
|
|
123
|
+
await claudeManager.stopClaude(session.process_pid);
|
|
124
|
+
}
|
|
125
|
+
queries.updateSessionStatus(sessionId, 'stopped');
|
|
126
|
+
queries.updateSession(sessionId, { process_pid: 0 });
|
|
127
|
+
queries.createSessionLog(sessionId, 'output', 'Session stopped by user.');
|
|
128
|
+
broadcaster.broadcast({ type: 'session:status-changed', sessionId, status: 'stopped' });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Classify a filtered PTY output line into a log type.
|
|
132
|
+
* Heuristic: ● prefix = assistant response, [Tool: ...] = tool call, else = output.
|
|
133
|
+
*/
|
|
134
|
+
classifyPtyLine(line) {
|
|
135
|
+
// Claude TUI response lines start with ● (bullet)
|
|
136
|
+
if (/^●\s/.test(line)) {
|
|
137
|
+
return { logType: 'assistant', message: line.replace(/^●\s*/, '') };
|
|
138
|
+
}
|
|
139
|
+
// Tool call lines: [Tool: Read], ⏺ Read(file_path: ...), etc.
|
|
140
|
+
if (/^\[Tool:\s*\w+\]/.test(line)) {
|
|
141
|
+
const match = line.match(/^\[Tool:\s*(\w+)\]\s*(.*)/);
|
|
142
|
+
if (match) {
|
|
143
|
+
return { logType: 'tool_use', message: JSON.stringify({ tool: match[1], summary: match[2].trim() }) };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Tool call variant: ⏺ ToolName (shown in some TUI versions)
|
|
147
|
+
if (/^⏺\s+\w+/.test(line)) {
|
|
148
|
+
const match = line.match(/^⏺\s+(\w+)\s*(.*)/);
|
|
149
|
+
if (match) {
|
|
150
|
+
return { logType: 'tool_use', message: JSON.stringify({ tool: match[1], summary: match[2].trim() }) };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { logType: 'output', message: line };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Stream PTY output to session logs with heuristic classification.
|
|
157
|
+
* Accumulates consecutive assistant lines into a single log entry.
|
|
158
|
+
*/
|
|
159
|
+
streamToSessionLogs(sessionId, stdout, stderr) {
|
|
160
|
+
stdout.setEncoding('utf8');
|
|
161
|
+
stderr.setEncoding('utf8');
|
|
162
|
+
// Accumulator for consecutive assistant lines (merged into one block)
|
|
163
|
+
let assistantBuffer = [];
|
|
164
|
+
let assistantFlushTimer = null;
|
|
165
|
+
const flushAssistant = () => {
|
|
166
|
+
if (assistantBuffer.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
const text = assistantBuffer.join('\n');
|
|
169
|
+
assistantBuffer = [];
|
|
170
|
+
try {
|
|
171
|
+
queries.createSessionLog(sessionId, 'assistant', text);
|
|
172
|
+
broadcaster.broadcast({ type: 'session:log', sessionId, message: text, logType: 'assistant' });
|
|
173
|
+
}
|
|
174
|
+
catch { /* session may have been deleted */ }
|
|
175
|
+
};
|
|
176
|
+
const processStdoutLine = (line) => {
|
|
177
|
+
const { logType, message } = this.classifyPtyLine(line);
|
|
178
|
+
if (logType === 'assistant') {
|
|
179
|
+
// Accumulate assistant lines; flush after 300ms gap or on non-assistant line
|
|
180
|
+
assistantBuffer.push(message);
|
|
181
|
+
if (assistantFlushTimer)
|
|
182
|
+
clearTimeout(assistantFlushTimer);
|
|
183
|
+
assistantFlushTimer = setTimeout(flushAssistant, 300);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Non-assistant line: flush any buffered assistant text first
|
|
187
|
+
if (assistantBuffer.length > 0) {
|
|
188
|
+
if (assistantFlushTimer) {
|
|
189
|
+
clearTimeout(assistantFlushTimer);
|
|
190
|
+
assistantFlushTimer = null;
|
|
191
|
+
}
|
|
192
|
+
flushAssistant();
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
queries.createSessionLog(sessionId, logType, message);
|
|
196
|
+
broadcaster.broadcast({ type: 'session:log', sessionId, message, logType });
|
|
197
|
+
}
|
|
198
|
+
catch { /* session may have been deleted */ }
|
|
199
|
+
};
|
|
200
|
+
let stdoutBuffer = '';
|
|
201
|
+
stdout.on('data', (chunk) => {
|
|
202
|
+
stdoutBuffer += chunk;
|
|
203
|
+
const lines = stdoutBuffer.split('\n');
|
|
204
|
+
stdoutBuffer = lines.pop() || '';
|
|
205
|
+
for (const line of lines) {
|
|
206
|
+
if (!line.trim())
|
|
207
|
+
continue;
|
|
208
|
+
processStdoutLine(line.trim());
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
stdout.on('end', () => {
|
|
212
|
+
if (stdoutBuffer.trim()) {
|
|
213
|
+
processStdoutLine(stdoutBuffer.trim());
|
|
214
|
+
}
|
|
215
|
+
// Flush remaining assistant buffer
|
|
216
|
+
if (assistantFlushTimer) {
|
|
217
|
+
clearTimeout(assistantFlushTimer);
|
|
218
|
+
assistantFlushTimer = null;
|
|
219
|
+
}
|
|
220
|
+
flushAssistant();
|
|
221
|
+
});
|
|
222
|
+
let stderrBuffer = '';
|
|
223
|
+
stderr.on('data', (chunk) => {
|
|
224
|
+
stderrBuffer += chunk;
|
|
225
|
+
const lines = stderrBuffer.split('\n');
|
|
226
|
+
stderrBuffer = lines.pop() || '';
|
|
227
|
+
for (const line of lines) {
|
|
228
|
+
if (!line.trim())
|
|
229
|
+
continue;
|
|
230
|
+
try {
|
|
231
|
+
queries.createSessionLog(sessionId, 'error', line.trim());
|
|
232
|
+
broadcaster.broadcast({ type: 'session:log', sessionId, message: line.trim(), logType: 'error' });
|
|
233
|
+
}
|
|
234
|
+
catch { /* ignore */ }
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
stderr.on('end', () => {
|
|
238
|
+
if (stderrBuffer.trim()) {
|
|
239
|
+
try {
|
|
240
|
+
queries.createSessionLog(sessionId, 'error', stderrBuffer.trim());
|
|
241
|
+
broadcaster.broadcast({ type: 'session:log', sessionId, message: stderrBuffer.trim(), logType: 'error' });
|
|
242
|
+
}
|
|
243
|
+
catch { /* ignore */ }
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export const sessionManager = new SessionManager();
|
|
249
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/server/services/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export declare class WorktreeManager {
|
|
|
36
36
|
* Remove a worktree, delete its branch, and clean up the DB record.
|
|
37
37
|
* Returns info about what was cleaned up.
|
|
38
38
|
*/
|
|
39
|
-
cleanupWorktree(projectPath: string, worktreePath: string, branchName: string): Promise<{
|
|
39
|
+
cleanupWorktree(projectPath: string, worktreePath: string, branchName: string, deleteBranch?: boolean): Promise<{
|
|
40
40
|
worktreeRemoved: boolean;
|
|
41
41
|
branchDeleted: boolean;
|
|
42
42
|
}>;
|
|
@@ -105,7 +105,17 @@ export declare class WorktreeManager {
|
|
|
105
105
|
gitDiscardAll(dirPath: string): Promise<void>;
|
|
106
106
|
gitCreateTag(dirPath: string, tagName: string, message?: string, commit?: string): Promise<void>;
|
|
107
107
|
gitDeleteTag(dirPath: string, tagName: string): Promise<void>;
|
|
108
|
+
gitRenameBranch(dirPath: string, oldName: string, newName: string): Promise<void>;
|
|
109
|
+
gitRebase(dirPath: string, onto: string): Promise<string>;
|
|
108
110
|
gitDiff(dirPath: string, file?: string, staged?: boolean): Promise<string>;
|
|
111
|
+
getCommitFiles(dirPath: string, commitHash: string): Promise<Array<{
|
|
112
|
+
path: string;
|
|
113
|
+
status: string;
|
|
114
|
+
additions: number;
|
|
115
|
+
deletions: number;
|
|
116
|
+
oldPath?: string;
|
|
117
|
+
}>>;
|
|
118
|
+
getCommitDiff(dirPath: string, commitHash: string, file?: string): Promise<string>;
|
|
109
119
|
getGitStatus(dirPath: string): Promise<{
|
|
110
120
|
branch: string;
|
|
111
121
|
tracking: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/worktree-manager.ts"],"names":[],"mappings":"AAKA,qBAAa,eAAe;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAgBzC;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxD;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY7D;;;;OAIG;IACH;;;OAGG;IACH,OAAO,CAAC,eAAe;IAcjB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmD9E;;;OAGG;YACW,mBAAmB;IAqBjC;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E;;;OAGG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["../../../src/server/services/worktree-manager.ts"],"names":[],"mappings":"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"}
|