@cogitator-ai/a2a 0.7.7 → 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/agent-card.js
CHANGED
|
@@ -1,70 +1,107 @@
|
|
|
1
1
|
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { A2A_PROTOCOL_VERSION } from './types.js';
|
|
2
3
|
function toolToSkill(tool) {
|
|
3
4
|
return {
|
|
4
5
|
id: tool.name,
|
|
5
6
|
name: tool.name,
|
|
6
7
|
description: tool.description,
|
|
8
|
+
tags: ['tool'],
|
|
7
9
|
inputModes: ['text/plain', 'application/json'],
|
|
8
10
|
outputModes: ['text/plain', 'application/json'],
|
|
9
11
|
};
|
|
10
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* The A2A v0.3 Agent Card of an agent. It names the agent, its description (never its
|
|
15
|
+
* instructions) and its tools as skills, and declares JSON-RPC at `url` as its transport.
|
|
16
|
+
*/
|
|
11
17
|
export function generateAgentCard(agent, options) {
|
|
12
18
|
const capabilities = {
|
|
13
19
|
streaming: true,
|
|
14
20
|
pushNotifications: false,
|
|
21
|
+
stateTransitionHistory: false,
|
|
15
22
|
...options.capabilities,
|
|
16
23
|
};
|
|
17
24
|
const card = {
|
|
25
|
+
protocolVersion: A2A_PROTOCOL_VERSION,
|
|
18
26
|
name: agent.name,
|
|
19
|
-
description: agent.config.description,
|
|
27
|
+
description: agent.config.description ?? agent.name,
|
|
20
28
|
url: options.url,
|
|
21
|
-
|
|
29
|
+
preferredTransport: 'JSONRPC',
|
|
30
|
+
additionalInterfaces: [{ transport: 'JSONRPC', url: options.url }],
|
|
31
|
+
version: options.version ?? '1.0.0',
|
|
22
32
|
capabilities,
|
|
23
|
-
|
|
24
|
-
defaultInputModes: ['text/plain'],
|
|
33
|
+
defaultInputModes: ['text/plain', 'application/json'],
|
|
25
34
|
defaultOutputModes: ['text/plain', 'application/json'],
|
|
35
|
+
skills: agent.tools.map(toolToSkill),
|
|
26
36
|
};
|
|
27
37
|
if (options.provider) {
|
|
28
38
|
card.provider = options.provider;
|
|
29
39
|
}
|
|
40
|
+
if (options.supportsAuthenticatedExtendedCard) {
|
|
41
|
+
card.supportsAuthenticatedExtendedCard = true;
|
|
42
|
+
}
|
|
30
43
|
return card;
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
/**
|
|
46
|
+
* JSON canonicalization (RFC 8785): object keys sorted by UTF-16 code units, no whitespace,
|
|
47
|
+
* values serialized as JSON. Undefined members are left out as JSON.stringify does.
|
|
48
|
+
*/
|
|
49
|
+
export function canonicalJson(value) {
|
|
50
|
+
if (value === null || typeof value !== 'object') {
|
|
51
|
+
return JSON.stringify(value) ?? 'null';
|
|
35
52
|
}
|
|
36
53
|
if (Array.isArray(value)) {
|
|
37
|
-
return `[${value.map((item) =>
|
|
54
|
+
return `[${value.map((item) => (item === undefined ? 'null' : canonicalJson(item))).join(',')}]`;
|
|
38
55
|
}
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
.
|
|
42
|
-
.
|
|
43
|
-
|
|
56
|
+
const record = value;
|
|
57
|
+
const members = Object.keys(record)
|
|
58
|
+
.filter((key) => record[key] !== undefined)
|
|
59
|
+
.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))
|
|
60
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`);
|
|
61
|
+
return `{${members.join(',')}}`;
|
|
62
|
+
}
|
|
63
|
+
function base64url(input) {
|
|
64
|
+
return Buffer.from(input).toString('base64url');
|
|
65
|
+
}
|
|
66
|
+
const PROTECTED_HEADER = base64url(JSON.stringify({ alg: 'HS256', typ: 'JOSE' }));
|
|
67
|
+
function unsignedCard(card) {
|
|
68
|
+
const { signatures: _signatures, ...rest } = card;
|
|
69
|
+
return rest;
|
|
70
|
+
}
|
|
71
|
+
function hs256(protectedHeader, card, secret) {
|
|
72
|
+
const signingInput = `${protectedHeader}.${base64url(canonicalJson(unsignedCard(card)))}`;
|
|
73
|
+
return createHmac('sha256', secret).update(signingInput).digest();
|
|
44
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* The card with a JWS signature (RFC 7515, HS256, detached payload) over its canonical JSON
|
|
77
|
+
* (RFC 8785, without `signatures`) in `signatures`, as A2A v0.3 specifies.
|
|
78
|
+
*/
|
|
45
79
|
export function signAgentCard(card, options) {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
80
|
+
const signature = {
|
|
81
|
+
protected: PROTECTED_HEADER,
|
|
82
|
+
signature: base64url(hs256(PROTECTED_HEADER, card, options.secret)),
|
|
83
|
+
};
|
|
84
|
+
return { ...unsignedCard(card), signatures: [signature] };
|
|
50
85
|
}
|
|
86
|
+
function parseProtectedHeader(encoded) {
|
|
87
|
+
try {
|
|
88
|
+
const parsed = JSON.parse(Buffer.from(encoded, 'base64url').toString('utf8'));
|
|
89
|
+
return parsed && typeof parsed === 'object' ? parsed : null;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Whether one of the card's HS256 signatures was made with `secret` over this exact card. */
|
|
51
96
|
export function verifyAgentCardSignature(card, secret) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const { signature: _, ...cardWithoutSig } = card;
|
|
62
|
-
const payload = sortedStringify(cardWithoutSig);
|
|
63
|
-
const expected = createHmac('sha256', secret).update(payload).digest('hex');
|
|
64
|
-
const sigBuf = Buffer.from(sig, 'hex');
|
|
65
|
-
const expectedBuf = Buffer.from(expected, 'hex');
|
|
66
|
-
if (sigBuf.length !== expectedBuf.length)
|
|
67
|
-
return false;
|
|
68
|
-
return timingSafeEqual(sigBuf, expectedBuf);
|
|
97
|
+
for (const signature of card.signatures ?? []) {
|
|
98
|
+
if (parseProtectedHeader(signature.protected)?.alg !== 'HS256')
|
|
99
|
+
continue;
|
|
100
|
+
const expected = hs256(signature.protected, card, secret);
|
|
101
|
+
const actual = Buffer.from(signature.signature, 'base64url');
|
|
102
|
+
if (actual.length === expected.length && timingSafeEqual(actual, expected))
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
69
106
|
}
|
|
70
107
|
//# sourceMappingURL=agent-card.js.map
|
package/dist/agent-card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../src/agent-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../src/agent-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ToolApprovalDecision, ToolApprovalRequest } from '@cogitator-ai/types';
|
|
2
|
+
import type { A2AMessage, A2ATask, DataPart } from './types.js';
|
|
3
|
+
/** `kind` of the data part an agent sends when its run waits for tool approvals. */
|
|
4
|
+
export declare const TOOL_APPROVAL_REQUEST_KIND = "tool-approval-request";
|
|
5
|
+
/** `kind` of the data part a client sends back with its decisions. */
|
|
6
|
+
export declare const TOOL_APPROVAL_RESPONSE_KIND = "tool-approval-response";
|
|
7
|
+
/** Metadata key holding the calls a task waits on; never sent to clients. */
|
|
8
|
+
export declare const TASK_PENDING_APPROVALS_KEY = "cogitator:pendingApprovals";
|
|
9
|
+
/** Decisions for the tool calls an `input-required` task waits on. */
|
|
10
|
+
export interface ToolApprovalResponse {
|
|
11
|
+
/** Decisions by tool call id; calls left out keep the task waiting */
|
|
12
|
+
decisions?: Record<string, ToolApprovalDecision>;
|
|
13
|
+
/** Decision for every waiting call `decisions` leaves out, e.g. one "approve all" answer */
|
|
14
|
+
defaultDecision?: ToolApprovalDecision;
|
|
15
|
+
}
|
|
16
|
+
/** The data part an agent's message carries when its run waits for tool approvals. */
|
|
17
|
+
export declare function toolApprovalRequestPart(approvals: readonly ToolApprovalRequest[]): DataPart;
|
|
18
|
+
/**
|
|
19
|
+
* The data part that answers an `input-required` task waiting for tool approvals: send it in the
|
|
20
|
+
* message that continues the task.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const waiting = readToolApprovalRequest(task);
|
|
25
|
+
* if (waiting) {
|
|
26
|
+
* await client.sendMessage({
|
|
27
|
+
* role: 'user',
|
|
28
|
+
* taskId: task.id,
|
|
29
|
+
* contextId: task.contextId,
|
|
30
|
+
* parts: [toolApprovalResponsePart({ defaultDecision: { approved: true } })],
|
|
31
|
+
* });
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function toolApprovalResponsePart(response: ToolApprovalResponse): DataPart;
|
|
36
|
+
/**
|
|
37
|
+
* The tool calls an `input-required` task waits on, read from its status message (or, when a
|
|
38
|
+
* server leaves that out, its last agent message), or undefined when the task does not wait for
|
|
39
|
+
* approvals.
|
|
40
|
+
*/
|
|
41
|
+
export declare function readToolApprovalRequest(task: A2ATask): ToolApprovalRequest[] | undefined;
|
|
42
|
+
/** The decisions a message carries in a tool approval response data part, if any. */
|
|
43
|
+
export declare function readToolApprovalResponse(message: A2AMessage): ToolApprovalResponse | undefined;
|
|
44
|
+
/** The calls a task's paused run waits on, as the task manager keeps them. */
|
|
45
|
+
export declare function taskPendingApprovals(task: A2ATask): ToolApprovalRequest[] | undefined;
|
|
46
|
+
//# sourceMappingURL=approvals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhE,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAEpE,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,4FAA4F;IAC5F,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AA0BD,sFAAsF;AACtF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,GAAG,QAAQ,CAQ3F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,QAAQ,CASjF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAWxF;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,GAAG,SAAS,CAY9F;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAGrF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** `kind` of the data part an agent sends when its run waits for tool approvals. */
|
|
3
|
+
export const TOOL_APPROVAL_REQUEST_KIND = 'tool-approval-request';
|
|
4
|
+
/** `kind` of the data part a client sends back with its decisions. */
|
|
5
|
+
export const TOOL_APPROVAL_RESPONSE_KIND = 'tool-approval-response';
|
|
6
|
+
/** Metadata key holding the calls a task waits on; never sent to clients. */
|
|
7
|
+
export const TASK_PENDING_APPROVALS_KEY = 'cogitator:pendingApprovals';
|
|
8
|
+
const decisionSchema = z.union([
|
|
9
|
+
z.object({ approved: z.literal(true) }),
|
|
10
|
+
z.object({ approved: z.literal(false), reason: z.string().optional() }),
|
|
11
|
+
]);
|
|
12
|
+
const responseSchema = z.object({
|
|
13
|
+
kind: z.literal(TOOL_APPROVAL_RESPONSE_KIND),
|
|
14
|
+
decisions: z.record(z.string(), decisionSchema).optional(),
|
|
15
|
+
defaultDecision: decisionSchema.optional(),
|
|
16
|
+
});
|
|
17
|
+
const approvalSchema = z.object({
|
|
18
|
+
toolCallId: z.string(),
|
|
19
|
+
toolName: z.string(),
|
|
20
|
+
arguments: z.record(z.string(), z.unknown()),
|
|
21
|
+
description: z.string(),
|
|
22
|
+
sideEffects: z.array(z.string()).optional(),
|
|
23
|
+
});
|
|
24
|
+
const requestSchema = z.object({
|
|
25
|
+
kind: z.literal(TOOL_APPROVAL_REQUEST_KIND),
|
|
26
|
+
approvals: z.array(approvalSchema),
|
|
27
|
+
});
|
|
28
|
+
/** The data part an agent's message carries when its run waits for tool approvals. */
|
|
29
|
+
export function toolApprovalRequestPart(approvals) {
|
|
30
|
+
return {
|
|
31
|
+
kind: 'data',
|
|
32
|
+
data: {
|
|
33
|
+
kind: TOOL_APPROVAL_REQUEST_KIND,
|
|
34
|
+
approvals: approvals.map((approval) => ({ ...approval })),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The data part that answers an `input-required` task waiting for tool approvals: send it in the
|
|
40
|
+
* message that continues the task.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const waiting = readToolApprovalRequest(task);
|
|
45
|
+
* if (waiting) {
|
|
46
|
+
* await client.sendMessage({
|
|
47
|
+
* role: 'user',
|
|
48
|
+
* taskId: task.id,
|
|
49
|
+
* contextId: task.contextId,
|
|
50
|
+
* parts: [toolApprovalResponsePart({ defaultDecision: { approved: true } })],
|
|
51
|
+
* });
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function toolApprovalResponsePart(response) {
|
|
56
|
+
return {
|
|
57
|
+
kind: 'data',
|
|
58
|
+
data: {
|
|
59
|
+
kind: TOOL_APPROVAL_RESPONSE_KIND,
|
|
60
|
+
...(response.decisions && { decisions: response.decisions }),
|
|
61
|
+
...(response.defaultDecision && { defaultDecision: response.defaultDecision }),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The tool calls an `input-required` task waits on, read from its status message (or, when a
|
|
67
|
+
* server leaves that out, its last agent message), or undefined when the task does not wait for
|
|
68
|
+
* approvals.
|
|
69
|
+
*/
|
|
70
|
+
export function readToolApprovalRequest(task) {
|
|
71
|
+
if (task.status.state !== 'input-required')
|
|
72
|
+
return undefined;
|
|
73
|
+
const last = task.status.message ??
|
|
74
|
+
[...(task.history ?? [])].reverse().find((message) => message.role === 'agent');
|
|
75
|
+
for (const part of last?.parts ?? []) {
|
|
76
|
+
if (part.kind !== 'data')
|
|
77
|
+
continue;
|
|
78
|
+
const parsed = requestSchema.safeParse(part.data);
|
|
79
|
+
if (parsed.success)
|
|
80
|
+
return parsed.data.approvals;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/** The decisions a message carries in a tool approval response data part, if any. */
|
|
85
|
+
export function readToolApprovalResponse(message) {
|
|
86
|
+
for (const part of message.parts) {
|
|
87
|
+
if (part.kind !== 'data')
|
|
88
|
+
continue;
|
|
89
|
+
const parsed = responseSchema.safeParse(part.data);
|
|
90
|
+
if (!parsed.success)
|
|
91
|
+
continue;
|
|
92
|
+
const { decisions, defaultDecision } = parsed.data;
|
|
93
|
+
return {
|
|
94
|
+
...(decisions && { decisions }),
|
|
95
|
+
...(defaultDecision && { defaultDecision }),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
/** The calls a task's paused run waits on, as the task manager keeps them. */
|
|
101
|
+
export function taskPendingApprovals(task) {
|
|
102
|
+
const parsed = z.array(approvalSchema).safeParse(task.metadata?.[TASK_PENDING_APPROVALS_KEY]);
|
|
103
|
+
return parsed.success && parsed.data.length > 0 ? parsed.data : undefined;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=approvals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Tool } from '@cogitator-ai/types';
|
|
2
|
-
import type { AgentCard,
|
|
1
|
+
import type { Tool, ToolApprovalRequest } from '@cogitator-ai/types';
|
|
2
|
+
import type { AgentCard, A2AMessageInput, A2ATask, A2AStreamEvent, A2AClientConfig, MessageSendConfiguration, PushNotificationConfig, SendMessageResult, TaskFilter, TaskPushNotificationConfig, TaskState } from './types.js';
|
|
3
|
+
import { type ToolApprovalResponse } from './approvals.js';
|
|
3
4
|
export interface A2AToolOptions {
|
|
4
5
|
name?: string;
|
|
5
6
|
description?: string;
|
|
@@ -13,6 +14,11 @@ export interface A2AToolResult {
|
|
|
13
14
|
taskId?: string;
|
|
14
15
|
/** Final state of the remote task */
|
|
15
16
|
state?: TaskState;
|
|
17
|
+
/**
|
|
18
|
+
* The tool calls the remote agent waits on, when the task is `input-required` for approvals:
|
|
19
|
+
* answer with `answerApprovals` (or a `toolApprovalResponsePart` in a message that continues `taskId`)
|
|
20
|
+
*/
|
|
21
|
+
pendingApprovals?: ToolApprovalRequest[];
|
|
16
22
|
}
|
|
17
23
|
export interface A2ARequestOptions {
|
|
18
24
|
/** Cancels the request (and an in-flight stream) */
|
|
@@ -20,49 +26,85 @@ export interface A2ARequestOptions {
|
|
|
20
26
|
/** Overrides the client timeout for this request; for streams it is the idle timeout between events */
|
|
21
27
|
timeout?: number;
|
|
22
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* A2A v0.3 client over JSON-RPC. It reads the Agent Card at the base URL and sends requests to
|
|
31
|
+
* the endpoint the card names, so it talks to any A2A v0.3 server.
|
|
32
|
+
*/
|
|
23
33
|
export declare class A2AClient {
|
|
24
34
|
private baseUrl;
|
|
25
35
|
private headers;
|
|
26
36
|
private timeout;
|
|
27
|
-
private agentCardPath
|
|
28
|
-
private rpcPath
|
|
37
|
+
private agentCardPath?;
|
|
38
|
+
private rpcPath?;
|
|
29
39
|
private agentName?;
|
|
30
40
|
private cachedCard;
|
|
41
|
+
private cachedCardUrl;
|
|
31
42
|
constructor(baseUrl: string, config?: A2AClientConfig);
|
|
43
|
+
/**
|
|
44
|
+
* The Agent Card: from `/.well-known/agent-card.json` at the base URL (or the pre-v0.3
|
|
45
|
+
* `/.well-known/agent.json` when the server has no v0.3 card), or `agentCardPath`. With
|
|
46
|
+
* `agentName` it is the card of that agent on a Cogitator server hosting several.
|
|
47
|
+
*/
|
|
32
48
|
agentCard(): Promise<AgentCard>;
|
|
33
49
|
refreshAgentCard(): Promise<AgentCard>;
|
|
34
|
-
|
|
50
|
+
/** Send a message; the server answers with the task it started or continued, or a direct reply. */
|
|
51
|
+
sendMessage(message: A2AMessageInput, config?: MessageSendConfiguration, options?: A2ARequestOptions): Promise<SendMessageResult>;
|
|
35
52
|
/**
|
|
36
|
-
* Stream a message
|
|
53
|
+
* Stream a message: the task, then its status and artifact updates, until the final status
|
|
54
|
+
* update (or a direct reply message). The client timeout applies to the wait for the response
|
|
37
55
|
* and to the idle time between events, not to the total stream duration.
|
|
38
56
|
*/
|
|
39
|
-
sendMessageStream(message:
|
|
57
|
+
sendMessageStream(message: A2AMessageInput, config?: MessageSendConfiguration, options?: A2ARequestOptions): AsyncGenerator<A2AStreamEvent>;
|
|
58
|
+
/** Reconnect to the stream of a task: the task as it is now, then its updates until the final one. */
|
|
59
|
+
resubscribeTask(taskId: string, options?: A2ARequestOptions): AsyncGenerator<A2AStreamEvent>;
|
|
40
60
|
getTask(taskId: string, historyLength?: number): Promise<A2ATask>;
|
|
41
61
|
cancelTask(taskId: string): Promise<A2ATask>;
|
|
42
|
-
|
|
43
|
-
|
|
62
|
+
/** Answer a task that waits on the client (`input-required`) with text. */
|
|
63
|
+
continueTask(taskId: string, text: string, config?: MessageSendConfiguration, options?: A2ARequestOptions): Promise<SendMessageResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Answer a task that waits in `input-required` for tool approvals (see
|
|
66
|
+
* `readToolApprovalRequest`): the remote run goes on with these decisions.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* const waiting = readToolApprovalRequest(task);
|
|
71
|
+
* if (waiting) await client.answerApprovals(task.id, { defaultDecision: { approved: true } });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
answerApprovals(taskId: string, response: ToolApprovalResponse, config?: MessageSendConfiguration, options?: A2ARequestOptions): Promise<SendMessageResult>;
|
|
75
|
+
/** The caller's tasks on a Cogitator server (the `tasks/list` extension method). */
|
|
76
|
+
listTasks(filter?: Omit<TaskFilter, 'visibleTo'>): Promise<A2ATask[]>;
|
|
44
77
|
asTool(options?: A2AToolOptions): Tool<{
|
|
45
78
|
task: string;
|
|
46
79
|
}, A2AToolResult>;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
80
|
+
/** Register a webhook the server POSTs the task to on every status change. */
|
|
81
|
+
setPushNotificationConfig(taskId: string, config: PushNotificationConfig): Promise<TaskPushNotificationConfig>;
|
|
82
|
+
getPushNotificationConfig(taskId: string, configId?: string): Promise<TaskPushNotificationConfig>;
|
|
83
|
+
listPushNotificationConfigs(taskId: string): Promise<TaskPushNotificationConfig[]>;
|
|
84
|
+
deletePushNotificationConfig(taskId: string, configId: string): Promise<void>;
|
|
85
|
+
/** Whether the Agent Card carries an HS256 signature made with this shared secret. */
|
|
51
86
|
verifyAgentCard(secret: string): Promise<boolean>;
|
|
52
|
-
|
|
87
|
+
/** The authenticated extended Agent Card (`agent/getAuthenticatedExtendedCard`). */
|
|
88
|
+
extendedAgentCard(): Promise<AgentCard>;
|
|
53
89
|
asToolFromCard(card: AgentCard, options?: A2AToolOptions): Tool<{
|
|
54
90
|
task: string;
|
|
55
91
|
}, A2AToolResult>;
|
|
92
|
+
private cacheCard;
|
|
93
|
+
private fetchDefaultCard;
|
|
94
|
+
/** The card a response holds; a pre-v0.3 Cogitator server lists several agents in an array. */
|
|
95
|
+
private pickCard;
|
|
96
|
+
private fetchCard;
|
|
97
|
+
private resolveUrl;
|
|
98
|
+
/** The JSON-RPC endpoint: `rpcPath` at the base URL, or the `url` of the Agent Card. */
|
|
99
|
+
private endpoint;
|
|
56
100
|
private rpc;
|
|
101
|
+
private stream;
|
|
57
102
|
/**
|
|
58
103
|
* Surface a JSON-RPC error body when the server sent one with a non-2xx status
|
|
59
104
|
*/
|
|
60
105
|
private throwHttpError;
|
|
61
|
-
private httpGet;
|
|
62
106
|
private parseSSEStream;
|
|
63
107
|
private extractSseData;
|
|
64
|
-
private extractOutputFromTask;
|
|
65
|
-
private withAgent;
|
|
66
108
|
private generateRequestId;
|
|
67
109
|
}
|
|
68
110
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|