@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,226 @@
1
+ /**
2
+ * Configuration Loader
3
+ *
4
+ * Loads configuration from various sources:
5
+ * - Environment variables
6
+ * - Configuration files (agent.json, kadi.config.json)
7
+ * - Package.json
8
+ *
9
+ * @module config/ConfigLoader
10
+ */
11
+ import { readFileSync, existsSync } from 'fs';
12
+ import { resolve, dirname } from 'path';
13
+ /**
14
+ * Configuration Loader
15
+ *
16
+ * Handles the actual loading of configuration from files and environment.
17
+ * Separated from ConfigResolver for testability.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const loader = new ConfigLoader();
22
+ *
23
+ * // Load from environment
24
+ * const envConfig = loader.loadFromEnvironment();
25
+ *
26
+ * // Load from file
27
+ * const fileConfig = await loader.loadFromFile();
28
+ * ```
29
+ */
30
+ export class ConfigLoader {
31
+ /**
32
+ * Configuration file names to search for (in order of preference)
33
+ */
34
+ configFiles = [
35
+ 'agent.json',
36
+ 'kadi.config.json',
37
+ '.kadirc.json'
38
+ ];
39
+ /**
40
+ * Load configuration from environment variables
41
+ *
42
+ * Reads KADI_* environment variables and returns structured config.
43
+ *
44
+ * @returns Environment configuration
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // With environment variables:
49
+ * // KADI_BROKER_URL=ws://localhost:8080
50
+ * // KADI_NETWORKS=global,team-alpha
51
+ *
52
+ * const config = loader.loadFromEnvironment();
53
+ * // { KADI_BROKER_URL: 'ws://localhost:8080', KADI_NETWORKS: 'global,team-alpha' }
54
+ * ```
55
+ */
56
+ loadFromEnvironment() {
57
+ return {
58
+ KADI_BROKER_URL: process.env.KADI_BROKER_URL,
59
+ KADI_NETWORKS: process.env.KADI_NETWORKS,
60
+ KADI_TRANSPORT: this.parseTransport(process.env.KADI_TRANSPORT),
61
+ KADI_AGENT_NAME: process.env.KADI_AGENT_NAME,
62
+ KADI_AUTO_CONNECT: process.env.KADI_AUTO_CONNECT
63
+ };
64
+ }
65
+ /**
66
+ * Load configuration from file
67
+ *
68
+ * Searches for configuration files in order of preference:
69
+ * 1. agent.json
70
+ * 2. kadi.config.json
71
+ * 3. .kadirc.json
72
+ *
73
+ * Searches from current directory up to root.
74
+ *
75
+ * @param startDir - Directory to start searching from (defaults to cwd)
76
+ * @returns Loaded configuration or null if not found
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const config = await loader.loadFromFile();
81
+ * if (config) {
82
+ * console.log('Loaded from:', config.name);
83
+ * }
84
+ * ```
85
+ */
86
+ async loadFromFile(startDir) {
87
+ const searchDir = startDir ?? process.cwd();
88
+ // Search for config files
89
+ for (const configFile of this.configFiles) {
90
+ const filePath = this.findConfigFile(configFile, searchDir);
91
+ if (filePath) {
92
+ return this.loadConfigFile(filePath);
93
+ }
94
+ }
95
+ // Also try loading from package.json
96
+ const packageConfig = this.loadFromPackageJson(searchDir);
97
+ if (packageConfig) {
98
+ return packageConfig;
99
+ }
100
+ return null;
101
+ }
102
+ /**
103
+ * Find a configuration file by searching up the directory tree
104
+ *
105
+ * @param filename - Config filename to search for
106
+ * @param startDir - Directory to start searching from
107
+ * @returns Full path to config file or null if not found
108
+ */
109
+ findConfigFile(filename, startDir) {
110
+ let currentDir = resolve(startDir);
111
+ const root = resolve('/');
112
+ while (currentDir !== root) {
113
+ const filePath = resolve(currentDir, filename);
114
+ if (existsSync(filePath)) {
115
+ return filePath;
116
+ }
117
+ // Move up one directory
118
+ const parentDir = dirname(currentDir);
119
+ if (parentDir === currentDir) {
120
+ break; // Reached root
121
+ }
122
+ currentDir = parentDir;
123
+ }
124
+ return null;
125
+ }
126
+ /**
127
+ * Load and parse a configuration file
128
+ *
129
+ * @param filePath - Path to configuration file
130
+ * @returns Parsed configuration
131
+ * @throws If file cannot be read or parsed
132
+ */
133
+ loadConfigFile(filePath) {
134
+ try {
135
+ const content = readFileSync(filePath, 'utf-8');
136
+ const config = JSON.parse(content);
137
+ return config;
138
+ }
139
+ catch (error) {
140
+ console.warn(`Failed to load config file ${filePath}:`, error);
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Load KADI configuration from package.json
146
+ *
147
+ * Looks for a "kadi" field in package.json
148
+ *
149
+ * @param startDir - Directory to start searching from
150
+ * @returns Configuration from package.json or null
151
+ *
152
+ * @example
153
+ * ```json
154
+ * // package.json
155
+ * {
156
+ * "name": "my-package",
157
+ * "kadi": {
158
+ * "name": "my-service",
159
+ * "brokers": {
160
+ * "local": "ws://localhost:8080"
161
+ * }
162
+ * }
163
+ * }
164
+ * ```
165
+ */
166
+ loadFromPackageJson(startDir) {
167
+ const packageJsonPath = this.findConfigFile('package.json', startDir);
168
+ if (!packageJsonPath) {
169
+ return null;
170
+ }
171
+ try {
172
+ const content = readFileSync(packageJsonPath, 'utf-8');
173
+ const packageJson = JSON.parse(content);
174
+ if (packageJson.kadi) {
175
+ return packageJson.kadi;
176
+ }
177
+ }
178
+ catch (error) {
179
+ // Ignore package.json errors - it's optional
180
+ }
181
+ return null;
182
+ }
183
+ /**
184
+ * Parse transport string to TransportKind
185
+ *
186
+ * @param value - Transport string
187
+ * @returns TransportKind or undefined
188
+ */
189
+ parseTransport(value) {
190
+ if (!value) {
191
+ return undefined;
192
+ }
193
+ const lower = value.toLowerCase();
194
+ if (lower === 'native' || lower === 'stdio' || lower === 'broker') {
195
+ return lower;
196
+ }
197
+ return undefined;
198
+ }
199
+ /**
200
+ * Get configuration file path if one exists
201
+ *
202
+ * Useful for debugging and logging which config file is being used.
203
+ *
204
+ * @param startDir - Directory to start searching from
205
+ * @returns Path to config file or null
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const configPath = loader.getConfigPath();
210
+ * if (configPath) {
211
+ * console.log('Using config from:', configPath);
212
+ * }
213
+ * ```
214
+ */
215
+ getConfigPath(startDir) {
216
+ const searchDir = startDir ?? process.cwd();
217
+ for (const configFile of this.configFiles) {
218
+ const filePath = this.findConfigFile(configFile, searchDir);
219
+ if (filePath) {
220
+ return filePath;
221
+ }
222
+ }
223
+ return null;
224
+ }
225
+ }
226
+ //# sourceMappingURL=ConfigLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Configuration Resolver
3
+ *
4
+ * Resolves configuration from multiple sources with clear precedence:
5
+ * 1. Code (explicit parameters) - Highest priority
6
+ * 2. Environment variables
7
+ * 3. Configuration file (agent.json)
8
+ * 4. Defaults - Lowest priority
9
+ *
10
+ * @module config/ConfigResolver
11
+ */
12
+ import type { KadiConfig, ResolvedConfig } from '../types/index.js';
13
+ import { ConfigLoader } from './ConfigLoader.js';
14
+ /**
15
+ * Configuration Resolver
16
+ *
17
+ * Handles merging configuration from multiple sources with well-defined precedence.
18
+ * Makes configuration predictable and debuggable.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const resolver = new ConfigResolver();
23
+ *
24
+ * // Simple string config
25
+ * const config = await resolver.resolve('ws://localhost:8080');
26
+ *
27
+ * // Full config object
28
+ * const config = await resolver.resolve({
29
+ * name: 'my-service',
30
+ * brokers: { local: 'ws://localhost:8080' }
31
+ * });
32
+ * ```
33
+ */
34
+ export declare class ConfigResolver {
35
+ private readonly loader;
36
+ /**
37
+ * Create a new ConfigResolver
38
+ *
39
+ * @param loader - Optional custom config loader (for testing)
40
+ */
41
+ constructor(loader?: ConfigLoader);
42
+ /**
43
+ * Resolve complete configuration from multiple sources
44
+ *
45
+ * Precedence (highest to lowest):
46
+ * 1. Explicit code configuration
47
+ * 2. Environment variables
48
+ * 3. Configuration file (agent.json)
49
+ * 4. Default values
50
+ *
51
+ * @param config - Configuration string (broker URL) or object
52
+ * @returns Fully resolved configuration with sources tracked
53
+ *
54
+ * @throws {KadiError} If configuration is invalid
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * // Simple broker URL
59
+ * const resolved = await resolver.resolve('ws://localhost:8080');
60
+ *
61
+ * // Full configuration
62
+ * const resolved = await resolver.resolve({
63
+ * name: 'calculator',
64
+ * brokers: { local: 'ws://localhost:8080' },
65
+ * networks: ['global', 'team']
66
+ * });
67
+ * ```
68
+ */
69
+ resolve(config: KadiConfig): Promise<ResolvedConfig>;
70
+ /**
71
+ * Normalize configuration input
72
+ *
73
+ * Converts string (broker URL) to object form
74
+ *
75
+ * @param config - Configuration input
76
+ * @returns Normalized configuration object
77
+ */
78
+ private normalizeConfig;
79
+ /**
80
+ * Resolve a single field with precedence
81
+ *
82
+ * @template T - Field value type
83
+ * @param fieldName - Name of the field being resolved
84
+ * @param codeValue - Value from code
85
+ * @param envValue - Value from environment
86
+ * @param fileValue - Value from file
87
+ * @param defaultValue - Default value
88
+ * @param sources - Source tracking object
89
+ * @returns Resolved value
90
+ */
91
+ private resolveField;
92
+ /**
93
+ * Resolve broker configuration
94
+ *
95
+ * @param codeConfig - Code configuration
96
+ * @param envConfig - Environment configuration
97
+ * @param fileConfig - File configuration
98
+ * @param sources - Source tracking
99
+ * @returns Resolved brokers
100
+ */
101
+ private resolveBrokers;
102
+ /**
103
+ * Resolve networks configuration
104
+ *
105
+ * @param codeConfig - Code configuration
106
+ * @param envConfig - Environment configuration
107
+ * @param fileConfig - File configuration
108
+ * @param sources - Source tracking
109
+ * @returns Resolved networks
110
+ */
111
+ private resolveNetworks;
112
+ /**
113
+ * Resolve advanced configuration
114
+ *
115
+ * @param codeConfig - Code configuration
116
+ * @param sources - Source tracking
117
+ * @returns Resolved advanced config
118
+ */
119
+ private resolveAdvanced;
120
+ /**
121
+ * Validate resolved configuration
122
+ *
123
+ * @param config - Resolved configuration
124
+ * @throws {KadiError} If configuration is invalid
125
+ */
126
+ private validateConfig;
127
+ /**
128
+ * Parse boolean from string
129
+ *
130
+ * @param value - String value
131
+ * @returns Boolean or undefined
132
+ */
133
+ private parseBoolean;
134
+ }
135
+ //# sourceMappingURL=ConfigResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigResolver.d.ts","sourceRoot":"","sources":["../../src/config/ConfigResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAqBjD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,YAAY;IAIjC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;IAmC1D;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IAoCpB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAyBtB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAyBvB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAavB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAuDtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAerB"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Configuration Resolver
3
+ *
4
+ * Resolves configuration from multiple sources with clear precedence:
5
+ * 1. Code (explicit parameters) - Highest priority
6
+ * 2. Environment variables
7
+ * 3. Configuration file (agent.json)
8
+ * 4. Defaults - Lowest priority
9
+ *
10
+ * @module config/ConfigResolver
11
+ */
12
+ import { KadiError, ErrorCode } from '../types/index.js';
13
+ import { ConfigLoader } from './ConfigLoader.js';
14
+ /**
15
+ * Default configuration values
16
+ */
17
+ const DEFAULT_CONFIG = {
18
+ version: '1.0.0',
19
+ role: 'agent',
20
+ transport: 'native',
21
+ networks: ['global'],
22
+ autoConnect: false,
23
+ advanced: {
24
+ heartbeatInterval: 30000,
25
+ requestTimeout: 30000,
26
+ connectionTimeout: 10000,
27
+ autoReconnect: true,
28
+ maxReconnectAttempts: 5,
29
+ verbose: false
30
+ }
31
+ };
32
+ /**
33
+ * Configuration Resolver
34
+ *
35
+ * Handles merging configuration from multiple sources with well-defined precedence.
36
+ * Makes configuration predictable and debuggable.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const resolver = new ConfigResolver();
41
+ *
42
+ * // Simple string config
43
+ * const config = await resolver.resolve('ws://localhost:8080');
44
+ *
45
+ * // Full config object
46
+ * const config = await resolver.resolve({
47
+ * name: 'my-service',
48
+ * brokers: { local: 'ws://localhost:8080' }
49
+ * });
50
+ * ```
51
+ */
52
+ export class ConfigResolver {
53
+ loader;
54
+ /**
55
+ * Create a new ConfigResolver
56
+ *
57
+ * @param loader - Optional custom config loader (for testing)
58
+ */
59
+ constructor(loader) {
60
+ this.loader = loader ?? new ConfigLoader();
61
+ }
62
+ /**
63
+ * Resolve complete configuration from multiple sources
64
+ *
65
+ * Precedence (highest to lowest):
66
+ * 1. Explicit code configuration
67
+ * 2. Environment variables
68
+ * 3. Configuration file (agent.json)
69
+ * 4. Default values
70
+ *
71
+ * @param config - Configuration string (broker URL) or object
72
+ * @returns Fully resolved configuration with sources tracked
73
+ *
74
+ * @throws {KadiError} If configuration is invalid
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * // Simple broker URL
79
+ * const resolved = await resolver.resolve('ws://localhost:8080');
80
+ *
81
+ * // Full configuration
82
+ * const resolved = await resolver.resolve({
83
+ * name: 'calculator',
84
+ * brokers: { local: 'ws://localhost:8080' },
85
+ * networks: ['global', 'team']
86
+ * });
87
+ * ```
88
+ */
89
+ async resolve(config) {
90
+ // Normalize input to object form
91
+ const codeConfig = this.normalizeConfig(config);
92
+ // Load configuration from file
93
+ const fileConfig = await this.loader.loadFromFile();
94
+ // Load configuration from environment
95
+ const envConfig = this.loader.loadFromEnvironment();
96
+ // Track sources for each field
97
+ const sources = {};
98
+ // Resolve each field with precedence
99
+ const resolved = {
100
+ name: this.resolveField('name', codeConfig.name, envConfig.KADI_AGENT_NAME, fileConfig?.name, undefined, sources),
101
+ version: this.resolveField('version', codeConfig.version, undefined, fileConfig?.version, DEFAULT_CONFIG.version, sources),
102
+ description: this.resolveField('description', codeConfig.description, undefined, fileConfig?.description, undefined, sources),
103
+ role: this.resolveField('role', codeConfig.role, undefined, undefined, DEFAULT_CONFIG.role, sources),
104
+ transport: this.resolveField('transport', codeConfig.transport, envConfig.KADI_TRANSPORT, undefined, DEFAULT_CONFIG.transport, sources),
105
+ brokers: this.resolveBrokers(codeConfig, envConfig, fileConfig, sources) ?? {},
106
+ defaultBroker: this.resolveField('defaultBroker', codeConfig.defaultBroker, undefined, fileConfig?.defaultBroker, undefined, sources),
107
+ networks: this.resolveNetworks(codeConfig, envConfig, fileConfig, sources),
108
+ abilityAgentJSON: this.resolveField('abilityAgentJSON', codeConfig.abilityAgentJSON, undefined, undefined, undefined, sources),
109
+ autoConnect: this.resolveField('autoConnect', codeConfig.autoConnect, this.parseBoolean(envConfig.KADI_AUTO_CONNECT), undefined, DEFAULT_CONFIG.autoConnect, sources),
110
+ advanced: this.resolveAdvanced(codeConfig, sources),
111
+ sources
112
+ };
113
+ // Validate resolved configuration
114
+ this.validateConfig(resolved);
115
+ return resolved;
116
+ }
117
+ /**
118
+ * Normalize configuration input
119
+ *
120
+ * Converts string (broker URL) to object form
121
+ *
122
+ * @param config - Configuration input
123
+ * @returns Normalized configuration object
124
+ */
125
+ normalizeConfig(config) {
126
+ if (typeof config === 'string') {
127
+ // Simple broker URL
128
+ return {
129
+ brokers: { default: config },
130
+ defaultBroker: 'default'
131
+ };
132
+ }
133
+ return config;
134
+ }
135
+ /**
136
+ * Resolve a single field with precedence
137
+ *
138
+ * @template T - Field value type
139
+ * @param fieldName - Name of the field being resolved
140
+ * @param codeValue - Value from code
141
+ * @param envValue - Value from environment
142
+ * @param fileValue - Value from file
143
+ * @param defaultValue - Default value
144
+ * @param sources - Source tracking object
145
+ * @returns Resolved value
146
+ */
147
+ resolveField(fieldName, codeValue, envValue, fileValue, defaultValue, sources) {
148
+ if (codeValue !== undefined) {
149
+ sources[fieldName] = 'code';
150
+ return codeValue;
151
+ }
152
+ if (envValue !== undefined) {
153
+ sources[fieldName] = 'environment';
154
+ return envValue;
155
+ }
156
+ if (fileValue !== undefined) {
157
+ sources[fieldName] = 'file';
158
+ return fileValue;
159
+ }
160
+ if (defaultValue !== undefined) {
161
+ sources[fieldName] = 'default';
162
+ return defaultValue;
163
+ }
164
+ throw new KadiError(`Required configuration field '${fieldName}' is missing`, ErrorCode.INVALID_CONFIG, 400, { fieldName });
165
+ }
166
+ /**
167
+ * Resolve broker configuration
168
+ *
169
+ * @param codeConfig - Code configuration
170
+ * @param envConfig - Environment configuration
171
+ * @param fileConfig - File configuration
172
+ * @param sources - Source tracking
173
+ * @returns Resolved brokers
174
+ */
175
+ resolveBrokers(codeConfig, envConfig, fileConfig, sources) {
176
+ if (codeConfig.brokers && Object.keys(codeConfig.brokers).length > 0) {
177
+ sources.brokers = 'code';
178
+ return codeConfig.brokers;
179
+ }
180
+ if (envConfig.KADI_BROKER_URL) {
181
+ sources.brokers = 'environment';
182
+ return { default: envConfig.KADI_BROKER_URL };
183
+ }
184
+ if (fileConfig?.brokers && Object.keys(fileConfig.brokers).length > 0) {
185
+ sources.brokers = 'file';
186
+ return fileConfig.brokers;
187
+ }
188
+ // Brokers are optional - may use native/stdio transport
189
+ return undefined;
190
+ }
191
+ /**
192
+ * Resolve networks configuration
193
+ *
194
+ * @param codeConfig - Code configuration
195
+ * @param envConfig - Environment configuration
196
+ * @param fileConfig - File configuration
197
+ * @param sources - Source tracking
198
+ * @returns Resolved networks
199
+ */
200
+ resolveNetworks(codeConfig, envConfig, fileConfig, sources) {
201
+ if (codeConfig.networks && codeConfig.networks.length > 0) {
202
+ sources.networks = 'code';
203
+ return codeConfig.networks;
204
+ }
205
+ if (envConfig.KADI_NETWORKS) {
206
+ sources.networks = 'environment';
207
+ return envConfig.KADI_NETWORKS.split(',').map(n => n.trim());
208
+ }
209
+ if (fileConfig?.networks && fileConfig.networks.length > 0) {
210
+ sources.networks = 'file';
211
+ return fileConfig.networks;
212
+ }
213
+ sources.networks = 'default';
214
+ return [...DEFAULT_CONFIG.networks];
215
+ }
216
+ /**
217
+ * Resolve advanced configuration
218
+ *
219
+ * @param codeConfig - Code configuration
220
+ * @param sources - Source tracking
221
+ * @returns Resolved advanced config
222
+ */
223
+ resolveAdvanced(codeConfig, sources) {
224
+ const advanced = {
225
+ ...DEFAULT_CONFIG.advanced,
226
+ ...codeConfig.advanced
227
+ };
228
+ sources.advanced = codeConfig.advanced ? 'code' : 'default';
229
+ return advanced;
230
+ }
231
+ /**
232
+ * Validate resolved configuration
233
+ *
234
+ * @param config - Resolved configuration
235
+ * @throws {KadiError} If configuration is invalid
236
+ */
237
+ validateConfig(config) {
238
+ // Validate name
239
+ if (!config.name || config.name.trim().length === 0) {
240
+ throw new KadiError('Agent name is required', ErrorCode.INVALID_CONFIG, 400, { field: 'name' });
241
+ }
242
+ // Validate transport
243
+ const validTransports = ['native', 'stdio', 'broker'];
244
+ if (!validTransports.includes(config.transport)) {
245
+ throw new KadiError(`Invalid transport: ${config.transport}. Must be one of: ${validTransports.join(', ')}`, ErrorCode.INVALID_CONFIG, 400, { field: 'transport', value: config.transport });
246
+ }
247
+ // Validate broker configuration if using broker transport
248
+ if (config.transport === 'broker') {
249
+ if (!config.brokers || Object.keys(config.brokers).length === 0) {
250
+ throw new KadiError('Broker configuration is required when using broker transport', ErrorCode.INVALID_CONFIG, 400, { field: 'brokers', transport: config.transport });
251
+ }
252
+ // Validate default broker exists if specified
253
+ if (config.defaultBroker && !config.brokers[config.defaultBroker]) {
254
+ throw new KadiError(`Default broker '${config.defaultBroker}' not found in broker configuration`, ErrorCode.INVALID_CONFIG, 400, { field: 'defaultBroker', value: config.defaultBroker, availableBrokers: Object.keys(config.brokers) });
255
+ }
256
+ }
257
+ // Validate networks
258
+ if (!Array.isArray(config.networks) || config.networks.length === 0) {
259
+ throw new KadiError('At least one network is required', ErrorCode.INVALID_CONFIG, 400, { field: 'networks' });
260
+ }
261
+ }
262
+ /**
263
+ * Parse boolean from string
264
+ *
265
+ * @param value - String value
266
+ * @returns Boolean or undefined
267
+ */
268
+ parseBoolean(value) {
269
+ if (value === undefined) {
270
+ return undefined;
271
+ }
272
+ const lower = value.toLowerCase();
273
+ if (lower === 'true' || lower === '1' || lower === 'yes') {
274
+ return true;
275
+ }
276
+ if (lower === 'false' || lower === '0' || lower === 'no') {
277
+ return false;
278
+ }
279
+ return undefined;
280
+ }
281
+ }
282
+ //# sourceMappingURL=ConfigResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigResolver.js","sourceRoot":"","sources":["../../src/config/ConfigResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Configuration Module
3
+ *
4
+ * Exports for configuration resolution and loading.
5
+ */
6
+ export { ConfigResolver } from './ConfigResolver.js';
7
+ export { ConfigLoader } from './ConfigLoader.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Configuration Module
3
+ *
4
+ * Exports for configuration resolution and loading.
5
+ */
6
+ export { ConfigResolver } from './ConfigResolver.js';
7
+ export { ConfigLoader } from './ConfigLoader.js';
8
+ //# sourceMappingURL=index.js.map