@a2a-js/sdk 0.3.8 → 0.3.10
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 +61 -1
- package/dist/chunk-EGOOH5HP.js +68 -0
- package/dist/chunk-F6ACNKFR.js +41 -0
- package/dist/chunk-QQCCX2KH.js +3338 -0
- package/dist/{chunk-NUQQPJNY.js → chunk-S53FFHPM.js} +1 -39
- package/dist/{chunk-DHC2REQH.js → chunk-U3QAVT4H.js} +218 -377
- package/dist/chunk-WMQQYH7W.js +71 -0
- package/dist/client/index.cjs +236 -259
- package/dist/client/index.d.cts +4 -415
- package/dist/client/index.d.ts +4 -415
- package/dist/client/index.js +22 -17
- package/dist/client/transports/grpc/index.cjs +4601 -0
- package/dist/client/transports/grpc/index.d.cts +42 -0
- package/dist/client/transports/grpc/index.d.ts +42 -0
- package/dist/client/transports/grpc/index.js +262 -0
- package/dist/core-BAzQJfA2.d.ts +416 -0
- package/dist/core-Ci-lR0jz.d.cts +416 -0
- package/dist/server/express/index.cjs +229 -268
- package/dist/server/express/index.js +23 -17
- package/dist/server/grpc/index.cjs +4560 -0
- package/dist/server/grpc/index.d.cts +1053 -0
- package/dist/server/grpc/index.d.ts +1053 -0
- package/dist/server/grpc/index.js +186 -0
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.js +6 -4
- package/package.json +29 -4
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import {
|
|
2
|
+
HTTP_EXTENSION_HEADER
|
|
3
|
+
} from "../../chunk-3QDLXHKS.js";
|
|
4
|
+
import {
|
|
5
|
+
ServerCallContext,
|
|
6
|
+
UnauthenticatedUser
|
|
7
|
+
} from "../../chunk-F6ACNKFR.js";
|
|
8
|
+
import {
|
|
9
|
+
Extensions
|
|
10
|
+
} from "../../chunk-ZX6KNMCP.js";
|
|
11
|
+
import {
|
|
12
|
+
A2AServiceService
|
|
13
|
+
} from "../../chunk-QQCCX2KH.js";
|
|
14
|
+
import {
|
|
15
|
+
FromProto,
|
|
16
|
+
ToProto
|
|
17
|
+
} from "../../chunk-U3QAVT4H.js";
|
|
18
|
+
import {
|
|
19
|
+
A2AError
|
|
20
|
+
} from "../../chunk-UHZEIZLS.js";
|
|
21
|
+
|
|
22
|
+
// src/server/grpc/grpc_service.ts
|
|
23
|
+
import * as grpc from "@grpc/grpc-js";
|
|
24
|
+
function grpcService(options) {
|
|
25
|
+
const requestHandler = options.requestHandler;
|
|
26
|
+
const wrapUnary = async (call, callback, parser, handler, converter) => {
|
|
27
|
+
try {
|
|
28
|
+
const context = await buildContext(call, options.userBuilder);
|
|
29
|
+
const params = parser(call.request);
|
|
30
|
+
const result = await handler(params, context);
|
|
31
|
+
call.sendMetadata(buildMetadata(context));
|
|
32
|
+
callback(null, converter(result));
|
|
33
|
+
} catch (error) {
|
|
34
|
+
callback(mapToError(error), null);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const wrapStreaming = async (call, parser, handler, converter) => {
|
|
38
|
+
try {
|
|
39
|
+
const context = await buildContext(call, options.userBuilder);
|
|
40
|
+
const params = parser(call.request);
|
|
41
|
+
const stream = await handler(params, context);
|
|
42
|
+
const metadata = buildMetadata(context);
|
|
43
|
+
call.sendMetadata(metadata);
|
|
44
|
+
for await (const responsePart of stream) {
|
|
45
|
+
const response = converter(responsePart);
|
|
46
|
+
call.write(response);
|
|
47
|
+
}
|
|
48
|
+
} catch (error) {
|
|
49
|
+
call.emit("error", mapToError(error));
|
|
50
|
+
} finally {
|
|
51
|
+
call.end();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
sendMessage(call, callback) {
|
|
56
|
+
return wrapUnary(
|
|
57
|
+
call,
|
|
58
|
+
callback,
|
|
59
|
+
FromProto.messageSendParams,
|
|
60
|
+
requestHandler.sendMessage.bind(requestHandler),
|
|
61
|
+
ToProto.messageSendResult
|
|
62
|
+
);
|
|
63
|
+
},
|
|
64
|
+
sendStreamingMessage(call) {
|
|
65
|
+
return wrapStreaming(
|
|
66
|
+
call,
|
|
67
|
+
FromProto.messageSendParams,
|
|
68
|
+
requestHandler.sendMessageStream.bind(requestHandler),
|
|
69
|
+
ToProto.messageStreamResult
|
|
70
|
+
);
|
|
71
|
+
},
|
|
72
|
+
taskSubscription(call) {
|
|
73
|
+
return wrapStreaming(
|
|
74
|
+
call,
|
|
75
|
+
FromProto.taskIdParams,
|
|
76
|
+
requestHandler.resubscribe.bind(requestHandler),
|
|
77
|
+
ToProto.messageStreamResult
|
|
78
|
+
);
|
|
79
|
+
},
|
|
80
|
+
deleteTaskPushNotificationConfig(call, callback) {
|
|
81
|
+
return wrapUnary(
|
|
82
|
+
call,
|
|
83
|
+
callback,
|
|
84
|
+
FromProto.deleteTaskPushNotificationConfigParams,
|
|
85
|
+
requestHandler.deleteTaskPushNotificationConfig.bind(requestHandler),
|
|
86
|
+
() => ({})
|
|
87
|
+
);
|
|
88
|
+
},
|
|
89
|
+
listTaskPushNotificationConfig(call, callback) {
|
|
90
|
+
return wrapUnary(
|
|
91
|
+
call,
|
|
92
|
+
callback,
|
|
93
|
+
FromProto.listTaskPushNotificationConfigParams,
|
|
94
|
+
requestHandler.listTaskPushNotificationConfigs.bind(requestHandler),
|
|
95
|
+
ToProto.listTaskPushNotificationConfig
|
|
96
|
+
);
|
|
97
|
+
},
|
|
98
|
+
createTaskPushNotificationConfig(call, callback) {
|
|
99
|
+
return wrapUnary(
|
|
100
|
+
call,
|
|
101
|
+
callback,
|
|
102
|
+
FromProto.createTaskPushNotificationConfig,
|
|
103
|
+
requestHandler.setTaskPushNotificationConfig.bind(requestHandler),
|
|
104
|
+
ToProto.taskPushNotificationConfig
|
|
105
|
+
);
|
|
106
|
+
},
|
|
107
|
+
getTaskPushNotificationConfig(call, callback) {
|
|
108
|
+
return wrapUnary(
|
|
109
|
+
call,
|
|
110
|
+
callback,
|
|
111
|
+
FromProto.getTaskPushNotificationConfigParams,
|
|
112
|
+
requestHandler.getTaskPushNotificationConfig.bind(requestHandler),
|
|
113
|
+
ToProto.taskPushNotificationConfig
|
|
114
|
+
);
|
|
115
|
+
},
|
|
116
|
+
getTask(call, callback) {
|
|
117
|
+
return wrapUnary(
|
|
118
|
+
call,
|
|
119
|
+
callback,
|
|
120
|
+
FromProto.taskQueryParams,
|
|
121
|
+
requestHandler.getTask.bind(requestHandler),
|
|
122
|
+
ToProto.task
|
|
123
|
+
);
|
|
124
|
+
},
|
|
125
|
+
cancelTask(call, callback) {
|
|
126
|
+
return wrapUnary(
|
|
127
|
+
call,
|
|
128
|
+
callback,
|
|
129
|
+
FromProto.taskIdParams,
|
|
130
|
+
requestHandler.cancelTask.bind(requestHandler),
|
|
131
|
+
ToProto.task
|
|
132
|
+
);
|
|
133
|
+
},
|
|
134
|
+
getAgentCard(call, callback) {
|
|
135
|
+
return wrapUnary(
|
|
136
|
+
call,
|
|
137
|
+
callback,
|
|
138
|
+
() => ({}),
|
|
139
|
+
(_params, context) => requestHandler.getAuthenticatedExtendedAgentCard(context),
|
|
140
|
+
ToProto.agentCard
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
var mapping = {
|
|
146
|
+
[-32001]: grpc.status.NOT_FOUND,
|
|
147
|
+
[-32002]: grpc.status.FAILED_PRECONDITION,
|
|
148
|
+
[-32003]: grpc.status.UNIMPLEMENTED,
|
|
149
|
+
[-32004]: grpc.status.UNIMPLEMENTED,
|
|
150
|
+
[-32005]: grpc.status.INVALID_ARGUMENT,
|
|
151
|
+
[-32006]: grpc.status.INTERNAL,
|
|
152
|
+
[-32007]: grpc.status.FAILED_PRECONDITION,
|
|
153
|
+
[-32600]: grpc.status.INVALID_ARGUMENT,
|
|
154
|
+
[-32602]: grpc.status.INVALID_ARGUMENT,
|
|
155
|
+
[-32603]: grpc.status.INTERNAL
|
|
156
|
+
};
|
|
157
|
+
var mapToError = (error) => {
|
|
158
|
+
const a2aError = error instanceof A2AError ? error : A2AError.internalError(error instanceof Error ? error.message : "Internal server error");
|
|
159
|
+
return {
|
|
160
|
+
code: mapping[a2aError.code] ?? grpc.status.UNKNOWN,
|
|
161
|
+
details: a2aError.message
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
var buildContext = async (call, userBuilder) => {
|
|
165
|
+
const user = await userBuilder(call);
|
|
166
|
+
const extensionHeaders = call.metadata.get(HTTP_EXTENSION_HEADER);
|
|
167
|
+
const extensionString = extensionHeaders.map((v) => v.toString()).join(",");
|
|
168
|
+
return new ServerCallContext(Extensions.parseServiceParameter(extensionString), user);
|
|
169
|
+
};
|
|
170
|
+
var buildMetadata = (context) => {
|
|
171
|
+
const metadata = new grpc.Metadata();
|
|
172
|
+
if (context.activatedExtensions?.length) {
|
|
173
|
+
metadata.set(HTTP_EXTENSION_HEADER, context.activatedExtensions.join(","));
|
|
174
|
+
}
|
|
175
|
+
return metadata;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// src/server/grpc/common.ts
|
|
179
|
+
var UserBuilder = {
|
|
180
|
+
noAuthentication: () => Promise.resolve(new UnauthenticatedUser())
|
|
181
|
+
};
|
|
182
|
+
export {
|
|
183
|
+
A2AServiceService as A2AService,
|
|
184
|
+
UserBuilder,
|
|
185
|
+
grpcService
|
|
186
|
+
};
|
package/dist/server/index.cjs
CHANGED
|
@@ -626,7 +626,7 @@ var DefaultPushNotificationSender = class {
|
|
|
626
626
|
await Promise.all(dispatches);
|
|
627
627
|
});
|
|
628
628
|
this.notificationChain.set(task.id, newPromise);
|
|
629
|
-
newPromise.finally(() => {
|
|
629
|
+
return newPromise.finally(() => {
|
|
630
630
|
if (this.notificationChain.get(task.id) === newPromise) {
|
|
631
631
|
this.notificationChain.delete(task.id);
|
|
632
632
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
JsonRpcTransportHandler
|
|
2
|
+
JsonRpcTransportHandler
|
|
3
|
+
} from "../chunk-S53FFHPM.js";
|
|
4
|
+
import {
|
|
3
5
|
ServerCallContext,
|
|
4
6
|
UnauthenticatedUser
|
|
5
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-F6ACNKFR.js";
|
|
8
|
+
import "../chunk-ZX6KNMCP.js";
|
|
6
9
|
import {
|
|
7
10
|
A2AError
|
|
8
11
|
} from "../chunk-UHZEIZLS.js";
|
|
9
|
-
import "../chunk-ZX6KNMCP.js";
|
|
10
12
|
|
|
11
13
|
// src/server/agent_execution/request_context.ts
|
|
12
14
|
var RequestContext = class {
|
|
@@ -540,7 +542,7 @@ var DefaultPushNotificationSender = class {
|
|
|
540
542
|
await Promise.all(dispatches);
|
|
541
543
|
});
|
|
542
544
|
this.notificationChain.set(task.id, newPromise);
|
|
543
|
-
newPromise.finally(() => {
|
|
545
|
+
return newPromise.finally(() => {
|
|
544
546
|
if (this.notificationChain.get(task.id) === newPromise) {
|
|
545
547
|
this.notificationChain.delete(task.id);
|
|
546
548
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a2a-js/sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.10",
|
|
4
4
|
"description": "Server & Client SDK for Agent2Agent protocol",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -21,8 +21,14 @@
|
|
|
21
21
|
"server/express": [
|
|
22
22
|
"./dist/server/express/index.d.ts"
|
|
23
23
|
],
|
|
24
|
+
"server/grpc": [
|
|
25
|
+
"./dist/server/grpc/index.d.ts"
|
|
26
|
+
],
|
|
24
27
|
"client": [
|
|
25
28
|
"./dist/client/index.d.ts"
|
|
29
|
+
],
|
|
30
|
+
"client/grpc": [
|
|
31
|
+
"./dist/client/transports/grpc/index.d.ts"
|
|
26
32
|
]
|
|
27
33
|
}
|
|
28
34
|
},
|
|
@@ -42,10 +48,20 @@
|
|
|
42
48
|
"import": "./dist/server/express/index.js",
|
|
43
49
|
"require": "./dist/server/express/index.cjs"
|
|
44
50
|
},
|
|
51
|
+
"./server/grpc": {
|
|
52
|
+
"types": "./dist/server/grpc/index.d.ts",
|
|
53
|
+
"import": "./dist/server/grpc/index.js",
|
|
54
|
+
"require": "./dist/server/grpc/index.cjs"
|
|
55
|
+
},
|
|
45
56
|
"./client": {
|
|
46
57
|
"types": "./dist/client/index.d.ts",
|
|
47
58
|
"import": "./dist/client/index.js",
|
|
48
59
|
"require": "./dist/client/index.cjs"
|
|
60
|
+
},
|
|
61
|
+
"./client/grpc": {
|
|
62
|
+
"types": "./dist/client/transports/grpc/index.d.ts",
|
|
63
|
+
"import": "./dist/client/transports/grpc/index.js",
|
|
64
|
+
"require": "./dist/client/transports/grpc/index.cjs"
|
|
49
65
|
}
|
|
50
66
|
},
|
|
51
67
|
"files": [
|
|
@@ -54,8 +70,11 @@
|
|
|
54
70
|
"README.md"
|
|
55
71
|
],
|
|
56
72
|
"devDependencies": {
|
|
57
|
-
"@
|
|
73
|
+
"@bufbuild/buf": "^1.61.0",
|
|
74
|
+
"@bufbuild/protobuf": "^2.10.2",
|
|
75
|
+
"@cloudflare/vitest-pool-workers": "^0.12.5",
|
|
58
76
|
"@eslint/js": "^9.39.1",
|
|
77
|
+
"@grpc/grpc-js": "^1.11.0",
|
|
59
78
|
"@types/express": "^5.0.3",
|
|
60
79
|
"@types/node": "^22.13.14",
|
|
61
80
|
"@types/supertest": "^6.0.3",
|
|
@@ -65,7 +84,6 @@
|
|
|
65
84
|
"eslint-config-prettier": "^10.1.8",
|
|
66
85
|
"eslint-plugin-prettier": "^5.5.4",
|
|
67
86
|
"express": "^5.1.0",
|
|
68
|
-
"gts": "^6.0.2",
|
|
69
87
|
"json-schema-to-typescript": "^15.0.4",
|
|
70
88
|
"prettier": "^3.6.2",
|
|
71
89
|
"supertest": "^7.1.4",
|
|
@@ -76,7 +94,6 @@
|
|
|
76
94
|
"vitest": "^3.2.4"
|
|
77
95
|
},
|
|
78
96
|
"scripts": {
|
|
79
|
-
"clean": "gts clean",
|
|
80
97
|
"build": "tsup",
|
|
81
98
|
"test": "vitest run",
|
|
82
99
|
"test:edge": "vitest run --config vitest.edge.config.ts",
|
|
@@ -91,11 +108,19 @@
|
|
|
91
108
|
"uuid": "^11.1.0"
|
|
92
109
|
},
|
|
93
110
|
"peerDependencies": {
|
|
111
|
+
"@bufbuild/protobuf": "^2.10.2",
|
|
112
|
+
"@grpc/grpc-js": "^1.11.0",
|
|
94
113
|
"express": "^4.21.2 || ^5.1.0"
|
|
95
114
|
},
|
|
96
115
|
"peerDependenciesMeta": {
|
|
97
116
|
"express": {
|
|
98
117
|
"optional": true
|
|
118
|
+
},
|
|
119
|
+
"@grpc/grpc-js": {
|
|
120
|
+
"optional": true
|
|
121
|
+
},
|
|
122
|
+
"@bufbuild/protobuf": {
|
|
123
|
+
"optional": true
|
|
99
124
|
}
|
|
100
125
|
}
|
|
101
126
|
}
|