@assistant-ui/react-a2a 0.2.4 → 0.2.7
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 +47 -1
- package/dist/A2AClient.d.ts +43 -0
- package/dist/A2AClient.d.ts.map +1 -0
- package/dist/A2AClient.js +358 -0
- package/dist/A2AClient.js.map +1 -0
- package/dist/A2AThreadRuntimeCore.d.ts +75 -0
- package/dist/A2AThreadRuntimeCore.d.ts.map +1 -0
- package/dist/A2AThreadRuntimeCore.js +483 -0
- package/dist/A2AThreadRuntimeCore.js.map +1 -0
- package/dist/conversions.d.ts +14 -0
- package/dist/conversions.d.ts.map +1 -0
- package/dist/conversions.js +92 -0
- package/dist/conversions.js.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +228 -84
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -9
- package/dist/types.js.map +1 -1
- package/dist/useA2ARuntime.d.ts +35 -48
- package/dist/useA2ARuntime.d.ts.map +1 -1
- package/dist/useA2ARuntime.js +126 -172
- package/dist/useA2ARuntime.js.map +1 -1
- package/package.json +10 -10
- package/src/A2AClient.test.ts +773 -0
- package/src/A2AClient.ts +519 -0
- package/src/A2AThreadRuntimeCore.test.ts +692 -0
- package/src/A2AThreadRuntimeCore.ts +633 -0
- package/src/conversions.test.ts +276 -0
- package/src/conversions.ts +115 -0
- package/src/index.ts +66 -6
- package/src/types.ts +276 -95
- package/src/useA2ARuntime.ts +204 -296
- package/dist/A2AMessageAccumulator.d.ts +0 -16
- package/dist/A2AMessageAccumulator.d.ts.map +0 -1
- package/dist/A2AMessageAccumulator.js +0 -29
- package/dist/A2AMessageAccumulator.js.map +0 -1
- package/dist/appendA2AChunk.d.ts +0 -3
- package/dist/appendA2AChunk.d.ts.map +0 -1
- package/dist/appendA2AChunk.js +0 -110
- package/dist/appendA2AChunk.js.map +0 -1
- package/dist/convertA2AMessages.d.ts +0 -64
- package/dist/convertA2AMessages.d.ts.map +0 -1
- package/dist/convertA2AMessages.js +0 -90
- package/dist/convertA2AMessages.js.map +0 -1
- package/dist/testUtils.d.ts +0 -4
- package/dist/testUtils.d.ts.map +0 -1
- package/dist/testUtils.js +0 -6
- package/dist/testUtils.js.map +0 -1
- package/dist/useA2AMessages.d.ts +0 -25
- package/dist/useA2AMessages.d.ts.map +0 -1
- package/dist/useA2AMessages.js +0 -122
- package/dist/useA2AMessages.js.map +0 -1
- package/src/A2AMessageAccumulator.ts +0 -48
- package/src/appendA2AChunk.ts +0 -121
- package/src/convertA2AMessages.ts +0 -108
- package/src/testUtils.ts +0 -11
- package/src/useA2AMessages.ts +0 -180
package/README.md
CHANGED
|
@@ -1,3 +1,49 @@
|
|
|
1
1
|
# `@assistant-ui/react-a2a`
|
|
2
2
|
|
|
3
|
-
A2A
|
|
3
|
+
[A2A (Agent-to-Agent) v1.0](https://github.com/a2aproject/A2A) protocol adapter for [assistant-ui](https://www.assistant-ui.com/).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install @assistant-ui/react @assistant-ui/react-a2a
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { AssistantRuntimeProvider, Thread } from "@assistant-ui/react";
|
|
15
|
+
import { useA2ARuntime } from "@assistant-ui/react-a2a";
|
|
16
|
+
|
|
17
|
+
function App() {
|
|
18
|
+
const runtime = useA2ARuntime({
|
|
19
|
+
baseUrl: "http://localhost:9999",
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<AssistantRuntimeProvider runtime={runtime}>
|
|
24
|
+
<Thread />
|
|
25
|
+
</AssistantRuntimeProvider>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Documentation
|
|
31
|
+
|
|
32
|
+
Full documentation is available at [assistant-ui.com/docs/runtimes/a2a](https://www.assistant-ui.com/docs/runtimes/a2a).
|
|
33
|
+
|
|
34
|
+
## Features
|
|
35
|
+
|
|
36
|
+
- Full A2A v1.0 protocol support
|
|
37
|
+
- Built-in HTTP client with SSE streaming
|
|
38
|
+
- All 9 task states (including `input_required`, `auth_required`)
|
|
39
|
+
- Artifact streaming with append/lastChunk support
|
|
40
|
+
- Agent card discovery
|
|
41
|
+
- Multi-tenancy
|
|
42
|
+
- Structured error handling (google.rpc.Status)
|
|
43
|
+
- Push notification config CRUD
|
|
44
|
+
- Extension negotiation
|
|
45
|
+
- Streaming/non-streaming auto-fallback
|
|
46
|
+
|
|
47
|
+
## License
|
|
48
|
+
|
|
49
|
+
MIT
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { A2AAgentCard, A2AErrorInfo, A2AListTaskPushNotificationConfigsResponse, A2AListTasksRequest, A2AListTasksResponse, A2AMessage, A2ASendMessageConfiguration, A2AStreamEvent, A2ATask, A2ATaskPushNotificationConfig } from "./types.js";
|
|
2
|
+
export type A2AClientOptions = {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
/** Optional tenant ID for multi-tenant servers. */
|
|
5
|
+
tenant?: string | undefined;
|
|
6
|
+
headers?: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>) | undefined;
|
|
7
|
+
/** A2A extension URIs to negotiate. Sent as A2A-Extensions header. */
|
|
8
|
+
extensions?: string[] | undefined;
|
|
9
|
+
};
|
|
10
|
+
export declare class A2AError extends Error {
|
|
11
|
+
code: number;
|
|
12
|
+
status: string;
|
|
13
|
+
details: unknown[] | undefined;
|
|
14
|
+
constructor(info: A2AErrorInfo);
|
|
15
|
+
}
|
|
16
|
+
export declare class A2AClient {
|
|
17
|
+
private baseUrl;
|
|
18
|
+
private tenant;
|
|
19
|
+
private extensionUris;
|
|
20
|
+
private headersFn;
|
|
21
|
+
constructor(options: A2AClientOptions);
|
|
22
|
+
private getBasePath;
|
|
23
|
+
private getHeaders;
|
|
24
|
+
private throwResponseError;
|
|
25
|
+
private fetchJSON;
|
|
26
|
+
getAgentCard(signal?: AbortSignal): Promise<A2AAgentCard>;
|
|
27
|
+
getExtendedAgentCard(signal?: AbortSignal): Promise<A2AAgentCard>;
|
|
28
|
+
sendMessage(message: A2AMessage, configuration?: A2ASendMessageConfiguration, metadata?: Record<string, unknown>, signal?: AbortSignal): Promise<A2ATask | A2AMessage>;
|
|
29
|
+
streamMessage(message: A2AMessage, configuration?: A2ASendMessageConfiguration, metadata?: Record<string, unknown>, signal?: AbortSignal): AsyncGenerator<A2AStreamEvent>;
|
|
30
|
+
getTask(taskId: string, historyLength?: number, signal?: AbortSignal): Promise<A2ATask>;
|
|
31
|
+
listTasks(request?: A2AListTasksRequest, signal?: AbortSignal): Promise<A2AListTasksResponse>;
|
|
32
|
+
cancelTask(taskId: string, metadata?: Record<string, unknown>, signal?: AbortSignal): Promise<A2ATask>;
|
|
33
|
+
subscribeToTask(taskId: string, signal?: AbortSignal): AsyncGenerator<A2AStreamEvent>;
|
|
34
|
+
createTaskPushNotificationConfig(config: A2ATaskPushNotificationConfig, signal?: AbortSignal): Promise<A2ATaskPushNotificationConfig>;
|
|
35
|
+
getTaskPushNotificationConfig(taskId: string, configId: string, signal?: AbortSignal): Promise<A2ATaskPushNotificationConfig>;
|
|
36
|
+
listTaskPushNotificationConfigs(taskId: string, options?: {
|
|
37
|
+
pageSize?: number;
|
|
38
|
+
pageToken?: string;
|
|
39
|
+
}, signal?: AbortSignal): Promise<A2AListTaskPushNotificationConfigsResponse>;
|
|
40
|
+
deleteTaskPushNotificationConfig(taskId: string, configId: string, signal?: AbortSignal): Promise<void>;
|
|
41
|
+
private parseSSE;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=A2AClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"A2AClient.d.ts","sourceRoot":"","sources":["../src/A2AClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { A2A_PROTOCOL_VERSION } from "./types.js";
|
|
2
|
+
// === Structured A2A Error ===
|
|
3
|
+
export class A2AError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
status;
|
|
6
|
+
details;
|
|
7
|
+
constructor(info) {
|
|
8
|
+
super(info.message);
|
|
9
|
+
this.name = "A2AError";
|
|
10
|
+
this.code = info.code;
|
|
11
|
+
this.status = info.status;
|
|
12
|
+
this.details = info.details;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// === Key normalization (incoming: snake_case → camelCase + enum normalization) ===
|
|
16
|
+
function toCamelCase(key) {
|
|
17
|
+
return key.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
|
|
18
|
+
}
|
|
19
|
+
// Fields whose values are opaque user data (google.protobuf.Struct / Value).
|
|
20
|
+
// Keys inside these objects must NOT be camelCased or have enum normalization applied.
|
|
21
|
+
const OPAQUE_FIELDS = new Set([
|
|
22
|
+
"metadata",
|
|
23
|
+
"data",
|
|
24
|
+
"params",
|
|
25
|
+
"forwardedProps",
|
|
26
|
+
"scopes",
|
|
27
|
+
]);
|
|
28
|
+
function normalizeKeys(obj, opaque = false) {
|
|
29
|
+
if (Array.isArray(obj))
|
|
30
|
+
return obj.map((v) => normalizeKeys(v, opaque));
|
|
31
|
+
if (obj !== null && typeof obj === "object") {
|
|
32
|
+
const result = {};
|
|
33
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
34
|
+
// Inside opaque fields: preserve keys and values as-is (only recurse arrays/objects structurally)
|
|
35
|
+
if (opaque) {
|
|
36
|
+
result[key] =
|
|
37
|
+
typeof value === "object" && value !== null
|
|
38
|
+
? normalizeKeys(value, true)
|
|
39
|
+
: value;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const camelKey = toCamelCase(key);
|
|
43
|
+
const isOpaqueChild = OPAQUE_FIELDS.has(camelKey);
|
|
44
|
+
if (camelKey === "state" &&
|
|
45
|
+
typeof value === "string" &&
|
|
46
|
+
value.startsWith("TASK_STATE_")) {
|
|
47
|
+
result[camelKey] = value.slice(11).toLowerCase();
|
|
48
|
+
}
|
|
49
|
+
else if (camelKey === "role" &&
|
|
50
|
+
typeof value === "string" &&
|
|
51
|
+
value.startsWith("ROLE_")) {
|
|
52
|
+
result[camelKey] = value.slice(5).toLowerCase();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
result[camelKey] = isOpaqueChild ? value : normalizeKeys(value, false);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
return obj;
|
|
61
|
+
}
|
|
62
|
+
// === Outgoing enum conversion (v1.0 ProtoJSON format) ===
|
|
63
|
+
function toWireRole(role) {
|
|
64
|
+
if (role === "user")
|
|
65
|
+
return "ROLE_USER";
|
|
66
|
+
if (role === "agent")
|
|
67
|
+
return "ROLE_AGENT";
|
|
68
|
+
return "ROLE_UNSPECIFIED";
|
|
69
|
+
}
|
|
70
|
+
function toWireTaskState(state) {
|
|
71
|
+
return `TASK_STATE_${state.toUpperCase()}`;
|
|
72
|
+
}
|
|
73
|
+
function toWireMessage(msg) {
|
|
74
|
+
return { ...msg, role: toWireRole(msg.role) };
|
|
75
|
+
}
|
|
76
|
+
// === Stream response discrimination ===
|
|
77
|
+
function discriminateStreamResponse(data) {
|
|
78
|
+
if ("task" in data && data.task) {
|
|
79
|
+
return { type: "task", task: data.task };
|
|
80
|
+
}
|
|
81
|
+
if ("message" in data && data.message) {
|
|
82
|
+
return { type: "message", message: data.message };
|
|
83
|
+
}
|
|
84
|
+
if ("statusUpdate" in data && data.statusUpdate) {
|
|
85
|
+
return {
|
|
86
|
+
type: "statusUpdate",
|
|
87
|
+
event: data.statusUpdate,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if ("artifactUpdate" in data && data.artifactUpdate) {
|
|
91
|
+
return {
|
|
92
|
+
type: "artifactUpdate",
|
|
93
|
+
event: data.artifactUpdate,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
function signalInit(signal) {
|
|
99
|
+
return signal ? { signal } : {};
|
|
100
|
+
}
|
|
101
|
+
// === A2A Client ===
|
|
102
|
+
export class A2AClient {
|
|
103
|
+
baseUrl;
|
|
104
|
+
tenant;
|
|
105
|
+
extensionUris;
|
|
106
|
+
headersFn;
|
|
107
|
+
constructor(options) {
|
|
108
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, "");
|
|
109
|
+
this.tenant = options.tenant;
|
|
110
|
+
this.extensionUris = options.extensions;
|
|
111
|
+
this.headersFn = options.headers ?? {};
|
|
112
|
+
}
|
|
113
|
+
getBasePath() {
|
|
114
|
+
return this.tenant ? `/${encodeURIComponent(this.tenant)}` : "";
|
|
115
|
+
}
|
|
116
|
+
async getHeaders(includeContentType = true) {
|
|
117
|
+
const custom = typeof this.headersFn === "function"
|
|
118
|
+
? await this.headersFn()
|
|
119
|
+
: this.headersFn;
|
|
120
|
+
const headers = {
|
|
121
|
+
Accept: "application/a2a+json, application/json",
|
|
122
|
+
"A2A-Version": A2A_PROTOCOL_VERSION,
|
|
123
|
+
...custom,
|
|
124
|
+
};
|
|
125
|
+
if (includeContentType) {
|
|
126
|
+
headers["Content-Type"] = "application/a2a+json";
|
|
127
|
+
}
|
|
128
|
+
if (this.extensionUris?.length) {
|
|
129
|
+
headers["A2A-Extensions"] = this.extensionUris.join(", ");
|
|
130
|
+
}
|
|
131
|
+
return headers;
|
|
132
|
+
}
|
|
133
|
+
async throwResponseError(response) {
|
|
134
|
+
let errorBody;
|
|
135
|
+
try {
|
|
136
|
+
errorBody = await response.json();
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// no parseable body
|
|
140
|
+
}
|
|
141
|
+
if (errorBody && typeof errorBody === "object" && "error" in errorBody) {
|
|
142
|
+
const err = errorBody.error;
|
|
143
|
+
throw new A2AError({
|
|
144
|
+
code: err.code ?? response.status,
|
|
145
|
+
status: err.status ?? response.statusText,
|
|
146
|
+
message: err.message ?? `A2A request failed: ${response.status}`,
|
|
147
|
+
details: err.details,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
throw new A2AError({
|
|
151
|
+
code: response.status,
|
|
152
|
+
status: response.statusText,
|
|
153
|
+
message: `A2A request failed: ${response.status} ${response.statusText}`,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async fetchJSON(path, options = {}) {
|
|
157
|
+
const isGet = !options.method || options.method.toUpperCase() === "GET";
|
|
158
|
+
const headers = await this.getHeaders(!isGet);
|
|
159
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
160
|
+
...options,
|
|
161
|
+
headers: {
|
|
162
|
+
...headers,
|
|
163
|
+
...options.headers,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
await this.throwResponseError(response);
|
|
168
|
+
}
|
|
169
|
+
const json = await response.json();
|
|
170
|
+
return normalizeKeys(json);
|
|
171
|
+
}
|
|
172
|
+
// --- Agent Card ---
|
|
173
|
+
async getAgentCard(signal) {
|
|
174
|
+
const headers = await this.getHeaders(false); // GET: no Content-Type
|
|
175
|
+
const url = `${this.baseUrl}/.well-known/agent-card.json`;
|
|
176
|
+
const response = await fetch(url, { headers, ...signalInit(signal) });
|
|
177
|
+
if (!response.ok) {
|
|
178
|
+
await this.throwResponseError(response);
|
|
179
|
+
}
|
|
180
|
+
const json = await response.json();
|
|
181
|
+
return normalizeKeys(json);
|
|
182
|
+
}
|
|
183
|
+
async getExtendedAgentCard(signal) {
|
|
184
|
+
return this.fetchJSON(`${this.getBasePath()}/extendedAgentCard`, signalInit(signal));
|
|
185
|
+
}
|
|
186
|
+
// --- Message ---
|
|
187
|
+
async sendMessage(message, configuration, metadata, signal) {
|
|
188
|
+
const body = {
|
|
189
|
+
message: toWireMessage(message),
|
|
190
|
+
};
|
|
191
|
+
if (configuration)
|
|
192
|
+
body.configuration = configuration;
|
|
193
|
+
if (metadata)
|
|
194
|
+
body.metadata = metadata;
|
|
195
|
+
const result = await this.fetchJSON(`${this.getBasePath()}/message:send`, {
|
|
196
|
+
method: "POST",
|
|
197
|
+
body: JSON.stringify(body),
|
|
198
|
+
...signalInit(signal),
|
|
199
|
+
});
|
|
200
|
+
// Unwrap SendMessageResponse: {task: Task} | {message: Message}
|
|
201
|
+
if ("task" in result && result.task)
|
|
202
|
+
return result.task;
|
|
203
|
+
if ("message" in result && result.message)
|
|
204
|
+
return result.message;
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
async *streamMessage(message, configuration, metadata, signal) {
|
|
208
|
+
const headers = await this.getHeaders(true);
|
|
209
|
+
headers["Accept"] = "text/event-stream";
|
|
210
|
+
const body = {
|
|
211
|
+
message: toWireMessage(message),
|
|
212
|
+
};
|
|
213
|
+
if (configuration)
|
|
214
|
+
body.configuration = configuration;
|
|
215
|
+
if (metadata)
|
|
216
|
+
body.metadata = metadata;
|
|
217
|
+
const response = await fetch(`${this.baseUrl}${this.getBasePath()}/message:stream`, {
|
|
218
|
+
method: "POST",
|
|
219
|
+
headers,
|
|
220
|
+
body: JSON.stringify(body),
|
|
221
|
+
...signalInit(signal),
|
|
222
|
+
});
|
|
223
|
+
if (!response.ok) {
|
|
224
|
+
await this.throwResponseError(response);
|
|
225
|
+
}
|
|
226
|
+
yield* this.parseSSE(response);
|
|
227
|
+
}
|
|
228
|
+
// --- Tasks ---
|
|
229
|
+
async getTask(taskId, historyLength, signal) {
|
|
230
|
+
const params = new URLSearchParams();
|
|
231
|
+
if (historyLength !== undefined) {
|
|
232
|
+
// Proto field name for HTTP transcoding query params
|
|
233
|
+
params.set("history_length", String(historyLength));
|
|
234
|
+
}
|
|
235
|
+
const qs = params.toString();
|
|
236
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}${qs ? `?${qs}` : ""}`, signalInit(signal));
|
|
237
|
+
}
|
|
238
|
+
async listTasks(request, signal) {
|
|
239
|
+
const params = new URLSearchParams();
|
|
240
|
+
if (request?.contextId)
|
|
241
|
+
params.set("context_id", request.contextId);
|
|
242
|
+
if (request?.status)
|
|
243
|
+
params.set("status", toWireTaskState(request.status));
|
|
244
|
+
if (request?.pageSize !== undefined)
|
|
245
|
+
params.set("page_size", String(request.pageSize));
|
|
246
|
+
if (request?.pageToken)
|
|
247
|
+
params.set("page_token", request.pageToken);
|
|
248
|
+
if (request?.historyLength !== undefined)
|
|
249
|
+
params.set("history_length", String(request.historyLength));
|
|
250
|
+
if (request?.statusTimestampAfter)
|
|
251
|
+
params.set("status_timestamp_after", request.statusTimestampAfter);
|
|
252
|
+
if (request?.includeArtifacts !== undefined)
|
|
253
|
+
params.set("include_artifacts", String(request.includeArtifacts));
|
|
254
|
+
const qs = params.toString();
|
|
255
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks${qs ? `?${qs}` : ""}`, signalInit(signal));
|
|
256
|
+
}
|
|
257
|
+
async cancelTask(taskId, metadata, signal) {
|
|
258
|
+
const body = metadata ? { metadata } : {};
|
|
259
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}:cancel`, {
|
|
260
|
+
method: "POST",
|
|
261
|
+
body: JSON.stringify(body),
|
|
262
|
+
...signalInit(signal),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
async *subscribeToTask(taskId, signal) {
|
|
266
|
+
const headers = await this.getHeaders(false); // GET: no Content-Type
|
|
267
|
+
headers["Accept"] = "text/event-stream";
|
|
268
|
+
const response = await fetch(`${this.baseUrl}${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}:subscribe`, { headers, ...signalInit(signal) });
|
|
269
|
+
if (!response.ok) {
|
|
270
|
+
await this.throwResponseError(response);
|
|
271
|
+
}
|
|
272
|
+
yield* this.parseSSE(response);
|
|
273
|
+
}
|
|
274
|
+
// --- Push Notification Configs ---
|
|
275
|
+
async createTaskPushNotificationConfig(config, signal) {
|
|
276
|
+
const taskId = config.taskId;
|
|
277
|
+
if (!taskId)
|
|
278
|
+
throw new Error("taskId is required");
|
|
279
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}/pushNotificationConfigs`, {
|
|
280
|
+
method: "POST",
|
|
281
|
+
body: JSON.stringify(config),
|
|
282
|
+
...signalInit(signal),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
async getTaskPushNotificationConfig(taskId, configId, signal) {
|
|
286
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}/pushNotificationConfigs/${encodeURIComponent(configId)}`, signalInit(signal));
|
|
287
|
+
}
|
|
288
|
+
async listTaskPushNotificationConfigs(taskId, options, signal) {
|
|
289
|
+
const params = new URLSearchParams();
|
|
290
|
+
if (options?.pageSize !== undefined)
|
|
291
|
+
params.set("page_size", String(options.pageSize));
|
|
292
|
+
if (options?.pageToken)
|
|
293
|
+
params.set("page_token", options.pageToken);
|
|
294
|
+
const qs = params.toString();
|
|
295
|
+
return this.fetchJSON(`${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}/pushNotificationConfigs${qs ? `?${qs}` : ""}`, signalInit(signal));
|
|
296
|
+
}
|
|
297
|
+
async deleteTaskPushNotificationConfig(taskId, configId, signal) {
|
|
298
|
+
const isGet = false;
|
|
299
|
+
const headers = await this.getHeaders(!isGet);
|
|
300
|
+
const response = await fetch(`${this.baseUrl}${this.getBasePath()}/tasks/${encodeURIComponent(taskId)}/pushNotificationConfigs/${encodeURIComponent(configId)}`, { method: "DELETE", headers, ...signalInit(signal) });
|
|
301
|
+
if (!response.ok) {
|
|
302
|
+
await this.throwResponseError(response);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// --- SSE Parsing ---
|
|
306
|
+
async *parseSSE(response) {
|
|
307
|
+
const reader = response.body?.getReader();
|
|
308
|
+
if (!reader)
|
|
309
|
+
throw new Error("No response body");
|
|
310
|
+
const decoder = new TextDecoder();
|
|
311
|
+
let buffer = "";
|
|
312
|
+
try {
|
|
313
|
+
while (true) {
|
|
314
|
+
const { done, value } = await reader.read();
|
|
315
|
+
if (done)
|
|
316
|
+
break;
|
|
317
|
+
buffer += decoder.decode(value, { stream: true });
|
|
318
|
+
let eventEnd;
|
|
319
|
+
while ((eventEnd = buffer.indexOf("\n\n")) !== -1) {
|
|
320
|
+
const eventText = buffer.slice(0, eventEnd);
|
|
321
|
+
buffer = buffer.slice(eventEnd + 2);
|
|
322
|
+
const dataLines = [];
|
|
323
|
+
for (const line of eventText.split("\n")) {
|
|
324
|
+
const trimmed = line.replace(/\r$/, "");
|
|
325
|
+
if (trimmed.startsWith("data:")) {
|
|
326
|
+
dataLines.push(trimmed.slice(5).trim());
|
|
327
|
+
}
|
|
328
|
+
// event:, id:, retry: lines are parsed but not used —
|
|
329
|
+
// we discriminate event type from the JSON payload.
|
|
330
|
+
}
|
|
331
|
+
if (dataLines.length === 0)
|
|
332
|
+
continue;
|
|
333
|
+
try {
|
|
334
|
+
let parsed = JSON.parse(dataLines.join("\n"));
|
|
335
|
+
// Unwrap JSON-RPC envelope if present
|
|
336
|
+
if (parsed &&
|
|
337
|
+
typeof parsed === "object" &&
|
|
338
|
+
"jsonrpc" in parsed &&
|
|
339
|
+
"result" in parsed) {
|
|
340
|
+
parsed = parsed.result;
|
|
341
|
+
}
|
|
342
|
+
const normalized = normalizeKeys(parsed);
|
|
343
|
+
const event = discriminateStreamResponse(normalized);
|
|
344
|
+
if (event)
|
|
345
|
+
yield event;
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
// Skip malformed events
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
finally {
|
|
354
|
+
reader.releaseLock();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=A2AClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"A2AClient.js","sourceRoot":"","sources":["../src/A2AClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { AppendMessage, AssistantRuntime, ThreadHistoryAdapter, ThreadMessage } from "@assistant-ui/core";
|
|
2
|
+
import type { A2AClient } from "./A2AClient.js";
|
|
3
|
+
import type { A2AArtifact, A2AAgentCard, A2ASendMessageConfiguration, A2ATask } from "./types.js";
|
|
4
|
+
export type A2AThreadRuntimeCoreOptions = {
|
|
5
|
+
client: A2AClient;
|
|
6
|
+
contextId?: string | undefined;
|
|
7
|
+
configuration?: A2ASendMessageConfiguration | undefined;
|
|
8
|
+
onError?: ((error: Error) => void) | undefined;
|
|
9
|
+
onCancel?: (() => void) | undefined;
|
|
10
|
+
onArtifactComplete?: ((artifact: A2AArtifact) => void) | undefined;
|
|
11
|
+
history?: ThreadHistoryAdapter | undefined;
|
|
12
|
+
notifyUpdate: () => void;
|
|
13
|
+
};
|
|
14
|
+
export declare class A2AThreadRuntimeCore {
|
|
15
|
+
private client;
|
|
16
|
+
private contextId;
|
|
17
|
+
private configuration;
|
|
18
|
+
private onError;
|
|
19
|
+
private onCancel;
|
|
20
|
+
private onArtifactComplete;
|
|
21
|
+
private history;
|
|
22
|
+
private readonly notifyUpdate;
|
|
23
|
+
private runtime;
|
|
24
|
+
private messages;
|
|
25
|
+
private isRunningFlag;
|
|
26
|
+
private abortController;
|
|
27
|
+
private pendingError;
|
|
28
|
+
private currentTask;
|
|
29
|
+
private currentArtifacts;
|
|
30
|
+
private agentCardValue;
|
|
31
|
+
private readonly assistantHistoryParents;
|
|
32
|
+
private readonly recordedHistoryIds;
|
|
33
|
+
private _isLoading;
|
|
34
|
+
private _loadPromise;
|
|
35
|
+
constructor(options: A2AThreadRuntimeCoreOptions);
|
|
36
|
+
updateOptions(options: Omit<A2AThreadRuntimeCoreOptions, "notifyUpdate">): void;
|
|
37
|
+
attachRuntime(runtime: AssistantRuntime): void;
|
|
38
|
+
detachRuntime(): void;
|
|
39
|
+
getRuntime(): AssistantRuntime | undefined;
|
|
40
|
+
getMessages(): readonly ThreadMessage[];
|
|
41
|
+
getTask(): A2ATask | undefined;
|
|
42
|
+
getArtifacts(): readonly A2AArtifact[];
|
|
43
|
+
getAgentCard(): A2AAgentCard | undefined;
|
|
44
|
+
isRunning(): boolean;
|
|
45
|
+
get isLoading(): boolean;
|
|
46
|
+
__internal_load(): Promise<void>;
|
|
47
|
+
append(message: AppendMessage): Promise<void>;
|
|
48
|
+
edit(message: AppendMessage): Promise<void>;
|
|
49
|
+
reload(parentId: string | null, _config?: {
|
|
50
|
+
runConfig?: Record<string, unknown>;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
cancel(): Promise<void>;
|
|
53
|
+
applyExternalMessages(messages: readonly ThreadMessage[]): void;
|
|
54
|
+
private startRun;
|
|
55
|
+
private runStreaming;
|
|
56
|
+
private runSync;
|
|
57
|
+
private handleStreamEvent;
|
|
58
|
+
private handleStatusUpdate;
|
|
59
|
+
private handleArtifactUpdate;
|
|
60
|
+
private handleMessage;
|
|
61
|
+
private handleTaskSnapshot;
|
|
62
|
+
private threadMessageToA2AMessage;
|
|
63
|
+
private insertAssistantPlaceholder;
|
|
64
|
+
private updateAssistantContent;
|
|
65
|
+
private updateAssistantStatus;
|
|
66
|
+
private getAssistantStatus;
|
|
67
|
+
private setRunning;
|
|
68
|
+
private finishRun;
|
|
69
|
+
private resetHead;
|
|
70
|
+
private recordHistoryEntry;
|
|
71
|
+
private markPendingAssistantHistory;
|
|
72
|
+
private persistAssistantHistory;
|
|
73
|
+
private appendHistoryItem;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=A2AThreadRuntimeCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"A2AThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../src/A2AThreadRuntimeCore.ts"],"names":[],"mappings":"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"}
|