@cleocode/lafs 2026.4.0 → 2026.4.3
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 +97 -68
- package/dist/src/a2a/bindings/grpc.d.ts +117 -11
- package/dist/src/a2a/bindings/grpc.d.ts.map +1 -1
- package/dist/src/a2a/bindings/grpc.js +79 -8
- package/dist/src/a2a/bindings/grpc.js.map +1 -1
- package/dist/src/a2a/bindings/http.d.ts +129 -14
- package/dist/src/a2a/bindings/http.d.ts.map +1 -1
- package/dist/src/a2a/bindings/http.js +93 -12
- package/dist/src/a2a/bindings/http.js.map +1 -1
- package/dist/src/a2a/bindings/index.d.ts +80 -7
- package/dist/src/a2a/bindings/index.d.ts.map +1 -1
- package/dist/src/a2a/bindings/index.js +69 -2
- package/dist/src/a2a/bindings/index.js.map +1 -1
- package/dist/src/a2a/bindings/jsonrpc.d.ts +193 -9
- package/dist/src/a2a/bindings/jsonrpc.d.ts.map +1 -1
- package/dist/src/a2a/bindings/jsonrpc.js +152 -9
- package/dist/src/a2a/bindings/jsonrpc.js.map +1 -1
- package/dist/src/a2a/bridge.d.ts +232 -37
- package/dist/src/a2a/bridge.d.ts.map +1 -1
- package/dist/src/a2a/bridge.js +172 -24
- package/dist/src/a2a/bridge.js.map +1 -1
- package/dist/src/a2a/extensions.d.ts +221 -12
- package/dist/src/a2a/extensions.d.ts.map +1 -1
- package/dist/src/a2a/extensions.js +175 -11
- package/dist/src/a2a/extensions.js.map +1 -1
- package/dist/src/a2a/index.d.ts +2 -0
- package/dist/src/a2a/index.d.ts.map +1 -1
- package/dist/src/a2a/index.js +2 -0
- package/dist/src/a2a/index.js.map +1 -1
- package/dist/src/a2a/streaming.d.ts +274 -2
- package/dist/src/a2a/streaming.d.ts.map +1 -1
- package/dist/src/a2a/streaming.js +245 -2
- package/dist/src/a2a/streaming.js.map +1 -1
- package/dist/src/a2a/task-lifecycle.d.ts +339 -19
- package/dist/src/a2a/task-lifecycle.d.ts.map +1 -1
- package/dist/src/a2a/task-lifecycle.js +302 -19
- package/dist/src/a2a/task-lifecycle.js.map +1 -1
- package/dist/src/budgetEnforcement.d.ts +88 -14
- package/dist/src/budgetEnforcement.d.ts.map +1 -1
- package/dist/src/budgetEnforcement.js +132 -19
- package/dist/src/budgetEnforcement.js.map +1 -1
- package/dist/src/circuit-breaker/index.d.ts +254 -9
- package/dist/src/circuit-breaker/index.d.ts.map +1 -1
- package/dist/src/circuit-breaker/index.js +218 -9
- package/dist/src/circuit-breaker/index.js.map +1 -1
- package/dist/src/compliance.d.ts +176 -0
- package/dist/src/compliance.d.ts.map +1 -1
- package/dist/src/compliance.js +100 -0
- package/dist/src/compliance.js.map +1 -1
- package/dist/src/conformance.d.ts +52 -0
- package/dist/src/conformance.d.ts.map +1 -1
- package/dist/src/conformance.js +41 -0
- package/dist/src/conformance.js.map +1 -1
- package/dist/src/conformanceProfiles.d.ts +66 -0
- package/dist/src/conformanceProfiles.d.ts.map +1 -1
- package/dist/src/conformanceProfiles.js +51 -0
- package/dist/src/conformanceProfiles.js.map +1 -1
- package/dist/src/deprecationRegistry.d.ts +80 -0
- package/dist/src/deprecationRegistry.d.ts.map +1 -1
- package/dist/src/deprecationRegistry.js +50 -0
- package/dist/src/deprecationRegistry.js.map +1 -1
- package/dist/src/discovery.d.ts +344 -63
- package/dist/src/discovery.d.ts.map +1 -1
- package/dist/src/discovery.js +67 -13
- package/dist/src/discovery.js.map +1 -1
- package/dist/src/envelope.d.ts +252 -0
- package/dist/src/envelope.d.ts.map +1 -1
- package/dist/src/envelope.js +165 -0
- package/dist/src/envelope.js.map +1 -1
- package/dist/src/errorRegistry.d.ts +159 -0
- package/dist/src/errorRegistry.d.ts.map +1 -1
- package/dist/src/errorRegistry.js +115 -0
- package/dist/src/errorRegistry.js.map +1 -1
- package/dist/src/fieldExtraction.d.ts +125 -25
- package/dist/src/fieldExtraction.d.ts.map +1 -1
- package/dist/src/fieldExtraction.js +85 -16
- package/dist/src/fieldExtraction.js.map +1 -1
- package/dist/src/flagResolver.d.ts +75 -9
- package/dist/src/flagResolver.d.ts.map +1 -1
- package/dist/src/flagResolver.js +20 -4
- package/dist/src/flagResolver.js.map +1 -1
- package/dist/src/flagSemantics.d.ts +76 -1
- package/dist/src/flagSemantics.d.ts.map +1 -1
- package/dist/src/flagSemantics.js +66 -0
- package/dist/src/flagSemantics.js.map +1 -1
- package/dist/src/health/index.d.ts +87 -6
- package/dist/src/health/index.d.ts.map +1 -1
- package/dist/src/health/index.js +54 -6
- package/dist/src/health/index.js.map +1 -1
- package/dist/src/index.d.ts +12 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mviProjection.d.ts +42 -6
- package/dist/src/mviProjection.d.ts.map +1 -1
- package/dist/src/mviProjection.js +31 -5
- package/dist/src/mviProjection.js.map +1 -1
- package/dist/src/native-loader.d.ts +49 -0
- package/dist/src/native-loader.d.ts.map +1 -0
- package/dist/src/native-loader.js +56 -0
- package/dist/src/native-loader.js.map +1 -0
- package/dist/src/problemDetails.d.ts +70 -4
- package/dist/src/problemDetails.d.ts.map +1 -1
- package/dist/src/problemDetails.js +21 -3
- package/dist/src/problemDetails.js.map +1 -1
- package/dist/src/shutdown/index.d.ts +96 -7
- package/dist/src/shutdown/index.d.ts.map +1 -1
- package/dist/src/shutdown/index.js +72 -7
- package/dist/src/shutdown/index.js.map +1 -1
- package/dist/src/tokenEstimator.d.ts +97 -11
- package/dist/src/tokenEstimator.d.ts.map +1 -1
- package/dist/src/tokenEstimator.js +90 -11
- package/dist/src/tokenEstimator.js.map +1 -1
- package/dist/src/types.d.ts +467 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +64 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/validateEnvelope.d.ts +59 -1
- package/dist/src/validateEnvelope.d.ts.map +1 -1
- package/dist/src/validateEnvelope.js +75 -9
- package/dist/src/validateEnvelope.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/lafs.md +3 -4
- package/package.json +6 -3
- package/dist/src/mcpAdapter.d.ts +0 -29
- package/dist/src/mcpAdapter.d.ts.map +0 -1
- package/dist/src/mcpAdapter.js +0 -286
- package/dist/src/mcpAdapter.js.map +0 -1
- package/schemas/v1/conformance-profiles.d.ts +0 -15
- package/schemas/v1/envelope.schema.d.ts +0 -14
- package/schemas/v1/error-registry.d.ts +0 -24
|
@@ -4,75 +4,259 @@
|
|
|
4
4
|
* Method constants, error codes, and request/response builders
|
|
5
5
|
* for JSON-RPC 2.0 transport per A2A spec Section 5.3-5.4.
|
|
6
6
|
*/
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* All JSON-RPC method names defined by the A2A protocol.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Each key corresponds to an A2A operation and each value is the
|
|
12
|
+
* JSON-RPC method string sent on the wire per spec Section 5.3.
|
|
13
|
+
*/
|
|
8
14
|
export declare const JSONRPC_METHODS: {
|
|
15
|
+
/** Send a single message to an agent */
|
|
9
16
|
readonly SendMessage: "message/send";
|
|
17
|
+
/** Send a streaming message to an agent */
|
|
10
18
|
readonly SendStreamingMessage: "message/stream";
|
|
19
|
+
/** Retrieve a task by identifier */
|
|
11
20
|
readonly GetTask: "tasks/get";
|
|
21
|
+
/** List tasks matching query criteria */
|
|
12
22
|
readonly ListTasks: "tasks/list";
|
|
23
|
+
/** Cancel a running task */
|
|
13
24
|
readonly CancelTask: "tasks/cancel";
|
|
25
|
+
/** Resubscribe to task events */
|
|
14
26
|
readonly SubscribeToTask: "tasks/resubscribe";
|
|
27
|
+
/** Set push notification configuration for a task */
|
|
15
28
|
readonly SetTaskPushNotificationConfig: "tasks/pushNotificationConfig/set";
|
|
29
|
+
/** Get push notification configuration for a task */
|
|
16
30
|
readonly GetTaskPushNotificationConfig: "tasks/pushNotificationConfig/get";
|
|
31
|
+
/** List push notification configurations for a task */
|
|
17
32
|
readonly ListTaskPushNotificationConfig: "tasks/pushNotificationConfig/list";
|
|
33
|
+
/** Delete push notification configuration for a task */
|
|
18
34
|
readonly DeleteTaskPushNotificationConfig: "tasks/pushNotificationConfig/delete";
|
|
35
|
+
/** Retrieve the authenticated extended agent card */
|
|
19
36
|
readonly GetExtendedAgentCard: "agent/getAuthenticatedExtendedCard";
|
|
20
37
|
};
|
|
38
|
+
/** Union of all valid JSON-RPC method string values from {@link JSONRPC_METHODS} */
|
|
21
39
|
export type JsonRpcMethod = (typeof JSONRPC_METHODS)[keyof typeof JSONRPC_METHODS];
|
|
22
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Standard JSON-RPC 2.0 error codes.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* These are the error codes defined in the JSON-RPC 2.0 specification
|
|
45
|
+
* and are not A2A-specific.
|
|
46
|
+
*/
|
|
23
47
|
export declare const JSONRPC_STANDARD_ERROR_CODES: {
|
|
48
|
+
/** Invalid JSON was received by the server */
|
|
24
49
|
readonly ParseError: -32700;
|
|
50
|
+
/** The JSON sent is not a valid Request object */
|
|
25
51
|
readonly InvalidRequest: -32600;
|
|
52
|
+
/** The method does not exist or is not available */
|
|
26
53
|
readonly MethodNotFound: -32601;
|
|
54
|
+
/** Invalid method parameter(s) */
|
|
27
55
|
readonly InvalidParams: -32602;
|
|
56
|
+
/** Internal JSON-RPC error */
|
|
28
57
|
readonly InternalError: -32603;
|
|
29
58
|
};
|
|
30
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* A2A-specific error codes (-32001 through -32009).
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* These codes occupy the JSON-RPC server error range and are
|
|
64
|
+
* defined by the A2A protocol spec Section 5.4.
|
|
65
|
+
*/
|
|
31
66
|
export declare const JSONRPC_A2A_ERROR_CODES: {
|
|
67
|
+
/** The requested task was not found */
|
|
32
68
|
readonly TaskNotFound: -32001;
|
|
69
|
+
/** The task cannot be canceled in its current state */
|
|
33
70
|
readonly TaskNotCancelable: -32002;
|
|
71
|
+
/** Push notifications are not supported by the agent */
|
|
34
72
|
readonly PushNotificationNotSupported: -32003;
|
|
73
|
+
/** The requested operation is not supported */
|
|
35
74
|
readonly UnsupportedOperation: -32004;
|
|
75
|
+
/** The provided content type is not supported */
|
|
36
76
|
readonly ContentTypeNotSupported: -32005;
|
|
77
|
+
/** The downstream agent returned an invalid response */
|
|
37
78
|
readonly InvalidAgentResponse: -32006;
|
|
79
|
+
/** The authenticated extended card is not configured */
|
|
38
80
|
readonly AuthenticatedExtendedCardNotConfigured: -32007;
|
|
81
|
+
/** A required extension is not supported by the peer */
|
|
39
82
|
readonly ExtensionSupportRequired: -32008;
|
|
83
|
+
/** The requested protocol version is not supported */
|
|
40
84
|
readonly VersionNotSupported: -32009;
|
|
41
85
|
};
|
|
86
|
+
/** Union of A2A error type key names from {@link JSONRPC_A2A_ERROR_CODES} */
|
|
42
87
|
export type A2AErrorType = keyof typeof JSONRPC_A2A_ERROR_CODES;
|
|
88
|
+
/**
|
|
89
|
+
* A JSON-RPC 2.0 request object.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* Represents a well-formed JSON-RPC request per the JSON-RPC 2.0 specification.
|
|
93
|
+
*/
|
|
43
94
|
export interface JsonRpcRequest {
|
|
95
|
+
/** JSON-RPC protocol version, always `"2.0"` */
|
|
44
96
|
jsonrpc: '2.0';
|
|
97
|
+
/** Client-assigned request identifier */
|
|
45
98
|
id: string | number;
|
|
99
|
+
/** The RPC method name to invoke */
|
|
46
100
|
method: string;
|
|
101
|
+
/**
|
|
102
|
+
* Named parameters for the method call.
|
|
103
|
+
* @defaultValue undefined
|
|
104
|
+
*/
|
|
47
105
|
params?: Record<string, unknown>;
|
|
48
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* A JSON-RPC 2.0 success response object.
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* Returned when the method call succeeds. The `result` field contains the
|
|
112
|
+
* method return value and `error` is absent.
|
|
113
|
+
*/
|
|
49
114
|
export interface JsonRpcResponse {
|
|
115
|
+
/** JSON-RPC protocol version, always `"2.0"` */
|
|
50
116
|
jsonrpc: '2.0';
|
|
117
|
+
/** Identifier matching the originating request, or `null` for notifications */
|
|
51
118
|
id: string | number | null;
|
|
119
|
+
/** The return value of the invoked method */
|
|
52
120
|
result: unknown;
|
|
53
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* A JSON-RPC 2.0 error response object.
|
|
124
|
+
*
|
|
125
|
+
* @remarks
|
|
126
|
+
* Returned when the method call fails. The `error` field contains the
|
|
127
|
+
* error details and `result` is absent.
|
|
128
|
+
*/
|
|
54
129
|
export interface JsonRpcErrorResponse {
|
|
130
|
+
/** JSON-RPC protocol version, always `"2.0"` */
|
|
55
131
|
jsonrpc: '2.0';
|
|
132
|
+
/** Identifier matching the originating request, or `null` for notifications */
|
|
56
133
|
id: string | number | null;
|
|
134
|
+
/** Error descriptor containing code, message, and optional data */
|
|
57
135
|
error: {
|
|
136
|
+
/** Numeric error code indicating the type of failure */
|
|
58
137
|
code: number;
|
|
138
|
+
/** Short human-readable description of the error */
|
|
59
139
|
message: string;
|
|
140
|
+
/**
|
|
141
|
+
* Additional structured error data.
|
|
142
|
+
* @defaultValue undefined
|
|
143
|
+
*/
|
|
60
144
|
data?: Record<string, unknown>;
|
|
61
145
|
};
|
|
62
146
|
}
|
|
63
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Create a JSON-RPC 2.0 request object.
|
|
149
|
+
*
|
|
150
|
+
* @remarks
|
|
151
|
+
* Builds a spec-compliant request with the `jsonrpc: "2.0"` field set
|
|
152
|
+
* automatically. The `params` field is omitted when not provided.
|
|
153
|
+
*
|
|
154
|
+
* @param id - Client-assigned request identifier
|
|
155
|
+
* @param method - The RPC method name to invoke
|
|
156
|
+
* @param params - Optional named parameters for the method call
|
|
157
|
+
* @returns A fully formed {@link JsonRpcRequest} object
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```ts
|
|
161
|
+
* const req = createJsonRpcRequest(1, 'tasks/get', { id: 'abc' });
|
|
162
|
+
* // { jsonrpc: '2.0', id: 1, method: 'tasks/get', params: { id: 'abc' } }
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
64
165
|
export declare function createJsonRpcRequest(id: string | number, method: string, params?: Record<string, unknown>): JsonRpcRequest;
|
|
65
|
-
/**
|
|
166
|
+
/**
|
|
167
|
+
* Create a JSON-RPC 2.0 success response.
|
|
168
|
+
*
|
|
169
|
+
* @remarks
|
|
170
|
+
* Wraps an arbitrary result value in the standard JSON-RPC 2.0 response
|
|
171
|
+
* envelope with the `jsonrpc: "2.0"` field set automatically.
|
|
172
|
+
*
|
|
173
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
174
|
+
* @param result - The return value of the invoked method
|
|
175
|
+
* @returns A fully formed {@link JsonRpcResponse} object
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```ts
|
|
179
|
+
* const res = createJsonRpcResponse(1, { status: 'ok' });
|
|
180
|
+
* // { jsonrpc: '2.0', id: 1, result: { status: 'ok' } }
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
66
183
|
export declare function createJsonRpcResponse(id: string | number | null, result: unknown): JsonRpcResponse;
|
|
67
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* Create a JSON-RPC 2.0 error response.
|
|
186
|
+
*
|
|
187
|
+
* @remarks
|
|
188
|
+
* Builds an error response with the standard `error` object containing
|
|
189
|
+
* the numeric code, message, and optional structured data.
|
|
190
|
+
*
|
|
191
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
192
|
+
* @param code - Numeric error code (standard or A2A-specific)
|
|
193
|
+
* @param message - Short human-readable description of the error
|
|
194
|
+
* @param data - Optional additional structured error data
|
|
195
|
+
* @returns A fully formed {@link JsonRpcErrorResponse} object
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```ts
|
|
199
|
+
* const err = createJsonRpcErrorResponse(1, -32001, 'Task not found');
|
|
200
|
+
* // { jsonrpc: '2.0', id: 1, error: { code: -32001, message: 'Task not found' } }
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
68
203
|
export declare function createJsonRpcErrorResponse(id: string | number | null, code: number, message: string, data?: Record<string, unknown>): JsonRpcErrorResponse;
|
|
69
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* Create an A2A-specific JSON-RPC error response by error type name.
|
|
206
|
+
*
|
|
207
|
+
* @remarks
|
|
208
|
+
* Convenience wrapper around {@link createJsonRpcErrorResponse} that resolves
|
|
209
|
+
* the numeric error code from {@link JSONRPC_A2A_ERROR_CODES} automatically.
|
|
210
|
+
*
|
|
211
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
212
|
+
* @param errorType - The A2A error type name (e.g. `"TaskNotFound"`)
|
|
213
|
+
* @param message - Short human-readable description of the error
|
|
214
|
+
* @param data - Optional additional structured error data
|
|
215
|
+
* @returns A fully formed {@link JsonRpcErrorResponse} with the resolved A2A error code
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* const err = createA2AErrorResponse(1, 'TaskNotFound', 'No task with id xyz');
|
|
220
|
+
* // error.code === -32001
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
70
223
|
export declare function createA2AErrorResponse(id: string | number | null, errorType: A2AErrorType, message: string, data?: Record<string, unknown>): JsonRpcErrorResponse;
|
|
71
|
-
/**
|
|
224
|
+
/**
|
|
225
|
+
* Validate the structure of a JSON-RPC request.
|
|
226
|
+
*
|
|
227
|
+
* @remarks
|
|
228
|
+
* Performs structural validation of an unknown input against the JSON-RPC 2.0
|
|
229
|
+
* request schema. Checks the `jsonrpc` version, `id` type, `method` string,
|
|
230
|
+
* and that the method is a known A2A method from {@link JSONRPC_METHODS}.
|
|
231
|
+
*
|
|
232
|
+
* @param input - The unknown value to validate
|
|
233
|
+
* @returns An object with `valid` indicating success and `errors` listing any violations
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```ts
|
|
237
|
+
* const { valid, errors } = validateJsonRpcRequest({ jsonrpc: '2.0', id: 1, method: 'tasks/get' });
|
|
238
|
+
* // valid === true, errors === []
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
72
241
|
export declare function validateJsonRpcRequest(input: unknown): {
|
|
73
242
|
valid: boolean;
|
|
74
243
|
errors: string[];
|
|
75
244
|
};
|
|
76
|
-
/**
|
|
245
|
+
/**
|
|
246
|
+
* Check if a numeric error code is an A2A-specific error.
|
|
247
|
+
*
|
|
248
|
+
* @remarks
|
|
249
|
+
* A2A error codes occupy the range -32009 through -32001 within the
|
|
250
|
+
* JSON-RPC server error code space.
|
|
251
|
+
*
|
|
252
|
+
* @param code - The numeric JSON-RPC error code to check
|
|
253
|
+
* @returns `true` if the code falls within the A2A error range
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* isA2AError(-32001); // true (TaskNotFound)
|
|
258
|
+
* isA2AError(-32700); // false (standard ParseError)
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
77
261
|
export declare function isA2AError(code: number): boolean;
|
|
78
262
|
//# sourceMappingURL=jsonrpc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../../src/a2a/bindings/jsonrpc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH
|
|
1
|
+
{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../../src/a2a/bindings/jsonrpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,47 +7,107 @@
|
|
|
7
7
|
// ============================================================================
|
|
8
8
|
// Method Constants (spec Section 5.3)
|
|
9
9
|
// ============================================================================
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* All JSON-RPC method names defined by the A2A protocol.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Each key corresponds to an A2A operation and each value is the
|
|
15
|
+
* JSON-RPC method string sent on the wire per spec Section 5.3.
|
|
16
|
+
*/
|
|
11
17
|
export const JSONRPC_METHODS = {
|
|
18
|
+
/** Send a single message to an agent */
|
|
12
19
|
SendMessage: 'message/send',
|
|
20
|
+
/** Send a streaming message to an agent */
|
|
13
21
|
SendStreamingMessage: 'message/stream',
|
|
22
|
+
/** Retrieve a task by identifier */
|
|
14
23
|
GetTask: 'tasks/get',
|
|
24
|
+
/** List tasks matching query criteria */
|
|
15
25
|
ListTasks: 'tasks/list',
|
|
26
|
+
/** Cancel a running task */
|
|
16
27
|
CancelTask: 'tasks/cancel',
|
|
28
|
+
/** Resubscribe to task events */
|
|
17
29
|
SubscribeToTask: 'tasks/resubscribe',
|
|
30
|
+
/** Set push notification configuration for a task */
|
|
18
31
|
SetTaskPushNotificationConfig: 'tasks/pushNotificationConfig/set',
|
|
32
|
+
/** Get push notification configuration for a task */
|
|
19
33
|
GetTaskPushNotificationConfig: 'tasks/pushNotificationConfig/get',
|
|
34
|
+
/** List push notification configurations for a task */
|
|
20
35
|
ListTaskPushNotificationConfig: 'tasks/pushNotificationConfig/list',
|
|
36
|
+
/** Delete push notification configuration for a task */
|
|
21
37
|
DeleteTaskPushNotificationConfig: 'tasks/pushNotificationConfig/delete',
|
|
38
|
+
/** Retrieve the authenticated extended agent card */
|
|
22
39
|
GetExtendedAgentCard: 'agent/getAuthenticatedExtendedCard',
|
|
23
40
|
};
|
|
24
41
|
// ============================================================================
|
|
25
42
|
// Error Code Constants (spec Section 5.4)
|
|
26
43
|
// ============================================================================
|
|
27
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Standard JSON-RPC 2.0 error codes.
|
|
46
|
+
*
|
|
47
|
+
* @remarks
|
|
48
|
+
* These are the error codes defined in the JSON-RPC 2.0 specification
|
|
49
|
+
* and are not A2A-specific.
|
|
50
|
+
*/
|
|
28
51
|
export const JSONRPC_STANDARD_ERROR_CODES = {
|
|
52
|
+
/** Invalid JSON was received by the server */
|
|
29
53
|
ParseError: -32700,
|
|
54
|
+
/** The JSON sent is not a valid Request object */
|
|
30
55
|
InvalidRequest: -32600,
|
|
56
|
+
/** The method does not exist or is not available */
|
|
31
57
|
MethodNotFound: -32601,
|
|
58
|
+
/** Invalid method parameter(s) */
|
|
32
59
|
InvalidParams: -32602,
|
|
60
|
+
/** Internal JSON-RPC error */
|
|
33
61
|
InternalError: -32603,
|
|
34
62
|
};
|
|
35
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* A2A-specific error codes (-32001 through -32009).
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* These codes occupy the JSON-RPC server error range and are
|
|
68
|
+
* defined by the A2A protocol spec Section 5.4.
|
|
69
|
+
*/
|
|
36
70
|
export const JSONRPC_A2A_ERROR_CODES = {
|
|
71
|
+
/** The requested task was not found */
|
|
37
72
|
TaskNotFound: -32001,
|
|
73
|
+
/** The task cannot be canceled in its current state */
|
|
38
74
|
TaskNotCancelable: -32002,
|
|
75
|
+
/** Push notifications are not supported by the agent */
|
|
39
76
|
PushNotificationNotSupported: -32003,
|
|
77
|
+
/** The requested operation is not supported */
|
|
40
78
|
UnsupportedOperation: -32004,
|
|
79
|
+
/** The provided content type is not supported */
|
|
41
80
|
ContentTypeNotSupported: -32005,
|
|
81
|
+
/** The downstream agent returned an invalid response */
|
|
42
82
|
InvalidAgentResponse: -32006,
|
|
83
|
+
/** The authenticated extended card is not configured */
|
|
43
84
|
AuthenticatedExtendedCardNotConfigured: -32007,
|
|
85
|
+
/** A required extension is not supported by the peer */
|
|
44
86
|
ExtensionSupportRequired: -32008,
|
|
87
|
+
/** The requested protocol version is not supported */
|
|
45
88
|
VersionNotSupported: -32009,
|
|
46
89
|
};
|
|
47
90
|
// ============================================================================
|
|
48
91
|
// Builders
|
|
49
92
|
// ============================================================================
|
|
50
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Create a JSON-RPC 2.0 request object.
|
|
95
|
+
*
|
|
96
|
+
* @remarks
|
|
97
|
+
* Builds a spec-compliant request with the `jsonrpc: "2.0"` field set
|
|
98
|
+
* automatically. The `params` field is omitted when not provided.
|
|
99
|
+
*
|
|
100
|
+
* @param id - Client-assigned request identifier
|
|
101
|
+
* @param method - The RPC method name to invoke
|
|
102
|
+
* @param params - Optional named parameters for the method call
|
|
103
|
+
* @returns A fully formed {@link JsonRpcRequest} object
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* const req = createJsonRpcRequest(1, 'tasks/get', { id: 'abc' });
|
|
108
|
+
* // { jsonrpc: '2.0', id: 1, method: 'tasks/get', params: { id: 'abc' } }
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
51
111
|
export function createJsonRpcRequest(id, method, params) {
|
|
52
112
|
return {
|
|
53
113
|
jsonrpc: '2.0',
|
|
@@ -56,7 +116,23 @@ export function createJsonRpcRequest(id, method, params) {
|
|
|
56
116
|
...(params !== undefined && { params }),
|
|
57
117
|
};
|
|
58
118
|
}
|
|
59
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* Create a JSON-RPC 2.0 success response.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* Wraps an arbitrary result value in the standard JSON-RPC 2.0 response
|
|
124
|
+
* envelope with the `jsonrpc: "2.0"` field set automatically.
|
|
125
|
+
*
|
|
126
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
127
|
+
* @param result - The return value of the invoked method
|
|
128
|
+
* @returns A fully formed {@link JsonRpcResponse} object
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* const res = createJsonRpcResponse(1, { status: 'ok' });
|
|
133
|
+
* // { jsonrpc: '2.0', id: 1, result: { status: 'ok' } }
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
60
136
|
export function createJsonRpcResponse(id, result) {
|
|
61
137
|
return {
|
|
62
138
|
jsonrpc: '2.0',
|
|
@@ -64,7 +140,25 @@ export function createJsonRpcResponse(id, result) {
|
|
|
64
140
|
result,
|
|
65
141
|
};
|
|
66
142
|
}
|
|
67
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Create a JSON-RPC 2.0 error response.
|
|
145
|
+
*
|
|
146
|
+
* @remarks
|
|
147
|
+
* Builds an error response with the standard `error` object containing
|
|
148
|
+
* the numeric code, message, and optional structured data.
|
|
149
|
+
*
|
|
150
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
151
|
+
* @param code - Numeric error code (standard or A2A-specific)
|
|
152
|
+
* @param message - Short human-readable description of the error
|
|
153
|
+
* @param data - Optional additional structured error data
|
|
154
|
+
* @returns A fully formed {@link JsonRpcErrorResponse} object
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```ts
|
|
158
|
+
* const err = createJsonRpcErrorResponse(1, -32001, 'Task not found');
|
|
159
|
+
* // { jsonrpc: '2.0', id: 1, error: { code: -32001, message: 'Task not found' } }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
68
162
|
export function createJsonRpcErrorResponse(id, code, message, data) {
|
|
69
163
|
return {
|
|
70
164
|
jsonrpc: '2.0',
|
|
@@ -76,7 +170,25 @@ export function createJsonRpcErrorResponse(id, code, message, data) {
|
|
|
76
170
|
},
|
|
77
171
|
};
|
|
78
172
|
}
|
|
79
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* Create an A2A-specific JSON-RPC error response by error type name.
|
|
175
|
+
*
|
|
176
|
+
* @remarks
|
|
177
|
+
* Convenience wrapper around {@link createJsonRpcErrorResponse} that resolves
|
|
178
|
+
* the numeric error code from {@link JSONRPC_A2A_ERROR_CODES} automatically.
|
|
179
|
+
*
|
|
180
|
+
* @param id - Identifier matching the originating request, or `null` for notifications
|
|
181
|
+
* @param errorType - The A2A error type name (e.g. `"TaskNotFound"`)
|
|
182
|
+
* @param message - Short human-readable description of the error
|
|
183
|
+
* @param data - Optional additional structured error data
|
|
184
|
+
* @returns A fully formed {@link JsonRpcErrorResponse} with the resolved A2A error code
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const err = createA2AErrorResponse(1, 'TaskNotFound', 'No task with id xyz');
|
|
189
|
+
* // error.code === -32001
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
80
192
|
export function createA2AErrorResponse(id, errorType, message, data) {
|
|
81
193
|
return createJsonRpcErrorResponse(id, JSONRPC_A2A_ERROR_CODES[errorType], message, data);
|
|
82
194
|
}
|
|
@@ -84,7 +196,23 @@ export function createA2AErrorResponse(id, errorType, message, data) {
|
|
|
84
196
|
// Validation
|
|
85
197
|
// ============================================================================
|
|
86
198
|
const knownMethods = new Set(Object.values(JSONRPC_METHODS));
|
|
87
|
-
/**
|
|
199
|
+
/**
|
|
200
|
+
* Validate the structure of a JSON-RPC request.
|
|
201
|
+
*
|
|
202
|
+
* @remarks
|
|
203
|
+
* Performs structural validation of an unknown input against the JSON-RPC 2.0
|
|
204
|
+
* request schema. Checks the `jsonrpc` version, `id` type, `method` string,
|
|
205
|
+
* and that the method is a known A2A method from {@link JSONRPC_METHODS}.
|
|
206
|
+
*
|
|
207
|
+
* @param input - The unknown value to validate
|
|
208
|
+
* @returns An object with `valid` indicating success and `errors` listing any violations
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```ts
|
|
212
|
+
* const { valid, errors } = validateJsonRpcRequest({ jsonrpc: '2.0', id: 1, method: 'tasks/get' });
|
|
213
|
+
* // valid === true, errors === []
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
88
216
|
export function validateJsonRpcRequest(input) {
|
|
89
217
|
const errors = [];
|
|
90
218
|
if (typeof input !== 'object' || input === null) {
|
|
@@ -109,7 +237,22 @@ export function validateJsonRpcRequest(input) {
|
|
|
109
237
|
}
|
|
110
238
|
return { valid: errors.length === 0, errors };
|
|
111
239
|
}
|
|
112
|
-
/**
|
|
240
|
+
/**
|
|
241
|
+
* Check if a numeric error code is an A2A-specific error.
|
|
242
|
+
*
|
|
243
|
+
* @remarks
|
|
244
|
+
* A2A error codes occupy the range -32009 through -32001 within the
|
|
245
|
+
* JSON-RPC server error code space.
|
|
246
|
+
*
|
|
247
|
+
* @param code - The numeric JSON-RPC error code to check
|
|
248
|
+
* @returns `true` if the code falls within the A2A error range
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* isA2AError(-32001); // true (TaskNotFound)
|
|
253
|
+
* isA2AError(-32700); // false (standard ParseError)
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
113
256
|
export function isA2AError(code) {
|
|
114
257
|
return code >= -32009 && code <= -32001;
|
|
115
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../../../src/a2a/bindings/jsonrpc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../../../src/a2a/bindings/jsonrpc.ts"],"names":[],"mappings":"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"}
|