@cogitator-ai/a2a 0.7.8 → 0.8.0
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 +173 -151
- package/dist/adapters/express.d.ts +5 -0
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +53 -30
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/fastify.d.ts +5 -0
- package/dist/adapters/fastify.d.ts.map +1 -1
- package/dist/adapters/fastify.js +51 -35
- package/dist/adapters/fastify.js.map +1 -1
- package/dist/adapters/hono.d.ts +5 -0
- package/dist/adapters/hono.d.ts.map +1 -1
- package/dist/adapters/hono.js +41 -49
- package/dist/adapters/hono.js.map +1 -1
- package/dist/adapters/koa.d.ts +5 -0
- package/dist/adapters/koa.d.ts.map +1 -1
- package/dist/adapters/koa.js +39 -32
- package/dist/adapters/koa.js.map +1 -1
- package/dist/adapters/next.d.ts +13 -2
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +75 -51
- package/dist/adapters/next.js.map +1 -1
- package/dist/adapters/shared.d.ts +43 -10
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +156 -23
- package/dist/adapters/shared.js.map +1 -1
- package/dist/agent-card.d.ts +22 -7
- package/dist/agent-card.d.ts.map +1 -1
- package/dist/agent-card.js +71 -34
- package/dist/agent-card.js.map +1 -1
- package/dist/approvals.d.ts +46 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +105 -0
- package/dist/approvals.js.map +1 -0
- package/dist/client.d.ts +59 -17
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +237 -142
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +24 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +90 -19
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/ownership.d.ts +7 -1
- package/dist/ownership.d.ts.map +1 -1
- package/dist/ownership.js +24 -3
- package/dist/ownership.js.map +1 -1
- package/dist/protocol.d.ts +70 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +187 -0
- package/dist/protocol.js.map +1 -0
- package/dist/push-notifications.d.ts +5 -2
- package/dist/push-notifications.d.ts.map +1 -1
- package/dist/push-notifications.js +33 -23
- package/dist/push-notifications.js.map +1 -1
- package/dist/redis-task-store.js +3 -3
- package/dist/redis-task-store.js.map +1 -1
- package/dist/server.d.ts +75 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +324 -270
- package/dist/server.js.map +1 -1
- package/dist/task-manager.d.ts +57 -11
- package/dist/task-manager.d.ts.map +1 -1
- package/dist/task-manager.js +264 -116
- package/dist/task-manager.js.map +1 -1
- package/dist/task-store.js +4 -4
- package/dist/task-store.js.map +1 -1
- package/dist/types.d.ts +226 -85
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -3
- package/dist/types.js.map +1 -1
- package/dist/url.d.ts +7 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +12 -0
- package/dist/url.js.map +1 -0
- package/package.json +19 -9
- package/dist/adapters/sse-error-event.d.ts +0 -3
- package/dist/adapters/sse-error-event.d.ts.map +0 -1
- package/dist/adapters/sse-error-event.js +0 -12
- package/dist/adapters/sse-error-event.js.map +0 -1
package/dist/errors.js
CHANGED
|
@@ -1,61 +1,127 @@
|
|
|
1
1
|
import { CogitatorError } from '@cogitator-ai/types';
|
|
2
2
|
import { JsonRpcParseError } from './json-rpc.js';
|
|
3
|
+
/** JSON-RPC error codes of A2A v0.3 (section 8), plus the server error this package adds. */
|
|
4
|
+
export const A2A_ERROR_CODES = {
|
|
5
|
+
parseError: -32700,
|
|
6
|
+
invalidRequest: -32600,
|
|
7
|
+
methodNotFound: -32601,
|
|
8
|
+
invalidParams: -32602,
|
|
9
|
+
internalError: -32603,
|
|
10
|
+
taskNotFound: -32001,
|
|
11
|
+
taskNotCancelable: -32002,
|
|
12
|
+
pushNotificationNotSupported: -32003,
|
|
13
|
+
unsupportedOperation: -32004,
|
|
14
|
+
contentTypeNotSupported: -32005,
|
|
15
|
+
invalidAgentResponse: -32006,
|
|
16
|
+
authenticatedExtendedCardNotConfigured: -32007,
|
|
17
|
+
/** Cogitator: the request carries no valid credentials (answered with HTTP 401) */
|
|
18
|
+
unauthorized: -32000,
|
|
19
|
+
};
|
|
3
20
|
export function taskNotFound(taskId) {
|
|
4
|
-
return {
|
|
21
|
+
return {
|
|
22
|
+
code: A2A_ERROR_CODES.taskNotFound,
|
|
23
|
+
message: `Task not found: ${taskId}`,
|
|
24
|
+
data: { taskId },
|
|
25
|
+
};
|
|
5
26
|
}
|
|
6
27
|
export function taskNotCancelable(taskId) {
|
|
7
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
code: A2A_ERROR_CODES.taskNotCancelable,
|
|
30
|
+
message: `Task cannot be canceled: ${taskId}`,
|
|
31
|
+
data: { taskId },
|
|
32
|
+
};
|
|
8
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* A message for a task that cannot take one: a task in a terminal state can't be restarted (A2A
|
|
36
|
+
* v0.3, section 7.1), and a task that is still running takes no second message.
|
|
37
|
+
*/
|
|
9
38
|
export function taskNotContinuable(taskId, state) {
|
|
10
39
|
return {
|
|
11
|
-
code:
|
|
12
|
-
message: `Task cannot
|
|
40
|
+
code: A2A_ERROR_CODES.invalidRequest,
|
|
41
|
+
message: `Task ${taskId} cannot take a message in state '${state}'`,
|
|
13
42
|
data: { taskId, state },
|
|
14
43
|
};
|
|
15
44
|
}
|
|
16
45
|
export function pushNotificationsNotSupported() {
|
|
17
|
-
return {
|
|
46
|
+
return {
|
|
47
|
+
code: A2A_ERROR_CODES.pushNotificationNotSupported,
|
|
48
|
+
message: 'Push Notification is not supported',
|
|
49
|
+
};
|
|
18
50
|
}
|
|
19
|
-
export function
|
|
51
|
+
export function pushNotificationConfigNotFound(taskId, configId) {
|
|
20
52
|
return {
|
|
21
|
-
code:
|
|
22
|
-
message: `Push
|
|
23
|
-
data: { taskId },
|
|
53
|
+
code: A2A_ERROR_CODES.invalidParams,
|
|
54
|
+
message: `Push notification config ${configId} not found for task ${taskId}`,
|
|
55
|
+
data: { taskId, pushNotificationConfigId: configId },
|
|
24
56
|
};
|
|
25
57
|
}
|
|
26
58
|
export function unsupportedOperation(method) {
|
|
27
|
-
return {
|
|
59
|
+
return {
|
|
60
|
+
code: A2A_ERROR_CODES.unsupportedOperation,
|
|
61
|
+
message: `Unsupported operation: ${method}`,
|
|
62
|
+
data: { method },
|
|
63
|
+
};
|
|
28
64
|
}
|
|
29
65
|
export function contentTypeNotSupported(contentType) {
|
|
30
66
|
return {
|
|
31
|
-
code:
|
|
67
|
+
code: A2A_ERROR_CODES.contentTypeNotSupported,
|
|
32
68
|
message: `Content type not supported: ${contentType}`,
|
|
33
69
|
data: { contentType },
|
|
34
70
|
};
|
|
35
71
|
}
|
|
36
72
|
export function invalidAgentResponse(detail) {
|
|
37
|
-
return {
|
|
73
|
+
return {
|
|
74
|
+
code: A2A_ERROR_CODES.invalidAgentResponse,
|
|
75
|
+
message: `Invalid agent response: ${detail}`,
|
|
76
|
+
};
|
|
38
77
|
}
|
|
78
|
+
export function authenticatedExtendedCardNotConfigured() {
|
|
79
|
+
return {
|
|
80
|
+
code: A2A_ERROR_CODES.authenticatedExtendedCardNotConfigured,
|
|
81
|
+
message: 'Authenticated Extended Card not configured',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** An agent name the server does not host. */
|
|
39
85
|
export function agentNotFound(agentName) {
|
|
40
|
-
return {
|
|
86
|
+
return {
|
|
87
|
+
code: A2A_ERROR_CODES.invalidParams,
|
|
88
|
+
message: `Agent not found: ${agentName}`,
|
|
89
|
+
data: { agentName },
|
|
90
|
+
};
|
|
41
91
|
}
|
|
42
92
|
export function unauthorized(detail) {
|
|
43
|
-
return {
|
|
93
|
+
return {
|
|
94
|
+
code: A2A_ERROR_CODES.unauthorized,
|
|
95
|
+
message: detail ? `Unauthorized: ${detail}` : 'Unauthorized',
|
|
96
|
+
};
|
|
44
97
|
}
|
|
45
98
|
export function parseError(detail) {
|
|
46
|
-
return {
|
|
99
|
+
return {
|
|
100
|
+
code: A2A_ERROR_CODES.parseError,
|
|
101
|
+
message: detail ? `Parse error: ${detail}` : 'Parse error',
|
|
102
|
+
};
|
|
47
103
|
}
|
|
48
104
|
export function invalidRequest(detail) {
|
|
49
|
-
return {
|
|
105
|
+
return {
|
|
106
|
+
code: A2A_ERROR_CODES.invalidRequest,
|
|
107
|
+
message: detail ? `Invalid request: ${detail}` : 'Invalid request',
|
|
108
|
+
};
|
|
50
109
|
}
|
|
51
110
|
export function methodNotFound(method) {
|
|
52
|
-
return {
|
|
111
|
+
return {
|
|
112
|
+
code: A2A_ERROR_CODES.methodNotFound,
|
|
113
|
+
message: `Method not found: ${method}`,
|
|
114
|
+
data: { method },
|
|
115
|
+
};
|
|
53
116
|
}
|
|
54
117
|
export function invalidParams(detail) {
|
|
55
|
-
return { code:
|
|
118
|
+
return { code: A2A_ERROR_CODES.invalidParams, message: `Invalid params: ${detail}` };
|
|
56
119
|
}
|
|
57
120
|
export function internalError(detail) {
|
|
58
|
-
return {
|
|
121
|
+
return {
|
|
122
|
+
code: A2A_ERROR_CODES.internalError,
|
|
123
|
+
message: detail ? `Internal error: ${detail}` : 'Internal error',
|
|
124
|
+
};
|
|
59
125
|
}
|
|
60
126
|
export class A2AError extends Error {
|
|
61
127
|
jsonRpcError;
|
|
@@ -93,6 +159,11 @@ export function clientErrorMessage(error, context) {
|
|
|
93
159
|
export function clientJsonRpcError(error, context) {
|
|
94
160
|
if (error instanceof A2AError)
|
|
95
161
|
return error.jsonRpcError;
|
|
162
|
+
if (error instanceof JsonRpcParseError) {
|
|
163
|
+
return error.code === A2A_ERROR_CODES.invalidRequest
|
|
164
|
+
? invalidRequest(error.message)
|
|
165
|
+
: parseError(error.message);
|
|
166
|
+
}
|
|
96
167
|
if (CogitatorError.isCogitatorError(error))
|
|
97
168
|
return internalError(error.message);
|
|
98
169
|
logInternalError(error, context);
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
export { A2AServer } from './server.js';
|
|
1
|
+
export { A2AServer, STREAMING_METHODS } from './server.js';
|
|
2
|
+
export type { A2AHandleOptions, AgentCardRequestOptions } from './server.js';
|
|
2
3
|
export { A2AClient } from './client.js';
|
|
3
4
|
export type { A2AToolOptions, A2AToolResult, A2ARequestOptions } from './client.js';
|
|
4
|
-
export { generateAgentCard, signAgentCard, verifyAgentCardSignature } from './agent-card.js';
|
|
5
|
+
export { generateAgentCard, signAgentCard, verifyAgentCardSignature, canonicalJson, } from './agent-card.js';
|
|
5
6
|
export type { AgentCardOptions, AgentCardSigningOptions } from './agent-card.js';
|
|
6
7
|
export { InMemoryTaskStore } from './task-store.js';
|
|
7
8
|
export type { InMemoryTaskStoreConfig } from './task-store.js';
|
|
8
9
|
export { RedisTaskStore } from './redis-task-store.js';
|
|
9
10
|
export type { RedisClientLike, RedisTaskStoreConfig } from './redis-task-store.js';
|
|
11
|
+
export { TOOL_APPROVAL_REQUEST_KIND, TOOL_APPROVAL_RESPONSE_KIND, toolApprovalRequestPart, toolApprovalResponsePart, readToolApprovalRequest, readToolApprovalResponse, } from './approvals.js';
|
|
12
|
+
export type { ToolApprovalResponse } from './approvals.js';
|
|
13
|
+
export { toMessage, agentMessage, textPart, messageText, artifactText, isA2ATask, newMessageId, parseMessageSendParams, } from './protocol.js';
|
|
10
14
|
export { TaskManager } from './task-manager.js';
|
|
11
|
-
export type { TaskManagerConfig, ExecuteTaskOptions } from './task-manager.js';
|
|
12
|
-
export { InMemoryPushNotificationStore, PushNotificationSender, validateWebhookUrl, isPrivateAddress, } from './push-notifications.js';
|
|
15
|
+
export type { TaskManagerConfig, ExecuteTaskOptions, TaskEvent } from './task-manager.js';
|
|
16
|
+
export { InMemoryPushNotificationStore, PushNotificationSender, NOTIFICATION_TOKEN_HEADER, validateWebhookUrl, isPrivateAddress, } from './push-notifications.js';
|
|
13
17
|
export { parseJsonRpcRequest, createSuccessResponse, createErrorResponse, isValidRequest, JsonRpcParseError, } from './json-rpc.js';
|
|
14
18
|
export type { JsonRpcRequest, JsonRpcResponse, JsonRpcError } from './json-rpc.js';
|
|
15
|
-
export { taskNotFound, taskNotCancelable, taskNotContinuable, pushNotificationsNotSupported,
|
|
16
|
-
export { TERMINAL_STATES, isTerminalState, isStreamFinalState } from './types.js';
|
|
17
|
-
export type { TaskState, TextPart, FilePart, DataPart, Part, A2AMessage,
|
|
19
|
+
export { A2A_ERROR_CODES, taskNotFound, taskNotCancelable, taskNotContinuable, pushNotificationsNotSupported, pushNotificationConfigNotFound, unsupportedOperation, contentTypeNotSupported, invalidAgentResponse, authenticatedExtendedCardNotConfigured, agentNotFound, unauthorized, parseError, invalidRequest, methodNotFound, invalidParams, internalError, A2AError, } from './errors.js';
|
|
20
|
+
export { A2A_PROTOCOL_VERSION, AGENT_CARD_PATH, LEGACY_AGENT_CARD_PATH, TERMINAL_STATES, isTerminalState, isStreamFinalState, } from './types.js';
|
|
21
|
+
export type { TaskState, TextPart, FilePart, FileWithUri, FileWithBytes, DataPart, Part, A2AMessage, A2AMessageInput, Artifact, TaskStatus, A2ATask, AgentProvider, AgentExtension, A2ACapabilities, AgentSkill, OAuthFlow, SecurityScheme, TransportProtocol, AgentInterface, AgentCardSignature, AgentCard, ExtendedAgentCard, PushNotificationAuthenticationInfo, PushNotificationConfig, TaskPushNotificationConfig, MessageSendConfiguration, SendMessageConfiguration, MessageSendParams, SendMessageResult, TaskFilter, TaskStore, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, A2AStreamEvent, AgentRunResult, CogitatorLike, A2AAuthConfig, A2ACaller, A2AServerConfig, A2AClientConfig, PushNotificationStore, } from './types.js';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sCAAsC,EACtC,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,kCAAkC,EAClC,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
export { A2AServer } from './server.js';
|
|
1
|
+
export { A2AServer, STREAMING_METHODS } from './server.js';
|
|
2
2
|
export { A2AClient } from './client.js';
|
|
3
|
-
export { generateAgentCard, signAgentCard, verifyAgentCardSignature } from './agent-card.js';
|
|
3
|
+
export { generateAgentCard, signAgentCard, verifyAgentCardSignature, canonicalJson, } from './agent-card.js';
|
|
4
4
|
export { InMemoryTaskStore } from './task-store.js';
|
|
5
5
|
export { RedisTaskStore } from './redis-task-store.js';
|
|
6
|
+
export { TOOL_APPROVAL_REQUEST_KIND, TOOL_APPROVAL_RESPONSE_KIND, toolApprovalRequestPart, toolApprovalResponsePart, readToolApprovalRequest, readToolApprovalResponse, } from './approvals.js';
|
|
7
|
+
export { toMessage, agentMessage, textPart, messageText, artifactText, isA2ATask, newMessageId, parseMessageSendParams, } from './protocol.js';
|
|
6
8
|
export { TaskManager } from './task-manager.js';
|
|
7
|
-
export { InMemoryPushNotificationStore, PushNotificationSender, validateWebhookUrl, isPrivateAddress, } from './push-notifications.js';
|
|
9
|
+
export { InMemoryPushNotificationStore, PushNotificationSender, NOTIFICATION_TOKEN_HEADER, validateWebhookUrl, isPrivateAddress, } from './push-notifications.js';
|
|
8
10
|
export { parseJsonRpcRequest, createSuccessResponse, createErrorResponse, isValidRequest, JsonRpcParseError, } from './json-rpc.js';
|
|
9
|
-
export { taskNotFound, taskNotCancelable, taskNotContinuable, pushNotificationsNotSupported,
|
|
10
|
-
export { TERMINAL_STATES, isTerminalState, isStreamFinalState } from './types.js';
|
|
11
|
+
export { A2A_ERROR_CODES, taskNotFound, taskNotCancelable, taskNotContinuable, pushNotificationsNotSupported, pushNotificationConfigNotFound, unsupportedOperation, contentTypeNotSupported, invalidAgentResponse, authenticatedExtendedCardNotConfigured, agentNotFound, unauthorized, parseError, invalidRequest, methodNotFound, invalidParams, internalError, A2AError, } from './errors.js';
|
|
12
|
+
export { A2A_PROTOCOL_VERSION, AGENT_CARD_PATH, LEGACY_AGENT_CARD_PATH, TERMINAL_STATES, isTerminalState, isStreamFinalState, } from './types.js';
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sCAAsC,EACtC,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/ownership.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { A2ATask } from './types.js';
|
|
2
2
|
/** Metadata key holding the user a task belongs to; never sent to clients. */
|
|
3
3
|
export declare const TASK_OWNER_KEY = "cogitator:owner";
|
|
4
|
+
/** Metadata key holding when a task was created, to order the tasks of a context; never sent to clients. */
|
|
5
|
+
export declare const TASK_CREATED_AT_KEY = "cogitator:createdAt";
|
|
4
6
|
/** The user a task belongs to, or undefined for a task without an owner. */
|
|
5
7
|
export declare function taskOwner(task: A2ATask): string | undefined;
|
|
6
8
|
/**
|
|
@@ -8,6 +10,10 @@ export declare function taskOwner(task: A2ATask): string | undefined;
|
|
|
8
10
|
* `userId` null or undefined stands for a caller without a user.
|
|
9
11
|
*/
|
|
10
12
|
export declare function isTaskVisibleTo(task: A2ATask, userId: string | null | undefined): boolean;
|
|
11
|
-
/**
|
|
13
|
+
/** When the task last changed state, in ms since the epoch (0 when unknown). */
|
|
14
|
+
export declare function taskTime(task: A2ATask): number;
|
|
15
|
+
/** When the task was created, in ms since the epoch, falling back to its last state change. */
|
|
16
|
+
export declare function taskCreatedAt(task: A2ATask): number;
|
|
17
|
+
/** The task as a client receives it: without the internal metadata keys. */
|
|
12
18
|
export declare function publicTask(task: A2ATask): A2ATask;
|
|
13
19
|
//# sourceMappingURL=ownership.d.ts.map
|
package/dist/ownership.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,8EAA8E;AAC9E,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,4GAA4G;AAC5G,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGzF;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAG9C;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAInD;AASD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAOjD"}
|
package/dist/ownership.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { TASK_PENDING_APPROVALS_KEY } from './approvals.js';
|
|
1
2
|
/** Metadata key holding the user a task belongs to; never sent to clients. */
|
|
2
3
|
export const TASK_OWNER_KEY = 'cogitator:owner';
|
|
4
|
+
/** Metadata key holding when a task was created, to order the tasks of a context; never sent to clients. */
|
|
5
|
+
export const TASK_CREATED_AT_KEY = 'cogitator:createdAt';
|
|
3
6
|
/** The user a task belongs to, or undefined for a task without an owner. */
|
|
4
7
|
export function taskOwner(task) {
|
|
5
8
|
const owner = task.metadata?.[TASK_OWNER_KEY];
|
|
@@ -13,11 +16,29 @@ export function isTaskVisibleTo(task, userId) {
|
|
|
13
16
|
const owner = taskOwner(task);
|
|
14
17
|
return owner === undefined || owner === userId;
|
|
15
18
|
}
|
|
16
|
-
/**
|
|
19
|
+
/** When the task last changed state, in ms since the epoch (0 when unknown). */
|
|
20
|
+
export function taskTime(task) {
|
|
21
|
+
const time = task.status.timestamp ? Date.parse(task.status.timestamp) : NaN;
|
|
22
|
+
return Number.isNaN(time) ? 0 : time;
|
|
23
|
+
}
|
|
24
|
+
/** When the task was created, in ms since the epoch, falling back to its last state change. */
|
|
25
|
+
export function taskCreatedAt(task) {
|
|
26
|
+
const created = task.metadata?.[TASK_CREATED_AT_KEY];
|
|
27
|
+
const time = typeof created === 'string' ? Date.parse(created) : NaN;
|
|
28
|
+
return Number.isNaN(time) ? taskTime(task) : time;
|
|
29
|
+
}
|
|
30
|
+
/** Metadata keys the server keeps for itself; never sent to clients. */
|
|
31
|
+
const INTERNAL_KEYS = [
|
|
32
|
+
TASK_OWNER_KEY,
|
|
33
|
+
TASK_PENDING_APPROVALS_KEY,
|
|
34
|
+
TASK_CREATED_AT_KEY,
|
|
35
|
+
];
|
|
36
|
+
/** The task as a client receives it: without the internal metadata keys. */
|
|
17
37
|
export function publicTask(task) {
|
|
18
|
-
|
|
38
|
+
const all = task.metadata;
|
|
39
|
+
if (!all || !INTERNAL_KEYS.some((key) => key in all))
|
|
19
40
|
return task;
|
|
20
|
-
const
|
|
41
|
+
const metadata = Object.fromEntries(Object.entries(all).filter(([key]) => !INTERNAL_KEYS.includes(key)));
|
|
21
42
|
return Object.keys(metadata).length > 0 ? { ...task, metadata } : withoutMetadata(task);
|
|
22
43
|
}
|
|
23
44
|
function withoutMetadata(task) {
|
package/dist/ownership.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAEhD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,MAAiC;IAC9E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7E,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrE,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,wEAAwE;AACxE,MAAM,aAAa,GAAsB;IACvC,cAAc;IACd,0BAA0B;IAC1B,mBAAmB;CACpB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACpE,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,eAAe,CAAC,IAAa;IACpC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { A2AMessage, A2AMessageInput, A2ATask, Artifact, MessageSendParams, Part, PushNotificationConfig, TaskPushNotificationConfig, TextPart } from './types.js';
|
|
3
|
+
declare const taskIdParamsSchema: z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
declare const taskQueryParamsSchema: z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
10
|
+
historyLength: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
declare const getPushNotificationConfigParamsSchema: z.ZodObject<{
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
15
|
+
pushNotificationConfigId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
declare const deletePushNotificationConfigParamsSchema: z.ZodObject<{
|
|
18
|
+
id: z.ZodString;
|
|
19
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
pushNotificationConfigId: z.ZodString;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
declare const listTasksParamsSchema: z.ZodObject<{
|
|
23
|
+
contextId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
25
|
+
submitted: "submitted";
|
|
26
|
+
working: "working";
|
|
27
|
+
"input-required": "input-required";
|
|
28
|
+
completed: "completed";
|
|
29
|
+
canceled: "canceled";
|
|
30
|
+
failed: "failed";
|
|
31
|
+
rejected: "rejected";
|
|
32
|
+
"auth-required": "auth-required";
|
|
33
|
+
unknown: "unknown";
|
|
34
|
+
}>>;
|
|
35
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
/** The params of `message/send` and `message/stream`, or an `InvalidParamsError`. */
|
|
39
|
+
export declare function parseMessageSendParams(params: unknown): MessageSendParams;
|
|
40
|
+
/** The params of `tasks/get`. */
|
|
41
|
+
export declare function parseTaskQueryParams(params: unknown): z.output<typeof taskQueryParamsSchema>;
|
|
42
|
+
/** The params of `tasks/cancel`, `tasks/resubscribe` and `tasks/pushNotificationConfig/list`. */
|
|
43
|
+
export declare function parseTaskIdParams(params: unknown): z.output<typeof taskIdParamsSchema>;
|
|
44
|
+
/** The params of `tasks/pushNotificationConfig/set`. */
|
|
45
|
+
export declare function parseTaskPushNotificationConfig(params: unknown): TaskPushNotificationConfig;
|
|
46
|
+
/** The params of `tasks/pushNotificationConfig/get`. */
|
|
47
|
+
export declare function parseGetPushNotificationConfigParams(params: unknown): z.output<typeof getPushNotificationConfigParamsSchema>;
|
|
48
|
+
/** The params of `tasks/pushNotificationConfig/delete`. */
|
|
49
|
+
export declare function parseDeletePushNotificationConfigParams(params: unknown): z.output<typeof deletePushNotificationConfigParamsSchema>;
|
|
50
|
+
/** The params of the Cogitator `tasks/list` extension method. */
|
|
51
|
+
export declare function parseListTasksParams(params: unknown): z.output<typeof listTasksParamsSchema>;
|
|
52
|
+
/** A push notification config as the store keeps it, or an `InvalidParamsError`. */
|
|
53
|
+
export declare function parsePushNotificationConfig(config: unknown): PushNotificationConfig;
|
|
54
|
+
export declare function newMessageId(): string;
|
|
55
|
+
export declare function newArtifactId(): string;
|
|
56
|
+
export declare function textPart(text: string): TextPart;
|
|
57
|
+
/** A full message from what a client composes: `kind` and a fresh `messageId` when missing. */
|
|
58
|
+
export declare function toMessage(input: A2AMessageInput): A2AMessage;
|
|
59
|
+
/** An agent message for a task, e.g. the reply that completes it or the error that fails it. */
|
|
60
|
+
export declare function agentMessage(task: Pick<A2ATask, 'id' | 'contextId'>, parts: Part[]): A2AMessage;
|
|
61
|
+
/** The text of a message's text parts, joined by new lines. */
|
|
62
|
+
export declare function messageText(message: Pick<A2AMessage, 'parts'> | undefined): string;
|
|
63
|
+
/** The text of an artifact's text parts. */
|
|
64
|
+
export declare function artifactText(artifact: Pick<Artifact, 'parts'>): string;
|
|
65
|
+
/** Whether a `message/send` result is a task (and not a direct reply message). */
|
|
66
|
+
export declare function isA2ATask(result: {
|
|
67
|
+
kind: string;
|
|
68
|
+
}): result is A2ATask;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,IAAI,EACJ,sBAAsB,EACtB,0BAA0B,EAC1B,QAAQ,EACT,MAAM,YAAY,CAAC;AA4EpB,QAAA,MAAM,kBAAkB;;;iBAGtB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;iBAEzB,CAAC;AAOH,QAAA,MAAM,qCAAqC;;;;iBAEzC,CAAC;AAEH,QAAA,MAAM,wCAAwC;;;;iBAE5C,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAiBzB,CAAC;AAcH,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAEzE;AAED,iCAAiC;AACjC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAE5F;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAEtF;AAED,wDAAwD;AACxD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,GAAG,0BAA0B,CAE3F;AAED,wDAAwD;AACxD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,OAAO,GACd,CAAC,CAAC,MAAM,CAAC,OAAO,qCAAqC,CAAC,CAExD;AAED,2DAA2D;AAC3D,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,OAAO,GACd,CAAC,CAAC,MAAM,CAAC,OAAO,wCAAwC,CAAC,CAE3D;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAE5F;AAED,oFAAoF;AACpF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAEnF;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAE/C;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAE5D;AAED,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAS/F;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAKlF;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAKtE;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,IAAI,OAAO,CAErE"}
|
package/dist/protocol.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { A2AError, invalidParams } from './errors.js';
|
|
4
|
+
const metadataSchema = z.record(z.string(), z.unknown());
|
|
5
|
+
const textPartSchema = z.object({
|
|
6
|
+
kind: z.literal('text'),
|
|
7
|
+
text: z.string(),
|
|
8
|
+
metadata: metadataSchema.optional(),
|
|
9
|
+
});
|
|
10
|
+
const fileSchema = z.union([
|
|
11
|
+
z.object({
|
|
12
|
+
bytes: z.string(),
|
|
13
|
+
mimeType: z.string().optional(),
|
|
14
|
+
name: z.string().optional(),
|
|
15
|
+
}),
|
|
16
|
+
z.object({
|
|
17
|
+
uri: z.string().min(1),
|
|
18
|
+
mimeType: z.string().optional(),
|
|
19
|
+
name: z.string().optional(),
|
|
20
|
+
}),
|
|
21
|
+
]);
|
|
22
|
+
const filePartSchema = z.object({
|
|
23
|
+
kind: z.literal('file'),
|
|
24
|
+
file: fileSchema,
|
|
25
|
+
metadata: metadataSchema.optional(),
|
|
26
|
+
});
|
|
27
|
+
const dataPartSchema = z.object({
|
|
28
|
+
kind: z.literal('data'),
|
|
29
|
+
data: z.record(z.string(), z.unknown()),
|
|
30
|
+
metadata: metadataSchema.optional(),
|
|
31
|
+
});
|
|
32
|
+
const partSchema = z.discriminatedUnion('kind', [textPartSchema, filePartSchema, dataPartSchema]);
|
|
33
|
+
const messageSchema = z.object({
|
|
34
|
+
kind: z.literal('message').default('message'),
|
|
35
|
+
messageId: z.string().min(1),
|
|
36
|
+
role: z.enum(['user', 'agent']),
|
|
37
|
+
parts: z.array(partSchema),
|
|
38
|
+
taskId: z.string().min(1).optional(),
|
|
39
|
+
contextId: z.string().min(1).optional(),
|
|
40
|
+
referenceTaskIds: z.array(z.string()).optional(),
|
|
41
|
+
extensions: z.array(z.string()).optional(),
|
|
42
|
+
metadata: metadataSchema.optional(),
|
|
43
|
+
});
|
|
44
|
+
const nonNegativeInt = z.number().int().nonnegative();
|
|
45
|
+
const pushNotificationConfigSchema = z.object({
|
|
46
|
+
url: z.string().min(1),
|
|
47
|
+
id: z.string().min(1).optional(),
|
|
48
|
+
token: z.string().optional(),
|
|
49
|
+
authentication: z
|
|
50
|
+
.object({ schemes: z.array(z.string()), credentials: z.string().optional() })
|
|
51
|
+
.optional(),
|
|
52
|
+
});
|
|
53
|
+
const messageSendParamsSchema = z.object({
|
|
54
|
+
message: messageSchema,
|
|
55
|
+
configuration: z
|
|
56
|
+
.object({
|
|
57
|
+
acceptedOutputModes: z.array(z.string()).optional(),
|
|
58
|
+
historyLength: nonNegativeInt.optional(),
|
|
59
|
+
blocking: z.boolean().optional(),
|
|
60
|
+
pushNotificationConfig: pushNotificationConfigSchema.optional(),
|
|
61
|
+
timeout: z.number().int().positive().optional(),
|
|
62
|
+
})
|
|
63
|
+
.optional(),
|
|
64
|
+
metadata: metadataSchema.optional(),
|
|
65
|
+
agentName: z.string().min(1).optional(),
|
|
66
|
+
});
|
|
67
|
+
const taskIdParamsSchema = z.object({
|
|
68
|
+
id: z.string().min(1),
|
|
69
|
+
metadata: metadataSchema.optional(),
|
|
70
|
+
});
|
|
71
|
+
const taskQueryParamsSchema = taskIdParamsSchema.extend({
|
|
72
|
+
historyLength: nonNegativeInt.optional(),
|
|
73
|
+
});
|
|
74
|
+
const taskPushNotificationConfigSchema = z.object({
|
|
75
|
+
taskId: z.string().min(1),
|
|
76
|
+
pushNotificationConfig: pushNotificationConfigSchema,
|
|
77
|
+
});
|
|
78
|
+
const getPushNotificationConfigParamsSchema = taskIdParamsSchema.extend({
|
|
79
|
+
pushNotificationConfigId: z.string().min(1).optional(),
|
|
80
|
+
});
|
|
81
|
+
const deletePushNotificationConfigParamsSchema = taskIdParamsSchema.extend({
|
|
82
|
+
pushNotificationConfigId: z.string().min(1),
|
|
83
|
+
});
|
|
84
|
+
const listTasksParamsSchema = z.object({
|
|
85
|
+
contextId: z.string().optional(),
|
|
86
|
+
state: z
|
|
87
|
+
.enum([
|
|
88
|
+
'submitted',
|
|
89
|
+
'working',
|
|
90
|
+
'input-required',
|
|
91
|
+
'completed',
|
|
92
|
+
'canceled',
|
|
93
|
+
'failed',
|
|
94
|
+
'rejected',
|
|
95
|
+
'auth-required',
|
|
96
|
+
'unknown',
|
|
97
|
+
])
|
|
98
|
+
.optional(),
|
|
99
|
+
limit: nonNegativeInt.optional(),
|
|
100
|
+
offset: nonNegativeInt.optional(),
|
|
101
|
+
});
|
|
102
|
+
function describeIssues(error) {
|
|
103
|
+
return error.issues
|
|
104
|
+
.map((issue) => (issue.path.length > 0 ? `${issue.path.join('.')}: ` : '') + issue.message)
|
|
105
|
+
.join('; ');
|
|
106
|
+
}
|
|
107
|
+
function parseParams(schema, params) {
|
|
108
|
+
const parsed = schema.safeParse(params ?? {});
|
|
109
|
+
if (!parsed.success)
|
|
110
|
+
throw new A2AError(invalidParams(describeIssues(parsed.error)));
|
|
111
|
+
return parsed.data;
|
|
112
|
+
}
|
|
113
|
+
/** The params of `message/send` and `message/stream`, or an `InvalidParamsError`. */
|
|
114
|
+
export function parseMessageSendParams(params) {
|
|
115
|
+
return parseParams(messageSendParamsSchema, params);
|
|
116
|
+
}
|
|
117
|
+
/** The params of `tasks/get`. */
|
|
118
|
+
export function parseTaskQueryParams(params) {
|
|
119
|
+
return parseParams(taskQueryParamsSchema, params);
|
|
120
|
+
}
|
|
121
|
+
/** The params of `tasks/cancel`, `tasks/resubscribe` and `tasks/pushNotificationConfig/list`. */
|
|
122
|
+
export function parseTaskIdParams(params) {
|
|
123
|
+
return parseParams(taskIdParamsSchema, params);
|
|
124
|
+
}
|
|
125
|
+
/** The params of `tasks/pushNotificationConfig/set`. */
|
|
126
|
+
export function parseTaskPushNotificationConfig(params) {
|
|
127
|
+
return parseParams(taskPushNotificationConfigSchema, params);
|
|
128
|
+
}
|
|
129
|
+
/** The params of `tasks/pushNotificationConfig/get`. */
|
|
130
|
+
export function parseGetPushNotificationConfigParams(params) {
|
|
131
|
+
return parseParams(getPushNotificationConfigParamsSchema, params);
|
|
132
|
+
}
|
|
133
|
+
/** The params of `tasks/pushNotificationConfig/delete`. */
|
|
134
|
+
export function parseDeletePushNotificationConfigParams(params) {
|
|
135
|
+
return parseParams(deletePushNotificationConfigParamsSchema, params);
|
|
136
|
+
}
|
|
137
|
+
/** The params of the Cogitator `tasks/list` extension method. */
|
|
138
|
+
export function parseListTasksParams(params) {
|
|
139
|
+
return parseParams(listTasksParamsSchema, params);
|
|
140
|
+
}
|
|
141
|
+
/** A push notification config as the store keeps it, or an `InvalidParamsError`. */
|
|
142
|
+
export function parsePushNotificationConfig(config) {
|
|
143
|
+
return parseParams(pushNotificationConfigSchema, config);
|
|
144
|
+
}
|
|
145
|
+
export function newMessageId() {
|
|
146
|
+
return `msg_${randomUUID()}`;
|
|
147
|
+
}
|
|
148
|
+
export function newArtifactId() {
|
|
149
|
+
return `art_${randomUUID()}`;
|
|
150
|
+
}
|
|
151
|
+
export function textPart(text) {
|
|
152
|
+
return { kind: 'text', text };
|
|
153
|
+
}
|
|
154
|
+
/** A full message from what a client composes: `kind` and a fresh `messageId` when missing. */
|
|
155
|
+
export function toMessage(input) {
|
|
156
|
+
return { ...input, kind: 'message', messageId: input.messageId ?? newMessageId() };
|
|
157
|
+
}
|
|
158
|
+
/** An agent message for a task, e.g. the reply that completes it or the error that fails it. */
|
|
159
|
+
export function agentMessage(task, parts) {
|
|
160
|
+
return {
|
|
161
|
+
kind: 'message',
|
|
162
|
+
messageId: newMessageId(),
|
|
163
|
+
role: 'agent',
|
|
164
|
+
parts,
|
|
165
|
+
taskId: task.id,
|
|
166
|
+
contextId: task.contextId,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/** The text of a message's text parts, joined by new lines. */
|
|
170
|
+
export function messageText(message) {
|
|
171
|
+
return (message?.parts ?? [])
|
|
172
|
+
.filter((part) => part.kind === 'text')
|
|
173
|
+
.map((part) => part.text)
|
|
174
|
+
.join('\n');
|
|
175
|
+
}
|
|
176
|
+
/** The text of an artifact's text parts. */
|
|
177
|
+
export function artifactText(artifact) {
|
|
178
|
+
return artifact.parts
|
|
179
|
+
.filter((part) => part.kind === 'text')
|
|
180
|
+
.map((part) => part.text)
|
|
181
|
+
.join('');
|
|
182
|
+
}
|
|
183
|
+
/** Whether a `message/send` result is a task (and not a direct reply message). */
|
|
184
|
+
export function isA2ATask(result) {
|
|
185
|
+
return result.kind === 'task';
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|