@kadi.build/core 0.0.1-alpha.6 → 0.0.1-alpha.7
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 +112 -16
- package/dist/KadiClient.d.ts +7 -15
- package/dist/KadiClient.d.ts.map +1 -1
- package/dist/KadiClient.js +82 -94
- package/dist/KadiClient.js.map +1 -1
- package/dist/errors/error-codes.d.ts +782 -60
- package/dist/errors/error-codes.d.ts.map +1 -1
- package/dist/errors/error-codes.js +373 -66
- package/dist/errors/error-codes.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loadAbility.d.ts +3 -4
- package/dist/loadAbility.d.ts.map +1 -1
- package/dist/loadAbility.js +50 -56
- package/dist/loadAbility.js.map +1 -1
- package/dist/transports/BrokerTransport.d.ts +0 -4
- package/dist/transports/BrokerTransport.d.ts.map +1 -1
- package/dist/transports/BrokerTransport.js.map +1 -1
- package/dist/transports/NativeTransport.d.ts.map +1 -1
- package/dist/transports/NativeTransport.js.map +1 -1
- package/dist/transports/StdioTransport.d.ts +7 -7
- package/dist/transports/StdioTransport.d.ts.map +1 -1
- package/dist/transports/StdioTransport.js +57 -52
- package/dist/transports/StdioTransport.js.map +1 -1
- package/dist/types/core.d.ts +4 -4
- package/dist/types/core.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -100,8 +100,8 @@ const agent = new KadiClient({
|
|
|
100
100
|
role: 'agent',
|
|
101
101
|
protocol: 'broker',
|
|
102
102
|
brokers: {
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
prod: 'ws://localhost:8080',
|
|
104
|
+
dev: 'ws://localhost:8081'
|
|
105
105
|
},
|
|
106
106
|
defaultBroker: 'prod',
|
|
107
107
|
networks: ['global']
|
|
@@ -233,8 +233,8 @@ const ability = new KadiClient({
|
|
|
233
233
|
role: 'ability', // 'agent', 'ability',
|
|
234
234
|
protocol: 'stdio', // 'native', 'stdio', or 'broker'
|
|
235
235
|
brokers: {
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
local: 'ws://localhost:8080',
|
|
237
|
+
prod: 'ws://api.example.com:8080'
|
|
238
238
|
},
|
|
239
239
|
defaultBroker: 'local'
|
|
240
240
|
});
|
|
@@ -440,9 +440,9 @@ const client = new KadiClient({
|
|
|
440
440
|
role: 'ability', // Provider role
|
|
441
441
|
protocol: 'broker',
|
|
442
442
|
brokers: {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
443
|
+
dev: 'ws://localhost:8080',
|
|
444
|
+
staging: 'ws://staging.example.com:8080',
|
|
445
|
+
prod: 'ws://prod.example.com:8080'
|
|
446
446
|
},
|
|
447
447
|
defaultBroker: 'dev',
|
|
448
448
|
networks: ['global']
|
|
@@ -806,6 +806,70 @@ ability.events.on('custom:event', (data) => {
|
|
|
806
806
|
// Subscribe before calling methods that emit events
|
|
807
807
|
```
|
|
808
808
|
|
|
809
|
+
### KadiClient transport vs loadAbility transport
|
|
810
|
+
|
|
811
|
+
KADI uses “transport” in two places and they serve different purposes:
|
|
812
|
+
|
|
813
|
+
- KadiClient transport — how this client exposes its own tools after `registerTool(...)` and `serve()`.
|
|
814
|
+
- `transport: 'native'` — in‑process only. There is no network or stdio listener. Code that loads you natively (via `loadAbility('you','native')`) can call your tools directly. `serve()` simply keeps the process alive if you want a long‑running ability.
|
|
815
|
+
- `transport: 'stdio'` — the client runs a stdio server (JSON‑RPC over stdin/stdout) and answers requests with your registered handlers. `serve()` wires up the stdio loop.
|
|
816
|
+
- `transport: 'broker'` — the client connects to the broker, registers your tools, and receives remote invocations over WebSocket. `serve()` (or `connectToBrokers()`) handles connection and registration.
|
|
817
|
+
|
|
818
|
+
- loadAbility transport — how this client connects to a specific ability it wants to use.
|
|
819
|
+
- `'native'` loads a module in‑process
|
|
820
|
+
- `'stdio'` talks to a spawned child process (uses the ability’s `agent.json` `scripts.start`)
|
|
821
|
+
- `'broker'` talks to a remote ability over the broker
|
|
822
|
+
|
|
823
|
+
These two choices are independent: setting the client’s `transport` does not change how you load another ability, and the transport you choose in `loadAbility(...)` does not change how your client serves its own tools.
|
|
824
|
+
|
|
825
|
+
Examples
|
|
826
|
+
|
|
827
|
+
Provide tools over broker
|
|
828
|
+
|
|
829
|
+
```ts
|
|
830
|
+
import { KadiClient } from '@kadi.build/core';
|
|
831
|
+
|
|
832
|
+
const svc = new KadiClient({
|
|
833
|
+
name: 'math',
|
|
834
|
+
role: 'ability',
|
|
835
|
+
transport: 'broker',
|
|
836
|
+
brokers: { local: 'ws://localhost:8080' },
|
|
837
|
+
defaultBroker: 'local'
|
|
838
|
+
});
|
|
839
|
+
|
|
840
|
+
svc.registerTool('add', async ({ a, b }) => ({ result: a + b }));
|
|
841
|
+
await svc.serve(); // registers with the broker so others can call math.add
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
Consume a stdio ability
|
|
845
|
+
|
|
846
|
+
```ts
|
|
847
|
+
const agent = new KadiClient({
|
|
848
|
+
name: 'client',
|
|
849
|
+
role: 'agent',
|
|
850
|
+
transport: 'native'
|
|
851
|
+
});
|
|
852
|
+
const math = await agent.loadAbility('simple-math', 'stdio');
|
|
853
|
+
const res = await math.add({ a: 2, b: 3 });
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
Consume a broker ability
|
|
857
|
+
|
|
858
|
+
```ts
|
|
859
|
+
const agent = new KadiClient({
|
|
860
|
+
name: 'client',
|
|
861
|
+
role: 'agent',
|
|
862
|
+
transport: 'broker',
|
|
863
|
+
brokers: { local: 'ws://localhost:8080' },
|
|
864
|
+
defaultBroker: 'local'
|
|
865
|
+
});
|
|
866
|
+
|
|
867
|
+
const echo = await agent.loadAbility('echo-js', 'broker', {
|
|
868
|
+
networks: ['global']
|
|
869
|
+
});
|
|
870
|
+
const r = await echo.say_message({ message: 'hi' });
|
|
871
|
+
```
|
|
872
|
+
|
|
809
873
|
### Loading Context
|
|
810
874
|
|
|
811
875
|
The loader automatically resolves ability versions from:
|
|
@@ -968,9 +1032,9 @@ const client = new KadiClient({
|
|
|
968
1032
|
role: 'ability',
|
|
969
1033
|
protocol: 'broker',
|
|
970
1034
|
brokers: {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
1035
|
+
primary: 'ws://broker1.example.com:8080',
|
|
1036
|
+
secondary: 'ws://broker2.example.com:8080',
|
|
1037
|
+
backup: 'ws://broker3.example.com:8080'
|
|
974
1038
|
},
|
|
975
1039
|
defaultBroker: 'primary', // Used for sending if no specific broker targeted
|
|
976
1040
|
networks: ['production']
|
|
@@ -1075,8 +1139,8 @@ const client = new KadiClient({
|
|
|
1075
1139
|
role: 'ability', // 'agent' or 'ability'
|
|
1076
1140
|
protocol: 'broker', // 'native', 'stdio', or 'broker'
|
|
1077
1141
|
brokers: {
|
|
1078
|
-
|
|
1079
|
-
|
|
1142
|
+
dev: 'ws://localhost:8080',
|
|
1143
|
+
prod: 'ws://prod.example.com:8080'
|
|
1080
1144
|
},
|
|
1081
1145
|
defaultBroker: 'dev',
|
|
1082
1146
|
network: 'global', // Primary network
|
|
@@ -1146,8 +1210,8 @@ const ability = new KadiClient({
|
|
|
1146
1210
|
role: 'ability',
|
|
1147
1211
|
protocol: 'broker',
|
|
1148
1212
|
brokers: {
|
|
1149
|
-
|
|
1150
|
-
|
|
1213
|
+
local: 'ws://localhost:8080',
|
|
1214
|
+
cloud: 'wss://api.example.com'
|
|
1151
1215
|
},
|
|
1152
1216
|
defaultBroker: 'local',
|
|
1153
1217
|
networks: ['global']
|
|
@@ -1261,6 +1325,7 @@ Check ability logs:
|
|
|
1261
1325
|
```bash
|
|
1262
1326
|
tail -f abilities/my-ability/1.0.0/my-ability.log
|
|
1263
1327
|
```
|
|
1328
|
+
|
|
1264
1329
|
## 💡 Additional Examples
|
|
1265
1330
|
|
|
1266
1331
|
### Error Handling Pattern
|
|
@@ -1301,7 +1366,7 @@ client.registerTool('health', async () => {
|
|
|
1301
1366
|
brokers: client.isConnected ? 'connected' : 'disconnected',
|
|
1302
1367
|
timestamp: Date.now()
|
|
1303
1368
|
};
|
|
1304
|
-
|
|
1369
|
+
|
|
1305
1370
|
return {
|
|
1306
1371
|
status: 'healthy',
|
|
1307
1372
|
checks
|
|
@@ -1318,6 +1383,7 @@ client.registerTool('health', async () => {
|
|
|
1318
1383
|
**Problem**: "Failed to connect to any brokers"
|
|
1319
1384
|
|
|
1320
1385
|
**Solutions**:
|
|
1386
|
+
|
|
1321
1387
|
- Verify broker URLs are correct
|
|
1322
1388
|
- Check network connectivity
|
|
1323
1389
|
- Ensure broker is running
|
|
@@ -1328,6 +1394,7 @@ client.registerTool('health', async () => {
|
|
|
1328
1394
|
**Problem**: Subscribed to events but callbacks not triggered
|
|
1329
1395
|
|
|
1330
1396
|
**Solutions**:
|
|
1397
|
+
|
|
1331
1398
|
- Subscribe BEFORE triggering events
|
|
1332
1399
|
- Check pattern matching (use exact match first)
|
|
1333
1400
|
- Verify publisher and subscriber are on same network
|
|
@@ -1338,6 +1405,7 @@ client.registerTool('health', async () => {
|
|
|
1338
1405
|
**Problem**: "Cannot find module 'ability.js'" when loading Go/Python abilities
|
|
1339
1406
|
|
|
1340
1407
|
**Solutions**:
|
|
1408
|
+
|
|
1341
1409
|
- Ensure `scripts.start` field exists in agent.json
|
|
1342
1410
|
- Verify the binary/script is executable
|
|
1343
1411
|
- Check that setup script has been run
|
|
@@ -1348,6 +1416,7 @@ client.registerTool('health', async () => {
|
|
|
1348
1416
|
**Problem**: Memory usage grows over time
|
|
1349
1417
|
|
|
1350
1418
|
**Solutions**:
|
|
1419
|
+
|
|
1351
1420
|
- Always call unsubscribe functions
|
|
1352
1421
|
- Use `onceEvent` for single-use subscriptions
|
|
1353
1422
|
- Disconnect abilities when done
|
|
@@ -1374,10 +1443,37 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
1374
1443
|
|
|
1375
1444
|
## 📚 Resources
|
|
1376
1445
|
|
|
1446
|
+
## ⚠️ Error Codes
|
|
1447
|
+
|
|
1448
|
+
KADI core exposes a unified, typed error catalog to keep errors consistent across core and the broker.
|
|
1449
|
+
|
|
1450
|
+
- CoreErrorCodes: CORE\_\* errors for library/transport concerns
|
|
1451
|
+
- BrokerErrorCodes: BROKER\_\* errors mirrored for broker interactions
|
|
1452
|
+
- ErrorCodes: merged view of both
|
|
1453
|
+
|
|
1454
|
+
Usage:
|
|
1455
|
+
|
|
1456
|
+
```ts
|
|
1457
|
+
import { KadiError, CoreErrorCodes } from '@kadi.build/core';
|
|
1458
|
+
|
|
1459
|
+
throw new KadiError(
|
|
1460
|
+
CoreErrorCodes.CORE_CONFIG_MISSING.code,
|
|
1461
|
+
'scripts.start is required for stdio',
|
|
1462
|
+
{ transport: 'stdio', abilityName: 'echo' }
|
|
1463
|
+
);
|
|
1464
|
+
```
|
|
1465
|
+
|
|
1466
|
+
Guidelines:
|
|
1467
|
+
|
|
1468
|
+
- Do not use raw string codes like 'CONFIG_MISSING'; always use the exported constants.
|
|
1469
|
+
- Prefer KadiError helper factories where available (e.g., KadiError.abilityNotFound()).
|
|
1470
|
+
- KadiError automatically tags domain from the code prefix (core/broker) and preserves the original stack.
|
|
1471
|
+
- Broker-side codes are fully prefixed: BROKER*SESSION*_, BROKER*AUTH*_, BROKER*AGENT*_, BROKER*NETWORK*_, etc.
|
|
1472
|
+
|
|
1377
1473
|
- [Event System Deep Dive](docs/event-system.md) - Complete guide to the event architecture
|
|
1378
1474
|
- [API Documentation](https://docs.kadi.build) - Full API reference
|
|
1379
1475
|
- [Examples Repository](https://github.com/kadi-examples) - More examples and patterns
|
|
1380
1476
|
|
|
1381
1477
|
---
|
|
1382
1478
|
|
|
1383
|
-
Built with ❤️ by the KADI team
|
|
1479
|
+
Built with ❤️ by the KADI team
|
package/dist/KadiClient.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { JSONSchema, BrokerConnection } from './types/core.js';
|
|
3
|
+
import type { TransportKind } from './types/core.js';
|
|
3
4
|
import { LoadedAbility } from './loadAbility.js';
|
|
4
5
|
export interface KadiClientConfig {
|
|
5
6
|
/** Agent display name for identification */
|
|
@@ -10,8 +11,8 @@ export interface KadiClientConfig {
|
|
|
10
11
|
description?: string;
|
|
11
12
|
/** Role when connecting to broker - determines available operations */
|
|
12
13
|
role?: 'agent' | 'ability';
|
|
13
|
-
/**
|
|
14
|
-
|
|
14
|
+
/** Transport used when serving requests */
|
|
15
|
+
transport?: TransportKind;
|
|
15
16
|
/** Primary network segment for message routing - defines which network this client operates in. Used for isolation and access control between different environments. */
|
|
16
17
|
network?: string;
|
|
17
18
|
/** Additional network identifiers this client belongs to - enables participation in multiple network segments simultaneously */
|
|
@@ -26,7 +27,6 @@ export interface KadiClientConfig {
|
|
|
26
27
|
maxBufferSize?: number;
|
|
27
28
|
/** Path to ability agent.json configuration file */
|
|
28
29
|
abilityAgentJSON?: string;
|
|
29
|
-
[key: string]: any;
|
|
30
30
|
}
|
|
31
31
|
export interface ToolSchema {
|
|
32
32
|
name?: string;
|
|
@@ -75,7 +75,7 @@ export declare class KadiClient extends EventEmitter {
|
|
|
75
75
|
readonly version: string;
|
|
76
76
|
readonly description: string;
|
|
77
77
|
readonly role: 'agent' | 'ability';
|
|
78
|
-
|
|
78
|
+
transport: TransportKind;
|
|
79
79
|
readonly network: string;
|
|
80
80
|
readonly networks: string[];
|
|
81
81
|
readonly brokers: {
|
|
@@ -84,7 +84,7 @@ export declare class KadiClient extends EventEmitter {
|
|
|
84
84
|
readonly defaultBroker?: string;
|
|
85
85
|
readonly abilityAgentJSON?: string;
|
|
86
86
|
private readonly logger;
|
|
87
|
-
private
|
|
87
|
+
private transportHandler?;
|
|
88
88
|
readonly toolHandlers: Map<string, RegisteredTool>;
|
|
89
89
|
private readonly _abilities;
|
|
90
90
|
private readonly _brokerConnections;
|
|
@@ -221,9 +221,7 @@ export declare class KadiClient extends EventEmitter {
|
|
|
221
221
|
*
|
|
222
222
|
* @param options - Optional serve options
|
|
223
223
|
*/
|
|
224
|
-
serve(
|
|
225
|
-
mode?: 'native' | 'stdio' | 'broker';
|
|
226
|
-
}): Promise<void>;
|
|
224
|
+
serve(): Promise<void>;
|
|
227
225
|
/**
|
|
228
226
|
* Start the client (alias for serve for agent compatibility)
|
|
229
227
|
*/
|
|
@@ -290,11 +288,6 @@ export declare class KadiClient extends EventEmitter {
|
|
|
290
288
|
* Example: 'ws://localhost:8080', 'wss://broker.company.com'
|
|
291
289
|
* Overrides the 'broker' option if provided.
|
|
292
290
|
*
|
|
293
|
-
* spawnAbility: Whether to start the ability first. Only for 'broker' protocol.
|
|
294
|
-
* - true: Start the ability process AND connect to it (useful for development)
|
|
295
|
-
* - false (default): Just connect to an already-running ability
|
|
296
|
-
* Most production setups use false since abilities run independently.
|
|
297
|
-
*
|
|
298
291
|
* networks: Which KADI networks to search for the ability. Only for 'broker' protocol.
|
|
299
292
|
* Example: ['global', 'team-alpha', 'dev-environment']
|
|
300
293
|
* search specific networks to find them. Defaults to ['global'] if not specified.
|
|
@@ -320,10 +313,9 @@ export declare class KadiClient extends EventEmitter {
|
|
|
320
313
|
* });
|
|
321
314
|
* const analysis = await aiService.analyze({text: "Hello world"});
|
|
322
315
|
*/
|
|
323
|
-
loadAbility(nameOrPath: string,
|
|
316
|
+
loadAbility(nameOrPath: string, transport?: TransportKind, options?: {
|
|
324
317
|
broker?: string;
|
|
325
318
|
brokerUrl?: string;
|
|
326
|
-
spawnAbility?: boolean;
|
|
327
319
|
networks?: string[];
|
|
328
320
|
}): Promise<LoadedAbility>;
|
|
329
321
|
/**
|
package/dist/KadiClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KadiClient.d.ts","sourceRoot":"","sources":["../src/KadiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAOtC,OAAO,
|
|
1
|
+
{"version":3,"file":"KadiClient.d.ts","sourceRoot":"","sources":["../src/KadiClient.ts"],"names":[],"mappings":"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"}
|