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.
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
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;