@kadi.build/core 0.8.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +424 -1
- package/agent.json +19 -0
- package/dist/agent-json.d.ts +231 -0
- package/dist/agent-json.d.ts.map +1 -0
- package/dist/agent-json.js +554 -0
- package/dist/agent-json.js.map +1 -0
- package/dist/client.d.ts +41 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +102 -43
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/process-manager.d.ts +235 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +647 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/stdio-framing.d.ts +88 -0
- package/dist/stdio-framing.d.ts.map +1 -0
- package/dist/stdio-framing.js +194 -0
- package/dist/stdio-framing.js.map +1 -0
- package/dist/transports/stdio.d.ts.map +1 -1
- package/dist/transports/stdio.js +3 -181
- package/dist/transports/stdio.js.map +1 -1
- package/dist/types.d.ts +274 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +107 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +212 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -1
- package/scripts/symlink.mjs +131 -0
- package/src/agent-json.ts +655 -0
- package/src/client.ts +120 -46
- package/src/errors.ts +15 -0
- package/src/index.ts +32 -0
- package/src/process-manager.ts +821 -0
- package/src/stdio-framing.ts +227 -0
- package/src/transports/stdio.ts +4 -221
- package/src/types.ts +291 -23
- package/src/utils.ts +246 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio message framing for kadi-core
|
|
3
|
+
*
|
|
4
|
+
* Shared Content-Length framing used by both the stdio transport (ability loading)
|
|
5
|
+
* and the ProcessManager (bridge mode).
|
|
6
|
+
*
|
|
7
|
+
* Protocol (same as LSP - Language Server Protocol):
|
|
8
|
+
* - Each message is prefixed with "Content-Length: <bytes>\r\n\r\n"
|
|
9
|
+
* - The content is JSON (JSON-RPC 2.0 format)
|
|
10
|
+
*
|
|
11
|
+
* This module is language-agnostic — any process that speaks this protocol
|
|
12
|
+
* can communicate with these readers/writers.
|
|
13
|
+
*/
|
|
14
|
+
import type { Readable, Writable } from 'stream';
|
|
15
|
+
import type { JsonRpcRequest, JsonRpcResponse, JsonRpcNotification } from './types.js';
|
|
16
|
+
export type { JsonRpcNotification };
|
|
17
|
+
/**
|
|
18
|
+
* Reads JSON-RPC messages from a stream using Content-Length framing.
|
|
19
|
+
*
|
|
20
|
+
* Uses Buffer (not string) for binary safety. Handles partial messages
|
|
21
|
+
* across chunks and recovers from malformed headers.
|
|
22
|
+
*
|
|
23
|
+
* Message format:
|
|
24
|
+
* ```
|
|
25
|
+
* Content-Length: 42\r\n
|
|
26
|
+
* \r\n
|
|
27
|
+
* {"jsonrpc":"2.0","id":1,"result":{...}}
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class StdioMessageReader {
|
|
31
|
+
private timeoutMs;
|
|
32
|
+
private buffer;
|
|
33
|
+
private static readonly HEADER_END;
|
|
34
|
+
private static readonly HEADER_END_LENGTH;
|
|
35
|
+
private static readonly CONTENT_LENGTH_MARKER;
|
|
36
|
+
private static readonly CONTENT_LENGTH_PATTERN;
|
|
37
|
+
private waiters;
|
|
38
|
+
/** Handler for event notifications */
|
|
39
|
+
private notificationHandler;
|
|
40
|
+
constructor(stream: Readable, timeoutMs?: number);
|
|
41
|
+
/**
|
|
42
|
+
* Set handler for notifications (messages without id).
|
|
43
|
+
*/
|
|
44
|
+
setNotificationHandler(handler: (notification: JsonRpcNotification) => void): void;
|
|
45
|
+
/**
|
|
46
|
+
* Handle incoming data from the stream.
|
|
47
|
+
*/
|
|
48
|
+
private onData;
|
|
49
|
+
/**
|
|
50
|
+
* Process the buffer, extracting complete messages.
|
|
51
|
+
*/
|
|
52
|
+
private processBuffer;
|
|
53
|
+
/**
|
|
54
|
+
* Try to read a single complete message from the buffer.
|
|
55
|
+
* @returns Parsed message, or null if no complete message available
|
|
56
|
+
*/
|
|
57
|
+
private tryReadSingleMessage;
|
|
58
|
+
/**
|
|
59
|
+
* Skip to next potential header (error recovery).
|
|
60
|
+
* Called when we encounter a malformed header.
|
|
61
|
+
*/
|
|
62
|
+
private skipToNextHeader;
|
|
63
|
+
/**
|
|
64
|
+
* Dispatch a parsed message to waiting handlers or notification handler.
|
|
65
|
+
*/
|
|
66
|
+
private dispatchMessage;
|
|
67
|
+
/**
|
|
68
|
+
* Wait for a response with a specific id.
|
|
69
|
+
*/
|
|
70
|
+
waitForResponse(id: string | number, timeoutOverride?: number): Promise<JsonRpcResponse>;
|
|
71
|
+
/**
|
|
72
|
+
* Cancel all pending waiters (for cleanup).
|
|
73
|
+
* @param error - Optional error to reject with (defaults to generic close error)
|
|
74
|
+
*/
|
|
75
|
+
cancelAll(error?: Error): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Writes JSON-RPC messages to a stream using Content-Length framing.
|
|
79
|
+
*/
|
|
80
|
+
export declare class StdioMessageWriter {
|
|
81
|
+
private stream;
|
|
82
|
+
constructor(stream: Writable);
|
|
83
|
+
/**
|
|
84
|
+
* Write a message to the stream.
|
|
85
|
+
*/
|
|
86
|
+
write(message: JsonRpcRequest): void;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=stdio-framing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-framing.d.ts","sourceRoot":"","sources":["../src/stdio-framing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGvF,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAMpC;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAkB;IAiBC,OAAO,CAAC,SAAS;IAhB/C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAK;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAkC;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAE3E,OAAO,CAAC,OAAO,CAKP;IAER,sCAAsC;IACtC,OAAO,CAAC,mBAAmB,CAA8D;gBAE7E,MAAM,EAAE,QAAQ,EAAU,SAAS,GAAE,MAAe;IAIhE;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAIlF;;OAEG;IACH,OAAO,CAAC,MAAM;IAKd;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBxF;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;CAQ/B;AAMD;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ;IAEpC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;CAOrC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio message framing for kadi-core
|
|
3
|
+
*
|
|
4
|
+
* Shared Content-Length framing used by both the stdio transport (ability loading)
|
|
5
|
+
* and the ProcessManager (bridge mode).
|
|
6
|
+
*
|
|
7
|
+
* Protocol (same as LSP - Language Server Protocol):
|
|
8
|
+
* - Each message is prefixed with "Content-Length: <bytes>\r\n\r\n"
|
|
9
|
+
* - The content is JSON (JSON-RPC 2.0 format)
|
|
10
|
+
*
|
|
11
|
+
* This module is language-agnostic — any process that speaks this protocol
|
|
12
|
+
* can communicate with these readers/writers.
|
|
13
|
+
*/
|
|
14
|
+
import { KadiError } from './errors.js';
|
|
15
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
16
|
+
// MESSAGE READER (Content-Length framing)
|
|
17
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
18
|
+
/**
|
|
19
|
+
* Reads JSON-RPC messages from a stream using Content-Length framing.
|
|
20
|
+
*
|
|
21
|
+
* Uses Buffer (not string) for binary safety. Handles partial messages
|
|
22
|
+
* across chunks and recovers from malformed headers.
|
|
23
|
+
*
|
|
24
|
+
* Message format:
|
|
25
|
+
* ```
|
|
26
|
+
* Content-Length: 42\r\n
|
|
27
|
+
* \r\n
|
|
28
|
+
* {"jsonrpc":"2.0","id":1,"result":{...}}
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export class StdioMessageReader {
|
|
32
|
+
timeoutMs;
|
|
33
|
+
buffer = Buffer.alloc(0);
|
|
34
|
+
static HEADER_END = '\r\n\r\n';
|
|
35
|
+
static HEADER_END_LENGTH = 4; // \r\n\r\n
|
|
36
|
+
static CONTENT_LENGTH_MARKER = Buffer.from('Content-Length:');
|
|
37
|
+
static CONTENT_LENGTH_PATTERN = /Content-Length:\s*(\d+)/;
|
|
38
|
+
waiters = [];
|
|
39
|
+
/** Handler for event notifications */
|
|
40
|
+
notificationHandler = null;
|
|
41
|
+
constructor(stream, timeoutMs = 600000) {
|
|
42
|
+
this.timeoutMs = timeoutMs;
|
|
43
|
+
stream.on('data', (chunk) => this.onData(chunk));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Set handler for notifications (messages without id).
|
|
47
|
+
*/
|
|
48
|
+
setNotificationHandler(handler) {
|
|
49
|
+
this.notificationHandler = handler;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handle incoming data from the stream.
|
|
53
|
+
*/
|
|
54
|
+
onData(chunk) {
|
|
55
|
+
this.buffer = Buffer.concat([this.buffer, chunk]);
|
|
56
|
+
this.processBuffer();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Process the buffer, extracting complete messages.
|
|
60
|
+
*/
|
|
61
|
+
processBuffer() {
|
|
62
|
+
let message;
|
|
63
|
+
while ((message = this.tryReadSingleMessage()) !== null) {
|
|
64
|
+
this.dispatchMessage(message);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Try to read a single complete message from the buffer.
|
|
69
|
+
* @returns Parsed message, or null if no complete message available
|
|
70
|
+
*/
|
|
71
|
+
tryReadSingleMessage() {
|
|
72
|
+
// Look for header end marker
|
|
73
|
+
const headerEndIndex = this.buffer.indexOf(StdioMessageReader.HEADER_END);
|
|
74
|
+
if (headerEndIndex === -1) {
|
|
75
|
+
return null; // No complete header yet
|
|
76
|
+
}
|
|
77
|
+
// Parse Content-Length from header
|
|
78
|
+
const header = this.buffer.slice(0, headerEndIndex).toString('utf8');
|
|
79
|
+
const match = header.match(StdioMessageReader.CONTENT_LENGTH_PATTERN);
|
|
80
|
+
if (!match?.[1]) {
|
|
81
|
+
// Invalid header - skip to next potential header
|
|
82
|
+
this.skipToNextHeader();
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const contentLength = parseInt(match[1], 10);
|
|
86
|
+
const contentStart = headerEndIndex + StdioMessageReader.HEADER_END_LENGTH;
|
|
87
|
+
const contentEnd = contentStart + contentLength;
|
|
88
|
+
// Check if we have the complete message
|
|
89
|
+
if (this.buffer.length < contentEnd) {
|
|
90
|
+
return null; // Need more data
|
|
91
|
+
}
|
|
92
|
+
// Extract and parse JSON
|
|
93
|
+
const content = this.buffer.slice(contentStart, contentEnd).toString('utf8');
|
|
94
|
+
this.buffer = this.buffer.slice(contentEnd); // Remove processed data
|
|
95
|
+
try {
|
|
96
|
+
return JSON.parse(content);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Invalid JSON - log error so developer knows something's wrong
|
|
100
|
+
console.error('[KADI] Failed to parse message from child process:', error);
|
|
101
|
+
console.error('[KADI] Raw content (truncated):', content.slice(0, 200));
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Skip to next potential header (error recovery).
|
|
107
|
+
* Called when we encounter a malformed header.
|
|
108
|
+
*/
|
|
109
|
+
skipToNextHeader() {
|
|
110
|
+
const nextHeaderIndex = this.buffer.indexOf(StdioMessageReader.CONTENT_LENGTH_MARKER, 1);
|
|
111
|
+
if (nextHeaderIndex === -1) {
|
|
112
|
+
this.buffer = Buffer.alloc(0); // No more headers, clear buffer
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.buffer = this.buffer.slice(nextHeaderIndex);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Dispatch a parsed message to waiting handlers or notification handler.
|
|
120
|
+
*/
|
|
121
|
+
dispatchMessage(message) {
|
|
122
|
+
// Check if this is a notification (no id field)
|
|
123
|
+
if (!('id' in message) || message.id === undefined) {
|
|
124
|
+
// It's a notification - route to notification handler
|
|
125
|
+
if (this.notificationHandler) {
|
|
126
|
+
this.notificationHandler(message);
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// It's a response - find and remove waiter for this message id
|
|
131
|
+
const waiterIndex = this.waiters.findIndex((w) => w.id === message.id);
|
|
132
|
+
if (waiterIndex === -1) {
|
|
133
|
+
return; // No one waiting for this response
|
|
134
|
+
}
|
|
135
|
+
// splice returns removed elements - use destructuring to get the waiter
|
|
136
|
+
const [waiter] = this.waiters.splice(waiterIndex, 1);
|
|
137
|
+
if (!waiter) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
clearTimeout(waiter.timeout);
|
|
141
|
+
waiter.resolve(message);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Wait for a response with a specific id.
|
|
145
|
+
*/
|
|
146
|
+
waitForResponse(id, timeoutOverride) {
|
|
147
|
+
const effectiveTimeout = timeoutOverride ?? this.timeoutMs;
|
|
148
|
+
return new Promise((resolve, reject) => {
|
|
149
|
+
const timeout = setTimeout(() => {
|
|
150
|
+
// Remove from waiters
|
|
151
|
+
const index = this.waiters.findIndex((w) => w.id === id);
|
|
152
|
+
if (index !== -1) {
|
|
153
|
+
this.waiters.splice(index, 1);
|
|
154
|
+
}
|
|
155
|
+
reject(new KadiError(`Timeout waiting for response to request ${id}`, 'TIMEOUT', { requestId: id, timeoutMs: effectiveTimeout }));
|
|
156
|
+
}, effectiveTimeout);
|
|
157
|
+
this.waiters.push({ id, resolve, reject, timeout });
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Cancel all pending waiters (for cleanup).
|
|
162
|
+
* @param error - Optional error to reject with (defaults to generic close error)
|
|
163
|
+
*/
|
|
164
|
+
cancelAll(error) {
|
|
165
|
+
const rejectError = error ?? new KadiError('Connection closed', 'STDIO_ERROR');
|
|
166
|
+
for (const waiter of this.waiters) {
|
|
167
|
+
clearTimeout(waiter.timeout);
|
|
168
|
+
waiter.reject(rejectError);
|
|
169
|
+
}
|
|
170
|
+
this.waiters = [];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
174
|
+
// MESSAGE WRITER (Content-Length framing)
|
|
175
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
176
|
+
/**
|
|
177
|
+
* Writes JSON-RPC messages to a stream using Content-Length framing.
|
|
178
|
+
*/
|
|
179
|
+
export class StdioMessageWriter {
|
|
180
|
+
stream;
|
|
181
|
+
constructor(stream) {
|
|
182
|
+
this.stream = stream;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Write a message to the stream.
|
|
186
|
+
*/
|
|
187
|
+
write(message) {
|
|
188
|
+
const json = JSON.stringify(message);
|
|
189
|
+
const contentLength = Buffer.byteLength(json, 'utf-8');
|
|
190
|
+
const header = `Content-Length: ${contentLength}\r\n\r\n`;
|
|
191
|
+
this.stream.write(header + json);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=stdio-framing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-framing.js","sourceRoot":"","sources":["../src/stdio-framing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAA+C,MAAM,aAAa,CAAC;AAuB9F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,aAAa,CAAC,CAgSxB"}
|
package/dist/transports/stdio.js
CHANGED
|
@@ -21,190 +21,12 @@ import { spawn } from 'child_process';
|
|
|
21
21
|
import { z } from 'zod';
|
|
22
22
|
import { KadiError } from '../errors.js';
|
|
23
23
|
import * as protocol from '../protocol.js';
|
|
24
|
+
import { StdioMessageReader, StdioMessageWriter } from '../stdio-framing.js';
|
|
24
25
|
/** Schema for event notification params */
|
|
25
26
|
const EventNotificationParams = z.object({
|
|
26
27
|
name: z.string(),
|
|
27
28
|
data: z.unknown(),
|
|
28
29
|
});
|
|
29
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
30
|
-
// MESSAGE READER (Content-Length framing)
|
|
31
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
32
|
-
/**
|
|
33
|
-
* Reads JSON-RPC messages from a stream using Content-Length framing.
|
|
34
|
-
*
|
|
35
|
-
* Uses Buffer (not string) for binary safety. Handles partial messages
|
|
36
|
-
* across chunks and recovers from malformed headers.
|
|
37
|
-
*
|
|
38
|
-
* Message format:
|
|
39
|
-
* ```
|
|
40
|
-
* Content-Length: 42\r\n
|
|
41
|
-
* \r\n
|
|
42
|
-
* {"jsonrpc":"2.0","id":1,"result":{...}}
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
class StdioReader {
|
|
46
|
-
timeoutMs;
|
|
47
|
-
buffer = Buffer.alloc(0);
|
|
48
|
-
static HEADER_END = '\r\n\r\n';
|
|
49
|
-
static HEADER_END_LENGTH = 4; // \r\n\r\n
|
|
50
|
-
static CONTENT_LENGTH_MARKER = Buffer.from('Content-Length:');
|
|
51
|
-
static CONTENT_LENGTH_PATTERN = /Content-Length:\s*(\d+)/;
|
|
52
|
-
waiters = [];
|
|
53
|
-
/** Handler for event notifications */
|
|
54
|
-
notificationHandler = null;
|
|
55
|
-
constructor(stream, timeoutMs = 600000) {
|
|
56
|
-
this.timeoutMs = timeoutMs;
|
|
57
|
-
stream.on('data', (chunk) => this.onData(chunk));
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Set handler for notifications (messages without id).
|
|
61
|
-
*/
|
|
62
|
-
setNotificationHandler(handler) {
|
|
63
|
-
this.notificationHandler = handler;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Handle incoming data from the stream.
|
|
67
|
-
*/
|
|
68
|
-
onData(chunk) {
|
|
69
|
-
this.buffer = Buffer.concat([this.buffer, chunk]);
|
|
70
|
-
this.processBuffer();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Process the buffer, extracting complete messages.
|
|
74
|
-
*/
|
|
75
|
-
processBuffer() {
|
|
76
|
-
let message;
|
|
77
|
-
while ((message = this.tryReadSingleMessage()) !== null) {
|
|
78
|
-
this.dispatchMessage(message);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Try to read a single complete message from the buffer.
|
|
83
|
-
* @returns Parsed message, or null if no complete message available
|
|
84
|
-
*/
|
|
85
|
-
tryReadSingleMessage() {
|
|
86
|
-
// Look for header end marker
|
|
87
|
-
const headerEndIndex = this.buffer.indexOf(StdioReader.HEADER_END);
|
|
88
|
-
if (headerEndIndex === -1) {
|
|
89
|
-
return null; // No complete header yet
|
|
90
|
-
}
|
|
91
|
-
// Parse Content-Length from header
|
|
92
|
-
const header = this.buffer.slice(0, headerEndIndex).toString('utf8');
|
|
93
|
-
const match = header.match(StdioReader.CONTENT_LENGTH_PATTERN);
|
|
94
|
-
if (!match?.[1]) {
|
|
95
|
-
// Invalid header - skip to next potential header
|
|
96
|
-
this.skipToNextHeader();
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
const contentLength = parseInt(match[1], 10);
|
|
100
|
-
const contentStart = headerEndIndex + StdioReader.HEADER_END_LENGTH;
|
|
101
|
-
const contentEnd = contentStart + contentLength;
|
|
102
|
-
// Check if we have the complete message
|
|
103
|
-
if (this.buffer.length < contentEnd) {
|
|
104
|
-
return null; // Need more data
|
|
105
|
-
}
|
|
106
|
-
// Extract and parse JSON
|
|
107
|
-
const content = this.buffer.slice(contentStart, contentEnd).toString('utf8');
|
|
108
|
-
this.buffer = this.buffer.slice(contentEnd); // Remove processed data
|
|
109
|
-
try {
|
|
110
|
-
return JSON.parse(content);
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
// Invalid JSON - log error so developer knows something's wrong
|
|
114
|
-
console.error('[KADI] Failed to parse message from child process:', error);
|
|
115
|
-
console.error('[KADI] Raw content (truncated):', content.slice(0, 200));
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Skip to next potential header (error recovery).
|
|
121
|
-
* Called when we encounter a malformed header.
|
|
122
|
-
*/
|
|
123
|
-
skipToNextHeader() {
|
|
124
|
-
const nextHeaderIndex = this.buffer.indexOf(StdioReader.CONTENT_LENGTH_MARKER, 1);
|
|
125
|
-
if (nextHeaderIndex === -1) {
|
|
126
|
-
this.buffer = Buffer.alloc(0); // No more headers, clear buffer
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
this.buffer = this.buffer.slice(nextHeaderIndex);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Dispatch a parsed message to waiting handlers or notification handler.
|
|
134
|
-
*/
|
|
135
|
-
dispatchMessage(message) {
|
|
136
|
-
// Check if this is a notification (no id field)
|
|
137
|
-
if (!('id' in message) || message.id === undefined) {
|
|
138
|
-
// It's a notification - route to notification handler
|
|
139
|
-
if (this.notificationHandler) {
|
|
140
|
-
this.notificationHandler(message);
|
|
141
|
-
}
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
// It's a response - find and remove waiter for this message id
|
|
145
|
-
const waiterIndex = this.waiters.findIndex((w) => w.id === message.id);
|
|
146
|
-
if (waiterIndex === -1) {
|
|
147
|
-
return; // No one waiting for this response
|
|
148
|
-
}
|
|
149
|
-
// splice returns removed elements - use destructuring to get the waiter
|
|
150
|
-
const [waiter] = this.waiters.splice(waiterIndex, 1);
|
|
151
|
-
if (!waiter) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
clearTimeout(waiter.timeout);
|
|
155
|
-
waiter.resolve(message);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Wait for a response with a specific id.
|
|
159
|
-
*/
|
|
160
|
-
waitForResponse(id, timeoutOverride) {
|
|
161
|
-
const effectiveTimeout = timeoutOverride ?? this.timeoutMs;
|
|
162
|
-
return new Promise((resolve, reject) => {
|
|
163
|
-
const timeout = setTimeout(() => {
|
|
164
|
-
// Remove from waiters
|
|
165
|
-
const index = this.waiters.findIndex((w) => w.id === id);
|
|
166
|
-
if (index !== -1) {
|
|
167
|
-
this.waiters.splice(index, 1);
|
|
168
|
-
}
|
|
169
|
-
reject(new KadiError(`Timeout waiting for response to request ${id}`, 'TIMEOUT', { requestId: id, timeoutMs: effectiveTimeout }));
|
|
170
|
-
}, effectiveTimeout);
|
|
171
|
-
this.waiters.push({ id, resolve, reject, timeout });
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Cancel all pending waiters (for cleanup).
|
|
176
|
-
* @param error - Optional error to reject with (defaults to generic close error)
|
|
177
|
-
*/
|
|
178
|
-
cancelAll(error) {
|
|
179
|
-
const rejectError = error ?? new KadiError('Connection closed', 'STDIO_ERROR');
|
|
180
|
-
for (const waiter of this.waiters) {
|
|
181
|
-
clearTimeout(waiter.timeout);
|
|
182
|
-
waiter.reject(rejectError);
|
|
183
|
-
}
|
|
184
|
-
this.waiters = [];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
188
|
-
// MESSAGE WRITER (Content-Length framing)
|
|
189
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
190
|
-
/**
|
|
191
|
-
* Writes JSON-RPC messages to a stream using Content-Length framing.
|
|
192
|
-
*/
|
|
193
|
-
class StdioWriter {
|
|
194
|
-
stream;
|
|
195
|
-
constructor(stream) {
|
|
196
|
-
this.stream = stream;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Write a message to the stream.
|
|
200
|
-
*/
|
|
201
|
-
write(message) {
|
|
202
|
-
const json = JSON.stringify(message);
|
|
203
|
-
const contentLength = Buffer.byteLength(json, 'utf-8');
|
|
204
|
-
const header = `Content-Length: ${contentLength}\r\n\r\n`;
|
|
205
|
-
this.stream.write(header + json);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
30
|
/**
|
|
209
31
|
* Load a child process ability via stdio.
|
|
210
32
|
*
|
|
@@ -250,8 +72,8 @@ export async function loadStdioTransport(command, args = [], options = {}) {
|
|
|
250
72
|
proc.kill();
|
|
251
73
|
throw new KadiError('Failed to get stdio streams', 'STDIO_ERROR', { command });
|
|
252
74
|
}
|
|
253
|
-
const reader = new
|
|
254
|
-
const writer = new
|
|
75
|
+
const reader = new StdioMessageReader(proc.stdout, timeoutMs);
|
|
76
|
+
const writer = new StdioMessageWriter(proc.stdin);
|
|
255
77
|
let idCounter = 1;
|
|
256
78
|
let isShutdown = false;
|
|
257
79
|
// Track whether WE initiated the shutdown (vs process crashing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"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"}
|