open-claude-agent-sdk 0.9.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/LICENSE +21 -0
- package/README.md +141 -0
- package/dist/api/MessageQueue.d.ts +39 -0
- package/dist/api/MessageQueue.d.ts.map +1 -0
- package/dist/api/MessageQueue.js +90 -0
- package/dist/api/MessageQueue.js.map +1 -0
- package/dist/api/MessageRouter.d.ts +41 -0
- package/dist/api/MessageRouter.d.ts.map +1 -0
- package/dist/api/MessageRouter.js +95 -0
- package/dist/api/MessageRouter.js.map +1 -0
- package/dist/api/ProcessFactory.d.ts +23 -0
- package/dist/api/ProcessFactory.d.ts.map +1 -0
- package/dist/api/ProcessFactory.js +103 -0
- package/dist/api/ProcessFactory.js.map +1 -0
- package/dist/api/QueryImpl.d.ts +103 -0
- package/dist/api/QueryImpl.d.ts.map +1 -0
- package/dist/api/QueryImpl.js +417 -0
- package/dist/api/QueryImpl.js.map +1 -0
- package/dist/api/query.d.ts +32 -0
- package/dist/api/query.d.ts.map +1 -0
- package/dist/api/query.js +31 -0
- package/dist/api/query.js.map +1 -0
- package/dist/core/argBuilder.d.ts +16 -0
- package/dist/core/argBuilder.d.ts.map +1 -0
- package/dist/core/argBuilder.js +204 -0
- package/dist/core/argBuilder.js.map +1 -0
- package/dist/core/control.d.ts +66 -0
- package/dist/core/control.d.ts.map +1 -0
- package/dist/core/control.js +222 -0
- package/dist/core/control.js.map +1 -0
- package/dist/core/hookConfig.d.ts +31 -0
- package/dist/core/hookConfig.d.ts.map +1 -0
- package/dist/core/hookConfig.js +45 -0
- package/dist/core/hookConfig.js.map +1 -0
- package/dist/core/mcpBridge.d.ts +29 -0
- package/dist/core/mcpBridge.d.ts.map +1 -0
- package/dist/core/mcpBridge.js +71 -0
- package/dist/core/mcpBridge.js.map +1 -0
- package/dist/core/spawn.d.ts +33 -0
- package/dist/core/spawn.d.ts.map +1 -0
- package/dist/core/spawn.js +102 -0
- package/dist/core/spawn.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp-entry.d.ts +22 -0
- package/dist/mcp-entry.d.ts.map +1 -0
- package/dist/mcp-entry.js +22 -0
- package/dist/mcp-entry.js.map +1 -0
- package/dist/mcp.d.ts +101 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +78 -0
- package/dist/mcp.js.map +1 -0
- package/dist/query.d.ts +19 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +18 -0
- package/dist/query.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/control.d.ts +149 -0
- package/dist/types/control.d.ts.map +1 -0
- package/dist/types/control.js +40 -0
- package/dist/types/control.js.map +1 -0
- package/dist/types/index.d.ts +53 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +85 -0
- package/src/api/MessageQueue.ts +99 -0
- package/src/api/MessageRouter.ts +112 -0
- package/src/api/ProcessFactory.ts +124 -0
- package/src/api/QueryImpl.ts +543 -0
- package/src/api/query.ts +36 -0
- package/src/core/argBuilder.ts +236 -0
- package/src/core/control.ts +295 -0
- package/src/core/hookConfig.ts +70 -0
- package/src/core/mcpBridge.ts +81 -0
- package/src/core/spawn.ts +125 -0
- package/src/index.ts +12 -0
- package/src/mcp/index.ts +6 -0
- package/src/mcp-entry.ts +22 -0
- package/src/mcp.ts +148 -0
- package/src/query.ts +21 -0
- package/src/tools/README.md +171 -0
- package/src/tools/capture-cli.cjs +202 -0
- package/src/tools/index.ts +6 -0
- package/src/tools/proxy-cli.cjs +162 -0
- package/src/types/control.ts +196 -0
- package/src/types/index.ts +204 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query implementation with bidirectional control protocol support
|
|
3
|
+
*
|
|
4
|
+
* Combines AsyncIterableIterator pattern with control methods for:
|
|
5
|
+
* - Multi-turn conversations (streamInput)
|
|
6
|
+
* - Runtime control (interrupt, setPermissionMode, setModel)
|
|
7
|
+
* - Background control protocol handling
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import type { AccountInfo, McpServerConfig, McpServerStatus, McpSetServersResult, ModelInfo, Options, PermissionMode, Query, RewindFilesResult, SDKControlInitializeResponse, SDKMessage, SDKUserMessage, SlashCommand } from '../types/index.ts';
|
|
12
|
+
import { type ProcessFactory } from './ProcessFactory.ts';
|
|
13
|
+
export declare class QueryImpl implements Query {
|
|
14
|
+
private process;
|
|
15
|
+
private messageQueue;
|
|
16
|
+
private controlHandler;
|
|
17
|
+
private router;
|
|
18
|
+
private initResponsePromise;
|
|
19
|
+
private initResolve;
|
|
20
|
+
private initReject;
|
|
21
|
+
private initRequestId;
|
|
22
|
+
private sdkMcpServerNames;
|
|
23
|
+
private isSingleUserTurn;
|
|
24
|
+
private abortController?;
|
|
25
|
+
private closed;
|
|
26
|
+
private abortHandler;
|
|
27
|
+
private pendingControlResponses;
|
|
28
|
+
private constructor();
|
|
29
|
+
/**
|
|
30
|
+
* Factory method — performs all initialization that was previously in the constructor.
|
|
31
|
+
*/
|
|
32
|
+
static create(params: {
|
|
33
|
+
prompt: string | AsyncIterable<SDKUserMessage>;
|
|
34
|
+
options?: Options;
|
|
35
|
+
}, processFactory?: ProcessFactory): QueryImpl;
|
|
36
|
+
/**
|
|
37
|
+
* Create an already-aborted QueryImpl (no process spawned).
|
|
38
|
+
*/
|
|
39
|
+
private static createAborted;
|
|
40
|
+
/**
|
|
41
|
+
* Connect SDK MCP server bridges (in-process servers with `instance` property).
|
|
42
|
+
*/
|
|
43
|
+
private static connectMcpBridges;
|
|
44
|
+
/**
|
|
45
|
+
* Set up process exit/error handlers and abort controller listener.
|
|
46
|
+
*/
|
|
47
|
+
private setupProcessHandlers;
|
|
48
|
+
/**
|
|
49
|
+
* Handle incoming message from router
|
|
50
|
+
*/
|
|
51
|
+
private handleMessage;
|
|
52
|
+
/**
|
|
53
|
+
* Handle stream completion from router
|
|
54
|
+
*/
|
|
55
|
+
private handleDone;
|
|
56
|
+
/**
|
|
57
|
+
* Handle control_response messages from CLI
|
|
58
|
+
* Routes to init promise or pending request/response handlers
|
|
59
|
+
*/
|
|
60
|
+
private handleControlResponse;
|
|
61
|
+
next(): Promise<IteratorResult<SDKMessage>>;
|
|
62
|
+
return(_value?: unknown): Promise<IteratorResult<SDKMessage>>;
|
|
63
|
+
throw(e?: unknown): Promise<IteratorResult<SDKMessage>>;
|
|
64
|
+
[Symbol.asyncIterator](): AsyncGenerator<SDKMessage, void>;
|
|
65
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
66
|
+
interrupt(): Promise<void>;
|
|
67
|
+
setPermissionMode(mode: PermissionMode): Promise<void>;
|
|
68
|
+
setModel(model?: string): Promise<void>;
|
|
69
|
+
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
|
|
70
|
+
streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;
|
|
71
|
+
close(): void;
|
|
72
|
+
initializationResult(): Promise<SDKControlInitializeResponse>;
|
|
73
|
+
supportedCommands(): Promise<SlashCommand[]>;
|
|
74
|
+
supportedModels(): Promise<ModelInfo[]>;
|
|
75
|
+
availableOutputStyles(): Promise<string[]>;
|
|
76
|
+
currentOutputStyle(): Promise<string>;
|
|
77
|
+
mcpServerStatus(): Promise<McpServerStatus[]>;
|
|
78
|
+
accountInfo(): Promise<AccountInfo>;
|
|
79
|
+
rewindFiles(_userMessageId: string, _options?: {
|
|
80
|
+
dryRun?: boolean;
|
|
81
|
+
}): Promise<RewindFilesResult>;
|
|
82
|
+
reconnectMcpServer(serverName: string): Promise<void>;
|
|
83
|
+
toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;
|
|
84
|
+
setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;
|
|
85
|
+
/**
|
|
86
|
+
* Reject initResponsePromise and all pending control response promises
|
|
87
|
+
*/
|
|
88
|
+
private rejectPendingPromises;
|
|
89
|
+
/** Write an NDJSON message to the CLI stdin */
|
|
90
|
+
private writeToStdin;
|
|
91
|
+
/** Build a control_request envelope for the wire */
|
|
92
|
+
private buildControlRequest;
|
|
93
|
+
private sendControlRequest;
|
|
94
|
+
/**
|
|
95
|
+
* Send a control request and return a Promise that resolves when the CLI responds
|
|
96
|
+
*/
|
|
97
|
+
private sendControlRequestWithResponse;
|
|
98
|
+
private generateRequestId;
|
|
99
|
+
private sendControlProtocolInit;
|
|
100
|
+
private sendInitialPrompt;
|
|
101
|
+
private consumeInputGenerator;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=QueryImpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryImpl.d.ts","sourceRoot":"","sources":["../../src/api/QueryImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query implementation with bidirectional control protocol support
|
|
3
|
+
*
|
|
4
|
+
* Combines AsyncIterableIterator pattern with control methods for:
|
|
5
|
+
* - Multi-turn conversations (streamInput)
|
|
6
|
+
* - Runtime control (interrupt, setPermissionMode, setModel)
|
|
7
|
+
* - Background control protocol handling
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import { ControlProtocolHandler, ControlRequests, } from "../core/control.js";
|
|
12
|
+
import { buildHookConfig } from "../core/hookConfig.js";
|
|
13
|
+
import { McpServerBridge } from "../core/mcpBridge.js";
|
|
14
|
+
import { MessageType, RequestSubtype, ResponseSubtype } from "../types/control.js";
|
|
15
|
+
import { MessageQueue } from "./MessageQueue.js";
|
|
16
|
+
import { MessageRouter } from "./MessageRouter.js";
|
|
17
|
+
import { DefaultProcessFactory } from "./ProcessFactory.js";
|
|
18
|
+
export class QueryImpl {
|
|
19
|
+
process;
|
|
20
|
+
messageQueue;
|
|
21
|
+
controlHandler;
|
|
22
|
+
router;
|
|
23
|
+
initResponsePromise;
|
|
24
|
+
initResolve;
|
|
25
|
+
initReject;
|
|
26
|
+
initRequestId;
|
|
27
|
+
sdkMcpServerNames;
|
|
28
|
+
isSingleUserTurn;
|
|
29
|
+
abortController;
|
|
30
|
+
closed = false;
|
|
31
|
+
abortHandler = null;
|
|
32
|
+
// Pending control request/response map (for mcpServerStatus, etc.)
|
|
33
|
+
pendingControlResponses = new Map();
|
|
34
|
+
constructor(process, messageQueue, controlHandler, router, initResponsePromise, initResolve, initReject, initRequestId, sdkMcpServerNames, isSingleUserTurn, abortController) {
|
|
35
|
+
this.process = process;
|
|
36
|
+
this.messageQueue = messageQueue;
|
|
37
|
+
this.controlHandler = controlHandler;
|
|
38
|
+
this.router = router;
|
|
39
|
+
this.initResponsePromise = initResponsePromise;
|
|
40
|
+
this.initResolve = initResolve;
|
|
41
|
+
this.initReject = initReject;
|
|
42
|
+
this.initRequestId = initRequestId;
|
|
43
|
+
this.sdkMcpServerNames = sdkMcpServerNames;
|
|
44
|
+
this.isSingleUserTurn = isSingleUserTurn;
|
|
45
|
+
this.abortController = abortController;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Factory method — performs all initialization that was previously in the constructor.
|
|
49
|
+
*/
|
|
50
|
+
static create(params, processFactory = new DefaultProcessFactory()) {
|
|
51
|
+
const { prompt, options = {} } = params;
|
|
52
|
+
// Check for pre-aborted signal BEFORE spawning process (save resources)
|
|
53
|
+
if (options.abortController?.signal.aborted) {
|
|
54
|
+
return QueryImpl.createAborted();
|
|
55
|
+
}
|
|
56
|
+
// 1. Spawn process via factory
|
|
57
|
+
const childProcess = processFactory.spawn(options);
|
|
58
|
+
// Validate stdio streams exist (they should with stdio: 'pipe')
|
|
59
|
+
if (!childProcess.stdin || !childProcess.stdout) {
|
|
60
|
+
throw new Error('Process stdin/stdout not available');
|
|
61
|
+
}
|
|
62
|
+
// 2. Initialize message queue
|
|
63
|
+
const messageQueue = new MessageQueue();
|
|
64
|
+
// 3. Initialize control protocol handler
|
|
65
|
+
const controlHandler = new ControlProtocolHandler(childProcess.stdin, options);
|
|
66
|
+
// 3.5. Connect SDK MCP servers (in-process servers with `instance` property)
|
|
67
|
+
const sdkMcpServerNames = [];
|
|
68
|
+
QueryImpl.connectMcpBridges(options, controlHandler, sdkMcpServerNames);
|
|
69
|
+
// 4. Set up init response promise before sending init request
|
|
70
|
+
let initResolve;
|
|
71
|
+
let initReject;
|
|
72
|
+
const initResponsePromise = new Promise((resolve, reject) => {
|
|
73
|
+
initResolve = resolve;
|
|
74
|
+
initReject = reject;
|
|
75
|
+
});
|
|
76
|
+
const initRequestId = `init_${Date.now()}`;
|
|
77
|
+
const isSingleUserTurn = typeof prompt === 'string';
|
|
78
|
+
// 5. Construct instance
|
|
79
|
+
const instance = new QueryImpl(childProcess, messageQueue, controlHandler,
|
|
80
|
+
// router placeholder — set below after constructing with callbacks
|
|
81
|
+
null, initResponsePromise, initResolve, initReject, initRequestId, sdkMcpServerNames, isSingleUserTurn, options.abortController);
|
|
82
|
+
// 6. Initialize message router with callbacks (needs instance for closures)
|
|
83
|
+
instance.router = new MessageRouter(childProcess.stdout, controlHandler, (msg) => instance.handleMessage(msg), (error) => instance.handleDone(error), (response) => instance.handleControlResponse(response));
|
|
84
|
+
// 7. Start background reading
|
|
85
|
+
instance.router.startReading();
|
|
86
|
+
// 8. Send control protocol initialization
|
|
87
|
+
instance.sendControlProtocolInit(options);
|
|
88
|
+
// 9. Handle input based on type
|
|
89
|
+
if (typeof prompt === 'string') {
|
|
90
|
+
instance.sendInitialPrompt(prompt);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
instance.consumeInputGenerator(prompt);
|
|
94
|
+
}
|
|
95
|
+
// 10. Setup process exit/error handlers + abort listener
|
|
96
|
+
instance.setupProcessHandlers();
|
|
97
|
+
return instance;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create an already-aborted QueryImpl (no process spawned).
|
|
101
|
+
*/
|
|
102
|
+
static createAborted() {
|
|
103
|
+
const messageQueue = new MessageQueue();
|
|
104
|
+
messageQueue.complete();
|
|
105
|
+
const abortError = new Error('Query was aborted before initialization');
|
|
106
|
+
const initResponsePromise = Promise.reject(abortError);
|
|
107
|
+
initResponsePromise.catch(() => { }); // Prevent unhandled rejection
|
|
108
|
+
const instance = new QueryImpl(null, messageQueue, null, null, initResponsePromise, () => { }, () => { }, '', [], false);
|
|
109
|
+
instance.closed = true;
|
|
110
|
+
return instance;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Connect SDK MCP server bridges (in-process servers with `instance` property).
|
|
114
|
+
*/
|
|
115
|
+
static connectMcpBridges(options, controlHandler, sdkMcpServerNames) {
|
|
116
|
+
if (!options.mcpServers)
|
|
117
|
+
return;
|
|
118
|
+
const bridges = new Map();
|
|
119
|
+
for (const [name, config] of Object.entries(options.mcpServers)) {
|
|
120
|
+
if ('instance' in config && config.instance) {
|
|
121
|
+
const bridge = new McpServerBridge(config.instance);
|
|
122
|
+
bridge.connect(); // async but we don't await — server connects in background
|
|
123
|
+
bridges.set(name, bridge);
|
|
124
|
+
sdkMcpServerNames.push(name);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (bridges.size > 0) {
|
|
128
|
+
controlHandler.setMcpServerBridges(bridges);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Set up process exit/error handlers and abort controller listener.
|
|
133
|
+
*/
|
|
134
|
+
setupProcessHandlers() {
|
|
135
|
+
this.process.on('exit', (code) => {
|
|
136
|
+
if (code !== 0 && code !== null && !this.messageQueue.isDone()) {
|
|
137
|
+
const error = new Error(`Claude CLI exited with code ${code}`);
|
|
138
|
+
this.messageQueue.complete(error);
|
|
139
|
+
this.rejectPendingPromises(error);
|
|
140
|
+
}
|
|
141
|
+
else if (!this.messageQueue.isDone()) {
|
|
142
|
+
this.messageQueue.complete();
|
|
143
|
+
this.rejectPendingPromises(new Error('CLI exited before responding'));
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
this.process.on('error', (err) => {
|
|
147
|
+
if (!this.messageQueue.isDone()) {
|
|
148
|
+
this.messageQueue.complete(err);
|
|
149
|
+
}
|
|
150
|
+
this.rejectPendingPromises(err);
|
|
151
|
+
});
|
|
152
|
+
if (this.abortController) {
|
|
153
|
+
this.abortHandler = () => {
|
|
154
|
+
this.interrupt();
|
|
155
|
+
};
|
|
156
|
+
this.abortController.signal.addEventListener('abort', this.abortHandler);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Handle incoming message from router
|
|
161
|
+
*/
|
|
162
|
+
handleMessage(msg) {
|
|
163
|
+
this.messageQueue.push(msg);
|
|
164
|
+
// For single-turn queries, close stdin on result to signal CLI to exit
|
|
165
|
+
if (msg.type === 'result' && this.isSingleUserTurn) {
|
|
166
|
+
this.process.stdin?.end();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Handle stream completion from router
|
|
171
|
+
*/
|
|
172
|
+
handleDone(error) {
|
|
173
|
+
if (!this.messageQueue.isDone()) {
|
|
174
|
+
this.messageQueue.complete(error);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Handle control_response messages from CLI
|
|
179
|
+
* Routes to init promise or pending request/response handlers
|
|
180
|
+
*/
|
|
181
|
+
handleControlResponse(response) {
|
|
182
|
+
if (!response)
|
|
183
|
+
return;
|
|
184
|
+
const requestId = response.request_id;
|
|
185
|
+
// Check if this is the init response
|
|
186
|
+
if (requestId === this.initRequestId) {
|
|
187
|
+
if (response.subtype === ResponseSubtype.SUCCESS) {
|
|
188
|
+
this.initResolve(response.response);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
this.initReject(new Error(`Initialization failed: ${response.error || 'unknown error'}`));
|
|
192
|
+
}
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Check if there's a pending request/response handler
|
|
196
|
+
const pending = requestId ? this.pendingControlResponses.get(requestId) : undefined;
|
|
197
|
+
if (pending) {
|
|
198
|
+
const { resolve, reject } = pending;
|
|
199
|
+
this.pendingControlResponses.delete(requestId);
|
|
200
|
+
if (response.subtype === ResponseSubtype.SUCCESS) {
|
|
201
|
+
resolve(response.response);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
reject(new Error(`Control request failed: ${response.error || 'unknown error'}`));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// ============================================================================
|
|
209
|
+
// AsyncGenerator implementation
|
|
210
|
+
// ============================================================================
|
|
211
|
+
async next() {
|
|
212
|
+
return this.messageQueue.next();
|
|
213
|
+
}
|
|
214
|
+
async return(_value) {
|
|
215
|
+
this.close();
|
|
216
|
+
return { value: undefined, done: true };
|
|
217
|
+
}
|
|
218
|
+
async throw(e) {
|
|
219
|
+
this.close();
|
|
220
|
+
throw e;
|
|
221
|
+
}
|
|
222
|
+
[Symbol.asyncIterator]() {
|
|
223
|
+
return this;
|
|
224
|
+
}
|
|
225
|
+
async [Symbol.asyncDispose]() {
|
|
226
|
+
this.close();
|
|
227
|
+
}
|
|
228
|
+
// ============================================================================
|
|
229
|
+
// Control methods (12 methods from Query interface)
|
|
230
|
+
// ============================================================================
|
|
231
|
+
async interrupt() {
|
|
232
|
+
this.sendControlRequest(ControlRequests.interrupt());
|
|
233
|
+
}
|
|
234
|
+
async setPermissionMode(mode) {
|
|
235
|
+
this.sendControlRequest(ControlRequests.setPermissionMode(mode));
|
|
236
|
+
}
|
|
237
|
+
async setModel(model) {
|
|
238
|
+
this.sendControlRequest(ControlRequests.setModel(model));
|
|
239
|
+
}
|
|
240
|
+
async setMaxThinkingTokens(maxThinkingTokens) {
|
|
241
|
+
this.sendControlRequest(ControlRequests.setMaxThinkingTokens(maxThinkingTokens));
|
|
242
|
+
}
|
|
243
|
+
async streamInput(stream) {
|
|
244
|
+
for await (const msg of stream) {
|
|
245
|
+
this.writeToStdin(msg);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
close() {
|
|
249
|
+
if (!this.closed) {
|
|
250
|
+
this.closed = true;
|
|
251
|
+
// Clean up abort controller listener
|
|
252
|
+
if (this.abortController && this.abortHandler) {
|
|
253
|
+
this.abortController.signal.removeEventListener('abort', this.abortHandler);
|
|
254
|
+
this.abortHandler = null;
|
|
255
|
+
}
|
|
256
|
+
this.router?.close();
|
|
257
|
+
this.process?.kill();
|
|
258
|
+
if (!this.messageQueue.isDone()) {
|
|
259
|
+
this.messageQueue.complete();
|
|
260
|
+
}
|
|
261
|
+
// Reject any pending control response promises
|
|
262
|
+
this.rejectPendingPromises(new Error('Query closed'));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async initializationResult() {
|
|
266
|
+
return this.initResponsePromise;
|
|
267
|
+
}
|
|
268
|
+
async supportedCommands() {
|
|
269
|
+
const init = await this.initResponsePromise;
|
|
270
|
+
return init.commands;
|
|
271
|
+
}
|
|
272
|
+
async supportedModels() {
|
|
273
|
+
const init = await this.initResponsePromise;
|
|
274
|
+
return init.models;
|
|
275
|
+
}
|
|
276
|
+
async availableOutputStyles() {
|
|
277
|
+
const init = await this.initResponsePromise;
|
|
278
|
+
return init.available_output_styles;
|
|
279
|
+
}
|
|
280
|
+
async currentOutputStyle() {
|
|
281
|
+
const init = await this.initResponsePromise;
|
|
282
|
+
return init.output_style;
|
|
283
|
+
}
|
|
284
|
+
async mcpServerStatus() {
|
|
285
|
+
const response = await this.sendControlRequestWithResponse(ControlRequests.mcpStatus());
|
|
286
|
+
return response.mcpServers;
|
|
287
|
+
}
|
|
288
|
+
async accountInfo() {
|
|
289
|
+
const init = await this.initResponsePromise;
|
|
290
|
+
return init.account;
|
|
291
|
+
}
|
|
292
|
+
async rewindFiles(_userMessageId, _options) {
|
|
293
|
+
throw new Error('rewindFiles() not yet implemented');
|
|
294
|
+
}
|
|
295
|
+
async reconnectMcpServer(serverName) {
|
|
296
|
+
await this.sendControlRequestWithResponse(ControlRequests.mcpReconnect(serverName));
|
|
297
|
+
}
|
|
298
|
+
async toggleMcpServer(serverName, enabled) {
|
|
299
|
+
await this.sendControlRequestWithResponse(ControlRequests.mcpToggle(serverName, enabled));
|
|
300
|
+
}
|
|
301
|
+
async setMcpServers(servers) {
|
|
302
|
+
return this.sendControlRequestWithResponse(ControlRequests.mcpSetServers(servers));
|
|
303
|
+
}
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// Private helpers
|
|
306
|
+
// ============================================================================
|
|
307
|
+
/**
|
|
308
|
+
* Reject initResponsePromise and all pending control response promises
|
|
309
|
+
*/
|
|
310
|
+
rejectPendingPromises(error) {
|
|
311
|
+
this.initReject?.(error);
|
|
312
|
+
for (const [, { reject }] of this.pendingControlResponses) {
|
|
313
|
+
reject(error);
|
|
314
|
+
}
|
|
315
|
+
this.pendingControlResponses.clear();
|
|
316
|
+
}
|
|
317
|
+
/** Write an NDJSON message to the CLI stdin */
|
|
318
|
+
writeToStdin(msg) {
|
|
319
|
+
this.process.stdin?.write(`${JSON.stringify(msg)}\n`);
|
|
320
|
+
}
|
|
321
|
+
/** Build a control_request envelope for the wire */
|
|
322
|
+
buildControlRequest(request, requestId) {
|
|
323
|
+
return {
|
|
324
|
+
type: MessageType.CONTROL_REQUEST,
|
|
325
|
+
request_id: requestId ?? this.generateRequestId(),
|
|
326
|
+
request,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
sendControlRequest(request) {
|
|
330
|
+
this.writeToStdin(this.buildControlRequest(request));
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Send a control request and return a Promise that resolves when the CLI responds
|
|
334
|
+
*/
|
|
335
|
+
// biome-ignore lint/suspicious/noExplicitAny: response shape varies by request type
|
|
336
|
+
sendControlRequestWithResponse(request) {
|
|
337
|
+
if (this.closed) {
|
|
338
|
+
return Promise.reject(new Error('Cannot send control request: query is closed'));
|
|
339
|
+
}
|
|
340
|
+
const envelope = this.buildControlRequest(request);
|
|
341
|
+
const promise = new Promise((resolve, reject) => {
|
|
342
|
+
this.pendingControlResponses.set(envelope.request_id, { resolve, reject });
|
|
343
|
+
});
|
|
344
|
+
this.writeToStdin(envelope);
|
|
345
|
+
return promise;
|
|
346
|
+
}
|
|
347
|
+
generateRequestId() {
|
|
348
|
+
return `req_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
349
|
+
}
|
|
350
|
+
async sendControlProtocolInit(options) {
|
|
351
|
+
const requestId = `init_${Date.now()}`;
|
|
352
|
+
this.initRequestId = requestId;
|
|
353
|
+
// Resolve systemPrompt to match official SDK behavior:
|
|
354
|
+
// - undefined → systemPrompt: "" (use minimal prompt, saves tokens)
|
|
355
|
+
// - string → systemPrompt: "..." (custom full prompt)
|
|
356
|
+
// - { type: 'preset', preset: 'claude_code' } → neither field (use claude_code preset)
|
|
357
|
+
// - { type: 'preset', preset: 'claude_code', append: '...' } → appendSystemPrompt: "..."
|
|
358
|
+
let systemPrompt;
|
|
359
|
+
let appendSystemPrompt;
|
|
360
|
+
if (options.systemPrompt === undefined) {
|
|
361
|
+
systemPrompt = '';
|
|
362
|
+
}
|
|
363
|
+
else if (typeof options.systemPrompt === 'string') {
|
|
364
|
+
systemPrompt = options.systemPrompt;
|
|
365
|
+
}
|
|
366
|
+
else if (options.systemPrompt.type === 'preset' && options.systemPrompt.append) {
|
|
367
|
+
appendSystemPrompt = options.systemPrompt.append;
|
|
368
|
+
}
|
|
369
|
+
const request = {
|
|
370
|
+
subtype: RequestSubtype.INITIALIZE,
|
|
371
|
+
...(systemPrompt !== undefined && { systemPrompt }),
|
|
372
|
+
...(appendSystemPrompt !== undefined && { appendSystemPrompt }),
|
|
373
|
+
...(this.sdkMcpServerNames.length > 0 && { sdkMcpServers: this.sdkMcpServerNames }),
|
|
374
|
+
...(options.agents && { agents: options.agents }),
|
|
375
|
+
};
|
|
376
|
+
// Register hooks if configured
|
|
377
|
+
if (options.hooks) {
|
|
378
|
+
request.hooks = buildHookConfig(options.hooks, this.controlHandler);
|
|
379
|
+
}
|
|
380
|
+
const init = {
|
|
381
|
+
type: MessageType.CONTROL_REQUEST,
|
|
382
|
+
request_id: requestId,
|
|
383
|
+
request,
|
|
384
|
+
};
|
|
385
|
+
if (process.env.DEBUG_HOOKS) {
|
|
386
|
+
console.error('[DEBUG] Sending control protocol init:', JSON.stringify(init, null, 2));
|
|
387
|
+
}
|
|
388
|
+
this.writeToStdin(init);
|
|
389
|
+
}
|
|
390
|
+
sendInitialPrompt(prompt) {
|
|
391
|
+
const initialMessage = {
|
|
392
|
+
type: 'user',
|
|
393
|
+
message: {
|
|
394
|
+
role: 'user',
|
|
395
|
+
content: [{ type: 'text', text: prompt }],
|
|
396
|
+
},
|
|
397
|
+
session_id: '',
|
|
398
|
+
parent_tool_use_id: null,
|
|
399
|
+
};
|
|
400
|
+
this.writeToStdin(initialMessage);
|
|
401
|
+
}
|
|
402
|
+
async consumeInputGenerator(generator) {
|
|
403
|
+
try {
|
|
404
|
+
for await (const userMsg of generator) {
|
|
405
|
+
this.writeToStdin(userMsg);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
const wrappedError = error instanceof Error ? error : new Error(String(error));
|
|
410
|
+
console.error('[QueryImpl] Error consuming input generator:', wrappedError);
|
|
411
|
+
if (!this.messageQueue.isDone()) {
|
|
412
|
+
this.messageQueue.complete(wrappedError);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=QueryImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryImpl.js","sourceRoot":"","sources":["../../src/api/QueryImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main query implementation - spawns Claude CLI and streams messages
|
|
3
|
+
*
|
|
4
|
+
* Reference: https://buildwithaws.substack.com/p/inside-the-claude-agent-sdk-from
|
|
5
|
+
*/
|
|
6
|
+
import type { Options, Query, SDKUserMessage } from '../types/index.ts';
|
|
7
|
+
/**
|
|
8
|
+
* Main query function - returns Query interface with control methods
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - AsyncGenerator for streaming messages
|
|
12
|
+
* - Control methods: interrupt(), setPermissionMode(), setModel(), etc.
|
|
13
|
+
* - Multi-turn conversations via streamInput() OR AsyncIterable input
|
|
14
|
+
* - Permission callbacks via options.canUseTool
|
|
15
|
+
* - Hook callbacks via options.hooks
|
|
16
|
+
*
|
|
17
|
+
* Input modes:
|
|
18
|
+
* - String: Simple one-shot or multi-turn via streamInput()
|
|
19
|
+
* - AsyncIterable: Streaming input mode (recommended for complex flows)
|
|
20
|
+
*
|
|
21
|
+
* Tip: Cast to ExtendedQuery to access extra convenience methods:
|
|
22
|
+
* const q = query({ prompt: '...' }) as ExtendedQuery;
|
|
23
|
+
* const styles = await q.availableOutputStyles();
|
|
24
|
+
*
|
|
25
|
+
* @param params Query parameters (prompt and options)
|
|
26
|
+
* @returns Query interface (AsyncGenerator + control methods)
|
|
27
|
+
*/
|
|
28
|
+
export declare function query(params: {
|
|
29
|
+
prompt: string | AsyncIterable<SDKUserMessage>;
|
|
30
|
+
options?: Options;
|
|
31
|
+
}): Query;
|
|
32
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/api/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE;IAC5B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,KAAK,CAER"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main query implementation - spawns Claude CLI and streams messages
|
|
3
|
+
*
|
|
4
|
+
* Reference: https://buildwithaws.substack.com/p/inside-the-claude-agent-sdk-from
|
|
5
|
+
*/
|
|
6
|
+
import { QueryImpl } from "./QueryImpl.js";
|
|
7
|
+
/**
|
|
8
|
+
* Main query function - returns Query interface with control methods
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - AsyncGenerator for streaming messages
|
|
12
|
+
* - Control methods: interrupt(), setPermissionMode(), setModel(), etc.
|
|
13
|
+
* - Multi-turn conversations via streamInput() OR AsyncIterable input
|
|
14
|
+
* - Permission callbacks via options.canUseTool
|
|
15
|
+
* - Hook callbacks via options.hooks
|
|
16
|
+
*
|
|
17
|
+
* Input modes:
|
|
18
|
+
* - String: Simple one-shot or multi-turn via streamInput()
|
|
19
|
+
* - AsyncIterable: Streaming input mode (recommended for complex flows)
|
|
20
|
+
*
|
|
21
|
+
* Tip: Cast to ExtendedQuery to access extra convenience methods:
|
|
22
|
+
* const q = query({ prompt: '...' }) as ExtendedQuery;
|
|
23
|
+
* const styles = await q.availableOutputStyles();
|
|
24
|
+
*
|
|
25
|
+
* @param params Query parameters (prompt and options)
|
|
26
|
+
* @returns Query interface (AsyncGenerator + control methods)
|
|
27
|
+
*/
|
|
28
|
+
export function query(params) {
|
|
29
|
+
return QueryImpl.create(params);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/api/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,KAAK,CAAC,MAGrB;IACC,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument builder
|
|
3
|
+
*
|
|
4
|
+
* Builds command-line arguments for spawning Claude CLI process.
|
|
5
|
+
* Transforms Options object into the argument array expected by CLI.
|
|
6
|
+
*
|
|
7
|
+
* Simple options are declared in FLAG_MAP (option key → CLI flag).
|
|
8
|
+
* Complex options with validation or transformation logic are handled explicitly below.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
import type { Options } from '../types/index.ts';
|
|
13
|
+
export declare function buildCliArgs(options: Options & {
|
|
14
|
+
prompt?: string;
|
|
15
|
+
}): string[];
|
|
16
|
+
//# sourceMappingURL=argBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argBuilder.d.ts","sourceRoot":"","sources":["../../src/core/argBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA4GjD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAmH7E"}
|