@tencent-ai/agent-sdk 0.1.0-next.989 → 0.1.1-next.24f5d9f.20251221
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 +73 -2
- package/cli/CHANGELOG.md +2418 -0
- package/cli/LICENSE.txt +19 -0
- package/cli/README.md +26 -0
- package/cli/bin/codebuddy +39 -0
- package/cli/dist/codebuddy.js +20 -0
- package/cli/package.json +45 -0
- package/cli/product.cloudhosted.json +242 -0
- package/cli/product.internal.json +244 -0
- package/cli/product.ioa.json +467 -0
- package/cli/product.json +948 -0
- package/cli/product.selfhosted.json +196 -0
- package/cli/vendor/ripgrep/COPYING +3 -0
- package/cli/vendor/ripgrep/arm64-darwin/rg +0 -0
- package/cli/vendor/ripgrep/arm64-darwin/ripgrep.node +0 -0
- package/cli/vendor/ripgrep/arm64-linux/rg +0 -0
- package/cli/vendor/ripgrep/arm64-linux/ripgrep.node +0 -0
- package/cli/vendor/ripgrep/x64-darwin/rg +0 -0
- package/cli/vendor/ripgrep/x64-darwin/ripgrep.node +0 -0
- package/cli/vendor/ripgrep/x64-linux/rg +0 -0
- package/cli/vendor/ripgrep/x64-linux/ripgrep.node +0 -0
- package/cli/vendor/ripgrep/x64-win32/rg.exe +0 -0
- package/cli/vendor/ripgrep/x64-win32/ripgrep.node +0 -0
- package/lib/errors.d.ts +10 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +17 -0
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +35 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +38 -0
- package/lib/index.js.map +1 -0
- package/lib/package.spec.js +3 -2
- package/lib/package.spec.js.map +1 -1
- package/lib/query.d.ts +47 -0
- package/lib/query.d.ts.map +1 -0
- package/lib/query.js +314 -0
- package/lib/query.js.map +1 -0
- package/lib/session.d.ts +55 -0
- package/lib/session.d.ts.map +1 -0
- package/lib/session.js +205 -0
- package/lib/session.js.map +1 -0
- package/lib/transport/index.d.ts +104 -0
- package/lib/transport/index.d.ts.map +1 -0
- package/lib/transport/index.js +20 -0
- package/lib/transport/index.js.map +1 -0
- package/lib/transport/process-transport.d.ts +65 -0
- package/lib/transport/process-transport.d.ts.map +1 -0
- package/lib/transport/process-transport.js +380 -0
- package/lib/transport/process-transport.js.map +1 -0
- package/lib/types.d.ts +667 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +56 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/cli-resolver.d.ts +36 -0
- package/lib/utils/cli-resolver.d.ts.map +1 -0
- package/lib/utils/cli-resolver.js +123 -0
- package/lib/utils/cli-resolver.js.map +1 -0
- package/lib/utils/env-utils.d.ts +9 -0
- package/lib/utils/env-utils.d.ts.map +1 -0
- package/lib/utils/env-utils.js +19 -0
- package/lib/utils/env-utils.js.map +1 -0
- package/lib/utils/index.d.ts +8 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +17 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/process.d.ts +8 -0
- package/lib/utils/process.d.ts.map +1 -0
- package/lib/utils/process.js +16 -0
- package/lib/utils/process.js.map +1 -0
- package/lib/utils/stream.d.ts +24 -0
- package/lib/utils/stream.d.ts.map +1 -0
- package/lib/utils/stream.js +85 -0
- package/lib/utils/stream.js.map +1 -0
- package/package.json +22 -14
- package/dist/agent-sdk.js +0 -1
- package/lib/common/application-utils.d.ts +0 -5
- package/lib/common/application-utils.d.ts.map +0 -1
- package/lib/common/application-utils.js +0 -18
- package/lib/common/application-utils.js.map +0 -1
- package/lib/common/component-registry.d.ts +0 -10
- package/lib/common/component-registry.d.ts.map +0 -1
- package/lib/common/component-registry.js +0 -50
- package/lib/common/component-registry.js.map +0 -1
- package/lib/common/index.d.ts +0 -4
- package/lib/common/index.d.ts.map +0 -1
- package/lib/common/index.js +0 -20
- package/lib/common/index.js.map +0 -1
- package/lib/common/services.d.ts +0 -8
- package/lib/common/services.d.ts.map +0 -1
- package/lib/common/services.js +0 -21
- package/lib/common/services.js.map +0 -1
package/lib/query.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Query Implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Query = void 0;
|
|
7
|
+
exports.query = query;
|
|
8
|
+
const transport_1 = require("./transport");
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
/**
|
|
11
|
+
* Create a query for interacting with the agent.
|
|
12
|
+
*/
|
|
13
|
+
function query(params) {
|
|
14
|
+
return new Query(params.prompt, params.options);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Query class - an AsyncGenerator that yields messages.
|
|
18
|
+
*/
|
|
19
|
+
class Query {
|
|
20
|
+
constructor(prompt, options) {
|
|
21
|
+
var _a;
|
|
22
|
+
this.prompt = prompt;
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.initialized = false;
|
|
25
|
+
this.hookCallbacks = new Map();
|
|
26
|
+
this.iterator = null;
|
|
27
|
+
this.transport = (0, transport_1.createTransport)({
|
|
28
|
+
executablePath: options === null || options === void 0 ? void 0 : options.pathToClaudeCodeExecutable,
|
|
29
|
+
cwd: options === null || options === void 0 ? void 0 : options.cwd,
|
|
30
|
+
env: options === null || options === void 0 ? void 0 : options.env,
|
|
31
|
+
permissionMode: options === null || options === void 0 ? void 0 : options.permissionMode,
|
|
32
|
+
// Model options
|
|
33
|
+
model: options === null || options === void 0 ? void 0 : options.model,
|
|
34
|
+
fallbackModel: options === null || options === void 0 ? void 0 : options.fallbackModel,
|
|
35
|
+
maxTurns: options === null || options === void 0 ? void 0 : options.maxTurns,
|
|
36
|
+
// Tool options
|
|
37
|
+
allowedTools: options === null || options === void 0 ? void 0 : options.allowedTools,
|
|
38
|
+
disallowedTools: options === null || options === void 0 ? void 0 : options.disallowedTools,
|
|
39
|
+
// Session options
|
|
40
|
+
continue: options === null || options === void 0 ? void 0 : options.continue,
|
|
41
|
+
resume: options === null || options === void 0 ? void 0 : options.resume,
|
|
42
|
+
forkSession: options === null || options === void 0 ? void 0 : options.forkSession,
|
|
43
|
+
// MCP options
|
|
44
|
+
mcpServers: options === null || options === void 0 ? void 0 : options.mcpServers,
|
|
45
|
+
strictMcpConfig: options === null || options === void 0 ? void 0 : options.strictMcpConfig,
|
|
46
|
+
// Settings
|
|
47
|
+
settingSources: options === null || options === void 0 ? void 0 : options.settingSources,
|
|
48
|
+
additionalDirectories: options === null || options === void 0 ? void 0 : options.additionalDirectories,
|
|
49
|
+
// Output options
|
|
50
|
+
includePartialMessages: options === null || options === void 0 ? void 0 : options.includePartialMessages,
|
|
51
|
+
// Extra args
|
|
52
|
+
extraArgs: options === null || options === void 0 ? void 0 : options.extraArgs,
|
|
53
|
+
stderr: options === null || options === void 0 ? void 0 : options.stderr,
|
|
54
|
+
});
|
|
55
|
+
this.abortController = (_a = options === null || options === void 0 ? void 0 : options.abortController) !== null && _a !== void 0 ? _a : new AbortController();
|
|
56
|
+
this.registerHooks(options === null || options === void 0 ? void 0 : options.hooks);
|
|
57
|
+
}
|
|
58
|
+
// ============= AsyncGenerator Implementation =============
|
|
59
|
+
[Symbol.asyncIterator]() {
|
|
60
|
+
if (!this.iterator) {
|
|
61
|
+
this.iterator = this.createIterator();
|
|
62
|
+
}
|
|
63
|
+
return this.iterator;
|
|
64
|
+
}
|
|
65
|
+
async next() {
|
|
66
|
+
return this[Symbol.asyncIterator]().next();
|
|
67
|
+
}
|
|
68
|
+
async return() {
|
|
69
|
+
await this.interrupt();
|
|
70
|
+
return { done: true, value: undefined };
|
|
71
|
+
}
|
|
72
|
+
async throw(e) {
|
|
73
|
+
await this.interrupt();
|
|
74
|
+
throw e;
|
|
75
|
+
}
|
|
76
|
+
// ============= Control Methods =============
|
|
77
|
+
async interrupt() {
|
|
78
|
+
try {
|
|
79
|
+
await this.transport.sendControlRequest({
|
|
80
|
+
subtype: 'interrupt',
|
|
81
|
+
reason: 'User interrupt',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (_a) {
|
|
85
|
+
// Ignore errors during interrupt
|
|
86
|
+
}
|
|
87
|
+
// Don't close transport - let the iterator continue to receive
|
|
88
|
+
// the result message and close naturally
|
|
89
|
+
}
|
|
90
|
+
async setPermissionMode(mode) {
|
|
91
|
+
await this.transport.sendControlRequest({
|
|
92
|
+
subtype: 'set_permission_mode',
|
|
93
|
+
mode,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async setModel(model) {
|
|
97
|
+
await this.transport.sendControlRequest({
|
|
98
|
+
subtype: 'set_model',
|
|
99
|
+
model,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
async setMaxThinkingTokens(maxThinkingTokens) {
|
|
103
|
+
await this.transport.sendControlRequest({
|
|
104
|
+
subtype: 'set_max_thinking_tokens',
|
|
105
|
+
max_thinking_tokens: maxThinkingTokens,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// ============= Query Methods =============
|
|
109
|
+
async supportedCommands() {
|
|
110
|
+
var _a;
|
|
111
|
+
const response = await this.transport.sendControlRequest({
|
|
112
|
+
subtype: 'initialize',
|
|
113
|
+
});
|
|
114
|
+
return (_a = response.commands) !== null && _a !== void 0 ? _a : [];
|
|
115
|
+
}
|
|
116
|
+
async supportedModels() {
|
|
117
|
+
var _a;
|
|
118
|
+
const response = await this.transport.sendControlRequest({
|
|
119
|
+
subtype: 'initialize',
|
|
120
|
+
});
|
|
121
|
+
return (_a = response.models) !== null && _a !== void 0 ? _a : [];
|
|
122
|
+
}
|
|
123
|
+
async mcpServerStatus() {
|
|
124
|
+
var _a;
|
|
125
|
+
const response = await this.transport.sendControlRequest({
|
|
126
|
+
subtype: 'mcp_status',
|
|
127
|
+
});
|
|
128
|
+
return (_a = response.mcp_servers) !== null && _a !== void 0 ? _a : [];
|
|
129
|
+
}
|
|
130
|
+
async accountInfo() {
|
|
131
|
+
var _a;
|
|
132
|
+
const response = await this.transport.sendControlRequest({
|
|
133
|
+
subtype: 'initialize',
|
|
134
|
+
});
|
|
135
|
+
return (_a = response.account) !== null && _a !== void 0 ? _a : {};
|
|
136
|
+
}
|
|
137
|
+
async streamInput(stream) {
|
|
138
|
+
for await (const message of stream) {
|
|
139
|
+
this.transport.sendUserMessage(message);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// ============= Private Methods =============
|
|
143
|
+
async *createIterator() {
|
|
144
|
+
var _a;
|
|
145
|
+
try {
|
|
146
|
+
await this.initialize();
|
|
147
|
+
await this.sendPrompt();
|
|
148
|
+
for await (const message of this.transport.messages()) {
|
|
149
|
+
if (this.abortController.signal.aborted) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if ((0, types_1.isControlRequest)(message)) {
|
|
153
|
+
await this.handleControlRequest(message);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if ((0, types_1.isMessage)(message)) {
|
|
157
|
+
if (message.type === 'stream_event' &&
|
|
158
|
+
!((_a = this.options) === null || _a === void 0 ? void 0 : _a.includePartialMessages)) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
yield message;
|
|
162
|
+
if (message.type === 'result') {
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
this.transport.close();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async initialize() {
|
|
173
|
+
var _a, _b, _c;
|
|
174
|
+
if (this.initialized) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const systemPrompt = typeof ((_a = this.options) === null || _a === void 0 ? void 0 : _a.systemPrompt) === 'string'
|
|
178
|
+
? this.options.systemPrompt
|
|
179
|
+
: undefined;
|
|
180
|
+
const appendSystemPrompt = typeof ((_b = this.options) === null || _b === void 0 ? void 0 : _b.systemPrompt) === 'object'
|
|
181
|
+
? this.options.systemPrompt.append
|
|
182
|
+
: undefined;
|
|
183
|
+
const initRequest = {
|
|
184
|
+
subtype: 'initialize',
|
|
185
|
+
hooks: this.buildHooksConfig(),
|
|
186
|
+
systemPrompt,
|
|
187
|
+
appendSystemPrompt,
|
|
188
|
+
agents: (_c = this.options) === null || _c === void 0 ? void 0 : _c.agents,
|
|
189
|
+
};
|
|
190
|
+
await this.transport.sendControlRequest(initRequest);
|
|
191
|
+
this.initialized = true;
|
|
192
|
+
}
|
|
193
|
+
async sendPrompt() {
|
|
194
|
+
if (typeof this.prompt === 'string') {
|
|
195
|
+
this.transport.sendUserMessage(this.prompt);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
for await (const message of this.prompt) {
|
|
199
|
+
this.transport.sendUserMessage(message);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async handleControlRequest(request) {
|
|
204
|
+
const { subtype } = request.request;
|
|
205
|
+
if (subtype === 'hook_callback') {
|
|
206
|
+
await this.handleHookCallback(request);
|
|
207
|
+
}
|
|
208
|
+
else if (subtype === 'can_use_tool') {
|
|
209
|
+
await this.handlePermissionRequest(request);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async handlePermissionRequest(request) {
|
|
213
|
+
var _a;
|
|
214
|
+
const permRequest = request.request;
|
|
215
|
+
const { tool_name, input, tool_use_id, agent_id, permission_suggestions, blocked_path, decision_reason, } = permRequest;
|
|
216
|
+
const canUseTool = (_a = this.options) === null || _a === void 0 ? void 0 : _a.canUseTool;
|
|
217
|
+
// If no canUseTool callback provided, deny by default
|
|
218
|
+
if (!canUseTool) {
|
|
219
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
220
|
+
allowed: false,
|
|
221
|
+
reason: 'No permission handler provided',
|
|
222
|
+
tool_use_id,
|
|
223
|
+
});
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
const result = await canUseTool(tool_name, input, {
|
|
228
|
+
signal: this.abortController.signal,
|
|
229
|
+
suggestions: permission_suggestions,
|
|
230
|
+
blockedPath: blocked_path,
|
|
231
|
+
decisionReason: decision_reason,
|
|
232
|
+
toolUseID: tool_use_id,
|
|
233
|
+
agentID: agent_id,
|
|
234
|
+
});
|
|
235
|
+
if (result.behavior === 'allow') {
|
|
236
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
237
|
+
allowed: true,
|
|
238
|
+
updatedInput: result.updatedInput,
|
|
239
|
+
tool_use_id,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
244
|
+
allowed: false,
|
|
245
|
+
reason: result.message,
|
|
246
|
+
interrupt: result.interrupt,
|
|
247
|
+
tool_use_id,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
253
|
+
allowed: false,
|
|
254
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
255
|
+
tool_use_id,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
async handleHookCallback(request) {
|
|
260
|
+
const { callback_id, input, tool_use_id } = request.request;
|
|
261
|
+
const callback = this.hookCallbacks.get(callback_id);
|
|
262
|
+
let response = { continue: true };
|
|
263
|
+
if (callback) {
|
|
264
|
+
try {
|
|
265
|
+
response = await callback(input, tool_use_id, { signal: this.abortController.signal });
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
response = {
|
|
269
|
+
continue: false,
|
|
270
|
+
stopReason: error instanceof Error ? error.message : String(error),
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
this.transport.sendControlResponse(request.request_id, response);
|
|
275
|
+
}
|
|
276
|
+
registerHooks(hooks) {
|
|
277
|
+
if (!hooks) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
this.registeredHooks = hooks;
|
|
281
|
+
// Build callback ID mapping for each hook - must match buildHooksConfig
|
|
282
|
+
for (const [event, matchers] of Object.entries(hooks)) {
|
|
283
|
+
if (!matchers) {
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
matchers.forEach((matcher, matcherIndex) => {
|
|
287
|
+
matcher.hooks.forEach((hook, hookIndex) => {
|
|
288
|
+
const callbackId = `hook_${event}_${matcherIndex}_${hookIndex}`;
|
|
289
|
+
this.hookCallbacks.set(callbackId, hook);
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
buildHooksConfig() {
|
|
295
|
+
if (!this.registeredHooks) {
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
const config = {};
|
|
299
|
+
for (const [event, matchers] of Object.entries(this.registeredHooks)) {
|
|
300
|
+
if (!matchers) {
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const hookEvent = event;
|
|
304
|
+
config[hookEvent] = matchers.map((matcher, matcherIndex) => ({
|
|
305
|
+
matcher: matcher.matcher,
|
|
306
|
+
hookCallbackIds: matcher.hooks.map((_, hookIndex) => `hook_${event}_${matcherIndex}_${hookIndex}`),
|
|
307
|
+
timeout: matcher.timeout,
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
return Object.keys(config).length > 0 ? config : undefined;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
exports.Query = Query;
|
|
314
|
+
//# sourceMappingURL=query.js.map
|
package/lib/query.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/lib/session.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 Session API
|
|
3
|
+
*
|
|
4
|
+
* Multi-turn conversation support.
|
|
5
|
+
*/
|
|
6
|
+
import type { Message, UserMessage, ResultMessage, SessionOptions } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Create a new session for multi-turn conversations.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSession(options: SessionOptions): SessionImpl;
|
|
11
|
+
/**
|
|
12
|
+
* Resume an existing session by ID.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resumeSession(sessionId: string, options: SessionOptions): SessionImpl;
|
|
15
|
+
/**
|
|
16
|
+
* One-shot convenience function for single prompts.
|
|
17
|
+
*/
|
|
18
|
+
export declare function prompt(message: string, options: SessionOptions): Promise<ResultMessage>;
|
|
19
|
+
/**
|
|
20
|
+
* Session class for multi-turn conversations.
|
|
21
|
+
*/
|
|
22
|
+
export declare class SessionImpl {
|
|
23
|
+
private options;
|
|
24
|
+
private transport;
|
|
25
|
+
private _sessionId;
|
|
26
|
+
private initialized;
|
|
27
|
+
private closed;
|
|
28
|
+
private messageIterator;
|
|
29
|
+
private abortController;
|
|
30
|
+
constructor(options: SessionOptions, resumeSessionId?: string);
|
|
31
|
+
/**
|
|
32
|
+
* The session ID. Available after receiving the first message.
|
|
33
|
+
*/
|
|
34
|
+
get sessionId(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Send a message to the agent.
|
|
37
|
+
*/
|
|
38
|
+
send(message: string | UserMessage): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Stream messages from the agent.
|
|
41
|
+
*/
|
|
42
|
+
stream(): AsyncGenerator<Message, void>;
|
|
43
|
+
/**
|
|
44
|
+
* Close the session.
|
|
45
|
+
*/
|
|
46
|
+
close(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Async disposal support.
|
|
49
|
+
*/
|
|
50
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
51
|
+
private initialize;
|
|
52
|
+
private handleControlRequest;
|
|
53
|
+
private handlePermissionRequest;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EAKjB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,WAAW,CAElE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,CAErF;AAED;;GAEG;AACH,wBAAsB,MAAM,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED;;GAEG;AACH,qBAAa,WAAW;IAShB,OAAO,CAAC,OAAO;IARnB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAwE;IAC/F,OAAO,CAAC,eAAe,CAAkB;gBAG7B,OAAO,EAAE,cAAc,EAC/B,eAAe,CAAC,EAAE,MAAM;IAU5B;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAKtB;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;OAEG;IACI,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;IA4C9C;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;YAM9B,UAAU;YAcV,oBAAoB;YAWpB,uBAAuB;CA4DxC"}
|
package/lib/session.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* V2 Session API
|
|
4
|
+
*
|
|
5
|
+
* Multi-turn conversation support.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SessionImpl = void 0;
|
|
9
|
+
exports.createSession = createSession;
|
|
10
|
+
exports.resumeSession = resumeSession;
|
|
11
|
+
exports.prompt = prompt;
|
|
12
|
+
const transport_1 = require("./transport");
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
/**
|
|
15
|
+
* Create a new session for multi-turn conversations.
|
|
16
|
+
*/
|
|
17
|
+
function createSession(options) {
|
|
18
|
+
return new SessionImpl(options);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resume an existing session by ID.
|
|
22
|
+
*/
|
|
23
|
+
function resumeSession(sessionId, options) {
|
|
24
|
+
return new SessionImpl(options, sessionId);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One-shot convenience function for single prompts.
|
|
28
|
+
*/
|
|
29
|
+
async function prompt(message, options) {
|
|
30
|
+
const session = createSession(options);
|
|
31
|
+
try {
|
|
32
|
+
await session.send(message);
|
|
33
|
+
for await (const msg of session.stream()) {
|
|
34
|
+
if (msg.type === 'result') {
|
|
35
|
+
return msg;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
throw new Error('No result message received');
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
session.close();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Session class for multi-turn conversations.
|
|
46
|
+
*/
|
|
47
|
+
class SessionImpl {
|
|
48
|
+
constructor(options, resumeSessionId) {
|
|
49
|
+
this.options = options;
|
|
50
|
+
this.initialized = false;
|
|
51
|
+
this.closed = false;
|
|
52
|
+
this.messageIterator = null;
|
|
53
|
+
this.transport = (0, transport_1.createTransport)({
|
|
54
|
+
executablePath: options.pathToClaudeCodeExecutable,
|
|
55
|
+
env: options.env,
|
|
56
|
+
});
|
|
57
|
+
this._sessionId = resumeSessionId !== null && resumeSessionId !== void 0 ? resumeSessionId : '';
|
|
58
|
+
this.abortController = new AbortController();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The session ID. Available after receiving the first message.
|
|
62
|
+
*/
|
|
63
|
+
get sessionId() {
|
|
64
|
+
if (!this._sessionId) {
|
|
65
|
+
throw new Error('Session not initialized. sessionId is available after receiving the first message.');
|
|
66
|
+
}
|
|
67
|
+
return this._sessionId;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Send a message to the agent.
|
|
71
|
+
*/
|
|
72
|
+
async send(message) {
|
|
73
|
+
if (this.closed) {
|
|
74
|
+
throw new Error('Session is closed');
|
|
75
|
+
}
|
|
76
|
+
if (!this.initialized) {
|
|
77
|
+
await this.initialize();
|
|
78
|
+
}
|
|
79
|
+
this.transport.sendUserMessage(message);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Stream messages from the agent.
|
|
83
|
+
*/
|
|
84
|
+
async *stream() {
|
|
85
|
+
if (this.closed) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (!this.initialized) {
|
|
89
|
+
await this.initialize();
|
|
90
|
+
}
|
|
91
|
+
// Reuse the same iterator across multiple receive() calls
|
|
92
|
+
if (!this.messageIterator) {
|
|
93
|
+
this.messageIterator = this.transport.messages();
|
|
94
|
+
}
|
|
95
|
+
while (true) {
|
|
96
|
+
const { value: message, done } = await this.messageIterator.next();
|
|
97
|
+
if (done || this.closed) {
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
// Handle control requests
|
|
101
|
+
if ((0, types_1.isControlRequest)(message)) {
|
|
102
|
+
await this.handleControlRequest(message);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Yield messages
|
|
106
|
+
if ((0, types_1.isMessage)(message)) {
|
|
107
|
+
// Extract session ID from first message
|
|
108
|
+
if (!this._sessionId && 'session_id' in message) {
|
|
109
|
+
this._sessionId = message.session_id;
|
|
110
|
+
}
|
|
111
|
+
yield message;
|
|
112
|
+
// Stop on result message (end of turn)
|
|
113
|
+
if (message.type === 'result') {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Close the session.
|
|
121
|
+
*/
|
|
122
|
+
close() {
|
|
123
|
+
if (this.closed) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this.closed = true;
|
|
127
|
+
this.transport.close();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Async disposal support.
|
|
131
|
+
*/
|
|
132
|
+
async [Symbol.asyncDispose]() {
|
|
133
|
+
this.close();
|
|
134
|
+
}
|
|
135
|
+
// ============= Private Methods =============
|
|
136
|
+
async initialize() {
|
|
137
|
+
if (this.initialized) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
await this.transport.sendControlRequest({
|
|
141
|
+
subtype: 'initialize',
|
|
142
|
+
systemPrompt: undefined,
|
|
143
|
+
appendSystemPrompt: undefined,
|
|
144
|
+
});
|
|
145
|
+
this.initialized = true;
|
|
146
|
+
}
|
|
147
|
+
async handleControlRequest(request) {
|
|
148
|
+
const { subtype } = request.request;
|
|
149
|
+
if (subtype === 'hook_callback') {
|
|
150
|
+
// Default: continue
|
|
151
|
+
this.transport.sendControlResponse(request.request_id, { continue: true });
|
|
152
|
+
}
|
|
153
|
+
else if (subtype === 'can_use_tool') {
|
|
154
|
+
await this.handlePermissionRequest(request);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async handlePermissionRequest(request) {
|
|
158
|
+
const permRequest = request.request;
|
|
159
|
+
const { tool_name, input, tool_use_id, agent_id, permission_suggestions, blocked_path, decision_reason, } = permRequest;
|
|
160
|
+
const canUseTool = this.options.canUseTool;
|
|
161
|
+
// If no canUseTool callback provided, deny by default
|
|
162
|
+
if (!canUseTool) {
|
|
163
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
164
|
+
allowed: false,
|
|
165
|
+
reason: 'No permission handler provided',
|
|
166
|
+
tool_use_id,
|
|
167
|
+
});
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const result = await canUseTool(tool_name, input, {
|
|
172
|
+
signal: this.abortController.signal,
|
|
173
|
+
suggestions: permission_suggestions,
|
|
174
|
+
blockedPath: blocked_path,
|
|
175
|
+
decisionReason: decision_reason,
|
|
176
|
+
toolUseID: tool_use_id,
|
|
177
|
+
agentID: agent_id,
|
|
178
|
+
});
|
|
179
|
+
if (result.behavior === 'allow') {
|
|
180
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
181
|
+
allowed: true,
|
|
182
|
+
updatedInput: result.updatedInput,
|
|
183
|
+
tool_use_id,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
188
|
+
allowed: false,
|
|
189
|
+
reason: result.message,
|
|
190
|
+
interrupt: result.interrupt,
|
|
191
|
+
tool_use_id,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
this.transport.sendControlResponse(request.request_id, {
|
|
197
|
+
allowed: false,
|
|
198
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
199
|
+
tool_use_id,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.SessionImpl = SessionImpl;
|
|
205
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|