@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.
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 +45 -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 +35 -0
  29. package/lib/index.d.ts.map +1 -0
  30. package/lib/index.js +38 -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 +47 -0
  35. package/lib/query.d.ts.map +1 -0
  36. package/lib/query.js +314 -0
  37. package/lib/query.js.map +1 -0
  38. package/lib/session.d.ts +55 -0
  39. package/lib/session.d.ts.map +1 -0
  40. package/lib/session.js +205 -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 +667 -0
  51. package/lib/types.d.ts.map +1 -0
  52. package/lib/types.js +56 -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 +22 -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,104 @@
1
+ /**
2
+ * Transport Layer
3
+ *
4
+ * Abstract interface for communication with CLI.
5
+ */
6
+ import type { Message, UserMessage, ControlRequest, ControlRequestPayload } from '../types';
7
+ /**
8
+ * Transport interface - abstraction for CLI communication.
9
+ */
10
+ export interface Transport {
11
+ /**
12
+ * Start the transport.
13
+ */
14
+ start(): void;
15
+ /**
16
+ * Async generator for incoming messages.
17
+ */
18
+ messages(): AsyncGenerator<Message | ControlRequest, void, unknown>;
19
+ /**
20
+ * Send a user message to CLI.
21
+ */
22
+ sendUserMessage(content: string | UserMessage): void;
23
+ /**
24
+ * Send a control request and wait for response.
25
+ */
26
+ sendControlRequest<T = Record<string, unknown>>(payload: ControlRequestPayload, timeoutMs?: number): Promise<T>;
27
+ /**
28
+ * Send a control response.
29
+ */
30
+ sendControlResponse(requestId: string, response: Record<string, unknown>): void;
31
+ /**
32
+ * Send a control error response.
33
+ */
34
+ sendControlErrorResponse(requestId: string, error: string): void;
35
+ /**
36
+ * Check if transport is ready.
37
+ */
38
+ isReady(): boolean;
39
+ /**
40
+ * Close the transport.
41
+ */
42
+ close(): void;
43
+ }
44
+ /**
45
+ * Options for creating transports.
46
+ */
47
+ export interface TransportOptions {
48
+ /** Request timeout in milliseconds */
49
+ requestTimeoutMs?: number;
50
+ }
51
+ /**
52
+ * Options for ProcessTransport.
53
+ * Only includes options that are supported by the CLI.
54
+ */
55
+ export interface ProcessTransportOptions extends TransportOptions {
56
+ /** Path to CLI executable */
57
+ executablePath?: string;
58
+ /** Working directory */
59
+ cwd?: string;
60
+ /** Environment variables */
61
+ env?: Record<string, string | undefined>;
62
+ /** Additional CLI arguments */
63
+ args?: string[];
64
+ /** Permission mode */
65
+ permissionMode?: string;
66
+ /** Additional directories (--add-dir) */
67
+ additionalDirectories?: string[];
68
+ /** Allowed tools (--allowedTools) */
69
+ allowedTools?: string[];
70
+ /** Disallowed tools (--disallowedTools) */
71
+ disallowedTools?: string[];
72
+ /** Model (--model) */
73
+ model?: string;
74
+ /** Fallback model (--fallback-model) */
75
+ fallbackModel?: string;
76
+ /** Max turns (--max-turns) */
77
+ maxTurns?: number;
78
+ /** MCP servers config (--mcp-config) */
79
+ mcpServers?: Record<string, unknown>;
80
+ /** Strict MCP config (--strict-mcp-config) */
81
+ strictMcpConfig?: boolean;
82
+ /** Setting sources (--setting-sources) */
83
+ settingSources?: string[];
84
+ /** Continue conversation (--continue) */
85
+ continue?: boolean;
86
+ /** Resume session ID (--resume) */
87
+ resume?: string;
88
+ /** Fork session (--fork-session) */
89
+ forkSession?: boolean;
90
+ /** Dangerously skip permissions (-y) */
91
+ dangerouslySkipPermissions?: boolean;
92
+ /** Include partial messages (--include-partial-messages) */
93
+ includePartialMessages?: boolean;
94
+ /** Extra args (custom flags) */
95
+ extraArgs?: Record<string, string | null>;
96
+ /** Stderr callback */
97
+ stderr?: (data: string) => void;
98
+ }
99
+ /**
100
+ * Create a transport that communicates with CLI via spawned process.
101
+ */
102
+ export declare function createTransport(options?: ProcessTransportOptions): Transport;
103
+ export { ProcessTransport } from './process-transport';
104
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Transport Layer
4
+ *
5
+ * Abstract interface for communication with CLI.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ProcessTransport = void 0;
9
+ exports.createTransport = createTransport;
10
+ const process_transport_1 = require("./process-transport");
11
+ /**
12
+ * Create a transport that communicates with CLI via spawned process.
13
+ */
14
+ function createTransport(options = {}) {
15
+ return new process_transport_1.ProcessTransport(options);
16
+ }
17
+ // Re-export ProcessTransport
18
+ var process_transport_2 = require("./process-transport");
19
+ Object.defineProperty(exports, "ProcessTransport", { enumerable: true, get: function () { return process_transport_2.ProcessTransport; } });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAsHH,0CAEC;AAhHD,2DAAuD;AA2GvD;;GAEG;AACH,SAAgB,eAAe,CAAC,UAAmC,EAAE;IACjE,OAAO,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,6BAA6B;AAC7B,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
@@ -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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"}