@gkorepanov/ccodex 0.5.11 → 0.5.12
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/config/compatibility.json +1 -1
- package/dist/claude/native/catalog.d.ts +3 -0
- package/dist/claude/native/catalog.js +17 -7
- package/dist/claude/native/catalog.js.map +1 -1
- package/dist/claude/native/pages.d.ts +15 -0
- package/dist/claude/native/pages.js +10 -5
- package/dist/claude/native/pages.js.map +1 -1
- package/dist/claude/native/projector.d.ts +2 -0
- package/dist/claude/native/projector.js +11 -3
- package/dist/claude/native/projector.js.map +1 -1
- package/dist/claude/native/records.d.ts +2 -0
- package/dist/claude/native/records.js +4 -0
- package/dist/claude/native/records.js.map +1 -1
- package/dist/claude/native/subagents.d.ts +15 -6
- package/dist/claude/native/subagents.js +70 -48
- package/dist/claude/native/subagents.js.map +1 -1
- package/dist/claude/native/summary.d.ts +2 -0
- package/dist/claude/native/summary.js +3 -1
- package/dist/claude/native/summary.js.map +1 -1
- package/dist/claude/sdk.js +3 -1
- package/dist/claude/sdk.js.map +1 -1
- package/dist/claude/session.d.ts +9 -1
- package/dist/claude/session.js +53 -15
- package/dist/claude/session.js.map +1 -1
- package/dist/claude/threads.d.ts +7 -2
- package/dist/claude/threads.js +65 -42
- package/dist/claude/threads.js.map +1 -1
- package/dist/claude/toolMapper.js +16 -0
- package/dist/claude/toolMapper.js.map +1 -1
- package/legal/THIRD_PARTY_NOTICES.md +9 -9
- package/package.json +5 -5
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Owns discovery of a native session's retained sub-agent transcripts: a sub-agent is what its meta.json and the two
|
|
3
|
+
* ends of its transcript tell, its history is read page by page from its transcript alone (see `TranscriptPages`).
|
|
4
|
+
*/
|
|
5
|
+
import { readdir, readFile, stat } from "node:fs/promises";
|
|
3
6
|
import { join } from "node:path";
|
|
4
7
|
import { claudeModelLabel } from "../modelSelection.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
+
import { NO_PEERS } from "../peers.js";
|
|
9
|
+
import { parseLines, readRange } from "./pages.js";
|
|
10
|
+
import { lastTurnRuns } from "./projector.js";
|
|
11
|
+
import { asVisibleSidechain } from "./records.js";
|
|
12
|
+
import { TranscriptSummarizer } from "./summary.js";
|
|
13
|
+
/** Bytes read at a time from either end of a transcript: its task's prompt and its last reply fit, but on rare long lines. */
|
|
14
|
+
const END_BYTES = 64 * 1_024;
|
|
8
15
|
function taskPrompt(records, toolUseId) {
|
|
9
16
|
return records.find((record) => record.type === "user" && record.sourceToolUseID === toolUseId)
|
|
10
17
|
?? records.find((record) => record.type === "user" && !record.isCompactSummary
|
|
@@ -12,51 +19,66 @@ function taskPrompt(records, toolUseId) {
|
|
|
12
19
|
? Boolean(record.message.content)
|
|
13
20
|
: record.message.content.some((block) => block.type === "text")));
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
/** A reply of the model (Claude's own error replies carry the model "<synthetic>"). */
|
|
23
|
+
function modelReply(record) {
|
|
24
|
+
return record.type === "assistant" && Boolean(record.message.model) && record.message.model !== "<synthetic>";
|
|
25
|
+
}
|
|
26
|
+
/** The transcript's whole lines from its start as far as its task's prompt; `end`: where they end. */
|
|
27
|
+
async function head(path, size, toolUseId) {
|
|
28
|
+
for (let length = END_BYTES;; length *= 2) {
|
|
29
|
+
const { records, end } = parseLines(await readRange(path, 0, Math.min(length, size)), 0, 0);
|
|
30
|
+
const prompt = taskPrompt(records, toolUseId);
|
|
31
|
+
if (prompt || length >= size)
|
|
32
|
+
return { records, end, prompt };
|
|
18
33
|
}
|
|
19
|
-
return { ...record, isSidechain: false };
|
|
20
34
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const path = join(directory, `agent-${agentId}.jsonl`);
|
|
33
|
-
const reader = readTranscriptRecords(path);
|
|
34
|
-
const records = [];
|
|
35
|
-
for await (const record of reader)
|
|
36
|
-
records.push(asVisibleSidechain(record));
|
|
37
|
-
const prompt = taskPrompt(records, meta.toolUseId);
|
|
38
|
-
const assistants = records.filter((record) => record.type === "assistant");
|
|
39
|
-
// Claude's own error replies carry the model "<synthetic>".
|
|
40
|
-
const resolvedModel = assistants.flatMap((record) => record.message.model && record.message.model !== "<synthetic>" ? [record.message.model] : []).at(-1)
|
|
41
|
-
?? meta.model ?? "Claude";
|
|
42
|
-
const description = meta.description.replace(/\s+/gu, " ").trim();
|
|
43
|
-
const nickname = `${description} [${claudeModelLabel(resolvedModel)}]`;
|
|
44
|
-
const parentThreadId = meta.parentAgentId ? `agent-${meta.parentAgentId}` : spawningThreadId;
|
|
45
|
-
const projection = await projectTranscript({
|
|
46
|
-
sessionId: `agent-${agentId}`,
|
|
47
|
-
path,
|
|
48
|
-
records,
|
|
49
|
-
history: selectHistory(records),
|
|
50
|
-
parentThreadId,
|
|
51
|
-
subagent: { promptRecordUuid: prompt.uuid, nickname, depth: meta.spawnDepth },
|
|
52
|
-
});
|
|
53
|
-
projected.push({
|
|
54
|
-
agentId,
|
|
55
|
-
toolUseId: meta.toolUseId,
|
|
56
|
-
parentAgentId: meta.parentAgentId ?? null,
|
|
57
|
-
projection: { ...projection, skippedLines: reader.skippedLines },
|
|
58
|
-
});
|
|
35
|
+
/** The transcript's whole lines back from its end as far as its last reply of the model, not before `start`. */
|
|
36
|
+
async function tail(path, start, size) {
|
|
37
|
+
for (let length = END_BYTES;; length *= 2) {
|
|
38
|
+
const from = Math.max(start, size - length);
|
|
39
|
+
const bytes = await readRange(path, from, size);
|
|
40
|
+
const first = from === start ? 0 : bytes.indexOf(0x0a) + 1;
|
|
41
|
+
if (first === 0 && from > start)
|
|
42
|
+
continue;
|
|
43
|
+
const { records } = parseLines(bytes, from, first);
|
|
44
|
+
if (from === start || records.some(modelReply))
|
|
45
|
+
return records;
|
|
59
46
|
}
|
|
60
|
-
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The session's sub-agent `agentId`. Its thread's header reads as its whole transcript's: what the first records set
|
|
50
|
+
* (its directory, start, prompt) comes from the start, what the last ones do (its model, effort, last change) from the end.
|
|
51
|
+
*/
|
|
52
|
+
export async function readSubagent(sessionDirectory, agentId, spawningThreadId) {
|
|
53
|
+
const base = join(sessionDirectory, "subagents", `agent-${agentId}`);
|
|
54
|
+
const meta = JSON.parse(await readFile(`${base}.meta.json`, "utf8"));
|
|
55
|
+
const path = `${base}.jsonl`;
|
|
56
|
+
const { size } = await stat(path);
|
|
57
|
+
const start = await head(path, size, meta.toolUseId);
|
|
58
|
+
const records = [...start.records, ...await tail(path, start.end, size)].map(asVisibleSidechain);
|
|
59
|
+
const prompt = start.prompt.uuid;
|
|
60
|
+
const summarizer = new TranscriptSummarizer(undefined, prompt);
|
|
61
|
+
for (const record of records)
|
|
62
|
+
summarizer.accept(record);
|
|
63
|
+
const model = records.findLast(modelReply)?.message.model ?? meta.model ?? "Claude";
|
|
64
|
+
const description = meta.description.replace(/\s+/gu, " ").trim();
|
|
65
|
+
return {
|
|
66
|
+
agentId,
|
|
67
|
+
running: lastTurnRuns(records, prompt),
|
|
68
|
+
source: {
|
|
69
|
+
sessionId: `agent-${agentId}`, path, header: summarizer.header(), peers: NO_PEERS.directory, peersVersion: "",
|
|
70
|
+
subagent: {
|
|
71
|
+
parentThreadId: meta.parentAgentId ? `agent-${meta.parentAgentId}` : spawningThreadId,
|
|
72
|
+
promptRecordUuid: prompt, nickname: `${description} [${claudeModelLabel(model)}]`, depth: meta.spawnDepth,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** The session's sub-agents, parents first. */
|
|
78
|
+
export async function listSubagents(sessionDirectory, spawningThreadId) {
|
|
79
|
+
const names = await readdir(join(sessionDirectory, "subagents"));
|
|
80
|
+
const subagents = await Promise.all(names.flatMap((name) => /^agent-(.+)\.meta\.json$/u.exec(name)?.[1] ?? [])
|
|
81
|
+
.map((agentId) => readSubagent(sessionDirectory, agentId, spawningThreadId)));
|
|
82
|
+
return subagents.sort((left, right) => left.source.subagent.depth - right.source.subagent.depth || left.agentId.localeCompare(right.agentId));
|
|
61
83
|
}
|
|
62
84
|
//# sourceMappingURL=subagents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagents.js","sourceRoot":"","sources":["../../../src/claude/native/subagents.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"subagents.js","sourceRoot":"","sources":["../../../src/claude/native/subagents.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,8 @@ export interface TranscriptSummaryState extends TranscriptHeader {
|
|
|
37
37
|
readonly delegating: boolean;
|
|
38
38
|
}
|
|
39
39
|
export declare function timestampSeconds(timestamp: string | undefined): number | null;
|
|
40
|
+
/** Claude Code's orders to a fork, its rules and then its task: the fork's thread shows the task, as a sub-agent's its prompt. */
|
|
41
|
+
export declare const FORK_ORDERS: RegExp;
|
|
40
42
|
export declare function userText(record: UserRecord): string;
|
|
41
43
|
/** `/name args` for a user-typed slash command record (`<command-name>/goal</command-name>...`). */
|
|
42
44
|
/** A thread's preview: the start of its first prompt (the list shows one line of it; the full text only bloats it). */
|
|
@@ -7,10 +7,12 @@ export function timestampSeconds(timestamp) {
|
|
|
7
7
|
const milliseconds = Date.parse(timestamp);
|
|
8
8
|
return Number.isNaN(milliseconds) ? null : Math.floor(milliseconds / 1_000);
|
|
9
9
|
}
|
|
10
|
+
/** Claude Code's orders to a fork, its rules and then its task: the fork's thread shows the task, as a sub-agent's its prompt. */
|
|
11
|
+
export const FORK_ORDERS = /^<fork-boilerplate>[\s\S]*?<\/fork-boilerplate>\s*Your directive: /u;
|
|
10
12
|
export function userText(record) {
|
|
11
13
|
if (typeof record.message.content === "string")
|
|
12
14
|
return record.message.content;
|
|
13
|
-
return record.message.content.flatMap((block) => block.type === "text" ? [block.text] : []).join("\n");
|
|
15
|
+
return record.message.content.flatMap((block) => block.type === "text" ? [block.text.replace(FORK_ORDERS, "")] : []).join("\n");
|
|
14
16
|
}
|
|
15
17
|
function hasToolResult(record) {
|
|
16
18
|
return Array.isArray(record.message.content)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/claude/native/summary.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAA0C,MAAM,cAAc,CAAC;AA0CrF,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/claude/native/summary.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/sdk.js
CHANGED
|
@@ -7,7 +7,9 @@ import { ULTRA } from "./delegation.js";
|
|
|
7
7
|
export function claudeEnvironment() {
|
|
8
8
|
// Claude chats are a desktop app's, like Claude Desktop's: background commands run with no time limit (Claude Code
|
|
9
9
|
// stops them after 30 min to 2 h in Agent SDK sessions, which it takes for unattended).
|
|
10
|
-
|
|
10
|
+
// Transcripts leave out what Claude Code 2.1.300+ records of each API request (prompt, tools, parameters): half again
|
|
11
|
+
// a long chat's size, all read through when paging back.
|
|
12
|
+
const env = { ...process.env, CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS: "1", CLAUDE_CODE_ENTRYPOINT: "claude-desktop", CLAUDE_CODE_ELEGANT_MEADOW: "0" };
|
|
11
13
|
delete env.CCODEX_SHIM_ACTIVE;
|
|
12
14
|
delete env.CODEX_CLI_PATH;
|
|
13
15
|
return env;
|
package/dist/claude/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/claude/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAyG,MAAM,gCAAgC,CAAC;AAI9J,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,UAAU,iBAAiB;IAC/B,mHAAmH;IACnH,wFAAwF;IACxF,MAAM,GAAG,GAAuC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qCAAqC,EAAE,GAAG,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/claude/sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/session.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ interface ActiveTurn {
|
|
|
19
19
|
resultSeen: boolean;
|
|
20
20
|
interrupted: boolean;
|
|
21
21
|
error: string | null;
|
|
22
|
+
/** It only waits for Claude's background sub-agents: Claude goes on in it when one ends. */
|
|
23
|
+
waiting: boolean;
|
|
22
24
|
}
|
|
23
25
|
interface BackgroundTask {
|
|
24
26
|
readonly taskId: string;
|
|
@@ -46,7 +48,7 @@ export declare class ClaudeSession {
|
|
|
46
48
|
private readonly killed;
|
|
47
49
|
/** TaskStop calls: shown on the command they stop, as stock shows a Ctrl-C (by tool use id). */
|
|
48
50
|
private readonly stops;
|
|
49
|
-
/** Claude's sub-agents running (
|
|
51
|
+
/** Claude's sub-agents running (each has a chat of its own; in the background the chat waits for them in a turn). */
|
|
50
52
|
private readonly agents;
|
|
51
53
|
queued: QueuedSubmissionLike[];
|
|
52
54
|
totalUsage: TokenUsageBreakdown;
|
|
@@ -106,6 +108,7 @@ export declare class ClaudeSession {
|
|
|
106
108
|
/** Tasks running on their own: not a command or sub-agent the turn still waits on (its call open). */
|
|
107
109
|
get backgroundTasks(): BackgroundTask[];
|
|
108
110
|
get waitingOnTasks(): boolean;
|
|
111
|
+
get waitingForAgents(): boolean;
|
|
109
112
|
/** The item ids of the background commands running (history shows them ended unless they run here). */
|
|
110
113
|
get runningCommands(): ReadonlySet<string>;
|
|
111
114
|
/** Stops the background tasks as Claude's own stop control does: Claude learns they were stopped, not that they failed. */
|
|
@@ -152,6 +155,11 @@ export declare class ClaudeSession {
|
|
|
152
155
|
/** In-progress turn as Codex shows it in thread/read and paging. */
|
|
153
156
|
liveTurn(): Turn | undefined;
|
|
154
157
|
private maybeComplete;
|
|
158
|
+
/**
|
|
159
|
+
* Claude's background sub-agents work on after its answer, and Claude wakes up as each one ends: the chat waits for
|
|
160
|
+
* them in the turn Claude goes on in then (history's), with the wait as its reasoning.
|
|
161
|
+
*/
|
|
162
|
+
private waitForAgents;
|
|
155
163
|
/** Claude goes on after an answer with no prompt: the answer ends its turn, the work goes on in a new one (history's). */
|
|
156
164
|
private continueTurn;
|
|
157
165
|
/** `continued`: the work goes on in the next turn (its tools keep running, the chat stays busy). */
|
package/dist/claude/session.js
CHANGED
|
@@ -126,7 +126,7 @@ export class ClaudeSession {
|
|
|
126
126
|
killed = new Map();
|
|
127
127
|
/** TaskStop calls: shown on the command they stop, as stock shows a Ctrl-C (by tool use id). */
|
|
128
128
|
stops = new Map();
|
|
129
|
-
/** Claude's sub-agents running (
|
|
129
|
+
/** Claude's sub-agents running (each has a chat of its own; in the background the chat waits for them in a turn). */
|
|
130
130
|
agents = new Set();
|
|
131
131
|
queued = [];
|
|
132
132
|
totalUsage = EMPTY_USAGE;
|
|
@@ -202,6 +202,9 @@ export class ClaudeSession {
|
|
|
202
202
|
get waitingOnTasks() {
|
|
203
203
|
return !this.turn && this.tasks.size > 0;
|
|
204
204
|
}
|
|
205
|
+
get waitingForAgents() {
|
|
206
|
+
return this.turn?.waiting ?? false;
|
|
207
|
+
}
|
|
205
208
|
/** The item ids of the background commands running (history shows them ended unless they run here). */
|
|
206
209
|
get runningCommands() {
|
|
207
210
|
return new Set([...this.background.values()].map(({ item }) => item.id));
|
|
@@ -268,8 +271,9 @@ export class ClaudeSession {
|
|
|
268
271
|
permissionMode: claudeMode(settings),
|
|
269
272
|
// Recorded on the chat's first request and reused until compaction, as Claude Code keeps its system prompt.
|
|
270
273
|
systemPrompt: { type: "preset", preset: "claude_code", append: claudeInstructions(this.host.config.improveModelsFormatting) },
|
|
271
|
-
// Claude enters plan mode only as the user sets it (stock's collaboration mode).
|
|
272
|
-
|
|
274
|
+
// Claude enters plan mode only as the user sets it (stock's collaboration mode). Claude Desktop's artifacts (published
|
|
275
|
+
// on claude.ai) and its install suggestions are cards a Codex client has no place for.
|
|
276
|
+
disallowedTools: ["EnterPlanMode", "Artifact", "ArtifactComments", "ArtifactData", "SuggestPluginInstall", "SuggestSkills"],
|
|
273
277
|
// Claude 5 omits its thinking by default: summarized, it shows as the turn's reasoning summary like stock's.
|
|
274
278
|
extraArgs: { "thinking-display": "summarized" },
|
|
275
279
|
allowDangerouslySkipPermissions: true,
|
|
@@ -359,6 +363,9 @@ export class ClaudeSession {
|
|
|
359
363
|
const content = await claudeContent(input, this.settings.cwd);
|
|
360
364
|
// Desktop shows `/goal` messages itself.
|
|
361
365
|
const hidden = typeof content === "string" && /^\/(?:compact|goal)(?:\s|$)/u.test(content);
|
|
366
|
+
// Claude takes it as a prompt of its own, not into the turn that waits for its sub-agents.
|
|
367
|
+
if (this.turn?.waiting)
|
|
368
|
+
this.completeTurn(true);
|
|
362
369
|
if (this.turn) {
|
|
363
370
|
// Claude folds a message sent mid-turn into the running turn, like a steer.
|
|
364
371
|
this.pendingInputs.set(uuid, { input, clientId: params.clientUserMessageId ?? null, hidden });
|
|
@@ -383,6 +390,8 @@ export class ClaudeSession {
|
|
|
383
390
|
async steer(params) {
|
|
384
391
|
if (!this.turn)
|
|
385
392
|
throw invalidRequest("no active turn to steer");
|
|
393
|
+
if (this.turn.waiting)
|
|
394
|
+
return (await this.startTurn({ input: params.input, clientUserMessageId: params.clientUserMessageId })).id;
|
|
386
395
|
const input = normalizeUserInput(params.input ?? []);
|
|
387
396
|
// The client's id is the message's in the transcript: history gives it back as the message's client id.
|
|
388
397
|
const uuid = UUID.test(params.clientUserMessageId ?? "") ? params.clientUserMessageId : randomUUID();
|
|
@@ -458,9 +467,10 @@ export class ClaudeSession {
|
|
|
458
467
|
this.endBackground(taskId, { status: "stopped", summary: "", atMs: Date.now() });
|
|
459
468
|
this.tasks.clear();
|
|
460
469
|
this.agents.clear();
|
|
461
|
-
|
|
470
|
+
// Waiting, nothing else runs: the turn ends as its sub-agents stop.
|
|
471
|
+
if ((this.state === "idle" || this.turn?.waiting) && this.turn) {
|
|
462
472
|
this.turn.resultSeen = true;
|
|
463
|
-
this.
|
|
473
|
+
this.completeTurn();
|
|
464
474
|
}
|
|
465
475
|
}
|
|
466
476
|
/** Claude takes the chat's new title itself (`rename_session`, as an IDE renames its session). */
|
|
@@ -533,7 +543,7 @@ export class ClaudeSession {
|
|
|
533
543
|
/** `announced`: the provider switch already started the turn under this preallocated id. */
|
|
534
544
|
openTurn(id, input, clientId, hidden, announced = false) {
|
|
535
545
|
const turn = this.newTurnObject(id);
|
|
536
|
-
this.turn = { id, startedAt: Date.now(), items: turn.items, resultSeen: false, interrupted: false, error: null };
|
|
546
|
+
this.turn = { id, startedAt: Date.now(), items: turn.items, resultSeen: false, interrupted: false, error: null, waiting: false };
|
|
537
547
|
this.started = true;
|
|
538
548
|
this.activeAt = Date.now();
|
|
539
549
|
this.afterResult = false;
|
|
@@ -567,11 +577,27 @@ export class ClaudeSession {
|
|
|
567
577
|
}
|
|
568
578
|
maybeComplete() {
|
|
569
579
|
// Background commands run on past the turn (stock's background terminals); a task's end that wakes Claude up starts
|
|
570
|
-
// a turn of its own.
|
|
571
|
-
|
|
580
|
+
// a turn of its own. Claude stays running while its background sub-agents work: the turn ends at its answer.
|
|
581
|
+
const turn = this.turn;
|
|
582
|
+
if (!turn?.resultSeen || (this.agents.size ? turn.waiting : this.state !== "idle"))
|
|
572
583
|
return;
|
|
573
584
|
this.completeTurn();
|
|
574
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* Claude's background sub-agents work on after its answer, and Claude wakes up as each one ends: the chat waits for
|
|
588
|
+
* them in the turn Claude goes on in then (history's), with the wait as its reasoning.
|
|
589
|
+
*/
|
|
590
|
+
waitForAgents() {
|
|
591
|
+
const id = this.lastBlock ? continuationTurnId(this.lastBlock.id) : randomUUID();
|
|
592
|
+
this.openTurn(id, [], null, true);
|
|
593
|
+
Object.assign(this.turn, { resultSeen: true, waiting: true });
|
|
594
|
+
// A message from another agent may wake Claude up instead: the transcript tells.
|
|
595
|
+
this.afterResult = true;
|
|
596
|
+
const count = this.agents.size;
|
|
597
|
+
const item = { type: "reasoning", id: `${id}:waiting`, summary: [`Waiting for ${count} subagent${count === 1 ? "" : "s"} to finish…`], content: [] };
|
|
598
|
+
this.itemStarted(item);
|
|
599
|
+
this.itemCompleted(item);
|
|
600
|
+
}
|
|
575
601
|
/** Claude goes on after an answer with no prompt: the answer ends its turn, the work goes on in a new one (history's). */
|
|
576
602
|
continueTurn() {
|
|
577
603
|
const id = continuationTurnId(this.lastBlock.id);
|
|
@@ -609,12 +635,15 @@ export class ClaudeSession {
|
|
|
609
635
|
startedAt: Math.floor(turn.startedAt / 1000), completedAt, durationMs: Date.now() - turn.startedAt,
|
|
610
636
|
},
|
|
611
637
|
});
|
|
612
|
-
|
|
638
|
+
const next = continued ? undefined : this.queued.shift();
|
|
639
|
+
const waiting = !continued && !next && !turn.interrupted && this.agents.size > 0;
|
|
640
|
+
if (!continued && !waiting)
|
|
613
641
|
this.emit("thread/status/changed", { threadId: this.threadId, status: { type: "idle" } });
|
|
614
642
|
this.host.turnCompleted(this, turn.id);
|
|
615
643
|
this.turnWaiters.get(turn.id)?.(status);
|
|
616
644
|
this.turnWaiters.delete(turn.id);
|
|
617
|
-
|
|
645
|
+
if (waiting)
|
|
646
|
+
this.waitForAgents();
|
|
618
647
|
if (next) {
|
|
619
648
|
this.emit("thread/queue/changed", { threadId: this.threadId });
|
|
620
649
|
void this.startTurn({ input: next.input, clientUserMessageId: next.clientUserMessageId }).catch((error) => this.host.logger.warn("claude.queue.start-failed", { threadId: this.threadId, error: String(error) }));
|
|
@@ -650,8 +679,13 @@ export class ClaudeSession {
|
|
|
650
679
|
// Claude's own word on `/goal` ("Goal set: …"), streamed as a reply: Codex clients show goals themselves.
|
|
651
680
|
if (m.local_command_run?.command === "goal")
|
|
652
681
|
return;
|
|
653
|
-
if (
|
|
654
|
-
this.
|
|
682
|
+
if (m.type === "stream_event" || m.type === "assistant") {
|
|
683
|
+
if (this.afterResult)
|
|
684
|
+
this.continued();
|
|
685
|
+
// Claude woke up: the turn that waited is its turn now.
|
|
686
|
+
if (this.turn?.waiting)
|
|
687
|
+
Object.assign(this.turn, { resultSeen: false, waiting: false });
|
|
688
|
+
}
|
|
655
689
|
switch (m.type) {
|
|
656
690
|
case "stream_event": return this.onStream(m.event);
|
|
657
691
|
case "assistant": return this.onAssistant(m);
|
|
@@ -679,6 +713,10 @@ export class ClaudeSession {
|
|
|
679
713
|
this.injections.delete(uuid);
|
|
680
714
|
}
|
|
681
715
|
const pending = uuid ? this.pendingInputs.get(uuid) : undefined;
|
|
716
|
+
// Waiting for its sub-agents, Claude takes a prompt or a message from another agent as when idle (a finished task's
|
|
717
|
+
// notification goes on in the turn that waited).
|
|
718
|
+
if (m.state === "started" && uuid && this.turn?.waiting && !this.injections.has(uuid) && (pending || !this.notified))
|
|
719
|
+
this.completeTurn(true);
|
|
682
720
|
// A command Claude started by itself (a message another agent sent): its turn has the id history gives it.
|
|
683
721
|
if (m.state === "started" && uuid && !pending && !this.injections.has(uuid)) {
|
|
684
722
|
clearTimeout(this.runningTimer);
|
|
@@ -724,7 +762,7 @@ export class ClaudeSession {
|
|
|
724
762
|
this.continueTurn();
|
|
725
763
|
return;
|
|
726
764
|
}
|
|
727
|
-
this.completeTurn();
|
|
765
|
+
this.completeTurn(this.turn.waiting);
|
|
728
766
|
this.ensureTurn(record.uuid);
|
|
729
767
|
this.showPeer(record.uuid, origin, userText(record));
|
|
730
768
|
}
|
|
@@ -789,7 +827,7 @@ export class ClaudeSession {
|
|
|
789
827
|
return;
|
|
790
828
|
// Taken as a prompt of its own right after a turn's result (no idle between): a turn of its own, as in history.
|
|
791
829
|
if (prompt && this.turn && this.turn.id !== uuid && this.turn.resultSeen && !this.queued.length) {
|
|
792
|
-
this.completeTurn();
|
|
830
|
+
this.completeTurn(this.turn.waiting);
|
|
793
831
|
this.ensureTurn(uuid);
|
|
794
832
|
}
|
|
795
833
|
return this.showPeer(uuid, origin, prompt ? userText(record) : String(queued.prompt ?? ""));
|
|
@@ -839,7 +877,7 @@ export class ClaudeSession {
|
|
|
839
877
|
this.tasks.delete(m.task_id);
|
|
840
878
|
this.agents.delete(m.task_id);
|
|
841
879
|
this.host.subagentFinished(`agent-${m.task_id}`);
|
|
842
|
-
this.notified ||= !this.turn;
|
|
880
|
+
this.notified ||= !this.turn || this.turn.waiting;
|
|
843
881
|
this.endBackground(m.task_id, { status: String(m.status), summary: String(m.summary ?? ""), ...(m.output_file ? { outputFile: m.output_file } : {}), atMs: Date.now() });
|
|
844
882
|
return;
|
|
845
883
|
case "background_tasks_changed": {
|