@mono-agent/a2a-adapter 0.1.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.
@@ -0,0 +1,360 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { createServer } from "node:http";
3
+ import { AgentEvent, DefaultExecutionEventBusManager, DefaultRequestHandler, InMemoryTaskStore, } from "@a2a-js/sdk/server";
4
+ import { agentCardHandler, jsonRpcHandler, restHandler, UserBuilder, } from "@a2a-js/sdk/server/express";
5
+ import { Role, TaskState, } from "@a2a-js/sdk";
6
+ import { AgentResponseCancelledError, isAgentResponseCancelledError, } from "@mono-agent/agent-contracts";
7
+ import { assertSafeBind, bearerTokensEqual, close, hostForUrl, isLoopbackHost, listen, readAuthorizationBearer, } from "@mono-agent/settings";
8
+ import express, {} from "express";
9
+ import { createA2AAgentCard, } from "./card.js";
10
+ import { A2AProviderError } from "./errors.js";
11
+ export async function startA2AProvider(options) {
12
+ validateProviderOptions(options);
13
+ const host = options.host ?? "127.0.0.1";
14
+ const port = options.port ?? 0;
15
+ assertSafeBind(host, options.allowNonLoopback === true, (boundHost) => new A2AProviderError("unsafe_host", "A2A provider refuses to bind a non-loopback host unless allowNonLoopback is true.", { host: boundHost }));
16
+ const requireBearer = options.requireBearer === true;
17
+ if (requireBearer && normalizeOptionalString(options.bearerToken) === undefined) {
18
+ throw new A2AProviderError("missing_required_config", "A2A provider requires bearerToken when requireBearer is true.");
19
+ }
20
+ const app = express();
21
+ const server = createServer(app);
22
+ const address = await listen(server, port, host, {
23
+ listenFailed: (reason) => new A2AProviderError("start_failed", "A2A provider failed to listen.", { reason }),
24
+ noAddress: () => new A2AProviderError("start_failed", "A2A provider did not receive a TCP address."),
25
+ });
26
+ const boundHost = hostForUrl(host);
27
+ const boundPort = address.port;
28
+ const publicBaseUrl = options.publicBaseUrl === undefined
29
+ ? `http://${boundHost}:${boundPort}`
30
+ : options.publicBaseUrl;
31
+ assertSafePublicBaseUrl(publicBaseUrl, options.allowNonLoopback === true);
32
+ const agentCard = createA2AAgentCard({
33
+ ...options.agent,
34
+ publicBaseUrl,
35
+ requireBearer,
36
+ skill: options.skill,
37
+ });
38
+ const executor = new MonoA2AExecutor(options.responder, {
39
+ sourceUrl: publicBaseUrl,
40
+ ...(options.logger === undefined ? {} : { logger: options.logger }),
41
+ });
42
+ const requestHandler = new DefaultRequestHandler(agentCard, new InMemoryTaskStore(), executor, new DefaultExecutionEventBusManager());
43
+ const auth = requireBearer
44
+ ? bearerAuthMiddleware(options.bearerToken)
45
+ : (_req, _res, next) => next();
46
+ app.use("/.well-known/agent-card.json", agentCardHandler({ agentCardProvider: requestHandler }));
47
+ app.use("/a2a/json-rpc", auth, jsonRpcHandler({
48
+ requestHandler,
49
+ userBuilder: UserBuilder.noAuthentication,
50
+ }));
51
+ app.use("/a2a/rest", auth, restHandler({
52
+ requestHandler,
53
+ userBuilder: UserBuilder.noAuthentication,
54
+ }));
55
+ const url = publicBaseUrl.replace(/\/+$/u, "");
56
+ return {
57
+ url,
58
+ agentCardUrl: `${url}/.well-known/agent-card.json`,
59
+ jsonRpcUrl: `${url}/a2a/json-rpc`,
60
+ restUrl: `${url}/a2a/rest`,
61
+ host,
62
+ port: boundPort,
63
+ agentCard,
64
+ async stop() {
65
+ await close(server);
66
+ },
67
+ };
68
+ }
69
+ class MonoA2AExecutor {
70
+ responder;
71
+ sourceUrl;
72
+ logger;
73
+ activeRuns = new Map();
74
+ constructor(responder, options = {}) {
75
+ this.responder = responder;
76
+ this.sourceUrl = options.sourceUrl;
77
+ this.logger = options.logger;
78
+ }
79
+ async execute(requestContext, eventBus) {
80
+ const controller = new AbortController();
81
+ const active = {
82
+ controller,
83
+ eventBus,
84
+ taskId: requestContext.taskId,
85
+ contextId: requestContext.contextId,
86
+ cancellationPublished: false,
87
+ };
88
+ this.activeRuns.set(requestContext.taskId, active);
89
+ eventBus.publish(AgentEvent.task(createTask({
90
+ taskId: requestContext.taskId,
91
+ contextId: requestContext.contextId,
92
+ state: TaskState.TASK_STATE_SUBMITTED,
93
+ history: [requestContext.userMessage],
94
+ statusText: "Task submitted.",
95
+ })));
96
+ try {
97
+ const normalized = textFromMessage(requestContext.userMessage);
98
+ const stream = new A2AProviderMessageStream(eventBus, {
99
+ taskId: requestContext.taskId,
100
+ contextId: requestContext.contextId,
101
+ });
102
+ eventBus.publish(AgentEvent.statusUpdate(createStatusUpdate({
103
+ taskId: requestContext.taskId,
104
+ contextId: requestContext.contextId,
105
+ state: TaskState.TASK_STATE_WORKING,
106
+ text: "Task is running.",
107
+ })));
108
+ const response = await this.responder.respond({
109
+ conversationId: conversationIdFor(requestContext),
110
+ text: normalized.text,
111
+ abortSignal: controller.signal,
112
+ metadata: {
113
+ a2a: {
114
+ ...(requestContext.context.tenant === undefined ? {} : { tenant: requestContext.context.tenant }),
115
+ contextId: requestContext.contextId,
116
+ taskId: requestContext.taskId,
117
+ messageId: requestContext.userMessage.messageId,
118
+ inputModes: normalized.inputModes,
119
+ ...(this.sourceUrl === undefined ? {} : { sourceUrl: this.sourceUrl }),
120
+ },
121
+ },
122
+ }, stream);
123
+ if (active.cancellationPublished || controller.signal.aborted) {
124
+ return;
125
+ }
126
+ await stream.finish(response.text);
127
+ const finalText = stream.text;
128
+ if (finalText.length > 0) {
129
+ eventBus.publish(AgentEvent.artifactUpdate({
130
+ taskId: requestContext.taskId,
131
+ contextId: requestContext.contextId,
132
+ artifact: {
133
+ artifactId: "final-text",
134
+ name: "Final text response",
135
+ description: "Text response returned by the responder.",
136
+ parts: [textPart(finalText)],
137
+ metadata: {},
138
+ extensions: [],
139
+ },
140
+ append: false,
141
+ lastChunk: true,
142
+ metadata: {},
143
+ }));
144
+ }
145
+ eventBus.publish(AgentEvent.statusUpdate(createStatusUpdate({
146
+ taskId: requestContext.taskId,
147
+ contextId: requestContext.contextId,
148
+ state: TaskState.TASK_STATE_COMPLETED,
149
+ ...(finalText.length === 0 ? {} : { text: finalText }),
150
+ })));
151
+ }
152
+ catch (error) {
153
+ if (active.cancellationPublished) {
154
+ return;
155
+ }
156
+ if (controller.signal.aborted || isAgentResponseCancelledError(error)) {
157
+ publishCanceled(active, "Task canceled.");
158
+ return;
159
+ }
160
+ const reason = error instanceof Error ? error.message : String(error);
161
+ this.logger?.error?.("A2A responder failed.", { reason });
162
+ eventBus.publish(AgentEvent.statusUpdate(createStatusUpdate({
163
+ taskId: requestContext.taskId,
164
+ contextId: requestContext.contextId,
165
+ state: error instanceof A2AProviderError && error.code === "unsupported_input"
166
+ ? TaskState.TASK_STATE_REJECTED
167
+ : TaskState.TASK_STATE_FAILED,
168
+ text: reason,
169
+ })));
170
+ }
171
+ finally {
172
+ this.activeRuns.delete(requestContext.taskId);
173
+ eventBus.finished();
174
+ }
175
+ }
176
+ async cancelTask(taskId, eventBus) {
177
+ const active = this.activeRuns.get(taskId);
178
+ if (active === undefined) {
179
+ eventBus.finished();
180
+ return;
181
+ }
182
+ active.controller.abort(new AgentResponseCancelledError("A2A task cancellation requested."));
183
+ publishCanceled(active, "Task cancellation requested by user.");
184
+ }
185
+ }
186
+ class A2AProviderMessageStream {
187
+ eventBus;
188
+ taskId;
189
+ contextId;
190
+ currentText = "";
191
+ finished = false;
192
+ constructor(eventBus, context) {
193
+ this.eventBus = eventBus;
194
+ this.taskId = context.taskId;
195
+ this.contextId = context.contextId;
196
+ }
197
+ get text() {
198
+ return this.currentText.trim();
199
+ }
200
+ async status(text) {
201
+ this.assertOpen();
202
+ const normalized = text.trim();
203
+ if (normalized.length === 0) {
204
+ return;
205
+ }
206
+ this.eventBus.publish(AgentEvent.statusUpdate(createStatusUpdate({
207
+ taskId: this.taskId,
208
+ contextId: this.contextId,
209
+ state: TaskState.TASK_STATE_WORKING,
210
+ text: normalized,
211
+ })));
212
+ }
213
+ async append(delta) {
214
+ this.assertOpen();
215
+ this.currentText += delta;
216
+ }
217
+ async replace(text) {
218
+ this.assertOpen();
219
+ this.currentText = text;
220
+ }
221
+ async finish(finalText) {
222
+ if (this.finished) {
223
+ return;
224
+ }
225
+ this.finished = true;
226
+ if (finalText !== undefined) {
227
+ this.currentText = finalText;
228
+ }
229
+ }
230
+ assertOpen() {
231
+ if (this.finished) {
232
+ throw new A2AProviderError("invalid_config", "Cannot write to a finished A2A stream.");
233
+ }
234
+ }
235
+ }
236
+ function validateProviderOptions(options) {
237
+ if (typeof options.responder?.respond !== "function") {
238
+ throw new A2AProviderError("missing_required_config", "A2A provider requires a responder.");
239
+ }
240
+ if (!Number.isInteger(options.port ?? 0) || (options.port ?? 0) < 0 || (options.port ?? 0) > 65535) {
241
+ throw new A2AProviderError("invalid_config", "A2A provider port must be an integer from 0 to 65535.");
242
+ }
243
+ }
244
+ function assertSafePublicBaseUrl(publicBaseUrl, allowNonLoopback) {
245
+ const parsed = new URL(publicBaseUrl);
246
+ if (allowNonLoopback || isLoopbackHost(parsed.hostname)) {
247
+ return;
248
+ }
249
+ throw new A2AProviderError("unsafe_host", "A2A provider refuses a non-loopback publicBaseUrl unless allowNonLoopback is true.", { publicBaseUrl });
250
+ }
251
+ function bearerAuthMiddleware(token) {
252
+ return (req, res, next) => {
253
+ const presented = readAuthorizationBearer(req.header("authorization"));
254
+ if (presented !== undefined && bearerTokensEqual(presented, token)) {
255
+ next();
256
+ return;
257
+ }
258
+ res.setHeader("WWW-Authenticate", 'Bearer realm="a2a"');
259
+ res.status(401).json({ error: "Unauthorized" });
260
+ };
261
+ }
262
+ function textFromMessage(message) {
263
+ const inputModes = [];
264
+ const textParts = [];
265
+ for (const part of message.parts) {
266
+ inputModes.push(part.mediaType.length > 0 ? part.mediaType : "application/octet-stream");
267
+ if (part.content?.$case !== "text") {
268
+ throw new A2AProviderError("unsupported_input", "A2A provider supports text/plain parts only.");
269
+ }
270
+ textParts.push(part.content.value);
271
+ }
272
+ const text = textParts.join("\n").trim();
273
+ if (text.length === 0) {
274
+ throw new A2AProviderError("unsupported_input", "A2A provider requires non-empty text input.");
275
+ }
276
+ return { text, inputModes };
277
+ }
278
+ function conversationIdFor(requestContext) {
279
+ if (requestContext.contextId.length > 0) {
280
+ return requestContext.contextId;
281
+ }
282
+ if (requestContext.taskId.length > 0) {
283
+ return requestContext.taskId;
284
+ }
285
+ return `a2a:${requestContext.userMessage.messageId}`;
286
+ }
287
+ function createTask(input) {
288
+ return {
289
+ id: input.taskId,
290
+ contextId: input.contextId,
291
+ status: createStatus({
292
+ taskId: input.taskId,
293
+ contextId: input.contextId,
294
+ state: input.state,
295
+ ...(input.statusText === undefined ? {} : { text: input.statusText }),
296
+ }),
297
+ artifacts: [],
298
+ history: [...(input.history ?? [])],
299
+ metadata: {},
300
+ };
301
+ }
302
+ function createStatus(input) {
303
+ return {
304
+ state: input.state,
305
+ message: input.text === undefined
306
+ ? undefined
307
+ : agentMessage({
308
+ taskId: input.taskId,
309
+ contextId: input.contextId,
310
+ text: input.text,
311
+ }),
312
+ timestamp: new Date().toISOString(),
313
+ };
314
+ }
315
+ function createStatusUpdate(input) {
316
+ return {
317
+ taskId: input.taskId,
318
+ contextId: input.contextId,
319
+ status: createStatus(input),
320
+ metadata: {},
321
+ };
322
+ }
323
+ function agentMessage(input) {
324
+ return {
325
+ role: Role.ROLE_AGENT,
326
+ messageId: randomUUID(),
327
+ taskId: input.taskId,
328
+ contextId: input.contextId,
329
+ parts: [textPart(input.text)],
330
+ metadata: {},
331
+ extensions: [],
332
+ referenceTaskIds: [],
333
+ };
334
+ }
335
+ function textPart(text) {
336
+ return {
337
+ content: { $case: "text", value: text },
338
+ mediaType: "text/plain",
339
+ filename: "",
340
+ metadata: {},
341
+ };
342
+ }
343
+ function publishCanceled(active, text) {
344
+ active.cancellationPublished = true;
345
+ active.eventBus.publish(AgentEvent.statusUpdate(createStatusUpdate({
346
+ taskId: active.taskId,
347
+ contextId: active.contextId,
348
+ state: TaskState.TASK_STATE_CANCELED,
349
+ text,
350
+ })));
351
+ active.eventBus.finished();
352
+ }
353
+ function normalizeOptionalString(value) {
354
+ if (value === undefined) {
355
+ return undefined;
356
+ }
357
+ const normalized = value.trim();
358
+ return normalized.length === 0 ? undefined : normalized;
359
+ }
360
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@mono-agent/a2a-adapter",
3
+ "version": "0.1.0",
4
+ "description": "A2A provider and consumer adapter for host-compatible runtimes.",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "private": false,
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "dependencies": {
21
+ "@a2a-js/sdk": "1.0.0-alpha.0",
22
+ "@mono-agent/agent-contracts": "0.1.0",
23
+ "@mono-agent/settings": "0.1.0",
24
+ "express": "^5.1.0"
25
+ },
26
+ "devDependencies": {
27
+ "@types/express": "^5.0.2"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "scripts": {
33
+ "build": "tsc -p tsconfig.build.json",
34
+ "typecheck": "tsc -p tsconfig.json --noEmit",
35
+ "test": "vitest run --passWithNoTests"
36
+ }
37
+ }