@kadi.build/core 0.0.1-alpha.4 → 0.0.1-alpha.6

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.
@@ -2,16 +2,29 @@ import { EventEmitter } from 'events';
2
2
  import { JSONSchema, BrokerConnection } from './types/core.js';
3
3
  import { LoadedAbility } from './loadAbility.js';
4
4
  export interface KadiClientConfig {
5
+ /** Agent display name for identification */
5
6
  name?: string;
7
+ /** Agent version string */
6
8
  version?: string;
9
+ /** Human-readable description of the agent */
7
10
  description?: string;
8
- role?: 'agent' | 'ability' | 'service';
11
+ /** Role when connecting to broker - determines available operations */
12
+ role?: 'agent' | 'ability';
13
+ /** Communication protocol - determines how the client serves requests */
9
14
  protocol?: 'native' | 'stdio' | 'broker';
10
- scope?: string;
15
+ /** Primary network segment for message routing - defines which network this client operates in. Used for isolation and access control between different environments. */
16
+ network?: string;
17
+ /** Additional network identifiers this client belongs to - enables participation in multiple network segments simultaneously */
11
18
  networks?: string[];
12
- brokerUrls?: string[];
13
- brokerUrl?: string;
19
+ /** Named broker configurations - enables connection to multiple brokers simultaneously */
20
+ brokers?: {
21
+ [brokerName: string]: string;
22
+ };
23
+ /** Default broker name for message routing when no specific broker is targeted */
24
+ defaultBroker?: string;
25
+ /** Maximum buffer size for message handling (primarily for stdio protocol) */
14
26
  maxBufferSize?: number;
27
+ /** Path to ability agent.json configuration file */
15
28
  abilityAgentJSON?: string;
16
29
  [key: string]: any;
17
30
  }
@@ -61,11 +74,14 @@ export declare class KadiClient extends EventEmitter {
61
74
  readonly name: string;
62
75
  readonly version: string;
63
76
  readonly description: string;
64
- readonly role: 'agent' | 'ability' | 'service';
77
+ readonly role: 'agent' | 'ability';
65
78
  protocol: 'native' | 'stdio' | 'broker';
66
- readonly scope: string;
79
+ readonly network: string;
67
80
  readonly networks: string[];
68
- readonly brokerUrls: string[];
81
+ readonly brokers: {
82
+ [brokerName: string]: string;
83
+ };
84
+ readonly defaultBroker?: string;
69
85
  readonly abilityAgentJSON?: string;
70
86
  private readonly logger;
71
87
  private protocolHandler?;
@@ -77,8 +93,50 @@ export declare class KadiClient extends EventEmitter {
77
93
  private _idFactory;
78
94
  private _pendingResponses;
79
95
  private _pendingToolCalls;
96
+ private _currentBroker?;
97
+ /**
98
+ * Resolver function for the native protocol serve promise.
99
+ * When serve() is called with native protocol, it creates a promise to keep
100
+ * the process alive. This resolver allows us to resolve that promise during
101
+ * disconnect(), enabling clean shutdown of native abilities.
102
+ */
103
+ private _nativeServePromiseResolve?;
104
+ /**
105
+ * Stores all event subscriptions as a Map of pattern → array of callback functions
106
+ * Example structure:
107
+ * {
108
+ * 'user.login' => [handleLogin, logLoginEvent], // 2 functions listening to user.login
109
+ * 'payment.*' => [processPayment], // 1 function listening to all payment events
110
+ * 'system.shutdown' => [saveState, cleanupResources] // 2 functions for shutdown
111
+ * }
112
+ * When an event arrives, we check which patterns match and call all their callbacks
113
+ */
80
114
  private _eventSubscriptions;
81
115
  constructor(options?: KadiClientConfig);
116
+ /**
117
+ * Get the currently active broker name
118
+ */
119
+ get currentBroker(): string | undefined;
120
+ /**
121
+ * Set the currently active broker
122
+ * @param brokerName The name of the broker to use
123
+ * @throws Error if the broker name doesn't exist in configuration
124
+ */
125
+ setCurrentBroker(brokerName: string): void;
126
+ /**
127
+ * Get the current broker's connection (if connected)
128
+ */
129
+ private getCurrentBrokerConnection;
130
+ /**
131
+ * Resolve broker configuration with agent.json integration
132
+ * Precedence: Code brokers > agent.json brokers > environment defaults
133
+ */
134
+ private resolveBrokerConfiguration;
135
+ /**
136
+ * Resolve default broker with fallback logic
137
+ * Priority: Explicit defaultBroker > agent.json defaultBroker > 'prod' key > first broker key
138
+ */
139
+ private resolveDefaultBroker;
82
140
  /**
83
141
  * Register a tool for this service
84
142
  *
@@ -113,13 +171,18 @@ export declare class KadiClient extends EventEmitter {
113
171
  */
114
172
  publishEvent(eventName: string, data?: any): void;
115
173
  /**
116
- * Connect to brokers (for event subscription and/or broker protocol)
174
+ * Connect to all configured brokers (for event subscription and/or broker protocol)
175
+ * Always connects to ALL brokers defined in this.brokers for maximum redundancy
176
+ */
177
+ connectToBrokers(): Promise<void>;
178
+ /**
179
+ * Check if connected to a specific broker URL
117
180
  */
118
- connectToBrokers(urls?: string[]): Promise<void>;
181
+ isConnectedToBroker(url: string): boolean;
119
182
  /**
120
183
  * Connect to a single broker
121
184
  */
122
- private connectToBroker;
185
+ connectToBroker(url: string, brokerName?: string): Promise<void>;
123
186
  /**
124
187
  * Perform KADI protocol handshake
125
188
  */
@@ -188,15 +251,83 @@ export declare class KadiClient extends EventEmitter {
188
251
  */
189
252
  callTool<TInput = unknown, TOutput = unknown>(targetAgent: string, toolName: string, params?: TInput): Promise<TOutput>;
190
253
  /**
191
- * Load an external ability
254
+ * Send a request directly to the broker
255
+ * Uses the current broker or the specified broker
256
+ *
257
+ * @param method The RPC method to call (e.g., 'kadi.ability.list')
258
+ * @param params The parameters for the method
259
+ * @param brokerName Optional broker name to use (overrides current broker)
260
+ * @returns The response from the broker
261
+ */
262
+ sendBrokerRequest(method: string, params?: unknown, brokerName?: string): Promise<unknown>;
263
+ /**
264
+ * Load an external ability and make its methods available for calling
265
+ *
266
+ * This is the KadiClient's convenient wrapper for loading abilities. It handles
267
+ * broker resolution from your client config and delegates the actual loading
268
+ * to the standalone loadAbility() function.
269
+ *
270
+ * Note: This method delegates to the standalone loadAbility() function after
271
+ * resolving broker configurations. If you need more control or don't have a
272
+ * KadiClient instance, you can use the standalone loadAbility() function directly.
273
+ *
274
+ * @param nameOrPath - Which ability to load. Can be:
275
+ * - "ability-name" - loads from your installed abilities
276
+ * - "/path/to/ability" - loads from a folder path
277
+ *
278
+ * @param protocol - How to connect to the ability:
279
+ * - 'native': Load directly into this process (fastest, same language only)
280
+ * - 'stdio': Spawn as child process, communicate via stdin/stdout (any language)
281
+ * - 'broker': Connect via broker (ability runs anywhere, most flexible)
282
+ *
283
+ * @param options - Configuration for how to load the ability:
284
+ *
285
+ * broker: Which named broker to use (from your KadiClient config). Only for 'broker' protocol.
286
+ * Example: 'prod', 'local', 'staging'
287
+ * Uses your current/default broker if not specified.
288
+ *
289
+ * brokerUrl: Direct broker WebSocket URL. Only for 'broker' protocol.
290
+ * Example: 'ws://localhost:8080', 'wss://broker.company.com'
291
+ * Overrides the 'broker' option if provided.
292
+ *
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
+ * networks: Which KADI networks to search for the ability. Only for 'broker' protocol.
299
+ * Example: ['global', 'team-alpha', 'dev-environment']
300
+ * search specific networks to find them. Defaults to ['global'] if not specified.
301
+ *
302
+ * @returns A proxy object that lets you call the ability's methods directly.
303
+ * Example: ability.processData({input: "hello"}) calls the ability's processData method.
304
+ *
305
+ * @example
306
+ * // Load a JavaScript ability in the same process (fastest)
307
+ * const mathLib = await client.loadAbility('math-utils', 'native');
308
+ * const result = await mathLib.add({a: 5, b: 3}); // Returns 8
309
+ *
310
+ * @example
311
+ * // Load a Go/Python/Rust ability via child process
312
+ * const imageProcessor = await client.loadAbility('image-resizer', 'stdio');
313
+ * const thumbnail = await imageProcessor.resize({image: buffer, size: '100x100'});
314
+ *
315
+ * @example
316
+ * // Connect to an ability running on a remote broker (using named broker from config)
317
+ * const aiService = await client.loadAbility('gpt-analyzer', 'broker', {
318
+ * broker: 'prod', // Use the 'prod' broker from KadiClient config
319
+ * networks: ['ai-services', 'global'] // Look in these networks
320
+ * });
321
+ * const analysis = await aiService.analyze({text: "Hello world"});
192
322
  */
193
323
  loadAbility(nameOrPath: string, protocol?: 'native' | 'stdio' | 'broker', options?: {
324
+ broker?: string;
194
325
  brokerUrl?: string;
195
326
  spawnAbility?: boolean;
196
327
  networks?: string[];
197
328
  }): Promise<LoadedAbility>;
198
329
  /**
199
- * Disconnect from brokers
330
+ * Disconnect from brokers and cleanup resources
200
331
  */
201
332
  disconnect(): Promise<void>;
202
333
  /**
@@ -205,6 +336,7 @@ export declare class KadiClient extends EventEmitter {
205
336
  private _loadAgentJsonExports;
206
337
  /**
207
338
  * Find agent.json file
339
+ * TODO: Not sure, but maybe this function can be moved to pathUtils.ts?
208
340
  */
209
341
  private _findAgentJson;
210
342
  /**
@@ -287,12 +419,17 @@ export declare class KadiClient extends EventEmitter {
287
419
  */
288
420
  private _matchesPattern;
289
421
  /**
290
- * Dispatch event to subscribers
291
- * TODO: I do not understand this function
422
+ * Dispatch event to subscribers - This is the final delivery step
423
+ *
424
+ * After all the routing through transports and pattern matching,
425
+ * this function actually calls the user's callback functions with the event data.
426
+ *
427
+ * Example: If user did `client.subscribeToEvent('user.login', myFunction)`
428
+ * then when 'user.login' event arrives, this calls `myFunction(eventData)`
292
429
  *
293
430
  * @private
294
- * @param pattern Pattern that matched
295
- * @param data Event data
431
+ * @param pattern Pattern that matched (e.g., 'user.login' or 'payment.*')
432
+ * @param data Event data to pass to the callbacks
296
433
  */
297
434
  private _dispatchEvent;
298
435
  get isConnected(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"KadiClient.d.ts","sourceRoot":"","sources":["../src/KadiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KadiClient.d.ts","sourceRoot":"","sources":["../src/KadiClient.ts"],"names":[],"mappings":"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"}