orquesta-agent 0.2.212 → 0.2.213
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/dist/claude-transcript.d.ts +28 -0
- package/dist/claude-transcript.d.ts.map +1 -0
- package/dist/claude-transcript.js +249 -0
- package/dist/claude-transcript.js.map +1 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +48 -1
- package/dist/executor.js.map +1 -1
- package/dist/supabase.d.ts +10 -0
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +25 -0
- package/dist/supabase.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AgentLogEntry } from './types/agent-logs.js';
|
|
2
|
+
interface TailerHandle {
|
|
3
|
+
stop: () => void;
|
|
4
|
+
}
|
|
5
|
+
export interface StartTranscriptTailOptions {
|
|
6
|
+
/** Exact `<id>.jsonl` to watch (the --session-id we passed), or null on resume. */
|
|
7
|
+
sessionFileId: string | null;
|
|
8
|
+
/** Session start epoch ms — used to pick the newest file on the resume path. */
|
|
9
|
+
startedAtMs: number;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the prompt id the dashboard currently has open for THIS turn, so the
|
|
12
|
+
* broadcast log can be tagged. May be undefined between turns; entries are still
|
|
13
|
+
* broadcast (the dashboard attaches them to its active prompt).
|
|
14
|
+
*/
|
|
15
|
+
getPromptId: () => string | undefined;
|
|
16
|
+
/** Called for every structured entry parsed from the transcript. */
|
|
17
|
+
onLog: (entry: AgentLogEntry) => void;
|
|
18
|
+
/** Optional logger for diagnostics (best-effort, never throws). */
|
|
19
|
+
log?: (msg: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Begin tailing the Claude transcript for a session. Returns a handle with
|
|
23
|
+
* `stop()`. Safe to call even if the file never appears — it self-cancels after
|
|
24
|
+
* DISCOVERY_TIMEOUT_MS. Never throws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function startTranscriptTail(opts: StartTranscriptTailOptions): TailerHandle;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=claude-transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-transcript.d.ts","sourceRoot":"","sources":["../src/claude-transcript.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,aAAa,EAKd,MAAM,uBAAuB,CAAA;AAO9B,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAwID,MAAM,WAAW,0BAA0B;IACzC,mFAAmF;IACnF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IACrC,oEAAoE;IACpE,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACrC,mEAAmE;IACnE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,YAAY,CA+ElF"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code transcript tailer.
|
|
3
|
+
*
|
|
4
|
+
* Interactive `claude` sessions render their conversation as a TUI in the
|
|
5
|
+
* terminal's alternate screen. Scraping that screen (what the dashboard used to
|
|
6
|
+
* do) only ever recovered status-bar chrome and partial keystrokes — never the
|
|
7
|
+
* actual tool calls, results, or assistant text. So the persisted agent_logs for
|
|
8
|
+
* an interactive session were precarious noise.
|
|
9
|
+
*
|
|
10
|
+
* Claude Code ALSO writes a structured, append-only transcript to disk at
|
|
11
|
+
* ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
|
|
12
|
+
* — one JSON object per line: user turns, assistant turns (text + tool_use +
|
|
13
|
+
* thinking blocks), and tool_result turns. This module tails that file and maps
|
|
14
|
+
* each event to a structured AgentLogEntry, which the agent broadcasts so the
|
|
15
|
+
* dashboard can persist rich, structured logs (tool_call / tool_result / output /
|
|
16
|
+
* thinking) with a populated `details` column — exactly like dispatch/hook
|
|
17
|
+
* prompts.
|
|
18
|
+
*
|
|
19
|
+
* The agent pins the file name by passing `--session-id <uuid>` to claude, so we
|
|
20
|
+
* know precisely which file to watch. On `--continue` (resume) we can't control
|
|
21
|
+
* the id, so the caller passes `null` and we adopt the newest *.jsonl whose mtime
|
|
22
|
+
* is at/after the session start.
|
|
23
|
+
*
|
|
24
|
+
* Cross-platform: pure fs polling (no fs.watch — flaky on network/Windows FS),
|
|
25
|
+
* os.homedir() + path.join everywhere. Read-only, best-effort: any error is
|
|
26
|
+
* swallowed so a tailer hiccup can never disrupt the live session.
|
|
27
|
+
*/
|
|
28
|
+
import * as fs from 'fs';
|
|
29
|
+
import * as path from 'path';
|
|
30
|
+
import * as os from 'os';
|
|
31
|
+
import { createThinkingLog, createToolCallLog, createToolResultLog, createOutputLog, } from './types/agent-logs.js';
|
|
32
|
+
/** Poll cadence for both file discovery and tailing new bytes. */
|
|
33
|
+
const POLL_INTERVAL_MS = 500;
|
|
34
|
+
/** Give up waiting for the transcript file to appear after this long. */
|
|
35
|
+
const DISCOVERY_TIMEOUT_MS = 60_000;
|
|
36
|
+
/** Root dir where Claude Code stores per-project transcripts. */
|
|
37
|
+
function claudeProjectsRoot() {
|
|
38
|
+
return path.join(os.homedir(), '.claude', 'projects');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Find the transcript file for this session.
|
|
42
|
+
* - When `sessionFileId` is set, the file is `<sessionFileId>.jsonl` under SOME
|
|
43
|
+
* project subdir (the encoding of cwd → dir name is claude-internal, so we glob
|
|
44
|
+
* by name across project dirs rather than recompute it).
|
|
45
|
+
* - Otherwise (resume) pick the newest *.jsonl modified at/after `sinceMs`.
|
|
46
|
+
*/
|
|
47
|
+
function findTranscriptFile(sessionFileId, sinceMs) {
|
|
48
|
+
const root = claudeProjectsRoot();
|
|
49
|
+
let projectDirs;
|
|
50
|
+
try {
|
|
51
|
+
projectDirs = fs.readdirSync(root).map(d => path.join(root, d));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null; // ~/.claude/projects doesn't exist yet
|
|
55
|
+
}
|
|
56
|
+
if (sessionFileId) {
|
|
57
|
+
const target = `${sessionFileId}.jsonl`;
|
|
58
|
+
for (const dir of projectDirs) {
|
|
59
|
+
const candidate = path.join(dir, target);
|
|
60
|
+
try {
|
|
61
|
+
if (fs.statSync(candidate).isFile())
|
|
62
|
+
return candidate;
|
|
63
|
+
}
|
|
64
|
+
catch { /* not in this project dir */ }
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
// Resume path: newest jsonl touched since the session started.
|
|
69
|
+
let newest = null;
|
|
70
|
+
for (const dir of projectDirs) {
|
|
71
|
+
let entries;
|
|
72
|
+
try {
|
|
73
|
+
entries = fs.readdirSync(dir);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
for (const name of entries) {
|
|
79
|
+
if (!name.endsWith('.jsonl'))
|
|
80
|
+
continue;
|
|
81
|
+
const file = path.join(dir, name);
|
|
82
|
+
try {
|
|
83
|
+
const st = fs.statSync(file);
|
|
84
|
+
if (!st.isFile() || st.mtimeMs < sinceMs - 2000)
|
|
85
|
+
continue;
|
|
86
|
+
if (!newest || st.mtimeMs > newest.mtimeMs)
|
|
87
|
+
newest = { file, mtimeMs: st.mtimeMs };
|
|
88
|
+
}
|
|
89
|
+
catch { /* race: file vanished */ }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return newest?.file ?? null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Map one parsed transcript JSON object to zero or more structured log entries.
|
|
96
|
+
* `toolNames` carries tool_use_id → tool name across turns so a later
|
|
97
|
+
* tool_result (which only references the id) can be labelled with its tool.
|
|
98
|
+
*/
|
|
99
|
+
function mapTranscriptEntry(obj, promptId, toolNames) {
|
|
100
|
+
const out = [];
|
|
101
|
+
const type = obj.type;
|
|
102
|
+
const message = obj.message;
|
|
103
|
+
if (!message || !Array.isArray(message.content)) {
|
|
104
|
+
// Some lines (summary/system) have no message content — nothing to log.
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
const content = message.content;
|
|
108
|
+
if (type === 'assistant') {
|
|
109
|
+
for (const block of content) {
|
|
110
|
+
const btype = block.type;
|
|
111
|
+
if (btype === 'text' && typeof block.text === 'string' && block.text.trim()) {
|
|
112
|
+
out.push(createOutputLog(block.text, 'markdown', 'info', promptId));
|
|
113
|
+
}
|
|
114
|
+
else if (btype === 'thinking' && typeof block.thinking === 'string' && block.thinking.trim()) {
|
|
115
|
+
out.push(createThinkingLog(block.thinking, 'info', promptId));
|
|
116
|
+
}
|
|
117
|
+
else if (btype === 'tool_use' && typeof block.name === 'string') {
|
|
118
|
+
const id = typeof block.id === 'string' ? block.id : undefined;
|
|
119
|
+
if (id)
|
|
120
|
+
toolNames.set(id, block.name);
|
|
121
|
+
out.push(createToolCallLog(block.name, block.input || {}, 'info', promptId, id));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (type === 'user') {
|
|
126
|
+
// User turns are either the operator's prompt (skip — we already have it as
|
|
127
|
+
// the prompt content) or tool_result blocks coming back from a prior call.
|
|
128
|
+
for (const block of content) {
|
|
129
|
+
if (block.type !== 'tool_result')
|
|
130
|
+
continue;
|
|
131
|
+
const id = typeof block.tool_use_id === 'string' ? block.tool_use_id : undefined;
|
|
132
|
+
const name = (id && toolNames.get(id)) || 'tool';
|
|
133
|
+
const isError = block.is_error === true;
|
|
134
|
+
out.push(createToolResultLog(name, !isError, isError ? undefined : stringifyToolResult(block.content), isError ? stringifyToolResult(block.content) : undefined, undefined, promptId, id));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
/** Tool result content can be a string or an array of {type:'text',text} blocks. */
|
|
140
|
+
function stringifyToolResult(content) {
|
|
141
|
+
if (typeof content === 'string')
|
|
142
|
+
return content;
|
|
143
|
+
if (Array.isArray(content)) {
|
|
144
|
+
return content
|
|
145
|
+
.map(c => {
|
|
146
|
+
if (typeof c === 'string')
|
|
147
|
+
return c;
|
|
148
|
+
if (c && typeof c === 'object' && typeof c.text === 'string') {
|
|
149
|
+
return c.text;
|
|
150
|
+
}
|
|
151
|
+
return '';
|
|
152
|
+
})
|
|
153
|
+
.filter(Boolean)
|
|
154
|
+
.join('\n');
|
|
155
|
+
}
|
|
156
|
+
return '';
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Begin tailing the Claude transcript for a session. Returns a handle with
|
|
160
|
+
* `stop()`. Safe to call even if the file never appears — it self-cancels after
|
|
161
|
+
* DISCOVERY_TIMEOUT_MS. Never throws.
|
|
162
|
+
*/
|
|
163
|
+
export function startTranscriptTail(opts) {
|
|
164
|
+
let stopped = false;
|
|
165
|
+
let timer = null;
|
|
166
|
+
let resolvedFile = null;
|
|
167
|
+
let offset = 0;
|
|
168
|
+
let partial = '';
|
|
169
|
+
const toolNames = new Map();
|
|
170
|
+
const discoveryDeadline = opts.startedAtMs + DISCOVERY_TIMEOUT_MS;
|
|
171
|
+
const schedule = () => {
|
|
172
|
+
if (stopped)
|
|
173
|
+
return;
|
|
174
|
+
timer = setTimeout(tick, POLL_INTERVAL_MS);
|
|
175
|
+
};
|
|
176
|
+
const tick = () => {
|
|
177
|
+
if (stopped)
|
|
178
|
+
return;
|
|
179
|
+
try {
|
|
180
|
+
if (!resolvedFile) {
|
|
181
|
+
resolvedFile = findTranscriptFile(opts.sessionFileId, opts.startedAtMs);
|
|
182
|
+
if (!resolvedFile) {
|
|
183
|
+
if (Date.now() > discoveryDeadline) {
|
|
184
|
+
opts.log?.('[transcript] file never appeared — giving up');
|
|
185
|
+
stopped = true;
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
return schedule();
|
|
189
|
+
}
|
|
190
|
+
opts.log?.(`[transcript] tailing ${resolvedFile}`);
|
|
191
|
+
}
|
|
192
|
+
// Read any bytes appended since last offset.
|
|
193
|
+
const st = fs.statSync(resolvedFile);
|
|
194
|
+
if (st.size < offset) {
|
|
195
|
+
// File truncated/rotated — restart from the top.
|
|
196
|
+
offset = 0;
|
|
197
|
+
partial = '';
|
|
198
|
+
}
|
|
199
|
+
if (st.size > offset) {
|
|
200
|
+
const fd = fs.openSync(resolvedFile, 'r');
|
|
201
|
+
try {
|
|
202
|
+
const len = st.size - offset;
|
|
203
|
+
const buf = Buffer.alloc(len);
|
|
204
|
+
fs.readSync(fd, buf, 0, len, offset);
|
|
205
|
+
offset = st.size;
|
|
206
|
+
partial += buf.toString('utf-8');
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
fs.closeSync(fd);
|
|
210
|
+
}
|
|
211
|
+
// Process complete lines; keep the trailing partial for next tick.
|
|
212
|
+
const lines = partial.split('\n');
|
|
213
|
+
partial = lines.pop() ?? '';
|
|
214
|
+
const promptId = opts.getPromptId();
|
|
215
|
+
for (const line of lines) {
|
|
216
|
+
const trimmed = line.trim();
|
|
217
|
+
if (!trimmed)
|
|
218
|
+
continue;
|
|
219
|
+
let obj;
|
|
220
|
+
try {
|
|
221
|
+
obj = JSON.parse(trimmed);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
continue; // partial/corrupt line — skip
|
|
225
|
+
}
|
|
226
|
+
for (const entry of mapTranscriptEntry(obj, promptId, toolNames)) {
|
|
227
|
+
try {
|
|
228
|
+
opts.onLog(entry);
|
|
229
|
+
}
|
|
230
|
+
catch { /* sink swallows */ }
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
opts.log?.(`[transcript] tick error: ${err instanceof Error ? err.message : String(err)}`);
|
|
237
|
+
}
|
|
238
|
+
schedule();
|
|
239
|
+
};
|
|
240
|
+
schedule();
|
|
241
|
+
return {
|
|
242
|
+
stop: () => {
|
|
243
|
+
stopped = true;
|
|
244
|
+
if (timer)
|
|
245
|
+
clearTimeout(timer);
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=claude-transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-transcript.js","sourceRoot":"","sources":["../src/claude-transcript.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.js
CHANGED
|
@@ -30,6 +30,7 @@ async function loadPtySpawn() {
|
|
|
30
30
|
import * as fs from 'fs';
|
|
31
31
|
import * as path from 'path';
|
|
32
32
|
import * as os from 'os';
|
|
33
|
+
import { randomUUID } from 'crypto';
|
|
33
34
|
import { fileURLToPath } from 'url';
|
|
34
35
|
import { createRequire } from 'module';
|
|
35
36
|
import * as logger from './logger.js';
|
|
@@ -39,7 +40,8 @@ const nodeRequire = createRequire(import.meta.url);
|
|
|
39
40
|
import { isSandboxAvailable, buildBwrapArgs, shQuote, ensureStrictProjectDirs, encodeClaudeProjectDir } from './sandbox.js';
|
|
40
41
|
import { parseCoordSpec, runCoordination } from './coordination.js';
|
|
41
42
|
import { parseSudosudoInstallSpec, runSudosudoInstall } from './sudosudo.js';
|
|
42
|
-
import { sendOutput, sendComplete, sendError, sendSupervisionRequest, sendExecutionResumed, updatePromptStatus, persistOutputLogs, clearOutputBuffer, sendRequirement, persistRequirement, sendQAInstructions, persistQAInstructions, sendPlanItemsGenerated, sendSessionOutput, sendSessionStarted, sendSessionEnded, sendSessionError, reportAgentError } from './supabase.js';
|
|
43
|
+
import { sendOutput, sendComplete, sendError, sendSupervisionRequest, sendExecutionResumed, updatePromptStatus, persistOutputLogs, clearOutputBuffer, sendRequirement, persistRequirement, sendQAInstructions, persistQAInstructions, sendPlanItemsGenerated, sendSessionOutput, sendSessionStarted, sendSessionEnded, sendSessionError, sendSessionLog, reportAgentError } from './supabase.js';
|
|
44
|
+
import { startTranscriptTail } from './claude-transcript.js';
|
|
43
45
|
import { createThinkingLog, createToolCallLog, createToolResultLog, createOutputLog, createErrorLog, createSystemLog, } from './types/agent-logs.js';
|
|
44
46
|
/**
|
|
45
47
|
* Build args for the `script` PTY wrapper, accounting for BSD vs util-linux differences.
|
|
@@ -3383,6 +3385,23 @@ export async function startSession(options) {
|
|
|
3383
3385
|
logger.info(`[Session] Resuming most recent conversation (--continue) for ${cliCommand}`);
|
|
3384
3386
|
}
|
|
3385
3387
|
}
|
|
3388
|
+
// Pin the transcript file name so the structured-log tailer
|
|
3389
|
+
// (claude-transcript.ts) knows exactly which ~/.claude/projects/<cwd>/<id>.jsonl
|
|
3390
|
+
// to follow. claude only:
|
|
3391
|
+
// - --resume <id>: claude appends to that same <id>.jsonl → tail it directly.
|
|
3392
|
+
// - fresh session: mint a uuid + pass --session-id (can't combine with resume).
|
|
3393
|
+
// - plain --continue: claude reattaches its OWN prior id (unknown to us) → null,
|
|
3394
|
+
// and the tailer adopts the newest transcript touched since startup.
|
|
3395
|
+
let claudeTranscriptId = null;
|
|
3396
|
+
if (cliCommand === 'claude') {
|
|
3397
|
+
if (resumeSessionId) {
|
|
3398
|
+
claudeTranscriptId = resumeSessionId;
|
|
3399
|
+
}
|
|
3400
|
+
else if (!resume) {
|
|
3401
|
+
claudeTranscriptId = randomUUID();
|
|
3402
|
+
ptyArgs.push('--session-id', claudeTranscriptId);
|
|
3403
|
+
}
|
|
3404
|
+
}
|
|
3386
3405
|
// Per-project endpoint override (only the orquesta CLI understands --endpoint).
|
|
3387
3406
|
if (cliCommand === 'orquesta' && globalCliEndpoint) {
|
|
3388
3407
|
ptyArgs.push('--endpoint', globalCliEndpoint);
|
|
@@ -3467,6 +3486,7 @@ export async function startSession(options) {
|
|
|
3467
3486
|
pendingPhoneTimer: null,
|
|
3468
3487
|
lastPtyOutputAt: Date.now(),
|
|
3469
3488
|
rogerthatWatcher: null,
|
|
3489
|
+
transcriptTail: null,
|
|
3470
3490
|
};
|
|
3471
3491
|
sessions.set(sessionId, session);
|
|
3472
3492
|
ensureSessionReaper(); // reap this session if it's later abandoned without session:end
|
|
@@ -3474,6 +3494,25 @@ export async function startSession(options) {
|
|
|
3474
3494
|
// the PTY as if the operator had typed it, so they can hold a full
|
|
3475
3495
|
// conversation from the phone without touching the dashboard.
|
|
3476
3496
|
session.rogerthatWatcher = startRogerthatMonitor(sessionId);
|
|
3497
|
+
// Tail claude's on-disk transcript and broadcast STRUCTURED logs (tool_call /
|
|
3498
|
+
// tool_result / output / thinking) so the dashboard persists a rich timeline
|
|
3499
|
+
// instead of scraped terminal chrome. claude only: orquesta-cli self-reports
|
|
3500
|
+
// via its prompt-reporter, and kimi has no structured transcript yet.
|
|
3501
|
+
if (cliCommand === 'claude') {
|
|
3502
|
+
session.transcriptTail = startTranscriptTail({
|
|
3503
|
+
sessionFileId: claudeTranscriptId,
|
|
3504
|
+
startedAtMs: startTime,
|
|
3505
|
+
// The agent has no per-turn promptId (the dashboard owns it), so we tag the
|
|
3506
|
+
// broadcast with none — the dashboard attaches each entry to its active prompt.
|
|
3507
|
+
getPromptId: () => undefined,
|
|
3508
|
+
onLog: (entry) => {
|
|
3509
|
+
if (!sessions.get(sessionId)?.isActive)
|
|
3510
|
+
return;
|
|
3511
|
+
void sendSessionLog(channel, sessionId, entry);
|
|
3512
|
+
},
|
|
3513
|
+
log: (msg) => logger.debug(`[Session ${sessionId}] ${msg}`),
|
|
3514
|
+
});
|
|
3515
|
+
}
|
|
3477
3516
|
// Send session:started only after Claude produces its first output.
|
|
3478
3517
|
// This ensures the UI doesn't activate the input field before Claude is
|
|
3479
3518
|
// actually ready — early input would otherwise be silently ignored.
|
|
@@ -3559,6 +3598,10 @@ export async function startSession(options) {
|
|
|
3559
3598
|
exitingSession.rogerthatWatcher?.close();
|
|
3560
3599
|
}
|
|
3561
3600
|
catch { /* already closed */ }
|
|
3601
|
+
try {
|
|
3602
|
+
exitingSession.transcriptTail?.stop();
|
|
3603
|
+
}
|
|
3604
|
+
catch { /* already stopped */ }
|
|
3562
3605
|
if (exitingSession.pendingPhoneTimer) {
|
|
3563
3606
|
clearTimeout(exitingSession.pendingPhoneTimer);
|
|
3564
3607
|
exitingSession.pendingPhoneTimer = null;
|
|
@@ -3882,6 +3925,10 @@ export function terminateSession(sessionId) {
|
|
|
3882
3925
|
s.rogerthatWatcher?.close();
|
|
3883
3926
|
}
|
|
3884
3927
|
catch { /* already closed */ }
|
|
3928
|
+
try {
|
|
3929
|
+
s.transcriptTail?.stop();
|
|
3930
|
+
}
|
|
3931
|
+
catch { /* already stopped */ }
|
|
3885
3932
|
if (s.pendingPhoneTimer) {
|
|
3886
3933
|
clearTimeout(s.pendingPhoneTimer);
|
|
3887
3934
|
s.pendingPhoneTimer = null;
|