@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.
- package/README.md +361 -230
- package/dist/abilities/AbilityCache.d.ts +242 -0
- package/dist/abilities/AbilityCache.d.ts.map +1 -0
- package/dist/abilities/AbilityCache.js +285 -0
- package/dist/abilities/AbilityCache.js.map +1 -0
- package/dist/abilities/AbilityContext.d.ts +215 -0
- package/dist/abilities/AbilityContext.d.ts.map +1 -0
- package/dist/abilities/AbilityContext.js +36 -0
- package/dist/abilities/AbilityContext.js.map +1 -0
- package/dist/abilities/AbilityLoader.d.ts +203 -0
- package/dist/abilities/AbilityLoader.d.ts.map +1 -0
- package/dist/abilities/AbilityLoader.js +343 -0
- package/dist/abilities/AbilityLoader.js.map +1 -0
- package/dist/abilities/AbilityProxy.d.ts +496 -0
- package/dist/abilities/AbilityProxy.d.ts.map +1 -0
- package/dist/abilities/AbilityProxy.js +551 -0
- package/dist/abilities/AbilityProxy.js.map +1 -0
- package/dist/abilities/AbilityValidator.d.ts +172 -0
- package/dist/abilities/AbilityValidator.d.ts.map +1 -0
- package/dist/abilities/AbilityValidator.js +253 -0
- package/dist/abilities/AbilityValidator.js.map +1 -0
- package/dist/abilities/index.d.ts +26 -0
- package/dist/abilities/index.d.ts.map +1 -0
- package/dist/abilities/index.js +23 -0
- package/dist/abilities/index.js.map +1 -0
- package/dist/abilities/types.d.ts +223 -0
- package/dist/abilities/types.d.ts.map +1 -0
- package/dist/abilities/types.js +10 -0
- package/dist/abilities/types.js.map +1 -0
- package/dist/api/index.d.ts +92 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +124 -0
- package/dist/api/index.js.map +1 -0
- package/dist/broker/BrokerConnection.d.ts +253 -0
- package/dist/broker/BrokerConnection.d.ts.map +1 -0
- package/dist/broker/BrokerConnection.js +434 -0
- package/dist/broker/BrokerConnection.js.map +1 -0
- package/dist/broker/BrokerConnectionManager.d.ts +216 -0
- package/dist/broker/BrokerConnectionManager.d.ts.map +1 -0
- package/dist/broker/BrokerConnectionManager.js +305 -0
- package/dist/broker/BrokerConnectionManager.js.map +1 -0
- package/dist/broker/BrokerProtocol.d.ts +280 -0
- package/dist/broker/BrokerProtocol.d.ts.map +1 -0
- package/dist/broker/BrokerProtocol.js +466 -0
- package/dist/broker/BrokerProtocol.js.map +1 -0
- package/dist/broker/index.d.ts +9 -0
- package/dist/broker/index.d.ts.map +1 -0
- package/dist/broker/index.js +9 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/client/KadiClient.d.ts +459 -0
- package/dist/client/KadiClient.d.ts.map +1 -0
- package/dist/client/KadiClient.js +902 -0
- package/dist/client/KadiClient.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +138 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +226 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/ConfigResolver.d.ts +135 -0
- package/dist/config/ConfigResolver.d.ts.map +1 -0
- package/dist/config/ConfigResolver.js +282 -0
- package/dist/config/ConfigResolver.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/errors/index.d.ts +9 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +8 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/events/EventHub.d.ts +172 -0
- package/dist/events/EventHub.d.ts.map +1 -0
- package/dist/events/EventHub.js +333 -0
- package/dist/events/EventHub.js.map +1 -0
- package/dist/events/index.d.ts +7 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +7 -0
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/messages/index.d.ts +33 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +33 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/schemas/index.d.ts +22 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +27 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/kadi-extensions.d.ts +231 -0
- package/dist/schemas/kadi-extensions.d.ts.map +1 -0
- package/dist/schemas/kadi-extensions.js +14 -0
- package/dist/schemas/kadi-extensions.js.map +1 -0
- package/dist/schemas/mcp/schema.d.ts +1399 -0
- package/dist/schemas/mcp/schema.d.ts.map +1 -0
- package/dist/schemas/mcp/schema.js +53 -0
- package/dist/schemas/mcp/schema.js.map +1 -0
- package/dist/schemas/mcp/version.d.ts +37 -0
- package/dist/schemas/mcp/version.d.ts.map +1 -0
- package/dist/schemas/mcp/version.js +39 -0
- package/dist/schemas/mcp/version.js.map +1 -0
- package/dist/schemas/schema-builders.d.ts +178 -0
- package/dist/schemas/schema-builders.d.ts.map +1 -0
- package/dist/schemas/schema-builders.js +258 -0
- package/dist/schemas/schema-builders.js.map +1 -0
- package/dist/schemas/zod-helpers.d.ts +129 -0
- package/dist/schemas/zod-helpers.d.ts.map +1 -0
- package/dist/schemas/zod-helpers.js +225 -0
- package/dist/schemas/zod-helpers.js.map +1 -0
- package/dist/schemas/zod-to-json-schema.d.ts +159 -0
- package/dist/schemas/zod-to-json-schema.d.ts.map +1 -0
- package/dist/schemas/zod-to-json-schema.js +154 -0
- package/dist/schemas/zod-to-json-schema.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +256 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +340 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/transports/BrokerTransport.d.ts +151 -0
- package/dist/transports/BrokerTransport.d.ts.map +1 -0
- package/dist/transports/BrokerTransport.js +261 -0
- package/dist/transports/BrokerTransport.js.map +1 -0
- package/dist/transports/NativeTransport.d.ts +178 -0
- package/dist/transports/NativeTransport.d.ts.map +1 -0
- package/dist/transports/NativeTransport.js +397 -0
- package/dist/transports/NativeTransport.js.map +1 -0
- package/dist/transports/StdioTransport.d.ts +250 -0
- package/dist/transports/StdioTransport.d.ts.map +1 -0
- package/dist/transports/StdioTransport.js +487 -0
- package/dist/transports/StdioTransport.js.map +1 -0
- package/dist/transports/index.d.ts +10 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +9 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/broker.d.ts +279 -0
- package/dist/types/broker.d.ts.map +1 -0
- package/dist/types/broker.js +19 -0
- package/dist/types/broker.js.map +1 -0
- package/dist/types/config.d.ts +325 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +17 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +178 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +165 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/events.d.ts +210 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +8 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/protocol.d.ts +48 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +11 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/tools.d.ts +67 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +16 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/transport.d.ts +250 -0
- package/dist/types/transport.d.ts.map +1 -0
- package/dist/types/transport.js +18 -0
- package/dist/types/transport.js.map +1 -0
- package/dist/types/zod-tools.d.ts +198 -0
- package/dist/types/zod-tools.d.ts.map +1 -0
- package/dist/types/zod-tools.js +14 -0
- package/dist/types/zod-tools.js.map +1 -0
- package/dist/utils/StdioMessageReader.d.ts +122 -0
- package/dist/utils/StdioMessageReader.d.ts.map +1 -0
- package/dist/utils/StdioMessageReader.js +209 -0
- package/dist/utils/StdioMessageReader.js.map +1 -0
- package/dist/utils/StdioMessageWriter.d.ts +104 -0
- package/dist/utils/StdioMessageWriter.d.ts.map +1 -0
- package/dist/utils/StdioMessageWriter.js +162 -0
- package/dist/utils/StdioMessageWriter.js.map +1 -0
- package/dist/validation/SchemaValidator.d.ts +208 -0
- package/dist/validation/SchemaValidator.d.ts.map +1 -0
- package/dist/validation/SchemaValidator.js +411 -0
- package/dist/validation/SchemaValidator.js.map +1 -0
- package/dist/validation/index.d.ts +11 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +10 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +70 -5
- package/agent.json +0 -18
- package/broker.js +0 -214
- package/index.js +0 -370
- package/ipc.js +0 -220
- package/ipcInterfaces/pythonAbilityIPC.py +0 -177
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","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,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Errors Module
|
|
3
|
+
*
|
|
4
|
+
* Re-exports error types and utilities from types/errors.ts
|
|
5
|
+
* This module provides a convenient import point for error handling.
|
|
6
|
+
*/
|
|
7
|
+
export { KadiError, ErrorCode, isKadiError, isError, success, failure } from '../types/errors.js';
|
|
8
|
+
export type { ErrorContext, ErrorJSON, Result } from '../types/errors.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACR,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,YAAY,EACZ,SAAS,EACT,MAAM,EACP,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Errors Module
|
|
3
|
+
*
|
|
4
|
+
* Re-exports error types and utilities from types/errors.ts
|
|
5
|
+
* This module provides a convenient import point for error handling.
|
|
6
|
+
*/
|
|
7
|
+
export { KadiError, ErrorCode, isKadiError, isError, success, failure } from '../types/errors.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACR,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Hub
|
|
3
|
+
*
|
|
4
|
+
* Unified pub/sub event system that works consistently across all transports.
|
|
5
|
+
* Supports wildcard pattern matching for flexible event subscriptions.
|
|
6
|
+
*
|
|
7
|
+
* @module events/EventHub
|
|
8
|
+
*/
|
|
9
|
+
import type { EventPattern, EventName, EventCallback, UnsubscribeFunction, PublishOptions, EventSubscription, SubscriptionOptions } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Event Hub class
|
|
12
|
+
*
|
|
13
|
+
* Single responsibility: Manage event subscriptions and publication.
|
|
14
|
+
* Works uniformly across all transport types (native, stdio, broker).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const hub = new EventHub('my-agent');
|
|
19
|
+
*
|
|
20
|
+
* // Subscribe to events
|
|
21
|
+
* const unsubscribe = hub.subscribe('user.*', (data) => {
|
|
22
|
+
* console.log('User event:', data);
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Publish an event
|
|
26
|
+
* hub.publish('user.login', { userId: '123', timestamp: Date.now() });
|
|
27
|
+
*
|
|
28
|
+
* // Unsubscribe
|
|
29
|
+
* unsubscribe();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class EventHub {
|
|
33
|
+
/**
|
|
34
|
+
* Source identifier (agent/ability name)
|
|
35
|
+
*/
|
|
36
|
+
private source;
|
|
37
|
+
/**
|
|
38
|
+
* Event subscriptions map (pattern -> Set of callbacks)
|
|
39
|
+
* Uses unknown for data type since different subscriptions may have different data types
|
|
40
|
+
*/
|
|
41
|
+
private readonly subscriptions;
|
|
42
|
+
/**
|
|
43
|
+
* Subscription ID counter
|
|
44
|
+
*/
|
|
45
|
+
private subscriptionIdCounter;
|
|
46
|
+
/**
|
|
47
|
+
* Create a new EventHub
|
|
48
|
+
*
|
|
49
|
+
* @param source - Identifier for this event source (agent/ability name)
|
|
50
|
+
*/
|
|
51
|
+
constructor(source: string);
|
|
52
|
+
/**
|
|
53
|
+
* Update the source identifier
|
|
54
|
+
*
|
|
55
|
+
* This is useful when the agent/ability name is determined after construction.
|
|
56
|
+
*
|
|
57
|
+
* @param newSource - New source identifier
|
|
58
|
+
*/
|
|
59
|
+
setSource(newSource: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Subscribe to events matching a pattern
|
|
62
|
+
*
|
|
63
|
+
* Patterns support wildcards:
|
|
64
|
+
* - `user.login` - exact match
|
|
65
|
+
* - `user.*` - all events starting with "user."
|
|
66
|
+
* - `*.error` - all error events
|
|
67
|
+
* - `*` - all events
|
|
68
|
+
*
|
|
69
|
+
* @template TData - Expected event data type
|
|
70
|
+
*
|
|
71
|
+
* @param pattern - Event pattern to match
|
|
72
|
+
* @param callback - Function to call when matching events occur
|
|
73
|
+
* @param options - Optional subscription options
|
|
74
|
+
* @returns Function to unsubscribe
|
|
75
|
+
*
|
|
76
|
+
* @throws {KadiError} If pattern or callback is invalid
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const unsubscribe = hub.subscribe('user.login', (data) => {
|
|
81
|
+
* console.log('User logged in:', data);
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
subscribe<TData = unknown>(pattern: EventPattern, callback: EventCallback<TData>, options?: SubscriptionOptions): UnsubscribeFunction;
|
|
86
|
+
/**
|
|
87
|
+
* Publish an event to all matching subscribers
|
|
88
|
+
*
|
|
89
|
+
* @template TData - Event data type
|
|
90
|
+
*
|
|
91
|
+
* @param eventName - Event name/channel
|
|
92
|
+
* @param data - Event data payload
|
|
93
|
+
* @param options - Optional publishing options
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* hub.publish('user.logout', {
|
|
98
|
+
* userId: '123',
|
|
99
|
+
* timestamp: Date.now()
|
|
100
|
+
* });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
publish<TData = unknown>(eventName: EventName, data: TData, options?: PublishOptions): void;
|
|
104
|
+
/**
|
|
105
|
+
* Unsubscribe from a pattern
|
|
106
|
+
*
|
|
107
|
+
* @param pattern - Pattern to unsubscribe from
|
|
108
|
+
* @param callback - Optional specific callback to remove (removes all if not specified)
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* hub.unsubscribe('user.*');
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
unsubscribe(pattern: EventPattern, callback?: EventCallback): void;
|
|
116
|
+
/**
|
|
117
|
+
* Get all active subscriptions
|
|
118
|
+
*
|
|
119
|
+
* @returns Array of all active subscriptions
|
|
120
|
+
*/
|
|
121
|
+
getSubscriptions(): EventSubscription[];
|
|
122
|
+
/**
|
|
123
|
+
* Get subscription count
|
|
124
|
+
*
|
|
125
|
+
* @returns Number of active subscriptions
|
|
126
|
+
*/
|
|
127
|
+
get subscriptionCount(): number;
|
|
128
|
+
/**
|
|
129
|
+
* Clear all subscriptions
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* hub.clear();
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
clear(): void;
|
|
137
|
+
/**
|
|
138
|
+
* Find subscriptions matching an event name
|
|
139
|
+
*
|
|
140
|
+
* @param eventName - Event name to match
|
|
141
|
+
* @returns Set of matching subscriptions
|
|
142
|
+
*/
|
|
143
|
+
private findMatchingSubscriptions;
|
|
144
|
+
/**
|
|
145
|
+
* Check if an event name matches a pattern
|
|
146
|
+
*
|
|
147
|
+
* Supports wildcard matching:
|
|
148
|
+
* - Exact match: 'user.login' matches 'user.login'
|
|
149
|
+
* - Prefix wildcard: 'user.*' matches 'user.login', 'user.logout', etc.
|
|
150
|
+
* - Suffix wildcard: '*.error' matches 'user.error', 'system.error', etc.
|
|
151
|
+
* - Full wildcard: '*' matches any event
|
|
152
|
+
*
|
|
153
|
+
* @param eventName - Event name to test
|
|
154
|
+
* @param pattern - Pattern to match against
|
|
155
|
+
* @returns true if event matches pattern
|
|
156
|
+
*/
|
|
157
|
+
private matchesPattern;
|
|
158
|
+
/**
|
|
159
|
+
* Deliver an event to a subscription
|
|
160
|
+
*
|
|
161
|
+
* @param subscription - Subscription to deliver to
|
|
162
|
+
* @param payload - Event payload
|
|
163
|
+
*/
|
|
164
|
+
private deliverEvent;
|
|
165
|
+
/**
|
|
166
|
+
* Unsubscribe by subscription ID
|
|
167
|
+
*
|
|
168
|
+
* @param id - Subscription ID to remove
|
|
169
|
+
*/
|
|
170
|
+
private unsubscribeById;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=EventHub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventHub.d.ts","sourceRoot":"","sources":["../../src/events/EventHub.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EAEb,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,QAAQ;IACnB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;IAE1F;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAK;IAElC;;;;OAIG;gBACS,MAAM,EAAE,MAAM;IAI1B;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,KAAK,GAAG,OAAO,EACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,mBAAmB;IA2DtB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,KAAK,GAAG,OAAO,EACrB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI;IAsBP;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI;IAwBlE;;;;OAIG;IACH,gBAAgB,IAAI,iBAAiB,EAAE;IAQvC;;;;OAIG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAM9B;IAED;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAaxB"}
|