@tencent-ai/agent-sdk 0.1.0-next.989 → 0.1.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.
Files changed (91) hide show
  1. package/README.md +73 -2
  2. package/cli/CHANGELOG.md +2418 -0
  3. package/cli/LICENSE.txt +19 -0
  4. package/cli/README.md +26 -0
  5. package/cli/bin/codebuddy +39 -0
  6. package/cli/dist/codebuddy.js +20 -0
  7. package/cli/package.json +44 -0
  8. package/cli/product.cloudhosted.json +242 -0
  9. package/cli/product.internal.json +244 -0
  10. package/cli/product.ioa.json +467 -0
  11. package/cli/product.json +948 -0
  12. package/cli/product.selfhosted.json +196 -0
  13. package/cli/vendor/ripgrep/COPYING +3 -0
  14. package/cli/vendor/ripgrep/arm64-darwin/rg +0 -0
  15. package/cli/vendor/ripgrep/arm64-darwin/ripgrep.node +0 -0
  16. package/cli/vendor/ripgrep/arm64-linux/rg +0 -0
  17. package/cli/vendor/ripgrep/arm64-linux/ripgrep.node +0 -0
  18. package/cli/vendor/ripgrep/x64-darwin/rg +0 -0
  19. package/cli/vendor/ripgrep/x64-darwin/ripgrep.node +0 -0
  20. package/cli/vendor/ripgrep/x64-linux/rg +0 -0
  21. package/cli/vendor/ripgrep/x64-linux/ripgrep.node +0 -0
  22. package/cli/vendor/ripgrep/x64-win32/rg.exe +0 -0
  23. package/cli/vendor/ripgrep/x64-win32/ripgrep.node +0 -0
  24. package/lib/errors.d.ts +10 -0
  25. package/lib/errors.d.ts.map +1 -0
  26. package/lib/errors.js +17 -0
  27. package/lib/errors.js.map +1 -0
  28. package/lib/index.d.ts +36 -0
  29. package/lib/index.d.ts.map +1 -0
  30. package/lib/index.js +40 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/package.spec.js +3 -2
  33. package/lib/package.spec.js.map +1 -1
  34. package/lib/query.d.ts +46 -0
  35. package/lib/query.d.ts.map +1 -0
  36. package/lib/query.js +270 -0
  37. package/lib/query.js.map +1 -0
  38. package/lib/session.d.ts +53 -0
  39. package/lib/session.d.ts.map +1 -0
  40. package/lib/session.js +163 -0
  41. package/lib/session.js.map +1 -0
  42. package/lib/transport/index.d.ts +104 -0
  43. package/lib/transport/index.d.ts.map +1 -0
  44. package/lib/transport/index.js +20 -0
  45. package/lib/transport/index.js.map +1 -0
  46. package/lib/transport/process-transport.d.ts +65 -0
  47. package/lib/transport/process-transport.d.ts.map +1 -0
  48. package/lib/transport/process-transport.js +380 -0
  49. package/lib/transport/process-transport.js.map +1 -0
  50. package/lib/types.d.ts +603 -0
  51. package/lib/types.d.ts.map +1 -0
  52. package/lib/types.js +58 -0
  53. package/lib/types.js.map +1 -0
  54. package/lib/utils/cli-resolver.d.ts +36 -0
  55. package/lib/utils/cli-resolver.d.ts.map +1 -0
  56. package/lib/utils/cli-resolver.js +123 -0
  57. package/lib/utils/cli-resolver.js.map +1 -0
  58. package/lib/utils/env-utils.d.ts +9 -0
  59. package/lib/utils/env-utils.d.ts.map +1 -0
  60. package/lib/utils/env-utils.js +19 -0
  61. package/lib/utils/env-utils.js.map +1 -0
  62. package/lib/utils/index.d.ts +8 -0
  63. package/lib/utils/index.d.ts.map +1 -0
  64. package/lib/utils/index.js +17 -0
  65. package/lib/utils/index.js.map +1 -0
  66. package/lib/utils/process.d.ts +8 -0
  67. package/lib/utils/process.d.ts.map +1 -0
  68. package/lib/utils/process.js +16 -0
  69. package/lib/utils/process.js.map +1 -0
  70. package/lib/utils/stream.d.ts +24 -0
  71. package/lib/utils/stream.d.ts.map +1 -0
  72. package/lib/utils/stream.js +85 -0
  73. package/lib/utils/stream.js.map +1 -0
  74. package/package.json +21 -14
  75. package/dist/agent-sdk.js +0 -1
  76. package/lib/common/application-utils.d.ts +0 -5
  77. package/lib/common/application-utils.d.ts.map +0 -1
  78. package/lib/common/application-utils.js +0 -18
  79. package/lib/common/application-utils.js.map +0 -1
  80. package/lib/common/component-registry.d.ts +0 -10
  81. package/lib/common/component-registry.d.ts.map +0 -1
  82. package/lib/common/component-registry.js +0 -50
  83. package/lib/common/component-registry.js.map +0 -1
  84. package/lib/common/index.d.ts +0 -4
  85. package/lib/common/index.d.ts.map +0 -1
  86. package/lib/common/index.js +0 -20
  87. package/lib/common/index.js.map +0 -1
  88. package/lib/common/services.d.ts +0 -8
  89. package/lib/common/services.d.ts.map +0 -1
  90. package/lib/common/services.js +0 -21
  91. package/lib/common/services.js.map +0 -1
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Process Transport
3
+ *
4
+ * Transport implementation that spawns CLI process and communicates via stdin/stdout.
5
+ */
6
+ import type { Transport, ProcessTransportOptions } from './index';
7
+ import type { Message, UserMessage, ControlRequest, ControlRequestPayload } from '../types';
8
+ /**
9
+ * ProcessTransport - communicates with CLI via spawned process.
10
+ */
11
+ export declare class ProcessTransport implements Transport {
12
+ private process;
13
+ private rl;
14
+ private options;
15
+ private messageStream;
16
+ private pendingRequests;
17
+ private requestIdCounter;
18
+ private closed;
19
+ constructor(options?: ProcessTransportOptions);
20
+ /**
21
+ * Build CLI arguments from options.
22
+ * Only includes options that are supported by the CLI.
23
+ */
24
+ private buildArgs;
25
+ /**
26
+ * Start the transport - spawns CLI process.
27
+ */
28
+ start(): void;
29
+ /**
30
+ * Async generator for incoming messages.
31
+ */
32
+ messages(): AsyncGenerator<Message | ControlRequest, void, unknown>;
33
+ /**
34
+ * Send a user message to CLI.
35
+ */
36
+ sendUserMessage(content: string | UserMessage): void;
37
+ /**
38
+ * Send a control request and wait for response.
39
+ */
40
+ sendControlRequest<T = Record<string, unknown>>(payload: ControlRequestPayload, timeoutMs?: number): Promise<T>;
41
+ /**
42
+ * Send a control response.
43
+ */
44
+ sendControlResponse(requestId: string, response: Record<string, unknown>): void;
45
+ /**
46
+ * Send a control error response.
47
+ */
48
+ sendControlErrorResponse(requestId: string, error: string): void;
49
+ /**
50
+ * Check if transport is ready.
51
+ */
52
+ isReady(): boolean;
53
+ /**
54
+ * Close the transport.
55
+ */
56
+ close(): void;
57
+ private handleLine;
58
+ private handleControlResponse;
59
+ private handleClose;
60
+ private handleError;
61
+ private handleProcessError;
62
+ private handleProcessExit;
63
+ private writeLine;
64
+ }
65
+ //# sourceMappingURL=process-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-transport.d.ts","sourceRoot":"","sources":["../../src/transport/process-transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EACR,OAAO,EACP,WAAW,EACX,cAAc,EACd,qBAAqB,EAGxB,MAAM,UAAU,CAAC;AAoBlB;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAC9C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE,uBAA4B;IAIjD;;;OAGG;IACH,OAAO,CAAC,SAAS;IAgGjB;;OAEG;IACH,KAAK,IAAI,IAAI;IAmDb;;OAEG;IACI,QAAQ,IAAI,cAAc,CAAC,OAAO,GAAG,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC;IAU1E;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAuBpD;;OAEG;IACG,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,OAAO,EAAE,qBAAqB,EAC9B,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY/E;;OAEG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYhE;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IA+Bb,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;CAOpB"}
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ /**
3
+ * Process Transport
4
+ *
5
+ * Transport implementation that spawns CLI process and communicates via stdin/stdout.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.ProcessTransport = void 0;
42
+ const readline = __importStar(require("node:readline"));
43
+ const node_child_process_1 = require("node:child_process");
44
+ const utils_1 = require("../utils");
45
+ function createDeferred() {
46
+ let resolve;
47
+ let reject;
48
+ const promise = new Promise((res, rej) => {
49
+ resolve = res;
50
+ reject = rej;
51
+ });
52
+ return { promise, resolve, reject };
53
+ }
54
+ /**
55
+ * ProcessTransport - communicates with CLI via spawned process.
56
+ */
57
+ class ProcessTransport {
58
+ constructor(options = {}) {
59
+ this.process = null;
60
+ this.rl = null;
61
+ this.messageStream = null;
62
+ this.pendingRequests = new Map();
63
+ this.requestIdCounter = 0;
64
+ this.closed = false;
65
+ this.options = options;
66
+ }
67
+ /**
68
+ * Build CLI arguments from options.
69
+ * Only includes options that are supported by the CLI.
70
+ */
71
+ buildArgs() {
72
+ const args = [
73
+ '--output-format', 'stream-json',
74
+ '--verbose',
75
+ '--input-format', 'stream-json',
76
+ ];
77
+ const opts = this.options;
78
+ // Model options
79
+ if (opts.model) {
80
+ args.push('--model', opts.model);
81
+ }
82
+ if (opts.fallbackModel) {
83
+ if (opts.model && opts.fallbackModel === opts.model) {
84
+ throw new Error('Fallback model cannot be the same as the main model.');
85
+ }
86
+ args.push('--fallback-model', opts.fallbackModel);
87
+ }
88
+ // Turn limits
89
+ if (opts.maxTurns !== undefined) {
90
+ args.push('--max-turns', opts.maxTurns.toString());
91
+ }
92
+ // Permission options
93
+ if (opts.permissionMode) {
94
+ args.push('--permission-mode', opts.permissionMode);
95
+ }
96
+ if (opts.dangerouslySkipPermissions) {
97
+ args.push('--dangerously-skip-permissions');
98
+ }
99
+ // Tool options
100
+ if (opts.allowedTools && opts.allowedTools.length > 0) {
101
+ args.push('--allowedTools', opts.allowedTools.join(','));
102
+ }
103
+ if (opts.disallowedTools && opts.disallowedTools.length > 0) {
104
+ args.push('--disallowedTools', opts.disallowedTools.join(','));
105
+ }
106
+ // Session options
107
+ if (opts.continue) {
108
+ args.push('--continue');
109
+ }
110
+ if (opts.resume) {
111
+ args.push('--resume', opts.resume);
112
+ }
113
+ if (opts.forkSession) {
114
+ args.push('--fork-session');
115
+ }
116
+ // MCP options
117
+ if (opts.mcpServers && Object.keys(opts.mcpServers).length > 0) {
118
+ args.push('--mcp-config', JSON.stringify({ mcpServers: opts.mcpServers }));
119
+ }
120
+ if (opts.strictMcpConfig) {
121
+ args.push('--strict-mcp-config');
122
+ }
123
+ // Settings
124
+ if (opts.settingSources && opts.settingSources.length > 0) {
125
+ args.push('--setting-sources', opts.settingSources.join(','));
126
+ }
127
+ // Additional directories
128
+ if (opts.additionalDirectories) {
129
+ for (const dir of opts.additionalDirectories) {
130
+ args.push('--add-dir', dir);
131
+ }
132
+ }
133
+ // Output options
134
+ if (opts.includePartialMessages) {
135
+ args.push('--include-partial-messages');
136
+ }
137
+ // Extra args (custom flags)
138
+ if (opts.extraArgs) {
139
+ for (const [flag, value] of Object.entries(opts.extraArgs)) {
140
+ if (value === null) {
141
+ args.push(`--${flag}`);
142
+ }
143
+ else {
144
+ args.push(`--${flag}`, value);
145
+ }
146
+ }
147
+ }
148
+ // Additional args passed directly
149
+ if (opts.args) {
150
+ args.push(...opts.args);
151
+ }
152
+ return args;
153
+ }
154
+ /**
155
+ * Start the transport - spawns CLI process.
156
+ */
157
+ start() {
158
+ var _a, _b;
159
+ if (this.process) {
160
+ return;
161
+ }
162
+ // Create message stream with cleanup callback
163
+ this.messageStream = new utils_1.Stream(() => {
164
+ this.close();
165
+ });
166
+ const executablePath = (_a = this.options.executablePath) !== null && _a !== void 0 ? _a : (0, utils_1.resolveCLIPath)();
167
+ const cwd = (_b = this.options.cwd) !== null && _b !== void 0 ? _b : process.cwd();
168
+ const env = {
169
+ ...process.env,
170
+ ...this.options.env,
171
+ };
172
+ // Set SDK entrypoint
173
+ if (!env.CODEBUDDY_CODE_ENTRYPOINT) {
174
+ env.CODEBUDDY_CODE_ENTRYPOINT = 'sdk-ts';
175
+ }
176
+ const args = this.buildArgs();
177
+ this.process = (0, node_child_process_1.spawn)(executablePath, args, {
178
+ cwd,
179
+ stdio: ['pipe', 'pipe', 'pipe'],
180
+ env,
181
+ });
182
+ this.process.on('error', (err) => this.handleProcessError(err));
183
+ this.process.on('exit', (code) => this.handleProcessExit(code));
184
+ // Handle stderr
185
+ if (this.options.stderr && this.process.stderr) {
186
+ this.process.stderr.on('data', (data) => {
187
+ var _a, _b;
188
+ (_b = (_a = this.options).stderr) === null || _b === void 0 ? void 0 : _b.call(_a, data.toString());
189
+ });
190
+ }
191
+ // Set up readline for stdout
192
+ this.rl = readline.createInterface({
193
+ input: this.process.stdout,
194
+ terminal: false,
195
+ });
196
+ this.rl.on('line', (line) => this.handleLine(line));
197
+ this.rl.on('close', () => this.handleClose());
198
+ this.rl.on('error', (err) => this.handleError(err));
199
+ }
200
+ /**
201
+ * Async generator for incoming messages.
202
+ */
203
+ async *messages() {
204
+ this.start();
205
+ if (!this.messageStream) {
206
+ return;
207
+ }
208
+ yield* this.messageStream;
209
+ }
210
+ /**
211
+ * Send a user message to CLI.
212
+ */
213
+ sendUserMessage(content) {
214
+ // Ensure transport is started
215
+ this.start();
216
+ let message;
217
+ if (typeof content === 'string') {
218
+ message = {
219
+ type: 'user',
220
+ session_id: '',
221
+ message: {
222
+ role: 'user',
223
+ content: content,
224
+ },
225
+ parent_tool_use_id: null,
226
+ };
227
+ }
228
+ else {
229
+ message = content;
230
+ }
231
+ this.writeLine(message);
232
+ }
233
+ /**
234
+ * Send a control request and wait for response.
235
+ */
236
+ async sendControlRequest(payload, timeoutMs) {
237
+ var _a;
238
+ // Ensure transport is started
239
+ this.start();
240
+ const requestId = `sdk_${Date.now()}_${++this.requestIdCounter}`;
241
+ const request = {
242
+ type: 'control_request',
243
+ request_id: requestId,
244
+ request: payload,
245
+ };
246
+ const deferred = createDeferred();
247
+ this.pendingRequests.set(requestId, deferred);
248
+ // Set timeout
249
+ const timeout = (_a = timeoutMs !== null && timeoutMs !== void 0 ? timeoutMs : this.options.requestTimeoutMs) !== null && _a !== void 0 ? _a : 60000;
250
+ const timeoutId = setTimeout(() => {
251
+ if (this.pendingRequests.has(requestId)) {
252
+ this.pendingRequests.delete(requestId);
253
+ deferred.reject(new Error(`Request timeout: ${payload.subtype}`));
254
+ }
255
+ }, timeout);
256
+ // Clean up timeout on resolution
257
+ deferred.promise.finally(() => clearTimeout(timeoutId));
258
+ this.writeLine(request);
259
+ return deferred.promise;
260
+ }
261
+ /**
262
+ * Send a control response.
263
+ */
264
+ sendControlResponse(requestId, response) {
265
+ const controlResponse = {
266
+ type: 'control_response',
267
+ response: {
268
+ subtype: 'success',
269
+ request_id: requestId,
270
+ response,
271
+ },
272
+ };
273
+ this.writeLine(controlResponse);
274
+ }
275
+ /**
276
+ * Send a control error response.
277
+ */
278
+ sendControlErrorResponse(requestId, error) {
279
+ const controlResponse = {
280
+ type: 'control_response',
281
+ response: {
282
+ subtype: 'error',
283
+ request_id: requestId,
284
+ error,
285
+ },
286
+ };
287
+ this.writeLine(controlResponse);
288
+ }
289
+ /**
290
+ * Check if transport is ready.
291
+ */
292
+ isReady() {
293
+ return !this.closed && this.process !== null;
294
+ }
295
+ /**
296
+ * Close the transport.
297
+ */
298
+ close() {
299
+ if (this.closed) {
300
+ return;
301
+ }
302
+ this.closed = true;
303
+ if (this.rl) {
304
+ this.rl.close();
305
+ this.rl = null;
306
+ }
307
+ if (this.process) {
308
+ this.process.kill();
309
+ this.process = null;
310
+ }
311
+ // Reject all pending requests
312
+ for (const [, deferred] of this.pendingRequests) {
313
+ deferred.reject(new Error('Transport closed'));
314
+ }
315
+ this.pendingRequests.clear();
316
+ // Signal stream completion
317
+ if (this.messageStream) {
318
+ this.messageStream.done();
319
+ }
320
+ }
321
+ // ============= Private Methods =============
322
+ handleLine(line) {
323
+ const trimmed = line.trim();
324
+ if (!trimmed) {
325
+ return;
326
+ }
327
+ try {
328
+ const message = JSON.parse(trimmed);
329
+ // Handle control responses for pending requests
330
+ if (message.type === 'control_response') {
331
+ this.handleControlResponse(message);
332
+ return;
333
+ }
334
+ // Enqueue messages and control requests for iteration
335
+ if (this.messageStream) {
336
+ this.messageStream.enqueue(message);
337
+ }
338
+ }
339
+ catch (_a) {
340
+ // Ignore non-JSON lines (e.g., verbose output, debug messages)
341
+ }
342
+ }
343
+ handleControlResponse(message) {
344
+ var _a;
345
+ const { response } = message;
346
+ const pending = this.pendingRequests.get(response.request_id);
347
+ if (!pending) {
348
+ return;
349
+ }
350
+ this.pendingRequests.delete(response.request_id);
351
+ if (response.subtype === 'error') {
352
+ pending.reject(new Error(response.error));
353
+ }
354
+ else {
355
+ pending.resolve((_a = response.response) !== null && _a !== void 0 ? _a : {});
356
+ }
357
+ }
358
+ handleClose() {
359
+ this.close();
360
+ }
361
+ handleError(_error) {
362
+ this.close();
363
+ }
364
+ handleProcessError(_error) {
365
+ this.close();
366
+ }
367
+ handleProcessExit(_code) {
368
+ this.close();
369
+ }
370
+ writeLine(data) {
371
+ var _a;
372
+ if (!((_a = this.process) === null || _a === void 0 ? void 0 : _a.stdin)) {
373
+ throw new Error('Transport not started');
374
+ }
375
+ const line = JSON.stringify(data) + '\n';
376
+ this.process.stdin.write(line);
377
+ }
378
+ }
379
+ exports.ProcessTransport = ProcessTransport;
380
+ //# sourceMappingURL=process-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-transport.js","sourceRoot":"","sources":["../../src/transport/process-transport.ts"],"names":[],"mappings":"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"}