@kadi.build/core 0.0.1-alpha.0 → 0.0.1-alpha.10

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 (180) hide show
  1. package/README.md +1387 -214
  2. package/dist/abilities/AbilityCache.d.ts +242 -0
  3. package/dist/abilities/AbilityCache.d.ts.map +1 -0
  4. package/dist/abilities/AbilityCache.js +285 -0
  5. package/dist/abilities/AbilityCache.js.map +1 -0
  6. package/dist/abilities/AbilityContext.d.ts +215 -0
  7. package/dist/abilities/AbilityContext.d.ts.map +1 -0
  8. package/dist/abilities/AbilityContext.js +36 -0
  9. package/dist/abilities/AbilityContext.js.map +1 -0
  10. package/dist/abilities/AbilityLoader.d.ts +177 -0
  11. package/dist/abilities/AbilityLoader.d.ts.map +1 -0
  12. package/dist/abilities/AbilityLoader.js +277 -0
  13. package/dist/abilities/AbilityLoader.js.map +1 -0
  14. package/dist/abilities/AbilityProxy.d.ts +463 -0
  15. package/dist/abilities/AbilityProxy.d.ts.map +1 -0
  16. package/dist/abilities/AbilityProxy.js +511 -0
  17. package/dist/abilities/AbilityProxy.js.map +1 -0
  18. package/dist/abilities/AbilityValidator.d.ts +172 -0
  19. package/dist/abilities/AbilityValidator.d.ts.map +1 -0
  20. package/dist/abilities/AbilityValidator.js +253 -0
  21. package/dist/abilities/AbilityValidator.js.map +1 -0
  22. package/dist/abilities/index.d.ts +26 -0
  23. package/dist/abilities/index.d.ts.map +1 -0
  24. package/dist/abilities/index.js +23 -0
  25. package/dist/abilities/index.js.map +1 -0
  26. package/dist/abilities/types.d.ts +156 -0
  27. package/dist/abilities/types.d.ts.map +1 -0
  28. package/dist/abilities/types.js +10 -0
  29. package/dist/abilities/types.js.map +1 -0
  30. package/dist/api/index.d.ts +92 -0
  31. package/dist/api/index.d.ts.map +1 -0
  32. package/dist/api/index.js +124 -0
  33. package/dist/api/index.js.map +1 -0
  34. package/dist/broker/BrokerConnection.d.ts +253 -0
  35. package/dist/broker/BrokerConnection.d.ts.map +1 -0
  36. package/dist/broker/BrokerConnection.js +434 -0
  37. package/dist/broker/BrokerConnection.js.map +1 -0
  38. package/dist/broker/BrokerConnectionManager.d.ts +216 -0
  39. package/dist/broker/BrokerConnectionManager.d.ts.map +1 -0
  40. package/dist/broker/BrokerConnectionManager.js +305 -0
  41. package/dist/broker/BrokerConnectionManager.js.map +1 -0
  42. package/dist/broker/BrokerProtocol.d.ts +280 -0
  43. package/dist/broker/BrokerProtocol.d.ts.map +1 -0
  44. package/dist/broker/BrokerProtocol.js +466 -0
  45. package/dist/broker/BrokerProtocol.js.map +1 -0
  46. package/dist/broker/index.d.ts +9 -0
  47. package/dist/broker/index.d.ts.map +1 -0
  48. package/dist/broker/index.js +9 -0
  49. package/dist/broker/index.js.map +1 -0
  50. package/dist/client/KadiClient.d.ts +270 -0
  51. package/dist/client/KadiClient.d.ts.map +1 -0
  52. package/dist/client/KadiClient.js +492 -0
  53. package/dist/client/KadiClient.js.map +1 -0
  54. package/dist/client/index.d.ts +7 -0
  55. package/dist/client/index.d.ts.map +1 -0
  56. package/dist/client/index.js +7 -0
  57. package/dist/client/index.js.map +1 -0
  58. package/dist/config/ConfigLoader.d.ts +138 -0
  59. package/dist/config/ConfigLoader.d.ts.map +1 -0
  60. package/dist/config/ConfigLoader.js +226 -0
  61. package/dist/config/ConfigLoader.js.map +1 -0
  62. package/dist/config/ConfigResolver.d.ts +135 -0
  63. package/dist/config/ConfigResolver.d.ts.map +1 -0
  64. package/dist/config/ConfigResolver.js +282 -0
  65. package/dist/config/ConfigResolver.js.map +1 -0
  66. package/dist/config/index.d.ts +8 -0
  67. package/dist/config/index.d.ts.map +1 -0
  68. package/dist/config/index.js +8 -0
  69. package/dist/config/index.js.map +1 -0
  70. package/dist/errors/index.d.ts +9 -0
  71. package/dist/errors/index.d.ts.map +1 -0
  72. package/dist/errors/index.js +8 -0
  73. package/dist/errors/index.js.map +1 -0
  74. package/dist/events/EventHub.d.ts +172 -0
  75. package/dist/events/EventHub.d.ts.map +1 -0
  76. package/dist/events/EventHub.js +333 -0
  77. package/dist/events/EventHub.js.map +1 -0
  78. package/dist/events/index.d.ts +7 -0
  79. package/dist/events/index.d.ts.map +1 -0
  80. package/dist/events/index.js +7 -0
  81. package/dist/events/index.js.map +1 -0
  82. package/dist/index.d.ts +49 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +63 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/messages/index.d.ts +33 -0
  87. package/dist/messages/index.d.ts.map +1 -0
  88. package/dist/messages/index.js +33 -0
  89. package/dist/messages/index.js.map +1 -0
  90. package/dist/schemas/index.d.ts +19 -0
  91. package/dist/schemas/index.d.ts.map +1 -0
  92. package/dist/schemas/index.js +25 -0
  93. package/dist/schemas/index.js.map +1 -0
  94. package/dist/schemas/kadi-extensions.d.ts +231 -0
  95. package/dist/schemas/kadi-extensions.d.ts.map +1 -0
  96. package/dist/schemas/kadi-extensions.js +14 -0
  97. package/dist/schemas/kadi-extensions.js.map +1 -0
  98. package/dist/schemas/mcp/schema.d.ts +1399 -0
  99. package/dist/schemas/mcp/schema.d.ts.map +1 -0
  100. package/dist/schemas/mcp/schema.js +53 -0
  101. package/dist/schemas/mcp/schema.js.map +1 -0
  102. package/dist/schemas/mcp/version.d.ts +37 -0
  103. package/dist/schemas/mcp/version.d.ts.map +1 -0
  104. package/dist/schemas/mcp/version.js +39 -0
  105. package/dist/schemas/mcp/version.js.map +1 -0
  106. package/dist/schemas/schema-builders.d.ts +178 -0
  107. package/dist/schemas/schema-builders.d.ts.map +1 -0
  108. package/dist/schemas/schema-builders.js +258 -0
  109. package/dist/schemas/schema-builders.js.map +1 -0
  110. package/dist/tools/ToolRegistry.d.ts +256 -0
  111. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  112. package/dist/tools/ToolRegistry.js +340 -0
  113. package/dist/tools/ToolRegistry.js.map +1 -0
  114. package/dist/tools/index.d.ts +7 -0
  115. package/dist/tools/index.d.ts.map +1 -0
  116. package/dist/tools/index.js +7 -0
  117. package/dist/tools/index.js.map +1 -0
  118. package/dist/transports/BrokerTransport.d.ts +151 -0
  119. package/dist/transports/BrokerTransport.d.ts.map +1 -0
  120. package/dist/transports/BrokerTransport.js +261 -0
  121. package/dist/transports/BrokerTransport.js.map +1 -0
  122. package/dist/transports/NativeTransport.d.ts +149 -0
  123. package/dist/transports/NativeTransport.d.ts.map +1 -0
  124. package/dist/transports/NativeTransport.js +302 -0
  125. package/dist/transports/NativeTransport.js.map +1 -0
  126. package/dist/transports/StdioTransport.d.ts +172 -0
  127. package/dist/transports/StdioTransport.d.ts.map +1 -0
  128. package/dist/transports/StdioTransport.js +410 -0
  129. package/dist/transports/StdioTransport.js.map +1 -0
  130. package/dist/transports/index.d.ts +10 -0
  131. package/dist/transports/index.d.ts.map +1 -0
  132. package/dist/transports/index.js +9 -0
  133. package/dist/transports/index.js.map +1 -0
  134. package/dist/types/broker.d.ts +301 -0
  135. package/dist/types/broker.d.ts.map +1 -0
  136. package/dist/types/broker.js +46 -0
  137. package/dist/types/broker.js.map +1 -0
  138. package/dist/types/config.d.ts +325 -0
  139. package/dist/types/config.d.ts.map +1 -0
  140. package/dist/types/config.js +17 -0
  141. package/dist/types/config.js.map +1 -0
  142. package/dist/types/errors.d.ts +178 -0
  143. package/dist/types/errors.d.ts.map +1 -0
  144. package/dist/types/errors.js +165 -0
  145. package/dist/types/errors.js.map +1 -0
  146. package/dist/types/events.d.ts +210 -0
  147. package/dist/types/events.d.ts.map +1 -0
  148. package/dist/types/events.js +8 -0
  149. package/dist/types/events.js.map +1 -0
  150. package/dist/types/index.d.ts +32 -0
  151. package/dist/types/index.d.ts.map +1 -0
  152. package/dist/types/index.js +21 -0
  153. package/dist/types/index.js.map +1 -0
  154. package/dist/types/protocol.d.ts +48 -0
  155. package/dist/types/protocol.d.ts.map +1 -0
  156. package/dist/types/protocol.js +11 -0
  157. package/dist/types/protocol.js.map +1 -0
  158. package/dist/types/tools.d.ts +67 -0
  159. package/dist/types/tools.d.ts.map +1 -0
  160. package/dist/types/tools.js +16 -0
  161. package/dist/types/tools.js.map +1 -0
  162. package/dist/types/transport.d.ts +250 -0
  163. package/dist/types/transport.d.ts.map +1 -0
  164. package/dist/types/transport.js +18 -0
  165. package/dist/types/transport.js.map +1 -0
  166. package/dist/validation/SchemaValidator.d.ts +208 -0
  167. package/dist/validation/SchemaValidator.d.ts.map +1 -0
  168. package/dist/validation/SchemaValidator.js +411 -0
  169. package/dist/validation/SchemaValidator.js.map +1 -0
  170. package/dist/validation/index.d.ts +11 -0
  171. package/dist/validation/index.d.ts.map +1 -0
  172. package/dist/validation/index.js +10 -0
  173. package/dist/validation/index.js.map +1 -0
  174. package/package.json +69 -5
  175. package/.prettierrc +0 -6
  176. package/agent.json +0 -18
  177. package/broker.js +0 -214
  178. package/index.js +0 -370
  179. package/ipc.js +0 -220
  180. package/ipcInterfaces/pythonAbilityIPC.py +0 -177
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Ability Loader
3
+ *
4
+ * Orchestrates ability loading with excellent developer experience:
5
+ * - Smart transport inference (auto-detect or explicit)
6
+ * - Intelligent caching (composite keys)
7
+ * - Runtime validation (catch issues early)
8
+ * - Helpful error messages (actionable suggestions)
9
+ *
10
+ * @module abilities/AbilityLoader
11
+ */
12
+ import { KadiError, ErrorCode } from '../types/index.js';
13
+ import { BrokerTransport } from '../transports/BrokerTransport.js';
14
+ import { AbilityProxy } from './AbilityProxy.js';
15
+ import { AbilityCache } from './AbilityCache.js';
16
+ import { AbilityValidator } from './AbilityValidator.js';
17
+ /**
18
+ * Ability Loader
19
+ *
20
+ * Orchestrates the complete ability loading process:
21
+ * - Transport inference (smart auto-detection)
22
+ * - Caching (avoid duplicate loads)
23
+ * - Transport creation (factory pattern)
24
+ * - Validation (runtime checks)
25
+ * - Error handling (helpful messages)
26
+ *
27
+ * Single responsibility: Load abilities, nothing else.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const loader = new AbilityLoader();
32
+ *
33
+ * // Auto-detect (recommended)
34
+ * const calc = await loader.load('calculator', {}, brokerClient);
35
+ *
36
+ * // Explicit transport
37
+ * const remote = await loader.load('service', {
38
+ * transport: 'broker',
39
+ * networks: ['global']
40
+ * }, brokerClient);
41
+ *
42
+ * // With validation
43
+ * const typed = await loader.load<CalcAPI>('calc', {
44
+ * validate: true
45
+ * }, brokerClient);
46
+ * ```
47
+ */
48
+ export class AbilityLoader {
49
+ /**
50
+ * Ability cache with composite key strategy
51
+ *
52
+ * Handles complex scenarios:
53
+ * - Same name, different transports
54
+ * - Same name, different versions
55
+ * - Same name, different brokers
56
+ */
57
+ cache = new AbilityCache();
58
+ /**
59
+ * Load an ability with explicit transport
60
+ *
61
+ * **Features:**
62
+ * - Explicit transport (no magic)
63
+ * - Smart caching (composite keys)
64
+ * - Runtime validation (optional)
65
+ * - Dynamic method access
66
+ *
67
+ * @param name - Ability name
68
+ * @param transport - Transport type (native, stdio, or broker)
69
+ * @param options - Load options (transport-specific)
70
+ * @param brokerClient - Broker client interface
71
+ * @returns Loaded ability with dynamic method access
72
+ *
73
+ * @throws {KadiError} If loading fails
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // Broker transport
78
+ * const remote = await loader.load('service', 'broker', {
79
+ * networks: ['global']
80
+ * }, brokerClient);
81
+ *
82
+ * // With runtime validation
83
+ * const calc = await loader.load('calc', 'broker', {
84
+ * validate: true
85
+ * }, brokerClient);
86
+ *
87
+ * // Native transport
88
+ * const local = await loader.load('local-lib', 'native', {
89
+ * path: './abilities/local-lib'
90
+ * });
91
+ * ```
92
+ */
93
+ async load(name, transport, options = {}, brokerClient) {
94
+ // Step 1: Check cache first (avoid duplicate loading)
95
+ const cacheKey = {
96
+ name,
97
+ transport,
98
+ version: options.version,
99
+ broker: 'broker' in options ? options.broker : undefined
100
+ };
101
+ const cached = this.cache.get(cacheKey);
102
+ if (cached && cached.__isConnected()) {
103
+ // Cache hit! Return existing ability
104
+ return cached;
105
+ }
106
+ // Step 2: Create appropriate transport
107
+ const transportInstance = this.createTransport(name, transport, options, brokerClient);
108
+ // Step 3: Connect to ability
109
+ await transportInstance.connect();
110
+ // Step 4: Create proxy for natural method calling
111
+ const ability = AbilityProxy.create(name, transportInstance, transport);
112
+ // Step 5: Validate if requested
113
+ if (options.validate) {
114
+ AbilityValidator.validate(ability);
115
+ }
116
+ // Step 6: Cache for future use
117
+ this.cache.set(cacheKey, ability);
118
+ return ability;
119
+ }
120
+ /**
121
+ * Unload all abilities
122
+ *
123
+ * Disconnects all transports and clears cache.
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * await loader.unloadAll();
128
+ * ```
129
+ */
130
+ async unloadAll() {
131
+ // Step 1: Get all cached abilities
132
+ const abilities = this.cache.getAll();
133
+ // Step 2: Disconnect all transports in parallel
134
+ const disconnectPromises = abilities.map(ability => ability.__disconnect().catch(() => {
135
+ // Ignore disconnect errors during cleanup
136
+ }));
137
+ await Promise.all(disconnectPromises);
138
+ // Step 3: Clear cache
139
+ this.cache.clear();
140
+ }
141
+ /**
142
+ * Get all loaded abilities
143
+ *
144
+ * @returns Array of loaded abilities
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const abilities = loader.getAll();
149
+ * console.log(`Loaded ${abilities.length} abilities`);
150
+ * ```
151
+ */
152
+ getAll() {
153
+ return this.cache.getAll();
154
+ }
155
+ /**
156
+ * Get cache statistics
157
+ *
158
+ * Useful for debugging and monitoring.
159
+ *
160
+ * @returns Cache statistics
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const stats = loader.getStats();
165
+ * console.log(`Cached: ${stats.totalCached}, Connected: ${stats.connected}`);
166
+ * ```
167
+ */
168
+ getStats() {
169
+ return this.cache.getStats();
170
+ }
171
+ /**
172
+ * Cleanup disconnected abilities
173
+ *
174
+ * Removes stale cache entries.
175
+ *
176
+ * @returns Number of stale entries removed
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * const removed = loader.cleanup();
181
+ * console.log(`Cleaned up ${removed} disconnected abilities`);
182
+ * ```
183
+ */
184
+ cleanup() {
185
+ return this.cache.cleanup();
186
+ }
187
+ /**
188
+ * Create appropriate transport instance
189
+ *
190
+ * Clean factory pattern - delegates to specialized creation methods.
191
+ * Each transport type has its own dedicated method with proper validation.
192
+ *
193
+ * @param name - Ability name
194
+ * @param transport - Transport type (from inference)
195
+ * @param options - Load options
196
+ * @param brokerClient - Broker client (for broker transport)
197
+ * @returns Transport instance ready to connect
198
+ *
199
+ * @throws {KadiError} If transport creation fails
200
+ */
201
+ createTransport(name, transport, options, brokerClient) {
202
+ // Delegate to appropriate transport creation method
203
+ switch (transport) {
204
+ case 'broker':
205
+ return this.createBrokerTransport(name, options, brokerClient);
206
+ case 'native':
207
+ // TODO: Implement native transport
208
+ // Phase 2 implementation
209
+ throw new KadiError('Native transport not yet implemented', ErrorCode.NOT_IMPLEMENTED, 501, {
210
+ abilityName: name,
211
+ transport: 'native',
212
+ suggestion: 'Use broker transport for now: { transport: "broker" }',
213
+ roadmap: 'Native transport coming in Phase 2',
214
+ documentation: 'See docs/ability-loading-design.md for implementation guide'
215
+ });
216
+ case 'stdio':
217
+ // TODO: Implement stdio transport
218
+ // Phase 2 implementation
219
+ throw new KadiError('Stdio transport not yet implemented', ErrorCode.NOT_IMPLEMENTED, 501, {
220
+ abilityName: name,
221
+ transport: 'stdio',
222
+ suggestion: 'Use broker transport for now: { transport: "broker" }',
223
+ roadmap: 'Stdio transport coming in Phase 2',
224
+ documentation: 'See docs/ability-chaining-corrected.md for implementation guide'
225
+ });
226
+ default:
227
+ // TypeScript exhaustiveness check ensures this is unreachable
228
+ const never = transport;
229
+ throw new KadiError(`Unknown transport type: ${never}`, ErrorCode.INVALID_CONFIG, 400, { abilityName: name });
230
+ }
231
+ }
232
+ /**
233
+ * Create broker transport with excellent error handling
234
+ *
235
+ * Validates broker connection and creates transport with proper configuration.
236
+ *
237
+ * @param name - Ability name
238
+ * @param options - Load options (broker-specific)
239
+ * @param brokerClient - Broker client interface
240
+ * @returns Broker transport instance
241
+ *
242
+ * @throws {KadiError} If broker client missing or invalid config
243
+ */
244
+ createBrokerTransport(name, options, brokerClient) {
245
+ // Step 1: Validate broker client exists
246
+ if (!brokerClient) {
247
+ throw new KadiError('Cannot use broker transport - not connected to broker', ErrorCode.BROKER_NOT_CONNECTED, 503, {
248
+ abilityName: name,
249
+ transport: 'broker',
250
+ reason: 'Broker client not provided to AbilityLoader',
251
+ suggestion: 'Connect to broker first: await client.connect()',
252
+ alternatives: [
253
+ 'Connect to broker before loading abilities',
254
+ 'Use different transport like native or stdio'
255
+ ],
256
+ hint: 'Broker transport requires active broker connection'
257
+ });
258
+ }
259
+ // Step 2: Extract broker-specific options (type-safe!)
260
+ const brokerOptions = options;
261
+ // Step 3: Determine networks to search
262
+ // Priority: explicit options > client networks
263
+ const networks = brokerOptions.networks ?? brokerClient.networks;
264
+ // Step 4: Determine which broker to use
265
+ // Priority: explicit broker > client default
266
+ const broker = brokerOptions.broker ?? brokerClient.getBrokerManager().getDefaultBrokerName() ?? undefined;
267
+ // Step 5: Create transport with validated config
268
+ return new BrokerTransport({
269
+ abilityName: name,
270
+ brokerUrl: '', // Not needed - using existing connection
271
+ brokerName: broker,
272
+ networks,
273
+ timeout: options.timeout
274
+ }, brokerClient);
275
+ }
276
+ }
277
+ //# sourceMappingURL=AbilityLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbilityLoader.js","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"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"}