@kadi.build/core 0.0.1-alpha.6 → 0.0.1-alpha.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/errors/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Kb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,EAAE,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAiBzE,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,YAAiB,GACzB,SAAS;IAcZ;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,KAAK,GACpB,SAAS;IAWZ;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAWzE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS;IAWtE;;OAEG;IACH,aAAa,IAAI,MAAM;IAkBvB;;OAEG;IACH,WAAW,IAAI,MAAM;CAetB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/errors/error-codes.ts"],"names":[],"mappings":"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"}
@@ -13,174 +13,494 @@
13
13
  * 6000-6999: Configuration errors
14
14
  * 7000-7999: System/Internal errors
15
15
  */
16
- export const ErrorCodes = {
16
+ export const CoreErrorCodes = {
17
17
  // =====================================================================
18
18
  // CONNECTION ERRORS (1000-1999)
19
19
  // =====================================================================
20
- CONNECTION_FAILED: {
21
- code: 'CONNECTION_FAILED',
20
+ CORE_CONNECTION_FAILED: {
21
+ code: 'CORE_CONNECTION_FAILED',
22
22
  httpStatus: 503,
23
23
  message: 'Failed to establish connection'
24
24
  },
25
- CONNECTION_TIMEOUT: {
26
- code: 'CONNECTION_TIMEOUT',
25
+ CORE_CONNECTION_TIMEOUT: {
26
+ code: 'CORE_CONNECTION_TIMEOUT',
27
27
  httpStatus: 408,
28
28
  message: 'Connection attempt timed out'
29
29
  },
30
- CONNECTION_REFUSED: {
31
- code: 'CONNECTION_REFUSED',
30
+ CORE_CONNECTION_REFUSED: {
31
+ code: 'CORE_CONNECTION_REFUSED',
32
32
  httpStatus: 503,
33
33
  message: 'Connection refused by remote server'
34
34
  },
35
- BROKER_UNAVAILABLE: {
36
- code: 'BROKER_UNAVAILABLE',
35
+ CORE_BROKER_UNAVAILABLE: {
36
+ code: 'CORE_BROKER_UNAVAILABLE',
37
37
  httpStatus: 503,
38
38
  message: 'Broker service is unavailable'
39
39
  },
40
- BROKER_CONNECTION_LOST: {
41
- code: 'BROKER_CONNECTION_LOST',
40
+ CORE_BROKER_CONNECTION_LOST: {
41
+ code: 'CORE_BROKER_CONNECTION_LOST',
42
42
  httpStatus: 503,
43
43
  message: 'Connection to broker was lost'
44
44
  },
45
45
  // =======================================================================
46
46
  // AUTHENTICATION ERRORS (2000-2999)
47
47
  // =======================================================================
48
- AUTH_FAILED: {
49
- code: 'AUTH_FAILED',
48
+ CORE_AUTH_FAILED: {
49
+ code: 'CORE_AUTH_FAILED',
50
50
  httpStatus: 401,
51
51
  message: 'Authentication failed'
52
52
  },
53
- AUTH_HANDSHAKE_FAILED: {
54
- code: 'AUTH_HANDSHAKE_FAILED',
53
+ CORE_AUTH_HANDSHAKE_FAILED: {
54
+ code: 'CORE_AUTH_HANDSHAKE_FAILED',
55
55
  httpStatus: 400,
56
56
  message: 'Authentication handshake failed'
57
57
  },
58
- AUTH_TOKEN_INVALID: {
59
- code: 'AUTH_TOKEN_INVALID',
58
+ CORE_AUTH_TOKEN_INVALID: {
59
+ code: 'CORE_AUTH_TOKEN_INVALID',
60
60
  httpStatus: 401,
61
61
  message: 'Invalid authentication token'
62
62
  },
63
63
  // ========================================================================
64
64
  // ABILITY/LOADING ERRORS (3000-3999)
65
65
  // ========================================================================
66
- ABILITY_NOT_FOUND: {
67
- code: 'ABILITY_NOT_FOUND',
66
+ CORE_ABILITY_NOT_FOUND: {
67
+ code: 'CORE_ABILITY_NOT_FOUND',
68
68
  httpStatus: 404,
69
69
  message: 'Requested ability does not exist'
70
70
  },
71
- ABILITY_LOAD_FAILED: {
72
- code: 'ABILITY_LOAD_FAILED',
71
+ CORE_ABILITY_LOAD_FAILED: {
72
+ code: 'CORE_ABILITY_LOAD_FAILED',
73
73
  httpStatus: 500,
74
74
  message: 'Failed to load ability'
75
75
  },
76
- ABILITY_NOT_ACCESSIBLE: {
77
- code: 'ABILITY_NOT_ACCESSIBLE',
76
+ CORE_ABILITY_NOT_ACCESSIBLE: {
77
+ code: 'CORE_ABILITY_NOT_ACCESSIBLE',
78
78
  httpStatus: 403,
79
79
  message: 'Ability not accessible in current context'
80
80
  },
81
- ABILITY_START_FAILED: {
82
- code: 'ABILITY_START_FAILED',
81
+ CORE_ABILITY_START_FAILED: {
82
+ code: 'CORE_ABILITY_START_FAILED',
83
83
  httpStatus: 500,
84
84
  message: 'Failed to start ability process'
85
85
  },
86
- ABILITY_TIMEOUT: {
87
- code: 'ABILITY_TIMEOUT',
86
+ CORE_ABILITY_TIMEOUT: {
87
+ code: 'CORE_ABILITY_TIMEOUT',
88
88
  httpStatus: 408,
89
89
  message: 'Ability operation timed out'
90
90
  },
91
- ABILITY_PATH_INVALID: {
92
- code: 'ABILITY_PATH_INVALID',
91
+ CORE_ABILITY_PATH_INVALID: {
92
+ code: 'CORE_ABILITY_PATH_INVALID',
93
93
  httpStatus: 400,
94
94
  message: 'Invalid ability path or name format'
95
95
  },
96
- ABILITY_MANIFEST_INVALID: {
97
- code: 'ABILITY_MANIFEST_INVALID',
96
+ CORE_ABILITY_MANIFEST_INVALID: {
97
+ code: 'CORE_ABILITY_MANIFEST_INVALID',
98
98
  httpStatus: 400,
99
99
  message: 'Ability manifest file is invalid or missing'
100
100
  },
101
101
  // ========================================================================
102
102
  // TOOL EXECUTION ERRORS (4000-4999)
103
103
  // ========================================================================
104
- TOOL_NOT_FOUND: {
105
- code: 'TOOL_NOT_FOUND',
104
+ CORE_TOOL_NOT_FOUND: {
105
+ code: 'CORE_TOOL_NOT_FOUND',
106
106
  httpStatus: 404,
107
107
  message: 'Requested tool does not exist'
108
108
  },
109
- TOOL_INVOCATION_FAILED: {
110
- code: 'TOOL_INVOCATION_FAILED',
109
+ CORE_TOOL_INVOCATION_FAILED: {
110
+ code: 'CORE_TOOL_INVOCATION_FAILED',
111
111
  httpStatus: 500,
112
112
  message: 'Tool invocation failed'
113
113
  },
114
- TOOL_TIMEOUT: {
115
- code: 'TOOL_TIMEOUT',
114
+ CORE_TOOL_TIMEOUT: {
115
+ code: 'CORE_TOOL_TIMEOUT',
116
116
  httpStatus: 408,
117
117
  message: 'Tool execution timed out'
118
118
  },
119
- TOOL_INPUT_INVALID: {
120
- code: 'TOOL_INPUT_INVALID',
119
+ CORE_TOOL_INPUT_INVALID: {
120
+ code: 'CORE_TOOL_INPUT_INVALID',
121
121
  httpStatus: 400,
122
122
  message: 'Tool input validation failed'
123
123
  },
124
124
  // =======================================================================
125
125
  // PROTOCOL ERRORS (5000-5999)
126
126
  // =======================================================================
127
- PROTOCOL_UNSUPPORTED: {
128
- code: 'PROTOCOL_UNSUPPORTED',
127
+ CORE_PROTOCOL_UNSUPPORTED: {
128
+ code: 'CORE_PROTOCOL_UNSUPPORTED',
129
129
  httpStatus: 400,
130
130
  message: 'Protocol not supported'
131
131
  },
132
- PROTOCOL_VERSION_MISMATCH: {
133
- code: 'PROTOCOL_VERSION_MISMATCH',
132
+ CORE_PROTOCOL_VERSION_MISMATCH: {
133
+ code: 'CORE_PROTOCOL_VERSION_MISMATCH',
134
134
  httpStatus: 400,
135
135
  message: 'Protocol version mismatch'
136
136
  },
137
- MESSAGE_INVALID: {
138
- code: 'MESSAGE_INVALID',
137
+ CORE_MESSAGE_INVALID: {
138
+ code: 'CORE_MESSAGE_INVALID',
139
139
  httpStatus: 400,
140
140
  message: 'Invalid message format'
141
141
  },
142
- RPC_REQUEST_FAILED: {
143
- code: 'RPC_REQUEST_FAILED',
142
+ CORE_RPC_REQUEST_FAILED: {
143
+ code: 'CORE_RPC_REQUEST_FAILED',
144
144
  httpStatus: 500,
145
145
  message: 'RPC request failed'
146
146
  },
147
147
  // =======================================================================
148
148
  // CONFIGURATION ERRORS (6000-6999)
149
149
  // =======================================================================
150
- CONFIG_INVALID: {
151
- code: 'CONFIG_INVALID',
150
+ CORE_CONFIG_INVALID: {
151
+ code: 'CORE_CONFIG_INVALID',
152
152
  httpStatus: 400,
153
153
  message: 'Invalid configuration'
154
154
  },
155
- CONFIG_MISSING: {
156
- code: 'CONFIG_MISSING',
155
+ CORE_CONFIG_MISSING: {
156
+ code: 'CORE_CONFIG_MISSING',
157
157
  httpStatus: 400,
158
158
  message: 'Required configuration missing'
159
159
  },
160
- CONFIG_PATH_INVALID: {
161
- code: 'CONFIG_PATH_INVALID',
160
+ CORE_CONFIG_PATH_INVALID: {
161
+ code: 'CORE_CONFIG_PATH_INVALID',
162
162
  httpStatus: 400,
163
163
  message: 'Invalid configuration file path'
164
164
  },
165
165
  // =======================================================================
166
166
  // SYSTEM ERRORS (7000-7999)
167
167
  // =======================================================================
168
- INTERNAL_ERROR: {
169
- code: 'INTERNAL_ERROR',
168
+ CORE_INTERNAL_ERROR: {
169
+ code: 'CORE_INTERNAL_ERROR',
170
170
  httpStatus: 500,
171
171
  message: 'An internal error occurred'
172
172
  },
173
- NOT_IMPLEMENTED: {
174
- code: 'NOT_IMPLEMENTED',
173
+ CORE_NOT_IMPLEMENTED: {
174
+ code: 'CORE_NOT_IMPLEMENTED',
175
175
  httpStatus: 501,
176
176
  message: 'Feature not yet implemented'
177
177
  },
178
- SYSTEM_OVERLOADED: {
179
- code: 'SYSTEM_OVERLOADED',
178
+ CORE_SYSTEM_OVERLOADED: {
179
+ code: 'CORE_SYSTEM_OVERLOADED',
180
180
  httpStatus: 503,
181
181
  message: 'System is currently overloaded'
182
182
  }
183
183
  };
184
+ // Broker error catalog (codes specific to the broker subsystem)
185
+ export const BrokerErrorCodes = {
186
+ // TOOL/ABILITY (4000-4999)
187
+ BROKER_TOOL_NOT_FOUND: {
188
+ code: 'BROKER_TOOL_NOT_FOUND',
189
+ httpStatus: 404,
190
+ message: 'Requested tool does not exist'
191
+ },
192
+ BROKER_TOOL_NOT_ACCESSIBLE: {
193
+ code: 'BROKER_TOOL_NOT_ACCESSIBLE',
194
+ httpStatus: 403,
195
+ message: 'Tool not accessible within caller networks'
196
+ },
197
+ BROKER_TOOL_INPUT_SCHEMA_VIOLATION: {
198
+ code: 'BROKER_TOOL_INPUT_SCHEMA_VIOLATION',
199
+ httpStatus: 400,
200
+ message: 'Tool input does not match schema'
201
+ },
202
+ BROKER_TOOL_OUTPUT_SCHEMA_VIOLATION: {
203
+ code: 'BROKER_TOOL_OUTPUT_SCHEMA_VIOLATION',
204
+ httpStatus: 500,
205
+ message: 'Tool output does not match schema'
206
+ },
207
+ // SESSION (1000-1999)
208
+ BROKER_SESSION_NOT_INITIALIZED: {
209
+ code: 'BROKER_SESSION_NOT_INITIALIZED',
210
+ httpStatus: 400,
211
+ message: 'Session not initialized'
212
+ },
213
+ BROKER_SESSION_ALREADY_INITIALIZED: {
214
+ code: 'BROKER_SESSION_ALREADY_INITIALIZED',
215
+ httpStatus: 409,
216
+ message: 'Session already initialized'
217
+ },
218
+ BROKER_SESSION_INVALID_STATE: {
219
+ code: 'BROKER_SESSION_INVALID_STATE',
220
+ httpStatus: 400,
221
+ message: 'Invalid session state'
222
+ },
223
+ BROKER_SESSION_HANDSHAKE_FAILED: {
224
+ code: 'BROKER_SESSION_HANDSHAKE_FAILED',
225
+ httpStatus: 400,
226
+ message: 'Handshake failed'
227
+ },
228
+ BROKER_SESSION_NOT_FOUND: {
229
+ code: 'BROKER_SESSION_NOT_FOUND',
230
+ httpStatus: 404,
231
+ message: 'Session not found'
232
+ },
233
+ BROKER_SESSION_TIMEOUT: {
234
+ code: 'BROKER_SESSION_TIMEOUT',
235
+ httpStatus: 408,
236
+ message: 'Session timeout'
237
+ },
238
+ BROKER_SESSION_ROLE_INVALID: {
239
+ code: 'BROKER_SESSION_ROLE_INVALID',
240
+ httpStatus: 400,
241
+ message: 'Invalid session role'
242
+ },
243
+ BROKER_SESSION_KADI_HANDLER_FAILED: {
244
+ code: 'BROKER_SESSION_KADI_HANDLER_FAILED',
245
+ httpStatus: 500,
246
+ message: 'KADI handler failed'
247
+ },
248
+ BROKER_SESSION_RATE_LIMITED: {
249
+ code: 'BROKER_SESSION_RATE_LIMITED',
250
+ httpStatus: 429,
251
+ message: 'Session rate limited'
252
+ },
253
+ BROKER_SESSION_NOT_READY: {
254
+ code: 'BROKER_SESSION_NOT_READY',
255
+ httpStatus: 400,
256
+ message: 'Session not ready'
257
+ },
258
+ // AUTH (2000-2999)
259
+ BROKER_AUTH_MISSING_CREDENTIALS: {
260
+ code: 'BROKER_AUTH_MISSING_CREDENTIALS',
261
+ httpStatus: 401,
262
+ message: 'Missing credentials'
263
+ },
264
+ BROKER_AUTH_SIGNATURE_INVALID: {
265
+ code: 'BROKER_AUTH_SIGNATURE_INVALID',
266
+ httpStatus: 401,
267
+ message: 'Invalid signature'
268
+ },
269
+ BROKER_AUTH_PUBLIC_KEY_INVALID: {
270
+ code: 'BROKER_AUTH_PUBLIC_KEY_INVALID',
271
+ httpStatus: 401,
272
+ message: 'Invalid public key'
273
+ },
274
+ BROKER_AUTH_NONCE_MISMATCH: {
275
+ code: 'BROKER_AUTH_NONCE_MISMATCH',
276
+ httpStatus: 401,
277
+ message: 'Nonce mismatch'
278
+ },
279
+ BROKER_AUTH_AGENT_UNKNOWN: {
280
+ code: 'BROKER_AUTH_AGENT_UNKNOWN',
281
+ httpStatus: 404,
282
+ message: 'Unknown agent'
283
+ },
284
+ BROKER_AUTH_SEQUENCE_ERROR: {
285
+ code: 'BROKER_AUTH_SEQUENCE_ERROR',
286
+ httpStatus: 400,
287
+ message: 'Auth sequence error'
288
+ },
289
+ // AGENT (3000-3999)
290
+ BROKER_AGENT_NOT_AUTHENTICATED: {
291
+ code: 'BROKER_AGENT_NOT_AUTHENTICATED',
292
+ httpStatus: 401,
293
+ message: 'Agent not authenticated'
294
+ },
295
+ BROKER_AGENT_NETWORKS_MISSING: {
296
+ code: 'BROKER_AGENT_NETWORKS_MISSING',
297
+ httpStatus: 400,
298
+ message: 'Networks required'
299
+ },
300
+ BROKER_AGENT_NETWORKS_EMPTY: {
301
+ code: 'BROKER_AGENT_NETWORKS_EMPTY',
302
+ httpStatus: 400,
303
+ message: 'No networks specified'
304
+ },
305
+ BROKER_AGENT_ALREADY_REGISTERED: {
306
+ code: 'BROKER_AGENT_ALREADY_REGISTERED',
307
+ httpStatus: 409,
308
+ message: 'Agent already registered'
309
+ },
310
+ BROKER_AGENT_NOT_FOUND: {
311
+ code: 'BROKER_AGENT_NOT_FOUND',
312
+ httpStatus: 404,
313
+ message: 'Agent not found'
314
+ },
315
+ BROKER_AGENT_ID_NOT_SET: {
316
+ code: 'BROKER_AGENT_ID_NOT_SET',
317
+ httpStatus: 400,
318
+ message: 'Agent ID required'
319
+ },
320
+ BROKER_AGENT_METADATA_NOT_FOUND: {
321
+ code: 'BROKER_AGENT_METADATA_NOT_FOUND',
322
+ httpStatus: 404,
323
+ message: 'Agent metadata not found'
324
+ },
325
+ // NETWORK (3500-3599)
326
+ BROKER_NETWORK_NOT_FOUND: {
327
+ code: 'BROKER_NETWORK_NOT_FOUND',
328
+ httpStatus: 404,
329
+ message: 'Network not found'
330
+ },
331
+ BROKER_NETWORK_ACCESS_DENIED: {
332
+ code: 'BROKER_NETWORK_ACCESS_DENIED',
333
+ httpStatus: 403,
334
+ message: 'Network access denied'
335
+ },
336
+ BROKER_NETWORK_PUBLISH_DENIED: {
337
+ code: 'BROKER_NETWORK_PUBLISH_DENIED',
338
+ httpStatus: 403,
339
+ message: 'Publish denied for network'
340
+ },
341
+ // MESSAGE QUEUE (5000-5999)
342
+ BROKER_QUEUE_CONNECTION_FAILED: {
343
+ code: 'BROKER_QUEUE_CONNECTION_FAILED',
344
+ httpStatus: 503,
345
+ message: 'Failed to connect to message queue'
346
+ },
347
+ BROKER_QUEUE_PUBLISH_FAILED: {
348
+ code: 'BROKER_QUEUE_PUBLISH_FAILED',
349
+ httpStatus: 503,
350
+ message: 'Failed to publish message to queue'
351
+ },
352
+ BROKER_QUEUE_SUBSCRIBE_FAILED: {
353
+ code: 'BROKER_QUEUE_SUBSCRIBE_FAILED',
354
+ httpStatus: 503,
355
+ message: 'Failed to subscribe to queue'
356
+ },
357
+ BROKER_QUEUE_NOT_FOUND: {
358
+ code: 'BROKER_QUEUE_NOT_FOUND',
359
+ httpStatus: 404,
360
+ message: 'Message queue does not exist'
361
+ },
362
+ // PROTOCOL/SCHEMA (6000-6999)
363
+ BROKER_SCHEMA_COMPILATION_ERROR: {
364
+ code: 'BROKER_SCHEMA_COMPILATION_ERROR',
365
+ httpStatus: 400,
366
+ message: 'Failed to compile JSON Schema'
367
+ },
368
+ BROKER_PROTOCOL_VERSION_UNSUPPORTED: {
369
+ code: 'BROKER_PROTOCOL_VERSION_UNSUPPORTED',
370
+ httpStatus: 400,
371
+ message: 'Protocol version not supported'
372
+ },
373
+ BROKER_PROTOCOL_METHOD_UNKNOWN: {
374
+ code: 'BROKER_PROTOCOL_METHOD_UNKNOWN',
375
+ httpStatus: 400,
376
+ message: 'Unknown protocol method'
377
+ },
378
+ BROKER_PROTOCOL_INVALID_MESSAGE: {
379
+ code: 'BROKER_PROTOCOL_INVALID_MESSAGE',
380
+ httpStatus: 400,
381
+ message: 'Invalid message format'
382
+ },
383
+ BROKER_PROTOCOL_MISSING_PARAMS: {
384
+ code: 'BROKER_PROTOCOL_MISSING_PARAMS',
385
+ httpStatus: 400,
386
+ message: 'Required parameters missing'
387
+ },
388
+ // MCP (6500-6599)
389
+ BROKER_MCP_ALREADY_INITIALIZED: {
390
+ code: 'BROKER_MCP_ALREADY_INITIALIZED',
391
+ httpStatus: 409,
392
+ message: 'MCP bridge is already initialized'
393
+ },
394
+ BROKER_MCP_NOT_INITIALIZED: {
395
+ code: 'BROKER_MCP_NOT_INITIALIZED',
396
+ httpStatus: 400,
397
+ message: 'MCP bridge must be initialized first'
398
+ },
399
+ BROKER_MCP_METHOD_UNKNOWN: {
400
+ code: 'BROKER_MCP_METHOD_UNKNOWN',
401
+ httpStatus: 400,
402
+ message: 'Unknown MCP method'
403
+ },
404
+ BROKER_MCP_CLIENT_NOT_READY: {
405
+ code: 'BROKER_MCP_CLIENT_NOT_READY',
406
+ httpStatus: 400,
407
+ message: 'MCP client not ready - must initialize first'
408
+ },
409
+ BROKER_MCP_HANDLER_FAILED: {
410
+ code: 'BROKER_MCP_HANDLER_FAILED',
411
+ httpStatus: 500,
412
+ message: 'MCP message handler failed'
413
+ },
414
+ // NAMESPACE (6800-6899)
415
+ BROKER_NAMESPACE_INVALID_FORMAT: {
416
+ code: 'BROKER_NAMESPACE_INVALID_FORMAT',
417
+ httpStatus: 400,
418
+ message: 'Invalid namespace format'
419
+ },
420
+ BROKER_NAMESPACE_RESERVED: {
421
+ code: 'BROKER_NAMESPACE_RESERVED',
422
+ httpStatus: 400,
423
+ message: 'Namespace is reserved and cannot be used'
424
+ },
425
+ BROKER_NAMESPACE_VERSION_INVALID: {
426
+ code: 'BROKER_NAMESPACE_VERSION_INVALID',
427
+ httpStatus: 400,
428
+ message: 'Invalid namespace version format'
429
+ },
430
+ BROKER_TOOL_KEY_INVALID: {
431
+ code: 'BROKER_TOOL_KEY_INVALID',
432
+ httpStatus: 400,
433
+ message: 'Invalid tool key format'
434
+ },
435
+ // EVENTS (6900-6999)
436
+ BROKER_EVENT_SUBSCRIPTION_INVALID: {
437
+ code: 'BROKER_EVENT_SUBSCRIPTION_INVALID',
438
+ httpStatus: 400,
439
+ message: 'Invalid event subscription parameters'
440
+ },
441
+ BROKER_EVENT_SUBSCRIPTION_FAILED: {
442
+ code: 'BROKER_EVENT_SUBSCRIPTION_FAILED',
443
+ httpStatus: 500,
444
+ message: 'Failed to establish event subscription'
445
+ },
446
+ BROKER_EVENT_PUBLISH_INVALID: {
447
+ code: 'BROKER_EVENT_PUBLISH_INVALID',
448
+ httpStatus: 400,
449
+ message: 'Invalid event publish parameters'
450
+ },
451
+ BROKER_EVENT_PUBLISH_FAILED: {
452
+ code: 'BROKER_EVENT_PUBLISH_FAILED',
453
+ httpStatus: 500,
454
+ message: 'Failed to publish event'
455
+ },
456
+ BROKER_EVENT_DELIVERY_FAILED: {
457
+ code: 'BROKER_EVENT_DELIVERY_FAILED',
458
+ httpStatus: 500,
459
+ message: 'Failed to deliver event to subscriber'
460
+ },
461
+ BROKER_EVENT_CHANNEL_INVALID: {
462
+ code: 'BROKER_EVENT_CHANNEL_INVALID',
463
+ httpStatus: 400,
464
+ message: 'Invalid event channel format'
465
+ },
466
+ BROKER_EVENT_NETWORK_ACCESS_DENIED: {
467
+ code: 'BROKER_EVENT_NETWORK_ACCESS_DENIED',
468
+ httpStatus: 403,
469
+ message: 'Access denied to event network'
470
+ },
471
+ BROKER_EVENT_QUEUE_ERROR: {
472
+ code: 'BROKER_EVENT_QUEUE_ERROR',
473
+ httpStatus: 500,
474
+ message: 'Event queue operation failed'
475
+ },
476
+ BROKER_EVENT_MESSAGE_INVALID: {
477
+ code: 'BROKER_EVENT_MESSAGE_INVALID',
478
+ httpStatus: 400,
479
+ message: 'Invalid event message structure'
480
+ },
481
+ // VALIDATION/ROUTING helpers
482
+ BROKER_INVALID_INPUT: {
483
+ code: 'BROKER_INVALID_INPUT',
484
+ httpStatus: 400,
485
+ message: 'Input validation failed against expected schema'
486
+ },
487
+ BROKER_TOOL_NOT_IN_NETWORK: {
488
+ code: 'BROKER_TOOL_NOT_IN_NETWORK',
489
+ httpStatus: 404,
490
+ message: 'Tool not available in accessible networks'
491
+ },
492
+ BROKER_TOOL_NAME_REQUIRED: {
493
+ code: 'BROKER_TOOL_NAME_REQUIRED',
494
+ httpStatus: 400,
495
+ message: 'Tool name is required for invocation'
496
+ },
497
+ BROKER_TOOL_NO_PROVIDERS: {
498
+ code: 'BROKER_TOOL_NO_PROVIDERS',
499
+ httpStatus: 503,
500
+ message: 'No active providers available for tool'
501
+ }
502
+ };
503
+ export const ErrorCodes = { ...CoreErrorCodes, ...BrokerErrorCodes };
184
504
  /**
185
505
  * Custom error class for KADI Core operations
186
506
  */
@@ -196,7 +516,14 @@ export class KadiError extends Error {
196
516
  this.name = 'KadiError';
197
517
  this.code = code;
198
518
  this.httpStatus = errorDef.httpStatus;
199
- this.context = context;
519
+ const inferredDomain = code in CoreErrorCodes
520
+ ? 'core'
521
+ : code in BrokerErrorCodes
522
+ ? 'broker'
523
+ : undefined;
524
+ this.context = context.domain
525
+ ? context
526
+ : { ...context, ...(inferredDomain ? { domain: inferredDomain } : {}) };
200
527
  this.timestamp = Date.now();
201
528
  this.id = this.generateErrorId();
202
529
  // Capture stack trace
@@ -228,7 +555,7 @@ export class KadiError extends Error {
228
555
  * Create a broker connection error
229
556
  */
230
557
  static brokerUnavailable(brokerUrl, originalError) {
231
- return new KadiError('BROKER_UNAVAILABLE', `Failed to connect to broker at ${brokerUrl}`, {
558
+ return new KadiError(CoreErrorCodes.CORE_BROKER_UNAVAILABLE.code, `Failed to connect to broker at ${brokerUrl}`, {
232
559
  brokerUrl,
233
560
  originalError
234
561
  });
@@ -236,17 +563,17 @@ export class KadiError extends Error {
236
563
  /**
237
564
  * Create an ability not found error
238
565
  */
239
- static abilityNotFound(abilityName, protocol) {
240
- return new KadiError('ABILITY_NOT_FOUND', `Ability '${abilityName}' not found${protocol ? ` for protocol '${protocol}'` : ''}`, {
566
+ static abilityNotFound(abilityName, transport) {
567
+ return new KadiError(CoreErrorCodes.CORE_ABILITY_NOT_FOUND.code, `Ability '${abilityName}' not found${transport ? ` for transport '${transport}'` : ''}`, {
241
568
  abilityName,
242
- protocol
569
+ transport
243
570
  });
244
571
  }
245
572
  /**
246
573
  * Create a tool not found error
247
574
  */
248
575
  static toolNotFound(toolName, abilityName) {
249
- return new KadiError('TOOL_NOT_FOUND', `Tool '${toolName}' not found${abilityName ? ` in ability '${abilityName}'` : ''}`, {
576
+ return new KadiError(CoreErrorCodes.CORE_TOOL_NOT_FOUND.code, `Tool '${toolName}' not found${abilityName ? ` in ability '${abilityName}'` : ''}`, {
250
577
  toolName,
251
578
  abilityName
252
579
  });
@@ -262,8 +589,9 @@ export class KadiError extends Error {
262
589
  id: this.id,
263
590
  timestamp: this.timestamp,
264
591
  context: {
592
+ domain: this.context.domain,
265
593
  abilityName: this.context.abilityName,
266
- protocol: this.context.protocol,
594
+ transport: this.context.transport,
267
595
  toolName: this.context.toolName,
268
596
  method: this.context.method,
269
597
  requestId: this.context.requestId
@@ -271,6 +599,21 @@ export class KadiError extends Error {
271
599
  }
272
600
  };
273
601
  }
602
+ /**
603
+ * Convert to JSON-RPC error format (broker-compatible)
604
+ */
605
+ toJsonRpcError() {
606
+ return {
607
+ code: -32000 - this.httpStatus,
608
+ message: this.message,
609
+ data: {
610
+ errorCode: this.code,
611
+ errorId: this.id,
612
+ context: this.context,
613
+ timestamp: this.timestamp
614
+ }
615
+ };
616
+ }
274
617
  /**
275
618
  * Convert to detailed log format
276
619
  */