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

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.
Files changed (99) hide show
  1. package/README.md +1122 -216
  2. package/dist/KadiClient.d.ts +303 -0
  3. package/dist/KadiClient.d.ts.map +1 -0
  4. package/dist/KadiClient.js +1162 -0
  5. package/dist/KadiClient.js.map +1 -0
  6. package/dist/errors/error-codes.d.ts +215 -0
  7. package/dist/errors/error-codes.d.ts.map +1 -0
  8. package/dist/errors/error-codes.js +295 -0
  9. package/dist/errors/error-codes.js.map +1 -0
  10. package/dist/index.d.ts +15 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +24 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/loadAbility.d.ts +65 -0
  15. package/dist/loadAbility.d.ts.map +1 -0
  16. package/dist/loadAbility.js +335 -0
  17. package/dist/loadAbility.js.map +1 -0
  18. package/dist/messages/BrokerMessages.d.ts +84 -0
  19. package/dist/messages/BrokerMessages.d.ts.map +1 -0
  20. package/dist/messages/BrokerMessages.js +127 -0
  21. package/dist/messages/BrokerMessages.js.map +1 -0
  22. package/dist/messages/MessageBuilder.d.ts +83 -0
  23. package/dist/messages/MessageBuilder.d.ts.map +1 -0
  24. package/dist/messages/MessageBuilder.js +144 -0
  25. package/dist/messages/MessageBuilder.js.map +1 -0
  26. package/dist/schemas/events.schemas.d.ts +177 -0
  27. package/dist/schemas/events.schemas.d.ts.map +1 -0
  28. package/dist/schemas/events.schemas.js +265 -0
  29. package/dist/schemas/events.schemas.js.map +1 -0
  30. package/dist/schemas/index.d.ts +3 -0
  31. package/dist/schemas/index.d.ts.map +1 -0
  32. package/dist/schemas/index.js +4 -0
  33. package/dist/schemas/index.js.map +1 -0
  34. package/dist/schemas/kadi.schemas.d.ts +70 -0
  35. package/dist/schemas/kadi.schemas.d.ts.map +1 -0
  36. package/dist/schemas/kadi.schemas.js +120 -0
  37. package/dist/schemas/kadi.schemas.js.map +1 -0
  38. package/dist/transports/BrokerTransport.d.ts +96 -0
  39. package/dist/transports/BrokerTransport.d.ts.map +1 -0
  40. package/dist/transports/BrokerTransport.js +145 -0
  41. package/dist/transports/BrokerTransport.js.map +1 -0
  42. package/dist/transports/NativeTransport.d.ts +92 -0
  43. package/dist/transports/NativeTransport.d.ts.map +1 -0
  44. package/dist/transports/NativeTransport.js +221 -0
  45. package/dist/transports/NativeTransport.js.map +1 -0
  46. package/dist/transports/StdioTransport.d.ts +112 -0
  47. package/dist/transports/StdioTransport.d.ts.map +1 -0
  48. package/dist/transports/StdioTransport.js +440 -0
  49. package/dist/transports/StdioTransport.js.map +1 -0
  50. package/dist/transports/Transport.d.ts +93 -0
  51. package/dist/transports/Transport.d.ts.map +1 -0
  52. package/dist/transports/Transport.js +13 -0
  53. package/dist/transports/Transport.js.map +1 -0
  54. package/dist/types/broker.d.ts +31 -0
  55. package/dist/types/broker.d.ts.map +1 -0
  56. package/dist/types/broker.js +6 -0
  57. package/dist/types/broker.js.map +1 -0
  58. package/dist/types/core.d.ts +138 -0
  59. package/dist/types/core.d.ts.map +1 -0
  60. package/dist/types/core.js +26 -0
  61. package/dist/types/core.js.map +1 -0
  62. package/dist/types/events.d.ts +186 -0
  63. package/dist/types/events.d.ts.map +1 -0
  64. package/dist/types/events.js +16 -0
  65. package/dist/types/events.js.map +1 -0
  66. package/dist/types/index.d.ts +9 -0
  67. package/dist/types/index.d.ts.map +1 -0
  68. package/dist/types/index.js +13 -0
  69. package/dist/types/index.js.map +1 -0
  70. package/dist/types/protocol.d.ts +160 -0
  71. package/dist/types/protocol.d.ts.map +1 -0
  72. package/dist/types/protocol.js +5 -0
  73. package/dist/types/protocol.js.map +1 -0
  74. package/dist/utils/agentUtils.d.ts +102 -0
  75. package/dist/utils/agentUtils.d.ts.map +1 -0
  76. package/dist/utils/agentUtils.js +166 -0
  77. package/dist/utils/agentUtils.js.map +1 -0
  78. package/dist/utils/commandUtils.d.ts +45 -0
  79. package/dist/utils/commandUtils.d.ts.map +1 -0
  80. package/dist/utils/commandUtils.js +145 -0
  81. package/dist/utils/commandUtils.js.map +1 -0
  82. package/dist/utils/configUtils.d.ts +55 -0
  83. package/dist/utils/configUtils.d.ts.map +1 -0
  84. package/dist/utils/configUtils.js +100 -0
  85. package/dist/utils/configUtils.js.map +1 -0
  86. package/dist/utils/logger.d.ts +59 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +122 -0
  89. package/dist/utils/logger.js.map +1 -0
  90. package/dist/utils/pathUtils.d.ts +48 -0
  91. package/dist/utils/pathUtils.d.ts.map +1 -0
  92. package/dist/utils/pathUtils.js +128 -0
  93. package/dist/utils/pathUtils.js.map +1 -0
  94. package/package.json +58 -5
  95. package/agent.json +0 -18
  96. package/broker.js +0 -214
  97. package/index.js +0 -382
  98. package/ipc.js +0 -220
  99. package/ipcInterfaces/pythonAbilityIPC.py +0 -177
@@ -0,0 +1,303 @@
1
+ import { EventEmitter } from 'events';
2
+ import { JSONSchema, BrokerConnection } from './types/core.js';
3
+ import { LoadedAbility } from './loadAbility.js';
4
+ export interface KadiClientConfig {
5
+ name?: string;
6
+ version?: string;
7
+ description?: string;
8
+ role?: 'agent' | 'ability' | 'service';
9
+ protocol?: 'native' | 'stdio' | 'broker';
10
+ scope?: string;
11
+ networks?: string[];
12
+ brokerUrls?: string[];
13
+ brokerUrl?: string;
14
+ maxBufferSize?: number;
15
+ abilityAgentJSON?: string;
16
+ [key: string]: any;
17
+ }
18
+ export interface ToolSchema {
19
+ name?: string;
20
+ description?: string;
21
+ inputSchema?: JSONSchema;
22
+ outputSchema?: JSONSchema;
23
+ }
24
+ type ToolHandler = (params: unknown) => Promise<unknown>;
25
+ interface RegisteredTool {
26
+ name: string;
27
+ handler: ToolHandler;
28
+ schema?: ToolSchema;
29
+ }
30
+ /**
31
+ * KadiClient - Unified client for KADI protocol
32
+ *
33
+ * This class combines the functionality of KadiAgent and KadiAbility,
34
+ * providing a single interface for:
35
+ *
36
+ * 1. Registering tools that can be called by others
37
+ * 2. Calling remote tools on other services
38
+ * 3. Supporting multiple protocols (native, stdio, broker)
39
+ * 4. Connecting to broker with configurable role (agent, ability, service)
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * // Create as an ability
44
+ * const service = new KadiClient({
45
+ * name: 'math-service',
46
+ * role: 'ability',
47
+ * protocol: 'broker'
48
+ * });
49
+ *
50
+ * // Register tools
51
+ * service.registerTool('add', async ({a, b}) => ({result: a + b}));
52
+ *
53
+ * // With schema
54
+ * service.tool('multiply', async ({a, b}) => ({result: a * b}));
55
+ *
56
+ * // Start serving
57
+ * await service.serve();
58
+ * ```
59
+ */
60
+ export declare class KadiClient extends EventEmitter {
61
+ readonly name: string;
62
+ readonly version: string;
63
+ readonly description: string;
64
+ readonly role: 'agent' | 'ability' | 'service';
65
+ protocol: 'native' | 'stdio' | 'broker';
66
+ readonly scope: string;
67
+ readonly networks: string[];
68
+ readonly brokerUrls: string[];
69
+ readonly abilityAgentJSON?: string;
70
+ private readonly logger;
71
+ private protocolHandler?;
72
+ readonly toolHandlers: Map<string, RegisteredTool>;
73
+ private readonly _abilities;
74
+ private readonly _brokerConnections;
75
+ private _isConnected;
76
+ private _agentId;
77
+ private _idFactory;
78
+ private _pendingResponses;
79
+ private _pendingToolCalls;
80
+ private _eventSubscriptions;
81
+ constructor(options?: KadiClientConfig);
82
+ /**
83
+ * Register a tool for this service
84
+ *
85
+ * @param name - Tool name
86
+ * @param handler - Handler function
87
+ * @param schema - Optional schema
88
+ * @returns This instance for chaining
89
+ */
90
+ registerTool(name: string, handler: ToolHandler, schema?: ToolSchema): this;
91
+ /**
92
+ * Get all registered tool names
93
+ */
94
+ getToolNames(): string[];
95
+ /**
96
+ * Get all registered tools (agent compatibility)
97
+ */
98
+ getTools(): string[];
99
+ /**
100
+ * Check if a tool is registered
101
+ */
102
+ hasTool(name: string): boolean;
103
+ /**
104
+ * Get tool handler
105
+ */
106
+ getToolHandler(name: string): ToolHandler | undefined;
107
+ /**
108
+ * Get tool schema
109
+ */
110
+ getToolSchema(name: string): ToolSchema | undefined;
111
+ /**
112
+ * Publish an event
113
+ */
114
+ publishEvent(eventName: string, data?: any): void;
115
+ /**
116
+ * Connect to brokers (for event subscription and/or broker protocol)
117
+ */
118
+ connectToBrokers(urls?: string[]): Promise<void>;
119
+ /**
120
+ * Connect to a single broker
121
+ */
122
+ private connectToBroker;
123
+ /**
124
+ * Perform KADI protocol handshake
125
+ */
126
+ private performHandshake;
127
+ /**
128
+ * Start heartbeat to keep broker connection alive
129
+ * Sends ping messages at the specified interval to prevent timeout
130
+ */
131
+ private startHeartbeat;
132
+ /**
133
+ * Register capabilities with broker
134
+ */
135
+ private registerCapabilities;
136
+ /**
137
+ * Send request to broker and wait for response
138
+ */
139
+ private sendRequest;
140
+ /**
141
+ * Handle incoming broker messages
142
+ */
143
+ private handleBrokerMessage;
144
+ /**
145
+ * Handle tool invocation result from broker
146
+ */
147
+ private handleToolResult;
148
+ /**
149
+ * Handle incoming tool invocation request
150
+ */
151
+ private handleToolInvocation;
152
+ /**
153
+ * Extract tool definitions for broker registration
154
+ */
155
+ private extractToolsForBroker;
156
+ /**
157
+ * Start serving (main entry point)
158
+ *
159
+ * @param options - Optional serve options
160
+ */
161
+ serve(options?: {
162
+ mode?: 'native' | 'stdio' | 'broker';
163
+ }): Promise<void>;
164
+ /**
165
+ * Start the client (alias for serve for agent compatibility)
166
+ */
167
+ start(): Promise<void>;
168
+ /**
169
+ * Discover tools available from a remote agent
170
+ *
171
+ * This function queries the broker to find what tools
172
+ * a specific remote agent provides.
173
+ *
174
+ * @param targetAgent - The name of the agent to discover tools from
175
+ * @returns Array of tool names available from the target agent
176
+ */
177
+ discoverRemoteTools(targetAgent: string): Promise<string[]>;
178
+ /**
179
+ * Call a tool on a remote agent via the broker
180
+ *
181
+ * This function sends an RPC call through the broker to invoke
182
+ * a specific tool on a remote agent.
183
+ *
184
+ * @param targetAgent - The name of the agent that has the tool
185
+ * @param toolName - The tool name to invoke
186
+ * @param params - The parameters to pass to the tool
187
+ * @returns The result from the remote tool invocation
188
+ */
189
+ callTool<TInput = unknown, TOutput = unknown>(targetAgent: string, toolName: string, params?: TInput): Promise<TOutput>;
190
+ /**
191
+ * Load an external ability
192
+ */
193
+ loadAbility(nameOrPath: string, protocol?: 'native' | 'stdio' | 'broker', options?: {
194
+ brokerUrl?: string;
195
+ spawnAbility?: boolean;
196
+ networks?: string[];
197
+ }): Promise<LoadedAbility>;
198
+ /**
199
+ * Disconnect from brokers
200
+ */
201
+ disconnect(): Promise<void>;
202
+ /**
203
+ * Helper to load agent.json exports
204
+ */
205
+ private _loadAgentJsonExports;
206
+ /**
207
+ * Find agent.json file
208
+ */
209
+ private _findAgentJson;
210
+ /**
211
+ * Subscribe to events with unified API across all protocols
212
+ *
213
+ * @param pattern Event pattern - exact string for native/stdio, wildcards supported for broker
214
+ * @param callback Function to call when event is received
215
+ * @returns Unsubscribe function
216
+ */
217
+ subscribeToEvent(pattern: string, callback: (data: any) => void): () => void;
218
+ /**
219
+ * Subscribe to multiple events at once
220
+ *
221
+ * @param patterns Array of event patterns
222
+ * @param callback Function to call when any event is received (receives eventName and data)
223
+ * @returns Unsubscribe function that removes all subscriptions
224
+ */
225
+ subscribeToEvents(patterns: string[], callback: (eventName: string, data: any) => void): () => void;
226
+ /**
227
+ * Unsubscribe from event pattern
228
+ *
229
+ * @param pattern Event pattern to unsubscribe from
230
+ * @param callback Optional specific callback to remove (if not provided, removes all)
231
+ */
232
+ unsubscribeFromEvent(pattern: string, callback?: (data: any) => void): void;
233
+ /**
234
+ * Subscribe to an event only once
235
+ *
236
+ * @param pattern Event pattern
237
+ * @param callback Function to call when event is received (auto-unsubscribes after first call)
238
+ */
239
+ onceEvent(pattern: string, callback: (data: any) => void): void;
240
+ /**
241
+ * Setup universal event subscription that works regardless of client protocol
242
+ *
243
+ * @private
244
+ * @param pattern Event pattern to subscribe to
245
+ */
246
+ /**
247
+ * Marker to track if we've already set up the event transport infrastructure
248
+ */
249
+ private _eventTransportSetup;
250
+ /**
251
+ * Setup the event transport infrastructure ONCE, then subscribe to specific patterns
252
+ * TODO: I do not understand this function very well - better step by step comments
253
+ * would be nice.
254
+ *
255
+ * @private
256
+ * @param pattern Event pattern to subscribe to (e.g., 'echo.test-event')
257
+ */
258
+ private _setupProtocolEventSubscription;
259
+ /**
260
+ * Subscribe to broker events
261
+ *
262
+ * @private
263
+ * @param pattern Event pattern to subscribe to
264
+ */
265
+ private _subscribeToBrokerEvent;
266
+ /**
267
+ * Setup broker event delivery handler
268
+ *
269
+ * @private
270
+ */
271
+ private _brokerEventHandlerSetup;
272
+ private _setupBrokerEventHandler;
273
+ /**
274
+ * Clean up protocol-specific event subscription
275
+ *
276
+ * @private
277
+ * @param pattern Event pattern to clean up
278
+ */
279
+ private _cleanupProtocolEventSubscription;
280
+ /**
281
+ * Check if event name matches pattern
282
+ *
283
+ * @private
284
+ * @param eventName Event name to check
285
+ * @param pattern Pattern to match against (supports wildcards for broker protocol)
286
+ * @returns True if matches
287
+ */
288
+ private _matchesPattern;
289
+ /**
290
+ * Dispatch event to subscribers
291
+ * TODO: I do not understand this function
292
+ *
293
+ * @private
294
+ * @param pattern Pattern that matched
295
+ * @param data Event data
296
+ */
297
+ private _dispatchEvent;
298
+ get isConnected(): boolean;
299
+ get agentId(): string;
300
+ get broker(): BrokerConnection | undefined;
301
+ }
302
+ export default KadiClient;
303
+ //# sourceMappingURL=KadiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KadiClient.d.ts","sourceRoot":"","sources":["../src/KadiClient.ts"],"names":[],"mappings":"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"}