@kadi.build/core 0.0.1-alpha.1 → 0.0.1-alpha.11

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