@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.
- package/README.md +112 -16
- package/dist/KadiClient.d.ts +7 -15
- package/dist/KadiClient.d.ts.map +1 -1
- package/dist/KadiClient.js +82 -94
- package/dist/KadiClient.js.map +1 -1
- package/dist/errors/error-codes.d.ts +830 -60
- package/dist/errors/error-codes.d.ts.map +1 -1
- package/dist/errors/error-codes.js +409 -66
- package/dist/errors/error-codes.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loadAbility.d.ts +3 -4
- package/dist/loadAbility.d.ts.map +1 -1
- package/dist/loadAbility.js +50 -56
- package/dist/loadAbility.js.map +1 -1
- package/dist/transports/BrokerTransport.d.ts +0 -4
- package/dist/transports/BrokerTransport.d.ts.map +1 -1
- package/dist/transports/BrokerTransport.js.map +1 -1
- package/dist/transports/NativeTransport.d.ts.map +1 -1
- package/dist/transports/NativeTransport.js.map +1 -1
- package/dist/transports/StdioTransport.d.ts +7 -7
- package/dist/transports/StdioTransport.d.ts.map +1 -1
- package/dist/transports/StdioTransport.js +57 -52
- package/dist/transports/StdioTransport.js.map +1 -1
- package/dist/types/core.d.ts +4 -4
- package/dist/types/core.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/errors/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,
|
|
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
|
|
16
|
+
export const CoreErrorCodes = {
|
|
17
17
|
// =====================================================================
|
|
18
18
|
// CONNECTION ERRORS (1000-1999)
|
|
19
19
|
// =====================================================================
|
|
20
|
-
|
|
21
|
-
code: '
|
|
20
|
+
CORE_CONNECTION_FAILED: {
|
|
21
|
+
code: 'CORE_CONNECTION_FAILED',
|
|
22
22
|
httpStatus: 503,
|
|
23
23
|
message: 'Failed to establish connection'
|
|
24
24
|
},
|
|
25
|
-
|
|
26
|
-
code: '
|
|
25
|
+
CORE_CONNECTION_TIMEOUT: {
|
|
26
|
+
code: 'CORE_CONNECTION_TIMEOUT',
|
|
27
27
|
httpStatus: 408,
|
|
28
28
|
message: 'Connection attempt timed out'
|
|
29
29
|
},
|
|
30
|
-
|
|
31
|
-
code: '
|
|
30
|
+
CORE_CONNECTION_REFUSED: {
|
|
31
|
+
code: 'CORE_CONNECTION_REFUSED',
|
|
32
32
|
httpStatus: 503,
|
|
33
33
|
message: 'Connection refused by remote server'
|
|
34
34
|
},
|
|
35
|
-
|
|
36
|
-
code: '
|
|
35
|
+
CORE_BROKER_UNAVAILABLE: {
|
|
36
|
+
code: 'CORE_BROKER_UNAVAILABLE',
|
|
37
37
|
httpStatus: 503,
|
|
38
38
|
message: 'Broker service is unavailable'
|
|
39
39
|
},
|
|
40
|
-
|
|
41
|
-
code: '
|
|
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
|
-
|
|
49
|
-
code: '
|
|
48
|
+
CORE_AUTH_FAILED: {
|
|
49
|
+
code: 'CORE_AUTH_FAILED',
|
|
50
50
|
httpStatus: 401,
|
|
51
51
|
message: 'Authentication failed'
|
|
52
52
|
},
|
|
53
|
-
|
|
54
|
-
code: '
|
|
53
|
+
CORE_AUTH_HANDSHAKE_FAILED: {
|
|
54
|
+
code: 'CORE_AUTH_HANDSHAKE_FAILED',
|
|
55
55
|
httpStatus: 400,
|
|
56
56
|
message: 'Authentication handshake failed'
|
|
57
57
|
},
|
|
58
|
-
|
|
59
|
-
code: '
|
|
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
|
-
|
|
67
|
-
code: '
|
|
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
|
-
|
|
72
|
-
code: '
|
|
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
|
-
|
|
77
|
-
code: '
|
|
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
|
-
|
|
82
|
-
code: '
|
|
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
|
-
|
|
87
|
-
code: '
|
|
86
|
+
CORE_ABILITY_TIMEOUT: {
|
|
87
|
+
code: 'CORE_ABILITY_TIMEOUT',
|
|
88
88
|
httpStatus: 408,
|
|
89
89
|
message: 'Ability operation timed out'
|
|
90
90
|
},
|
|
91
|
-
|
|
92
|
-
code: '
|
|
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
|
-
|
|
97
|
-
code: '
|
|
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
|
-
|
|
105
|
-
code: '
|
|
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
|
-
|
|
110
|
-
code: '
|
|
109
|
+
CORE_TOOL_INVOCATION_FAILED: {
|
|
110
|
+
code: 'CORE_TOOL_INVOCATION_FAILED',
|
|
111
111
|
httpStatus: 500,
|
|
112
112
|
message: 'Tool invocation failed'
|
|
113
113
|
},
|
|
114
|
-
|
|
115
|
-
code: '
|
|
114
|
+
CORE_TOOL_TIMEOUT: {
|
|
115
|
+
code: 'CORE_TOOL_TIMEOUT',
|
|
116
116
|
httpStatus: 408,
|
|
117
117
|
message: 'Tool execution timed out'
|
|
118
118
|
},
|
|
119
|
-
|
|
120
|
-
code: '
|
|
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
|
-
|
|
128
|
-
code: '
|
|
127
|
+
CORE_PROTOCOL_UNSUPPORTED: {
|
|
128
|
+
code: 'CORE_PROTOCOL_UNSUPPORTED',
|
|
129
129
|
httpStatus: 400,
|
|
130
130
|
message: 'Protocol not supported'
|
|
131
131
|
},
|
|
132
|
-
|
|
133
|
-
code: '
|
|
132
|
+
CORE_PROTOCOL_VERSION_MISMATCH: {
|
|
133
|
+
code: 'CORE_PROTOCOL_VERSION_MISMATCH',
|
|
134
134
|
httpStatus: 400,
|
|
135
135
|
message: 'Protocol version mismatch'
|
|
136
136
|
},
|
|
137
|
-
|
|
138
|
-
code: '
|
|
137
|
+
CORE_MESSAGE_INVALID: {
|
|
138
|
+
code: 'CORE_MESSAGE_INVALID',
|
|
139
139
|
httpStatus: 400,
|
|
140
140
|
message: 'Invalid message format'
|
|
141
141
|
},
|
|
142
|
-
|
|
143
|
-
code: '
|
|
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
|
-
|
|
151
|
-
code: '
|
|
150
|
+
CORE_CONFIG_INVALID: {
|
|
151
|
+
code: 'CORE_CONFIG_INVALID',
|
|
152
152
|
httpStatus: 400,
|
|
153
153
|
message: 'Invalid configuration'
|
|
154
154
|
},
|
|
155
|
-
|
|
156
|
-
code: '
|
|
155
|
+
CORE_CONFIG_MISSING: {
|
|
156
|
+
code: 'CORE_CONFIG_MISSING',
|
|
157
157
|
httpStatus: 400,
|
|
158
158
|
message: 'Required configuration missing'
|
|
159
159
|
},
|
|
160
|
-
|
|
161
|
-
code: '
|
|
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
|
-
|
|
169
|
-
code: '
|
|
168
|
+
CORE_INTERNAL_ERROR: {
|
|
169
|
+
code: 'CORE_INTERNAL_ERROR',
|
|
170
170
|
httpStatus: 500,
|
|
171
171
|
message: 'An internal error occurred'
|
|
172
172
|
},
|
|
173
|
-
|
|
174
|
-
code: '
|
|
173
|
+
CORE_NOT_IMPLEMENTED: {
|
|
174
|
+
code: 'CORE_NOT_IMPLEMENTED',
|
|
175
175
|
httpStatus: 501,
|
|
176
176
|
message: 'Feature not yet implemented'
|
|
177
177
|
},
|
|
178
|
-
|
|
179
|
-
code: '
|
|
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
|
-
|
|
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(
|
|
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,
|
|
240
|
-
return new KadiError(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
*/
|