@kadi.build/core 0.0.1-alpha.1 → 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 (179) 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/agent.json +0 -18
  176. package/broker.js +0 -214
  177. package/index.js +0 -370
  178. package/ipc.js +0 -220
  179. package/ipcInterfaces/pythonAbilityIPC.py +0 -177
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Ability Context
3
+ * ================
4
+ *
5
+ * Context provided to abilities when running in stdio or native mode.
6
+ * Enables abilities to load other abilities with inherited configuration.
7
+ *
8
+ * **Context Flow:**
9
+ * - Native/Stdio: Context flows from parent to child
10
+ * - Broker: Services are independent (no context inheritance)
11
+ *
12
+ * @module abilities/AbilityContext
13
+ */
14
+ import type { LoadedAbility } from './AbilityProxy.js';
15
+ /**
16
+ * Load options for ability loading
17
+ */
18
+ export interface LoadOptions {
19
+ /**
20
+ * Force specific transport (optional - auto-detect if omitted)
21
+ * - 'native': In-process module
22
+ * - 'stdio': Child process communication
23
+ * - 'broker': Remote service via broker
24
+ */
25
+ transport?: 'native' | 'stdio' | 'broker';
26
+ /**
27
+ * Version constraint (semver format)
28
+ * @example '^2.0.0', '>=1.5.0 <2.0.0'
29
+ */
30
+ version?: string;
31
+ /**
32
+ * Connection timeout in milliseconds
33
+ * @default 30000 (30 seconds)
34
+ */
35
+ timeout?: number;
36
+ /**
37
+ * Use cached instance if available
38
+ * @default true
39
+ */
40
+ cached?: boolean;
41
+ /**
42
+ * Enable debug logging for this ability
43
+ * @default false
44
+ */
45
+ debug?: boolean;
46
+ }
47
+ /**
48
+ * Authentication configuration
49
+ */
50
+ export interface AuthConfig {
51
+ /**
52
+ * Authentication token
53
+ */
54
+ token?: string;
55
+ /**
56
+ * API key
57
+ */
58
+ apiKey?: string;
59
+ /**
60
+ * Additional authentication data
61
+ */
62
+ [key: string]: unknown;
63
+ }
64
+ /**
65
+ * Context provided to abilities running as stdio/native children.
66
+ *
67
+ * Abilities receive this context from their parent and can use it to:
68
+ * - Load other abilities with inherited configuration
69
+ * - Emit events to parent
70
+ * - Access parent's broker/auth/networks
71
+ *
72
+ * **Important:** Context only flows through stdio/native transport.
73
+ * Broker services are independent and have their own context.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // Inside an ability
78
+ * export class DataAnalyzer extends Ability {
79
+ * async initialize() {
80
+ * // Load child abilities using inherited context
81
+ * this.mlModel = await this.context.load('ml-model');
82
+ * this.database = await this.context.load('database');
83
+ * }
84
+ *
85
+ * async analyze(data: any) {
86
+ * // Use loaded abilities
87
+ * const predictions = await this.mlModel.predict(data);
88
+ * await this.database.save(predictions);
89
+ * return predictions;
90
+ * }
91
+ * }
92
+ * ```
93
+ */
94
+ export interface AbilityContext {
95
+ /**
96
+ * Ability name
97
+ */
98
+ readonly name: string;
99
+ /**
100
+ * Broker URL (inherited from parent)
101
+ *
102
+ * If the parent is connected to a broker, the child inherits this connection.
103
+ * The child can use this to load abilities via the broker.
104
+ *
105
+ * @example 'ws://broker.example.com'
106
+ */
107
+ readonly broker?: string;
108
+ /**
109
+ * Authentication configuration (inherited from parent)
110
+ *
111
+ * Child abilities inherit parent's authentication credentials.
112
+ * This enables seamless ability chaining without re-authentication.
113
+ */
114
+ readonly auth?: AuthConfig;
115
+ /**
116
+ * Network memberships (inherited from parent)
117
+ *
118
+ * Networks define visibility boundaries for abilities in the broker.
119
+ * Child abilities inherit parent's network memberships.
120
+ *
121
+ * @example ['global', 'team-alpha', 'production']
122
+ */
123
+ readonly networks?: readonly string[];
124
+ /**
125
+ * Parent ability name (for chain tracking)
126
+ *
127
+ * Identifies the immediate parent that loaded this ability.
128
+ * Useful for debugging and cycle detection.
129
+ *
130
+ * @example If Agent → Python Analyzer, parent is 'Agent'
131
+ */
132
+ readonly parent?: string;
133
+ /**
134
+ * Full chain from root to this ability
135
+ *
136
+ * Tracks the complete loading chain for debugging and cycle detection.
137
+ * Each ability in the chain adds itself to this array.
138
+ *
139
+ * @example ['js-agent', 'data-processor', 'ml-model']
140
+ */
141
+ readonly chain: readonly string[];
142
+ /**
143
+ * Load another ability with inherited context.
144
+ *
145
+ * **Context Inheritance (Stdio/Native only):**
146
+ * - broker, auth, networks are inherited from this context
147
+ * - Chain is extended with the new ability
148
+ * - Cycle detection prevents infinite loops
149
+ *
150
+ * **Broker Services (Independent):**
151
+ * - When loading via broker, service has its own context
152
+ * - No configuration inheritance
153
+ * - Services are autonomous
154
+ *
155
+ * @param name - Ability name to load
156
+ * @param options - Loading options (transport, version, etc.)
157
+ * @returns Promise resolving to loaded ability proxy
158
+ *
159
+ * @throws {AbilityNotFoundError} If ability not found
160
+ * @throws {CircularDependencyError} If loading would create a cycle
161
+ * @throws {ConnectionError} If connection fails
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * // Load with auto-detection
166
+ * const helper = await context.load('helper-service');
167
+ *
168
+ * // Force specific transport
169
+ * const localScript = await context.load('script', { transport: 'stdio' });
170
+ *
171
+ * // With version constraint
172
+ * const mlModel = await context.load('ml-model', { version: '^2.0.0' });
173
+ * ```
174
+ */
175
+ load(name: string, options?: LoadOptions): Promise<LoadedAbility>;
176
+ /**
177
+ * Emit events to parent.
178
+ *
179
+ * Allows child abilities to communicate with their parent via events.
180
+ * Useful for progress updates, notifications, and status changes.
181
+ *
182
+ * @param event - Event name
183
+ * @param data - Event data
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Inside an ability
188
+ * context.emit('progress', { percent: 50 });
189
+ * context.emit('warning', { message: 'Low memory' });
190
+ * context.emit('completed', { result: data });
191
+ * ```
192
+ */
193
+ emit(event: string, data: unknown): void;
194
+ }
195
+ /**
196
+ * Create an AbilityContext from parent information.
197
+ *
198
+ * Used internally when spawning stdio child processes or loading native abilities.
199
+ *
200
+ * @param config - Context configuration
201
+ * @returns AbilityContext instance
202
+ *
203
+ * @internal
204
+ */
205
+ export declare function createAbilityContext(config: {
206
+ name: string;
207
+ broker?: string;
208
+ auth?: AuthConfig;
209
+ networks?: string[];
210
+ parent?: string;
211
+ chain?: string[];
212
+ loadFn: (name: string, options?: LoadOptions) => Promise<LoadedAbility>;
213
+ emitFn: (event: string, data: unknown) => void;
214
+ }): AbilityContext;
215
+ //# sourceMappingURL=AbilityContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbilityContext.d.ts","sourceRoot":"","sources":["../../src/abilities/AbilityContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAE3B;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAElE;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,GAAG,cAAc,CAWjB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Ability Context
3
+ * ================
4
+ *
5
+ * Context provided to abilities when running in stdio or native mode.
6
+ * Enables abilities to load other abilities with inherited configuration.
7
+ *
8
+ * **Context Flow:**
9
+ * - Native/Stdio: Context flows from parent to child
10
+ * - Broker: Services are independent (no context inheritance)
11
+ *
12
+ * @module abilities/AbilityContext
13
+ */
14
+ /**
15
+ * Create an AbilityContext from parent information.
16
+ *
17
+ * Used internally when spawning stdio child processes or loading native abilities.
18
+ *
19
+ * @param config - Context configuration
20
+ * @returns AbilityContext instance
21
+ *
22
+ * @internal
23
+ */
24
+ export function createAbilityContext(config) {
25
+ return {
26
+ name: config.name,
27
+ broker: config.broker,
28
+ auth: config.auth,
29
+ networks: config.networks ? [...config.networks] : undefined,
30
+ parent: config.parent,
31
+ chain: config.chain ? [...config.chain, config.name] : [config.name],
32
+ load: config.loadFn,
33
+ emit: config.emitFn
34
+ };
35
+ }
36
+ //# sourceMappingURL=AbilityContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbilityContext.js","sourceRoot":"","sources":["../../src/abilities/AbilityContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwMH;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,MASpC;IACC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACpE,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,177 @@
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 type { LoadOptions, TransportType } from './types.js';
13
+ import { type IBrokerClient } from '../transports/BrokerTransport.js';
14
+ import { type LoadedAbility } from './AbilityProxy.js';
15
+ /**
16
+ * Ability Loader
17
+ *
18
+ * Orchestrates the complete ability loading process:
19
+ * - Transport inference (smart auto-detection)
20
+ * - Caching (avoid duplicate loads)
21
+ * - Transport creation (factory pattern)
22
+ * - Validation (runtime checks)
23
+ * - Error handling (helpful messages)
24
+ *
25
+ * Single responsibility: Load abilities, nothing else.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const loader = new AbilityLoader();
30
+ *
31
+ * // Auto-detect (recommended)
32
+ * const calc = await loader.load('calculator', {}, brokerClient);
33
+ *
34
+ * // Explicit transport
35
+ * const remote = await loader.load('service', {
36
+ * transport: 'broker',
37
+ * networks: ['global']
38
+ * }, brokerClient);
39
+ *
40
+ * // With validation
41
+ * const typed = await loader.load<CalcAPI>('calc', {
42
+ * validate: true
43
+ * }, brokerClient);
44
+ * ```
45
+ */
46
+ export declare class AbilityLoader {
47
+ /**
48
+ * Ability cache with composite key strategy
49
+ *
50
+ * Handles complex scenarios:
51
+ * - Same name, different transports
52
+ * - Same name, different versions
53
+ * - Same name, different brokers
54
+ */
55
+ private cache;
56
+ /**
57
+ * Load an ability with explicit transport
58
+ *
59
+ * **Features:**
60
+ * - Explicit transport (no magic)
61
+ * - Smart caching (composite keys)
62
+ * - Runtime validation (optional)
63
+ * - Dynamic method access
64
+ *
65
+ * @param name - Ability name
66
+ * @param transport - Transport type (native, stdio, or broker)
67
+ * @param options - Load options (transport-specific)
68
+ * @param brokerClient - Broker client interface
69
+ * @returns Loaded ability with dynamic method access
70
+ *
71
+ * @throws {KadiError} If loading fails
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Broker transport
76
+ * const remote = await loader.load('service', 'broker', {
77
+ * networks: ['global']
78
+ * }, brokerClient);
79
+ *
80
+ * // With runtime validation
81
+ * const calc = await loader.load('calc', 'broker', {
82
+ * validate: true
83
+ * }, brokerClient);
84
+ *
85
+ * // Native transport
86
+ * const local = await loader.load('local-lib', 'native', {
87
+ * path: './abilities/local-lib'
88
+ * });
89
+ * ```
90
+ */
91
+ load(name: string, transport: TransportType, options?: LoadOptions, brokerClient?: IBrokerClient): Promise<LoadedAbility>;
92
+ /**
93
+ * Unload all abilities
94
+ *
95
+ * Disconnects all transports and clears cache.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * await loader.unloadAll();
100
+ * ```
101
+ */
102
+ unloadAll(): Promise<void>;
103
+ /**
104
+ * Get all loaded abilities
105
+ *
106
+ * @returns Array of loaded abilities
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const abilities = loader.getAll();
111
+ * console.log(`Loaded ${abilities.length} abilities`);
112
+ * ```
113
+ */
114
+ getAll(): LoadedAbility[];
115
+ /**
116
+ * Get cache statistics
117
+ *
118
+ * Useful for debugging and monitoring.
119
+ *
120
+ * @returns Cache statistics
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * const stats = loader.getStats();
125
+ * console.log(`Cached: ${stats.totalCached}, Connected: ${stats.connected}`);
126
+ * ```
127
+ */
128
+ getStats(): {
129
+ totalCached: number;
130
+ connected: number;
131
+ disconnected: number;
132
+ byTransport: Record<TransportType, number>;
133
+ };
134
+ /**
135
+ * Cleanup disconnected abilities
136
+ *
137
+ * Removes stale cache entries.
138
+ *
139
+ * @returns Number of stale entries removed
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const removed = loader.cleanup();
144
+ * console.log(`Cleaned up ${removed} disconnected abilities`);
145
+ * ```
146
+ */
147
+ cleanup(): number;
148
+ /**
149
+ * Create appropriate transport instance
150
+ *
151
+ * Clean factory pattern - delegates to specialized creation methods.
152
+ * Each transport type has its own dedicated method with proper validation.
153
+ *
154
+ * @param name - Ability name
155
+ * @param transport - Transport type (from inference)
156
+ * @param options - Load options
157
+ * @param brokerClient - Broker client (for broker transport)
158
+ * @returns Transport instance ready to connect
159
+ *
160
+ * @throws {KadiError} If transport creation fails
161
+ */
162
+ private createTransport;
163
+ /**
164
+ * Create broker transport with excellent error handling
165
+ *
166
+ * Validates broker connection and creates transport with proper configuration.
167
+ *
168
+ * @param name - Ability name
169
+ * @param options - Load options (broker-specific)
170
+ * @param brokerClient - Broker client interface
171
+ * @returns Broker transport instance
172
+ *
173
+ * @throws {KadiError} If broker client missing or invalid config
174
+ */
175
+ private createBrokerTransport;
176
+ }
177
+ //# sourceMappingURL=AbilityLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbilityLoader.d.ts","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAa;IACxB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,CAAsB;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,WAAgB,EACzB,YAAY,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,aAAa,CAAC;IAwCzB;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC;;;;;;;;;;OAUG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;;;;;;;;;;;OAYG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KAC5C;IAID;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IAuDvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;CAmE9B"}