@codetreker/daynight 0.25.4 → 0.26.0
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 +108 -4
- package/config.example.yml +3 -0
- package/dist/api/client.js +2 -2
- package/dist/api/client.js.map +1 -1
- package/dist/api/parse.js +14 -2
- package/dist/api/parse.js.map +1 -1
- package/dist/api/types.d.ts +4 -1
- package/dist/api/worker-mode.d.ts +6 -0
- package/dist/api/worker-mode.js +14 -0
- package/dist/api/worker-mode.js.map +1 -0
- package/dist/cli/commands.js +2 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/commands/controller/command-controls.d.ts +4 -0
- package/dist/commands/controller/command-controls.js +33 -0
- package/dist/commands/controller/command-controls.js.map +1 -0
- package/dist/commands/controller/definition.d.ts +3 -0
- package/dist/commands/controller/definition.js +22 -0
- package/dist/commands/controller/definition.js.map +1 -0
- package/dist/commands/controller/independent.d.ts +3 -0
- package/dist/commands/controller/independent.js +344 -0
- package/dist/commands/controller/independent.js.map +1 -0
- package/dist/commands/controller/index.d.ts +12 -0
- package/dist/commands/controller/index.js +73 -0
- package/dist/commands/controller/index.js.map +1 -0
- package/dist/commands/controller/launch-ticket.d.ts +49 -0
- package/dist/commands/controller/launch-ticket.js +99 -0
- package/dist/commands/controller/launch-ticket.js.map +1 -0
- package/dist/commands/controller/lifecycle-store.d.ts +84 -0
- package/dist/commands/controller/lifecycle-store.js +278 -0
- package/dist/commands/controller/lifecycle-store.js.map +1 -0
- package/dist/commands/controller/local-client.d.ts +44 -0
- package/dist/commands/controller/local-client.js +75 -0
- package/dist/commands/controller/local-client.js.map +1 -0
- package/dist/commands/controller/local-content.d.ts +23 -0
- package/dist/commands/controller/local-content.js +103 -0
- package/dist/commands/controller/local-content.js.map +1 -0
- package/dist/commands/controller/process-proof.d.ts +13 -0
- package/dist/commands/controller/process-proof.js +121 -0
- package/dist/commands/controller/process-proof.js.map +1 -0
- package/dist/commands/controller/providers/claude.d.ts +2 -0
- package/dist/commands/controller/providers/claude.js +470 -0
- package/dist/commands/controller/providers/claude.js.map +1 -0
- package/dist/commands/controller/providers/codex.d.ts +2 -0
- package/dist/commands/controller/providers/codex.js +254 -0
- package/dist/commands/controller/providers/codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
- package/dist/commands/controller/providers/controls-claude.js +138 -0
- package/dist/commands/controller/providers/controls-claude.js.map +1 -0
- package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
- package/dist/commands/controller/providers/controls-codex.js +199 -0
- package/dist/commands/controller/providers/controls-codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
- package/dist/commands/controller/providers/controls-copilot.js +143 -0
- package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
- package/dist/commands/controller/providers/controls.d.ts +21 -0
- package/dist/commands/controller/providers/controls.js +53 -0
- package/dist/commands/controller/providers/controls.js.map +1 -0
- package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
- package/dist/commands/controller/providers/copilot-interactions.js +295 -0
- package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
- package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
- package/dist/commands/controller/providers/copilot-projection.js +93 -0
- package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
- package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
- package/dist/commands/controller/providers/copilot-runtime.js +127 -0
- package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
- package/dist/commands/controller/providers/copilot.d.ts +2 -0
- package/dist/commands/controller/providers/copilot.js +309 -0
- package/dist/commands/controller/providers/copilot.js.map +1 -0
- package/dist/commands/controller/providers/interactions.d.ts +3 -0
- package/dist/commands/controller/providers/interactions.js +79 -0
- package/dist/commands/controller/providers/interactions.js.map +1 -0
- package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
- package/dist/commands/controller/providers/native-rpc.js +85 -0
- package/dist/commands/controller/providers/native-rpc.js.map +1 -0
- package/dist/commands/controller/providers/projection.d.ts +23 -0
- package/dist/commands/controller/providers/projection.js +99 -0
- package/dist/commands/controller/providers/projection.js.map +1 -0
- package/dist/commands/controller/providers/turns.d.ts +7 -0
- package/dist/commands/controller/providers/turns.js +21 -0
- package/dist/commands/controller/providers/turns.js.map +1 -0
- package/dist/commands/controller/providers/types.d.ts +44 -0
- package/dist/commands/controller/providers/types.js +2 -0
- package/dist/commands/controller/providers/types.js.map +1 -0
- package/dist/commands/controller/recovery.d.ts +6 -0
- package/dist/commands/controller/recovery.js +22 -0
- package/dist/commands/controller/recovery.js.map +1 -0
- package/dist/commands/controller/relay.d.ts +18 -0
- package/dist/commands/controller/relay.js +299 -0
- package/dist/commands/controller/relay.js.map +1 -0
- package/dist/commands/controller/resume.d.ts +18 -0
- package/dist/commands/controller/resume.js +193 -0
- package/dist/commands/controller/resume.js.map +1 -0
- package/dist/commands/controller/runtime.d.ts +5 -0
- package/dist/commands/controller/runtime.js +455 -0
- package/dist/commands/controller/runtime.js.map +1 -0
- package/dist/commands/controller/windows-job.d.ts +3 -0
- package/dist/commands/controller/windows-job.js +59 -0
- package/dist/commands/controller/windows-job.js.map +1 -0
- package/dist/commands/controller/wire-display.d.ts +5 -0
- package/dist/commands/controller/wire-display.js +11 -0
- package/dist/commands/controller/wire-display.js.map +1 -0
- package/dist/commands/worker/backend.d.ts +7 -0
- package/dist/commands/worker/backend.js +7 -0
- package/dist/commands/worker/backend.js.map +1 -0
- package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
- package/dist/commands/worker/backends/grant-renewal.js +42 -0
- package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
- package/dist/commands/worker/backends/session-api.d.ts +66 -0
- package/dist/commands/worker/backends/session-api.js +84 -0
- package/dist/commands/worker/backends/session-api.js.map +1 -0
- package/dist/commands/worker/backends/web-process.d.ts +79 -0
- package/dist/commands/worker/backends/web-process.js +156 -0
- package/dist/commands/worker/backends/web-process.js.map +1 -0
- package/dist/commands/worker/backends/web-store.d.ts +49 -0
- package/dist/commands/worker/backends/web-store.js +323 -0
- package/dist/commands/worker/backends/web-store.js.map +1 -0
- package/dist/commands/worker/backends/web-types.d.ts +83 -0
- package/dist/commands/worker/backends/web-types.js +3 -0
- package/dist/commands/worker/backends/web-types.js.map +1 -0
- package/dist/commands/worker/backends/web.d.ts +26 -0
- package/dist/commands/worker/backends/web.js +178 -0
- package/dist/commands/worker/backends/web.js.map +1 -0
- package/dist/commands/worker/config.js +12 -5
- package/dist/commands/worker/config.js.map +1 -1
- package/dist/commands/worker/control.d.ts +2 -0
- package/dist/commands/worker/control.js +11 -4
- package/dist/commands/worker/control.js.map +1 -1
- package/dist/commands/worker/coordinator.d.ts +7 -0
- package/dist/commands/worker/coordinator.js +138 -19
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/herdr/agents.js +5 -4
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/arguments.js +9 -4
- package/dist/commands/worker/herdr/arguments.js.map +1 -1
- package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
- package/dist/commands/worker/herdr/claude-input.js +20 -0
- package/dist/commands/worker/herdr/claude-input.js.map +1 -0
- package/dist/commands/worker/herdr/instance.js +1 -1
- package/dist/commands/worker/herdr/instance.js.map +1 -1
- package/dist/commands/worker/herdr/preflight.d.ts +1 -1
- package/dist/commands/worker/herdr/preflight.js +31 -10
- package/dist/commands/worker/herdr/preflight.js.map +1 -1
- package/dist/commands/worker/herdr.js +5 -1
- package/dist/commands/worker/herdr.js.map +1 -1
- package/dist/commands/worker/prompts.js +5 -1
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/repositories.js +2 -2
- package/dist/commands/worker/repositories.js.map +1 -1
- package/dist/commands/worker/runtime.js +62 -10
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/setup-environment.d.ts +2 -1
- package/dist/commands/worker/setup-environment.js +10 -4
- package/dist/commands/worker/setup-environment.js.map +1 -1
- package/dist/commands/worker/setup.js +5 -5
- package/dist/commands/worker/setup.js.map +1 -1
- package/dist/commands/worker/store.d.ts +2 -1
- package/dist/commands/worker/store.js +19 -9
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/commands/worker/types.d.ts +4 -1
- package/dist/session/controller-protocol.d.ts +245 -0
- package/dist/session/controller-protocol.js +218 -0
- package/dist/session/controller-protocol.js.map +1 -0
- package/dist/session/controls.d.ts +28 -0
- package/dist/session/controls.js +37 -0
- package/dist/session/controls.js.map +1 -0
- package/dist/session/protocol.d.ts +290 -0
- package/dist/session/protocol.js +307 -0
- package/dist/session/protocol.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { ClaudeControls } from "./controls-claude.js";
|
|
2
|
+
import { NativeTurns } from "./turns.js";
|
|
3
|
+
import { execFile, spawn } from "node:child_process";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import { realpath } from "node:fs/promises";
|
|
6
|
+
import { query, getSessionInfo, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";
|
|
7
|
+
import { record, string, NativeRpcError } from "./native-rpc.js";
|
|
8
|
+
import { nativeEntryId, parseProviderArguments, readable, limited } from "./projection.js";
|
|
9
|
+
import { formInteraction, validateResponse } from "./interactions.js";
|
|
10
|
+
class InputStream {
|
|
11
|
+
items = [];
|
|
12
|
+
wake = null;
|
|
13
|
+
closed = false;
|
|
14
|
+
push(message) { if (this.closed)
|
|
15
|
+
throw new Error("Native input is closed."); this.items.push(message); this.wake?.(); }
|
|
16
|
+
close() { this.closed = true; this.wake?.(); }
|
|
17
|
+
async *[Symbol.asyncIterator]() { while (!this.closed) {
|
|
18
|
+
const item = this.items.shift();
|
|
19
|
+
if (item) {
|
|
20
|
+
yield item;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
await new Promise(resolve => { this.wake = resolve; });
|
|
24
|
+
this.wake = null;
|
|
25
|
+
} }
|
|
26
|
+
}
|
|
27
|
+
const deadline = (promise, message, ms = 30_000) => new Promise((resolve, reject) => { const timer = setTimeout(() => reject(new Error(message)), ms); promise.then(value => { clearTimeout(timer); resolve(value); }, error => { clearTimeout(timer); reject(error); }); });
|
|
28
|
+
export const openClaudeProvider = async (options) => {
|
|
29
|
+
const config = parseProviderArguments("claude", options.args), input = new InputStream();
|
|
30
|
+
const nativeId = options.resumeNativeSessionId ?? randomUUID();
|
|
31
|
+
const capabilities = { send: true, steer: false, cancel: true, respond: true };
|
|
32
|
+
let currentTurnId = null, activity = "initializing", closed = false, verified = false, disconnected = false;
|
|
33
|
+
let controls, turnStartedAt = null;
|
|
34
|
+
let cancellation;
|
|
35
|
+
const steered = new Map();
|
|
36
|
+
const children = [], interactions = new Map();
|
|
37
|
+
const accepted = new Map();
|
|
38
|
+
const cancelWaiters = new Set();
|
|
39
|
+
const state = () => options.onState({ nativeSessionId: verified ? nativeId : null, activity: interactions.size ? "waiting_input" : activity, currentTurnId, turnStartedAt, ...(controls ? { controls: controls.store.value } : {}), capabilities: closed || disconnected ? { send: false, steer: false, cancel: false, respond: false } : capabilities });
|
|
40
|
+
let identityResolve;
|
|
41
|
+
let identityReject;
|
|
42
|
+
const identity = new Promise((resolve, reject) => { identityResolve = resolve; identityReject = reject; });
|
|
43
|
+
void identity.catch(() => { });
|
|
44
|
+
const verify = (sessionId) => { if (sessionId !== nativeId) {
|
|
45
|
+
const error = new Error("Native Claude session identity mismatch.");
|
|
46
|
+
identityReject(error);
|
|
47
|
+
throw error;
|
|
48
|
+
} if (!verified) {
|
|
49
|
+
verified = true;
|
|
50
|
+
identityResolve();
|
|
51
|
+
state();
|
|
52
|
+
} };
|
|
53
|
+
const publishInteraction = (interaction) => options.onTimeline({ entryId: interaction.interactionId, revision: interaction.revision, kind: "interaction", interaction });
|
|
54
|
+
const ask = (interaction, signal, nativeToolId = null) => new Promise((resolve, reject) => {
|
|
55
|
+
const abort = () => { const pending = interactions.get(interaction.interactionId); if (!pending)
|
|
56
|
+
return; interactions.delete(interaction.interactionId); publishInteraction({ ...interaction, revision: "2", state: "expired" }); const error = new Error("Native interaction expired."); reject(error); pending.rejectConfirmation?.(error); state(); };
|
|
57
|
+
if (signal.aborted) {
|
|
58
|
+
reject(new Error("Native interaction expired."));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
62
|
+
interactions.set(interaction.interactionId, { interaction, nativeToolId, turnId: currentTurnId, submitted: false, resolve: response => { signal.removeEventListener("abort", abort); resolve(response); }, reject });
|
|
63
|
+
publishInteraction(interaction);
|
|
64
|
+
state();
|
|
65
|
+
});
|
|
66
|
+
const turns = new NativeTurns();
|
|
67
|
+
const confirmInteraction = (id, pending) => {
|
|
68
|
+
if (!pending.submitted)
|
|
69
|
+
return;
|
|
70
|
+
interactions.delete(id);
|
|
71
|
+
publishInteraction({ ...pending.interaction, state: "resolved", revision: "2" });
|
|
72
|
+
pending.confirm?.();
|
|
73
|
+
state();
|
|
74
|
+
};
|
|
75
|
+
const withdrawInput = (id) => {
|
|
76
|
+
const item = steered.get(id);
|
|
77
|
+
if (!item)
|
|
78
|
+
return;
|
|
79
|
+
steered.delete(id);
|
|
80
|
+
item.reject(new NativeRpcError(-32602, "Native queued input was stopped before execution."));
|
|
81
|
+
if (!item.started)
|
|
82
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, `cancelled:${id}`), revision: "1", kind: "error", code: "input_cancelled", message: "Queued input was stopped before execution." });
|
|
83
|
+
};
|
|
84
|
+
const tools = new Map();
|
|
85
|
+
const textBlocks = new Map();
|
|
86
|
+
const streamKeys = new Map(), assistantKeys = new Map();
|
|
87
|
+
const streamOrdinals = new Map(), assistantOrdinals = new Map();
|
|
88
|
+
const blockKey = (keys, ordinals, source, messageId, kind) => {
|
|
89
|
+
const existing = keys.get(source);
|
|
90
|
+
if (existing)
|
|
91
|
+
return existing;
|
|
92
|
+
const group = `${messageId}:${kind}`, ordinal = ordinals.get(group) ?? 0;
|
|
93
|
+
const key = `${group}:${ordinal}`;
|
|
94
|
+
ordinals.set(group, ordinal + 1);
|
|
95
|
+
keys.set(source, key);
|
|
96
|
+
return key;
|
|
97
|
+
};
|
|
98
|
+
let streamingMessageId = "";
|
|
99
|
+
const project = (raw, history = false) => {
|
|
100
|
+
const m = record(raw), message = record(m.message), type = string(m.type);
|
|
101
|
+
if (m.session_id !== undefined)
|
|
102
|
+
verify(m.session_id);
|
|
103
|
+
if (!history && !m.parent_tool_use_id && type === "system") {
|
|
104
|
+
controls?.observe(m);
|
|
105
|
+
if (m.subtype === "init") {
|
|
106
|
+
const declared = Array.isArray(m.capabilities) ? m.capabilities : [];
|
|
107
|
+
capabilities.steer = ["msg_lifecycle_v1", "interrupt_cancel_queued_v1"].every(value => declared.includes(value));
|
|
108
|
+
state();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!history && !m.parent_tool_use_id && type === "command_lifecycle") {
|
|
112
|
+
const id = string(m.command_uuid);
|
|
113
|
+
if (m.state === "started" && currentTurnId === id && !turnStartedAt) {
|
|
114
|
+
turnStartedAt = new Date().toISOString();
|
|
115
|
+
state();
|
|
116
|
+
}
|
|
117
|
+
const item = steered.get(id);
|
|
118
|
+
if (!item)
|
|
119
|
+
return;
|
|
120
|
+
if (m.state === "queued") {
|
|
121
|
+
item.resolve({ disposition: "queued", ...(currentTurnId ? { turnId: currentTurnId } : {}) });
|
|
122
|
+
options.onInputObserved?.(id);
|
|
123
|
+
}
|
|
124
|
+
if (m.state === "started") {
|
|
125
|
+
item.started = true;
|
|
126
|
+
if (!currentTurnId) {
|
|
127
|
+
currentTurnId = id;
|
|
128
|
+
turnStartedAt = new Date().toISOString();
|
|
129
|
+
activity = "working";
|
|
130
|
+
}
|
|
131
|
+
item.resolve({ disposition: "handled", turnId: currentTurnId });
|
|
132
|
+
options.onInputObserved?.(id);
|
|
133
|
+
state();
|
|
134
|
+
}
|
|
135
|
+
if (m.state === "cancelled")
|
|
136
|
+
withdrawInput(id);
|
|
137
|
+
if (m.state === "completed")
|
|
138
|
+
steered.delete(id);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (type === "stream_event") {
|
|
142
|
+
const e = record(m.event), delta = record(e.delta), block = record(e.content_block);
|
|
143
|
+
if (e.type === "message_start") {
|
|
144
|
+
streamingMessageId = string(record(e.message).id);
|
|
145
|
+
if (!m.parent_tool_use_id && currentTurnId && !turnStartedAt) {
|
|
146
|
+
turnStartedAt = new Date().toISOString();
|
|
147
|
+
state();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const key = `${streamingMessageId}:${String(e.index)}`;
|
|
151
|
+
if (e.type === "content_block_start" && (block.type === "text" || block.type === "thinking")) {
|
|
152
|
+
textBlocks.set(key, { text: string(block.text ?? block.thinking), kind: block.type });
|
|
153
|
+
blockKey(streamKeys, streamOrdinals, key, streamingMessageId, block.type);
|
|
154
|
+
}
|
|
155
|
+
if (e.type === "content_block_delta" && ["text_delta", "thinking_delta"].includes(string(delta.type))) {
|
|
156
|
+
const value = textBlocks.get(key) ?? { text: "", kind: delta.type === "thinking_delta" ? "thinking" : "text" };
|
|
157
|
+
value.text += string(delta.text ?? delta.thinking);
|
|
158
|
+
textBlocks.set(key, value);
|
|
159
|
+
const canonicalKey = blockKey(streamKeys, streamOrdinals, key, streamingMessageId, value.kind);
|
|
160
|
+
options.onTimeline(value.kind === "thinking" ? { entryId: nativeEntryId(nativeId, canonicalKey), revision: "1", kind: "reasoning", text: limited(value.text) } : { entryId: nativeEntryId(nativeId, canonicalKey), revision: "1", kind: "assistant_message", content: [{ type: "text", text: limited(value.text) }] });
|
|
161
|
+
}
|
|
162
|
+
if (currentTurnId) {
|
|
163
|
+
accepted.get(currentTurnId)?.resolve();
|
|
164
|
+
accepted.delete(currentTurnId);
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (type === "user" || type === "assistant") {
|
|
169
|
+
const id = type === "assistant" ? string(message.id) || string(m.uuid) : string(m.uuid) || randomUUID();
|
|
170
|
+
const content = typeof message.content === "string" ? [{ type: "text", text: message.content }] : Array.isArray(message.content) ? message.content : [];
|
|
171
|
+
if (type === "user" && typeof m.uuid === "string" && content.some(part => record(part).type === "text") && !content.some(part => record(part).type === "tool_result"))
|
|
172
|
+
options.onInputObserved?.(m.uuid);
|
|
173
|
+
content.forEach((raw, index) => {
|
|
174
|
+
const part = record(raw);
|
|
175
|
+
// SDK assistant messages arrive one completed block at a time: array index
|
|
176
|
+
// zero can refer to text after a streamed thinking block at index zero.
|
|
177
|
+
const key = type === "assistant" ? blockKey(assistantKeys, assistantOrdinals, `${string(m.uuid) || id}:${index}`, id, string(part.type)) : `${id}:${index}`;
|
|
178
|
+
const base = { entryId: nativeEntryId(nativeId, key), revision: "1" };
|
|
179
|
+
if (part.type === "text")
|
|
180
|
+
options.onTimeline({ ...base, kind: type === "user" ? "user_message" : "assistant_message", content: [{ type: "text", text: limited(string(part.text)) }] });
|
|
181
|
+
else if (part.type === "thinking")
|
|
182
|
+
options.onTimeline({ ...base, kind: "reasoning", text: limited(string(part.thinking)) });
|
|
183
|
+
else if (part.type === "tool_use") {
|
|
184
|
+
const callId = string(part.id), tool = { name: string(part.name), input: limited(readable(part.input)) };
|
|
185
|
+
tools.set(callId, tool);
|
|
186
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, callId), revision: "1", kind: "tool_call", callId, ...tool, output: [], status: "running", truncated: false });
|
|
187
|
+
}
|
|
188
|
+
else if (part.type === "tool_result") {
|
|
189
|
+
const callId = string(part.tool_use_id);
|
|
190
|
+
if (!history)
|
|
191
|
+
for (const [id, pending] of interactions)
|
|
192
|
+
if (pending.nativeToolId === callId)
|
|
193
|
+
confirmInteraction(id, pending);
|
|
194
|
+
const output = readable(part.content);
|
|
195
|
+
const tool = tools.get(callId) ?? { name: "tool", input: "" };
|
|
196
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, callId), revision: "1", kind: "tool_call", callId, ...tool, output: [{ type: "text", text: limited(output) }], status: part.is_error ? "failed" : "completed", truncated: output.length > 200_000 });
|
|
197
|
+
}
|
|
198
|
+
else
|
|
199
|
+
options.onTimeline({ ...base, kind: "error", code: "unsupported_native_content", message: `Native ${string(part.type)} content is unavailable in this text session.` });
|
|
200
|
+
});
|
|
201
|
+
if (!history && currentTurnId) {
|
|
202
|
+
accepted.get(currentTurnId)?.resolve();
|
|
203
|
+
accepted.delete(currentTurnId);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if (type === "result") {
|
|
207
|
+
if (history || m.parent_tool_use_id || m.user_message_uuid && m.user_message_uuid !== currentTurnId)
|
|
208
|
+
return;
|
|
209
|
+
const interrupted = cancellation && cancellation.turnId === currentTurnId && m.user_message_uuid === currentTurnId && ["aborted_streaming", "aborted_tools"].includes(string(m.terminal_reason));
|
|
210
|
+
// The result can precede the interrupt receipt. Only a successful native
|
|
211
|
+
// receipt and an explicitly aborted result establish user cancellation.
|
|
212
|
+
if (interrupted && !cancellation.acknowledged) {
|
|
213
|
+
cancellation.result = raw;
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (!m.is_error && !interrupted && currentTurnId)
|
|
217
|
+
for (const [id, pending] of interactions)
|
|
218
|
+
if (pending.nativeToolId === null && pending.turnId === currentTurnId)
|
|
219
|
+
confirmInteraction(id, pending);
|
|
220
|
+
if (currentTurnId)
|
|
221
|
+
turns.complete(currentTurnId, interrupted ? new Error("Native Claude turn was interrupted by the user.") : m.is_error ? new Error(`Native Claude turn failed: ${readable(m.errors ?? m.subtype)}`) : null);
|
|
222
|
+
if (currentTurnId) {
|
|
223
|
+
accepted.get(currentTurnId)?.resolve();
|
|
224
|
+
accepted.delete(currentTurnId);
|
|
225
|
+
}
|
|
226
|
+
if (interrupted)
|
|
227
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, string(m.uuid) || randomUUID()), revision: "1", kind: "error", code: "turn_interrupted", message: "Interrupted by the user." });
|
|
228
|
+
else if (m.is_error)
|
|
229
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, string(m.uuid) || randomUUID()), revision: "1", kind: "error", code: "native_result_error", message: limited(readable(m.errors ?? m.result ?? m.subtype)) });
|
|
230
|
+
for (const [id, pending] of interactions) {
|
|
231
|
+
interactions.delete(id);
|
|
232
|
+
publishInteraction({ ...pending.interaction, state: "expired", revision: "2" });
|
|
233
|
+
const ended = new Error("The native turn ended before interaction confirmation.");
|
|
234
|
+
pending.reject(ended);
|
|
235
|
+
pending.rejectConfirmation?.(ended);
|
|
236
|
+
}
|
|
237
|
+
cancellation = undefined;
|
|
238
|
+
currentTurnId = null;
|
|
239
|
+
turnStartedAt = null;
|
|
240
|
+
activity = "idle";
|
|
241
|
+
for (const waiter of cancelWaiters)
|
|
242
|
+
waiter.resolve();
|
|
243
|
+
cancelWaiters.clear();
|
|
244
|
+
state();
|
|
245
|
+
}
|
|
246
|
+
if (type === "system" && m.subtype === "compact_boundary")
|
|
247
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, string(m.uuid) || randomUUID()), revision: "1", kind: "compaction", summary: "Native conversation context compacted." });
|
|
248
|
+
};
|
|
249
|
+
if (options.resumeNativeSessionId) {
|
|
250
|
+
// SDK history readers use their own process environment, not Query.options.env.
|
|
251
|
+
// A read-only process preserves the writer's private home without mutating ours.
|
|
252
|
+
const history = options.env && options.env.CLAUDE_CONFIG_DIR !== process.env.CLAUDE_CONFIG_DIR
|
|
253
|
+
? await new Promise((resolve, reject) => {
|
|
254
|
+
const source = `import {getSessionInfo,getSessionMessages} from ${JSON.stringify(import.meta.resolve("@anthropic-ai/claude-agent-sdk"))}; const [id,dir]=process.argv.slice(1); const info=await getSessionInfo(id,{dir}); const messages=info ? await getSessionMessages(id,{dir,includeSystemMessages:true}) : []; process.stdout.write(JSON.stringify({info,messages}));`;
|
|
255
|
+
execFile(process.execPath, ["--input-type=module", "--eval", source, nativeId, options.cwd], { env: options.env, cwd: options.cwd, encoding: "utf8", timeout: 30_000, maxBuffer: 32 * 1024 * 1024, windowsHide: true }, (error, stdout) => {
|
|
256
|
+
if (error) {
|
|
257
|
+
reject(new Error("Native Claude history reader failed, timed out, or exceeded its output limit."));
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
resolve(JSON.parse(stdout));
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
reject(new Error("Native Claude history reader returned invalid data."));
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
})
|
|
268
|
+
: { info: await getSessionInfo(nativeId, { dir: options.cwd }), messages: await getSessionMessages(nativeId, { dir: options.cwd, includeSystemMessages: true }) };
|
|
269
|
+
if (!history.info || history.info.sessionId !== nativeId || history.info.cwd && await realpath(history.info.cwd) !== await realpath(options.cwd) || !Array.isArray(history.messages))
|
|
270
|
+
throw new Error("Native Claude history identity or working directory is unavailable.");
|
|
271
|
+
for (const m of history.messages)
|
|
272
|
+
project(m, true);
|
|
273
|
+
}
|
|
274
|
+
const native = query({ prompt: input, options: {
|
|
275
|
+
...(options.resumeNativeSessionId ? { resume: nativeId } : { sessionId: nativeId }), cwd: options.cwd,
|
|
276
|
+
...(!options.resumeNativeSessionId && options.model ? { model: options.model } : {}), ...(!options.resumeNativeSessionId && config.effort ? { effort: config.effort } : {}),
|
|
277
|
+
...(config.additionalDirectories ? { additionalDirectories: config.additionalDirectories } : {}),
|
|
278
|
+
...(options.executable ? { pathToClaudeCodeExecutable: options.executable } : {}), env: options.env ?? process.env,
|
|
279
|
+
allowDangerouslySkipPermissions: true, persistSession: true, includePartialMessages: true, settingSources: ["user", "project", "local"], ...(!options.resumeNativeSessionId ? { permissionMode: options.unattended ? "bypassPermissions" : config.permissionMode ?? "default", ...(options.unattended ? { sandbox: { enabled: false } } : {}) } : {}),
|
|
280
|
+
hooks: { SessionStart: [{ hooks: [async (event) => { verify(event.session_id); return {}; }] }] },
|
|
281
|
+
spawnClaudeCodeProcess: args => { const child = spawn(args.command, args.args, { cwd: args.cwd ?? options.cwd, env: args.env, signal: args.signal, stdio: ["pipe", "pipe", "pipe"], windowsHide: true, detached: false }); children.push(child); options.onSpawn(child); child.stderr.on("data", chunk => options.onDiagnostic?.(String(chunk))); return child; },
|
|
282
|
+
canUseTool: async (name, toolInput, context) => {
|
|
283
|
+
const base = { interactionId: randomUUID(), revision: "1", state: "pending" };
|
|
284
|
+
if (name === "AskUserQuestion") {
|
|
285
|
+
const interaction = { ...base, kind: "question", title: "Agent question", canDismiss: true, questions: (Array.isArray(toolInput.questions) ? toolInput.questions : []).map((raw, i) => { const q = record(raw); return { questionId: String(i), label: string(q.question), multiple: q.multiSelect === true, required: true, sensitive: false, allowCustom: true, options: (Array.isArray(q.options) ? q.options : []).map(raw => { const o = record(raw); return { id: string(o.label), label: string(o.label) }; }) }; }) };
|
|
286
|
+
const response = await ask(interaction, context.signal, context.toolUseID);
|
|
287
|
+
if (response.kind !== "question")
|
|
288
|
+
return { behavior: "deny", message: "User dismissed the question." };
|
|
289
|
+
return { behavior: "allow", updatedInput: { ...toolInput, answers: Object.fromEntries(response.answers.map(a => [interaction.questions.find(q => q.questionId === a.questionId).label, [...a.optionIds, ...(a.text ? [a.text] : [])].join(", ")])) } };
|
|
290
|
+
}
|
|
291
|
+
const response = await ask({ ...base, kind: "approval", title: `Approve ${name}`, detail: limited(readable(toolInput)), actions: ["allow_once", "reject"] }, context.signal, context.toolUseID);
|
|
292
|
+
return response.kind === "approval" && response.action === "allow_once" ? { behavior: "allow", updatedInput: toolInput } : { behavior: "deny", message: "User rejected this operation." };
|
|
293
|
+
},
|
|
294
|
+
onElicitation: async (request, context) => {
|
|
295
|
+
if (request.mode !== "form")
|
|
296
|
+
return { action: "decline" };
|
|
297
|
+
const response = await ask(formInteraction(request.message, request.requestedSchema), context.signal);
|
|
298
|
+
return response.kind === "form" ? { action: "accept", content: Object.fromEntries(response.values.map(v => [v.fieldId, Array.isArray(v.value) ? [...v.value] : v.value])) } : { action: "decline" };
|
|
299
|
+
}, stderr: line => options.onDiagnostic?.(line),
|
|
300
|
+
} });
|
|
301
|
+
controls = new ClaudeControls(native, options.resumeNativeSessionId ? null : options.model, options.resumeNativeSessionId ? undefined : config.effort, state, options.onControlConfirmed, !!options.resumeNativeSessionId, options.controlsRevisionFloor);
|
|
302
|
+
const disconnect = (error) => {
|
|
303
|
+
if (disconnected || closed)
|
|
304
|
+
return;
|
|
305
|
+
disconnected = true;
|
|
306
|
+
controls?.close();
|
|
307
|
+
input.close();
|
|
308
|
+
native.close();
|
|
309
|
+
identityReject(error);
|
|
310
|
+
for (const item of steered.values())
|
|
311
|
+
item.reject(error);
|
|
312
|
+
steered.clear();
|
|
313
|
+
for (const pending of accepted.values())
|
|
314
|
+
pending.reject(error);
|
|
315
|
+
accepted.clear();
|
|
316
|
+
for (const waiter of cancelWaiters)
|
|
317
|
+
waiter.reject(error);
|
|
318
|
+
cancelWaiters.clear();
|
|
319
|
+
if (currentTurnId)
|
|
320
|
+
turns.complete(currentTurnId, error);
|
|
321
|
+
for (const [id, pending] of interactions) {
|
|
322
|
+
interactions.delete(id);
|
|
323
|
+
pending.reject(error);
|
|
324
|
+
pending.rejectConfirmation?.(error);
|
|
325
|
+
publishInteraction({ ...pending.interaction, revision: "2", state: "expired" });
|
|
326
|
+
}
|
|
327
|
+
currentTurnId = null;
|
|
328
|
+
activity = "unknown";
|
|
329
|
+
options.onTimeline({ entryId: randomUUID(), revision: "1", kind: "error", code: "native_connection_lost", message: error.message });
|
|
330
|
+
state();
|
|
331
|
+
options.onFatalError?.(error);
|
|
332
|
+
};
|
|
333
|
+
const pump = (async () => {
|
|
334
|
+
try {
|
|
335
|
+
for await (const message of native)
|
|
336
|
+
project(message);
|
|
337
|
+
if (!closed)
|
|
338
|
+
disconnect(new Error("Native Claude connection ended; pending operation results are unknown."));
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
if (!closed && !disconnected)
|
|
342
|
+
disconnect(new Error(`Native Claude connection lost; pending operation results are unknown: ${error instanceof Error ? error.message : String(error)}`));
|
|
343
|
+
}
|
|
344
|
+
})();
|
|
345
|
+
const close = async () => {
|
|
346
|
+
if (closed)
|
|
347
|
+
return;
|
|
348
|
+
closed = true;
|
|
349
|
+
controls?.close();
|
|
350
|
+
input.close();
|
|
351
|
+
native.close();
|
|
352
|
+
const stopped = new Error("Native Claude process stopped; pending operation results are unknown.");
|
|
353
|
+
for (const item of steered.values())
|
|
354
|
+
item.reject(stopped);
|
|
355
|
+
steered.clear();
|
|
356
|
+
for (const pending of accepted.values())
|
|
357
|
+
pending.reject(stopped);
|
|
358
|
+
accepted.clear();
|
|
359
|
+
for (const waiter of cancelWaiters)
|
|
360
|
+
waiter.reject(stopped);
|
|
361
|
+
cancelWaiters.clear();
|
|
362
|
+
if (currentTurnId)
|
|
363
|
+
turns.complete(currentTurnId, stopped);
|
|
364
|
+
await Promise.all(children.map(child => child.exitCode !== null || child.signalCode !== null ? Promise.resolve() : deadline(new Promise(resolve => child.once("close", () => resolve())), "Native Claude stop is unconfirmed.", 10_000)));
|
|
365
|
+
await pump;
|
|
366
|
+
activity = "stopped";
|
|
367
|
+
for (const p of interactions.values()) {
|
|
368
|
+
publishInteraction({ ...p.interaction, revision: "2", state: "expired" });
|
|
369
|
+
p.reject(stopped);
|
|
370
|
+
p.rejectConfirmation?.(stopped);
|
|
371
|
+
}
|
|
372
|
+
interactions.clear();
|
|
373
|
+
state();
|
|
374
|
+
};
|
|
375
|
+
try {
|
|
376
|
+
await deadline(native.initializationResult(), "Claude initialization timed out.");
|
|
377
|
+
if (disconnected)
|
|
378
|
+
throw new Error("Native Claude connection ended during initialization.");
|
|
379
|
+
await controls.refresh();
|
|
380
|
+
activity = "idle";
|
|
381
|
+
state();
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
await close();
|
|
385
|
+
throw error;
|
|
386
|
+
}
|
|
387
|
+
const send = async (text, operationId, expectedTurnId) => {
|
|
388
|
+
if (closed || disconnected || currentTurnId !== expectedTurnId || interactions.size)
|
|
389
|
+
throw new NativeRpcError(-32602, "Claude cannot accept input in this session state.");
|
|
390
|
+
if (currentTurnId !== null) {
|
|
391
|
+
if (!capabilities.steer)
|
|
392
|
+
throw new NativeRpcError(-32602, "This Claude version cannot accept input during an active turn.");
|
|
393
|
+
const confirmation = new Promise((resolve, reject) => steered.set(operationId, { text, started: false, resolve, reject }));
|
|
394
|
+
input.push({ type: "user", uuid: operationId, session_id: nativeId, message: { role: "user", content: text }, parent_tool_use_id: null });
|
|
395
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, `${operationId}:0`), revision: "1", kind: "user_message", content: [{ type: "text", text: limited(text) }] });
|
|
396
|
+
return deadline(confirmation, "Claude steering acceptance is unknown.", 60_000);
|
|
397
|
+
}
|
|
398
|
+
if ([...steered.values()].some(item => !item.started))
|
|
399
|
+
throw new NativeRpcError(-32602, "Claude has pending native input.");
|
|
400
|
+
currentTurnId = operationId;
|
|
401
|
+
turnStartedAt = null;
|
|
402
|
+
activity = "working";
|
|
403
|
+
state();
|
|
404
|
+
const receipt = new Promise((resolve, reject) => accepted.set(operationId, { resolve, reject }));
|
|
405
|
+
input.push({ type: "user", uuid: operationId, session_id: nativeId, message: { role: "user", content: text }, parent_tool_use_id: null });
|
|
406
|
+
// SDK input is not echoed in every live stream. Display the dispatch with
|
|
407
|
+
// the same identity used by native echo/history, without recording an ACK
|
|
408
|
+
// or feeding locally submitted content into native recovery evidence.
|
|
409
|
+
options.onTimeline({ entryId: nativeEntryId(nativeId, `${operationId}:0`), revision: "1", kind: "user_message", content: [{ type: "text", text: limited(text) }] });
|
|
410
|
+
await deadline(Promise.all([identity, receipt]), "Claude input result or native session identity is unknown.", 60_000);
|
|
411
|
+
return { disposition: "started", turnId: operationId };
|
|
412
|
+
};
|
|
413
|
+
return {
|
|
414
|
+
nativeSessionId: nativeId, send,
|
|
415
|
+
async refreshControls() { await controls.refresh(); return { disposition: "handled" }; },
|
|
416
|
+
async setSetting(id, value, operationId, revision) { if (closed || disconnected)
|
|
417
|
+
throw new NativeRpcError(-32602, "Native session unavailable."); await controls.set(id, value, operationId, revision); return { disposition: "handled" }; },
|
|
418
|
+
async executeCommand(id, args, operationId, revision, expectedTurnId) {
|
|
419
|
+
if (currentTurnId !== null || expectedTurnId !== null || interactions.size)
|
|
420
|
+
throw new NativeRpcError(-32602, "Claude commands require an idle session.");
|
|
421
|
+
const command = controls.command(id, revision);
|
|
422
|
+
return send(`/${command.name}${args ? ` ${args}` : ""}`, operationId, null);
|
|
423
|
+
},
|
|
424
|
+
async cancel(expectedTurnId) {
|
|
425
|
+
if (closed || disconnected || !currentTurnId || currentTurnId !== expectedTurnId || cancellation)
|
|
426
|
+
throw new NativeRpcError(-32602, "Native turn changed or cancellation is already pending.");
|
|
427
|
+
let waiter;
|
|
428
|
+
const stopped = new Promise((resolve, reject) => { waiter = { resolve, reject }; cancelWaiters.add(waiter); });
|
|
429
|
+
void stopped.catch(() => { });
|
|
430
|
+
const attempt = { turnId: currentTurnId, acknowledged: false, result: undefined };
|
|
431
|
+
cancellation = attempt;
|
|
432
|
+
try {
|
|
433
|
+
const interrupt = native.interrupt.bind(native);
|
|
434
|
+
const result = await deadline(interrupt(capabilities.steer ? { cancelQueued: true } : undefined), "Claude interrupt receipt is unconfirmed.");
|
|
435
|
+
if (closed || disconnected)
|
|
436
|
+
throw new Error("Native Claude closed before interrupt confirmation.");
|
|
437
|
+
attempt.acknowledged = true;
|
|
438
|
+
for (const id of Array.isArray(record(result).cancelled) ? record(result).cancelled : [])
|
|
439
|
+
if (typeof id === "string")
|
|
440
|
+
withdrawInput(id);
|
|
441
|
+
if (attempt.result)
|
|
442
|
+
project(attempt.result);
|
|
443
|
+
await deadline(stopped, "Claude turn cancellation is unconfirmed.");
|
|
444
|
+
return { disposition: "handled" };
|
|
445
|
+
}
|
|
446
|
+
finally {
|
|
447
|
+
cancelWaiters.delete(waiter);
|
|
448
|
+
if (cancellation === attempt) {
|
|
449
|
+
cancellation = undefined;
|
|
450
|
+
if (attempt.result && !attempt.acknowledged && !closed && !disconnected)
|
|
451
|
+
project(attempt.result);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
async respond(interactionId, revision, response) {
|
|
456
|
+
const pending = interactions.get(interactionId);
|
|
457
|
+
if (!pending || pending.submitted || pending.interaction.revision !== revision)
|
|
458
|
+
throw new NativeRpcError(-32602, "Native interaction is stale.");
|
|
459
|
+
validateResponse(pending.interaction, response);
|
|
460
|
+
const confirmation = new Promise((resolve, reject) => { pending.confirm = resolve; pending.rejectConfirmation = reject; });
|
|
461
|
+
pending.submitted = true;
|
|
462
|
+
pending.resolve(response);
|
|
463
|
+
// A resolved SDK callback is not a native receipt. The matching tool result,
|
|
464
|
+
// or a successful elicitation turn, supplies the confirmation boundary.
|
|
465
|
+
await deadline(confirmation, "Native Claude interaction result is unknown.");
|
|
466
|
+
return { disposition: "handled" };
|
|
467
|
+
}, waitForTurn: (turnId, deadline) => turns.wait(turnId, deadline), close,
|
|
468
|
+
};
|
|
469
|
+
};
|
|
470
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/commands/controller/providers/claude.ts"],"names":[],"mappings":"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"}
|