@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
|
@@ -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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"}
|