@kadi.build/core 0.0.1-alpha.10 → 0.0.1-alpha.12
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 +269 -1311
- package/dist/abilities/AbilityLoader.d.ts +26 -0
- package/dist/abilities/AbilityLoader.d.ts.map +1 -1
- package/dist/abilities/AbilityLoader.js +141 -18
- package/dist/abilities/AbilityLoader.js.map +1 -1
- package/dist/abilities/AbilityProxy.d.ts +33 -0
- package/dist/abilities/AbilityProxy.d.ts.map +1 -1
- package/dist/abilities/AbilityProxy.js +40 -0
- package/dist/abilities/AbilityProxy.js.map +1 -1
- package/dist/abilities/index.d.ts +1 -1
- package/dist/abilities/index.d.ts.map +1 -1
- package/dist/abilities/types.d.ts +67 -0
- package/dist/abilities/types.d.ts.map +1 -1
- package/dist/broker/BrokerProtocol.js +11 -11
- package/dist/broker/BrokerProtocol.js.map +1 -1
- package/dist/client/KadiClient.d.ts +191 -2
- package/dist/client/KadiClient.d.ts.map +1 -1
- package/dist/client/KadiClient.js +412 -2
- package/dist/client/KadiClient.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/messages/index.d.ts +1 -1
- package/dist/messages/index.js +1 -1
- package/dist/messages/index.js.map +1 -1
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/zod-helpers.d.ts +129 -0
- package/dist/schemas/zod-helpers.d.ts.map +1 -0
- package/dist/schemas/zod-helpers.js +225 -0
- package/dist/schemas/zod-helpers.js.map +1 -0
- package/dist/schemas/zod-to-json-schema.d.ts +159 -0
- package/dist/schemas/zod-to-json-schema.d.ts.map +1 -0
- package/dist/schemas/zod-to-json-schema.js +154 -0
- package/dist/schemas/zod-to-json-schema.js.map +1 -0
- package/dist/transports/NativeTransport.d.ts +29 -0
- package/dist/transports/NativeTransport.d.ts.map +1 -1
- package/dist/transports/NativeTransport.js +98 -3
- package/dist/transports/NativeTransport.js.map +1 -1
- package/dist/transports/StdioTransport.d.ts +141 -63
- package/dist/transports/StdioTransport.d.ts.map +1 -1
- package/dist/transports/StdioTransport.js +309 -232
- package/dist/transports/StdioTransport.js.map +1 -1
- package/dist/types/broker.d.ts +0 -22
- package/dist/types/broker.d.ts.map +1 -1
- package/dist/types/broker.js +0 -27
- package/dist/types/broker.js.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/zod-tools.d.ts +198 -0
- package/dist/types/zod-tools.d.ts.map +1 -0
- package/dist/types/zod-tools.js +14 -0
- package/dist/types/zod-tools.js.map +1 -0
- package/dist/utils/LockfileResolver.d.ts +108 -0
- package/dist/utils/LockfileResolver.d.ts.map +1 -0
- package/dist/utils/LockfileResolver.js +230 -0
- package/dist/utils/LockfileResolver.js.map +1 -0
- package/dist/utils/StdioMessageReader.d.ts +122 -0
- package/dist/utils/StdioMessageReader.d.ts.map +1 -0
- package/dist/utils/StdioMessageReader.js +209 -0
- package/dist/utils/StdioMessageReader.js.map +1 -0
- package/dist/utils/StdioMessageWriter.d.ts +104 -0
- package/dist/utils/StdioMessageWriter.d.ts.map +1 -0
- package/dist/utils/StdioMessageWriter.js +162 -0
- package/dist/utils/StdioMessageWriter.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,30 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stdio Transport
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Spawns abilities as child processes and communicates via stdin/stdout
|
|
5
|
+
* using Content-Length framed JSON-RPC messages (LSP-style).
|
|
6
6
|
*
|
|
7
7
|
* @module transports/StdioTransport
|
|
8
8
|
*/
|
|
9
9
|
import { EventEmitter } from 'events';
|
|
10
|
-
import type { AbilityTransport,
|
|
10
|
+
import type { AbilityTransport, MethodSchema } from '../types/index.js';
|
|
11
|
+
import type { AgentJson } from '../abilities/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Stdio Transport Options
|
|
14
|
+
*/
|
|
15
|
+
export interface StdioTransportOptions {
|
|
16
|
+
/** Ability name (for error messages) */
|
|
17
|
+
abilityName: string;
|
|
18
|
+
/** Command to execute (e.g., 'node', 'python') */
|
|
19
|
+
command: string;
|
|
20
|
+
/** Command arguments (e.g., ['./ability.js']) */
|
|
21
|
+
args?: string[];
|
|
22
|
+
/** Working directory for child process */
|
|
23
|
+
cwd?: string;
|
|
24
|
+
/** Environment variables */
|
|
25
|
+
env?: Record<string, string>;
|
|
26
|
+
/** Request timeout in milliseconds */
|
|
27
|
+
timeout?: number;
|
|
28
|
+
/** Ability version */
|
|
29
|
+
abilityVersion?: string;
|
|
30
|
+
}
|
|
11
31
|
/**
|
|
12
32
|
* Stdio Transport
|
|
13
33
|
*
|
|
14
|
-
* Spawns a child process and communicates via JSON
|
|
15
|
-
*
|
|
34
|
+
* Spawns an ability as a child process and communicates via JSON-RPC
|
|
35
|
+
* over stdin/stdout using Content-Length framing (LSP-style).
|
|
36
|
+
*
|
|
37
|
+
* **Features**:
|
|
38
|
+
* - Spawns child process with configurable command/args
|
|
39
|
+
* - Content-Length framed messages (reliable even with logs)
|
|
40
|
+
* - Captures stderr separately (ability logs)
|
|
41
|
+
* - Request/response matching via JSON-RPC ids
|
|
42
|
+
* - Timeout handling per request
|
|
43
|
+
* - Graceful shutdown with SIGTERM
|
|
16
44
|
*
|
|
17
45
|
* @example
|
|
18
46
|
* ```typescript
|
|
19
47
|
* const transport = new StdioTransport({
|
|
20
|
-
* abilityName: '
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* args: ['main.py']
|
|
48
|
+
* abilityName: 'calculator',
|
|
49
|
+
* command: 'node',
|
|
50
|
+
* args: ['./abilities/calculator/index.js']
|
|
24
51
|
* });
|
|
25
52
|
*
|
|
26
53
|
* await transport.connect();
|
|
27
|
-
* const result = await transport.invoke('
|
|
54
|
+
* const result = await transport.invoke('add', { a: 5, b: 3 });
|
|
55
|
+
* console.log(result); // { result: 8 }
|
|
56
|
+
* await transport.disconnect();
|
|
28
57
|
* ```
|
|
29
58
|
*/
|
|
30
59
|
export declare class StdioTransport extends EventEmitter implements AbilityTransport {
|
|
@@ -35,7 +64,27 @@ export declare class StdioTransport extends EventEmitter implements AbilityTrans
|
|
|
35
64
|
/**
|
|
36
65
|
* Child process instance
|
|
37
66
|
*/
|
|
38
|
-
private process
|
|
67
|
+
private process?;
|
|
68
|
+
/**
|
|
69
|
+
* Message reader for stdout
|
|
70
|
+
*/
|
|
71
|
+
private reader?;
|
|
72
|
+
/**
|
|
73
|
+
* Message writer for stdin
|
|
74
|
+
*/
|
|
75
|
+
private writer?;
|
|
76
|
+
/**
|
|
77
|
+
* Stderr buffer
|
|
78
|
+
*/
|
|
79
|
+
private stderrBuffer;
|
|
80
|
+
/**
|
|
81
|
+
* Whether transport is connected
|
|
82
|
+
*/
|
|
83
|
+
private connected;
|
|
84
|
+
/**
|
|
85
|
+
* Whether we're intentionally disconnecting
|
|
86
|
+
*/
|
|
87
|
+
private disconnecting;
|
|
39
88
|
/**
|
|
40
89
|
* Discovered methods
|
|
41
90
|
*/
|
|
@@ -45,34 +94,34 @@ export declare class StdioTransport extends EventEmitter implements AbilityTrans
|
|
|
45
94
|
*/
|
|
46
95
|
private schemas;
|
|
47
96
|
/**
|
|
48
|
-
*
|
|
97
|
+
* Agent.json representation (from readAgentJson)
|
|
49
98
|
*/
|
|
50
|
-
private
|
|
99
|
+
private agentJson?;
|
|
51
100
|
/**
|
|
52
|
-
*
|
|
101
|
+
* Request ID counter
|
|
53
102
|
*/
|
|
54
|
-
private
|
|
103
|
+
private requestIdCounter;
|
|
55
104
|
/**
|
|
56
|
-
*
|
|
105
|
+
* Pending requests (waiting for responses)
|
|
57
106
|
*/
|
|
58
|
-
private
|
|
107
|
+
private pendingRequests;
|
|
59
108
|
/**
|
|
60
109
|
* Create a new StdioTransport
|
|
61
110
|
*
|
|
62
|
-
* @param options -
|
|
111
|
+
* @param options - Transport options
|
|
63
112
|
*/
|
|
64
113
|
constructor(options: StdioTransportOptions);
|
|
65
114
|
/**
|
|
66
115
|
* Connect to the ability
|
|
67
116
|
*
|
|
68
|
-
* Spawns the child process
|
|
117
|
+
* Spawns the child process, sets up stdio communication,
|
|
118
|
+
* and performs discovery via readAgentJson.
|
|
69
119
|
*
|
|
70
|
-
* @throws {KadiError} If
|
|
120
|
+
* @throws {KadiError} If spawn fails or discovery fails
|
|
71
121
|
*
|
|
72
122
|
* @example
|
|
73
123
|
* ```typescript
|
|
74
124
|
* await transport.connect();
|
|
75
|
-
* console.log('Process started');
|
|
76
125
|
* ```
|
|
77
126
|
*/
|
|
78
127
|
connect(): Promise<void>;
|
|
@@ -90,14 +139,41 @@ export declare class StdioTransport extends EventEmitter implements AbilityTrans
|
|
|
90
139
|
*
|
|
91
140
|
* @example
|
|
92
141
|
* ```typescript
|
|
93
|
-
* const result = await transport.invoke
|
|
142
|
+
* const result = await transport.invoke<{ a: number; b: number }, { result: number }>(
|
|
143
|
+
* 'add',
|
|
144
|
+
* { a: 5, b: 3 }
|
|
145
|
+
* );
|
|
94
146
|
* ```
|
|
95
147
|
*/
|
|
96
148
|
invoke<TInput = unknown, TOutput = unknown>(method: string, params: TInput): Promise<TOutput>;
|
|
149
|
+
/**
|
|
150
|
+
* Send a JSON-RPC request and wait for response
|
|
151
|
+
*
|
|
152
|
+
* @param method - JSON-RPC method name
|
|
153
|
+
* @param params - Request parameters
|
|
154
|
+
* @returns Promise resolving to response result
|
|
155
|
+
*
|
|
156
|
+
* @throws {KadiError} If request fails or times out
|
|
157
|
+
*/
|
|
158
|
+
private sendRequest;
|
|
159
|
+
/**
|
|
160
|
+
* Handle incoming JSON-RPC message
|
|
161
|
+
*
|
|
162
|
+
* Matches responses to pending requests via id.
|
|
163
|
+
*
|
|
164
|
+
* @param message - Incoming message
|
|
165
|
+
*/
|
|
166
|
+
private handleMessage;
|
|
97
167
|
/**
|
|
98
168
|
* Get list of available methods
|
|
99
169
|
*
|
|
100
170
|
* @returns Array of method names
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const methods = transport.getMethods();
|
|
175
|
+
* console.log('Available methods:', methods);
|
|
176
|
+
* ```
|
|
101
177
|
*/
|
|
102
178
|
getMethods(): string[];
|
|
103
179
|
/**
|
|
@@ -105,68 +181,70 @@ export declare class StdioTransport extends EventEmitter implements AbilityTrans
|
|
|
105
181
|
*
|
|
106
182
|
* @param method - Method name
|
|
107
183
|
* @returns Method schema or undefined
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const schema = transport.getMethodSchema('add');
|
|
188
|
+
* if (schema) {
|
|
189
|
+
* console.log('Input schema:', schema.inputSchema);
|
|
190
|
+
* }
|
|
191
|
+
* ```
|
|
108
192
|
*/
|
|
109
193
|
getMethodSchema(method: string): MethodSchema | undefined;
|
|
110
194
|
/**
|
|
111
|
-
*
|
|
195
|
+
* Read agent.json representation
|
|
196
|
+
*
|
|
197
|
+
* Returns the agent.json representation retrieved during connection.
|
|
112
198
|
*
|
|
113
|
-
*
|
|
199
|
+
* @returns agent.json representation or undefined
|
|
114
200
|
*
|
|
115
201
|
* @example
|
|
116
202
|
* ```typescript
|
|
117
|
-
*
|
|
203
|
+
* const agentJson = transport.readAgentJson();
|
|
204
|
+
* if (agentJson) {
|
|
205
|
+
* console.log('Ability:', agentJson.name, agentJson.version);
|
|
206
|
+
* console.log('Tools:', agentJson.tools.map(t => t.name));
|
|
207
|
+
* }
|
|
118
208
|
* ```
|
|
119
209
|
*/
|
|
120
|
-
|
|
210
|
+
readAgentJson(): AgentJson | undefined;
|
|
121
211
|
/**
|
|
122
|
-
*
|
|
212
|
+
* Get captured stderr output
|
|
123
213
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*/
|
|
127
|
-
publishEvent(eventName: string, data: unknown): void;
|
|
128
|
-
/**
|
|
129
|
-
* Discover methods by sending discovery request
|
|
130
|
-
*/
|
|
131
|
-
private discoverMethods;
|
|
132
|
-
/**
|
|
133
|
-
* Send a message to the child process
|
|
214
|
+
* Returns all stderr output captured from the child process.
|
|
215
|
+
* Useful for debugging or viewing ability logs.
|
|
134
216
|
*
|
|
135
|
-
*
|
|
217
|
+
* @returns Stderr content as string
|
|
136
218
|
*
|
|
137
|
-
* @
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const stderr = transport.getStderr();
|
|
222
|
+
* console.log('Ability logs:', stderr);
|
|
223
|
+
* ```
|
|
138
224
|
*/
|
|
139
|
-
|
|
225
|
+
getStderr(): string;
|
|
140
226
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* Implements length-prefixed framing to extract complete messages.
|
|
227
|
+
* Disconnect from the ability
|
|
144
228
|
*
|
|
145
|
-
*
|
|
146
|
-
*/
|
|
147
|
-
private handleData;
|
|
148
|
-
/**
|
|
149
|
-
* Handle a parsed message
|
|
229
|
+
* Kills the child process with SIGTERM and cleans up resources.
|
|
150
230
|
*
|
|
151
|
-
* @
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* await transport.disconnect();
|
|
234
|
+
* ```
|
|
152
235
|
*/
|
|
153
|
-
|
|
236
|
+
disconnect(): Promise<void>;
|
|
154
237
|
/**
|
|
155
|
-
*
|
|
238
|
+
* Publish an event from the ability
|
|
156
239
|
*
|
|
157
|
-
* @param
|
|
158
|
-
|
|
159
|
-
private handleProcessError;
|
|
160
|
-
/**
|
|
161
|
-
* Handle process exit
|
|
240
|
+
* @param eventName - Event name
|
|
241
|
+
* @param data - Event data
|
|
162
242
|
*
|
|
163
|
-
* @
|
|
164
|
-
*
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Cleanup resources
|
|
243
|
+
* @example
|
|
244
|
+
* ```typescript
|
|
245
|
+
* transport.publishEvent('calculation.completed', { result: 42 });
|
|
246
|
+
* ```
|
|
169
247
|
*/
|
|
170
|
-
|
|
248
|
+
publishEvent(eventName: string, data: unknown): void;
|
|
171
249
|
}
|
|
172
250
|
//# sourceMappingURL=StdioTransport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StdioTransport.d.ts","sourceRoot":"","sources":["../../src/transports/StdioTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EACV,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"StdioTransport.d.ts","sourceRoot":"","sources":["../../src/transports/StdioTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IAEpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,YAAa,YAAW,gBAAgB;IAC1E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAItB;IAEF;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,CAAe;IAE/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,CAAqB;IAEpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,CAAqB;IAEpC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAmB;IAEvC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAgB;IAE/B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAmC;IAElD;;OAEG;IACH,OAAO,CAAC,SAAS,CAAC,CAAY;IAE9B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAqC;IAE5D;;;;OAIG;gBACS,OAAO,EAAE,qBAAqB;IAc1C;;;;;;;;;;;;OAYG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmK9B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IA6BnB;;;;;;;;OAQG;YACW,WAAW;IAoDzB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAmCrB;;;;;;;;;;OAUG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzD;;;;;;;;;;;;;;;OAeG;IACH,aAAa,IAAI,SAAS,GAAG,SAAS;IAItC;;;;;;;;;;;;;OAaG;IACH,SAAS,IAAI,MAAM;IAInB;;;;;;;;;OASG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DjC;;;;;;;;;;OAUG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAQrD"}
|