@agenticprimitives/a2a 0.0.0-alpha.2 → 0.0.0-alpha.20
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/CLAUDE.md +58 -21
- package/bin/a2a-conform.mjs +17 -0
- package/dist/agent.d.ts +171 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +346 -62
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +72 -9
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +62 -19
- package/dist/auth.js.map +1 -1
- package/dist/authority-extension.d.ts +58 -0
- package/dist/authority-extension.d.ts.map +1 -0
- package/dist/authority-extension.js +70 -0
- package/dist/authority-extension.js.map +1 -0
- package/dist/card-audience.d.ts +87 -0
- package/dist/card-audience.d.ts.map +1 -0
- package/dist/card-audience.js +135 -0
- package/dist/card-audience.js.map +1 -0
- package/dist/client.d.ts +20 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +69 -14
- package/dist/client.js.map +1 -1
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +10 -2
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/conform/index.d.ts +36 -0
- package/dist/conform/index.d.ts.map +1 -0
- package/dist/conform/index.js +232 -0
- package/dist/conform/index.js.map +1 -0
- package/dist/discovery.d.ts +4 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +6 -2
- package/dist/discovery.js.map +1 -1
- package/dist/engagement.d.ts +37 -0
- package/dist/engagement.d.ts.map +1 -0
- package/dist/engagement.js +83 -0
- package/dist/engagement.js.map +1 -0
- package/dist/grant.d.ts +4 -2
- package/dist/grant.d.ts.map +1 -1
- package/dist/grant.js +21 -13
- package/dist/grant.js.map +1 -1
- package/dist/handoff.d.ts +42 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +28 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +24 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/payment-gate.d.ts +88 -0
- package/dist/payment-gate.d.ts.map +1 -0
- package/dist/payment-gate.js +47 -0
- package/dist/payment-gate.js.map +1 -0
- package/dist/runtime.d.ts +13 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +35 -10
- package/dist/runtime.js.map +1 -1
- package/dist/session-wire.d.ts +69 -0
- package/dist/session-wire.d.ts.map +1 -0
- package/dist/session-wire.js +170 -0
- package/dist/session-wire.js.map +1 -0
- package/dist/skill-handler.d.ts +26 -1
- package/dist/skill-handler.d.ts.map +1 -1
- package/dist/skill-handler.js.map +1 -1
- package/dist/standard/caller.d.ts +86 -0
- package/dist/standard/caller.d.ts.map +1 -0
- package/dist/standard/caller.js +159 -0
- package/dist/standard/caller.js.map +1 -0
- package/dist/standard/client.d.ts +50 -0
- package/dist/standard/client.d.ts.map +1 -0
- package/dist/standard/client.js +86 -0
- package/dist/standard/client.js.map +1 -0
- package/dist/standard/delegated.d.ts +119 -0
- package/dist/standard/delegated.d.ts.map +1 -0
- package/dist/standard/delegated.js +168 -0
- package/dist/standard/delegated.js.map +1 -0
- package/dist/standard/errors.d.ts +31 -0
- package/dist/standard/errors.d.ts.map +1 -0
- package/dist/standard/errors.js +75 -0
- package/dist/standard/errors.js.map +1 -0
- package/dist/standard/from-agent.d.ts +38 -0
- package/dist/standard/from-agent.d.ts.map +1 -0
- package/dist/standard/from-agent.js +109 -0
- package/dist/standard/from-agent.js.map +1 -0
- package/dist/standard/index.d.ts +9 -0
- package/dist/standard/index.d.ts.map +1 -0
- package/dist/standard/index.js +13 -0
- package/dist/standard/index.js.map +1 -0
- package/dist/standard/mount.d.ts +91 -0
- package/dist/standard/mount.d.ts.map +1 -0
- package/dist/standard/mount.js +181 -0
- package/dist/standard/mount.js.map +1 -0
- package/dist/standard/server.d.ts +105 -0
- package/dist/standard/server.d.ts.map +1 -0
- package/dist/standard/server.js +454 -0
- package/dist/standard/server.js.map +1 -0
- package/dist/standard/types.d.ts +186 -0
- package/dist/standard/types.d.ts.map +1 -0
- package/dist/standard/types.js +14 -0
- package/dist/standard/types.js.map +1 -0
- package/dist/subject-ask.d.ts +96 -0
- package/dist/subject-ask.d.ts.map +1 -0
- package/dist/subject-ask.js +45 -0
- package/dist/subject-ask.js.map +1 -0
- package/dist/subject-hop.d.ts +75 -0
- package/dist/subject-hop.d.ts.map +1 -0
- package/dist/subject-hop.js +170 -0
- package/dist/subject-hop.js.map +1 -0
- package/dist/task-store.d.ts +9 -3
- package/dist/task-store.d.ts.map +1 -1
- package/dist/task-store.js +12 -6
- package/dist/task-store.js.map +1 -1
- package/dist/wire-verify.d.ts +35 -0
- package/dist/wire-verify.d.ts.map +1 -0
- package/dist/wire-verify.js +51 -0
- package/dist/wire-verify.js.map +1 -0
- package/package.json +20 -6
- package/dist/jsonrpc.d.ts +0 -25
- package/dist/jsonrpc.d.ts.map +0 -1
- package/dist/jsonrpc.js +0 -52
- package/dist/jsonrpc.js.map +0 -1
package/dist/agent.js
CHANGED
|
@@ -7,17 +7,157 @@ import { hashDelegation } from '@agenticprimitives/delegation';
|
|
|
7
7
|
import { isTerminal } from './types.js';
|
|
8
8
|
import { newTaskRecord, applyTransition, dispatchTask } from './runtime.js';
|
|
9
9
|
import { buildSkillRegistry } from './skill-handler.js';
|
|
10
|
-
import { authorizeA2aMessage } from './auth.js';
|
|
10
|
+
import { authorizeA2aMessage, hashA2aMessage, hashA2aTaskRequest, hashPushConfigParams, hashArtifactParams } from './auth.js';
|
|
11
|
+
// Spec 303 W3 — the A2A verification-receipt mint point. The primitive (commitment
|
|
12
|
+
// profile, canonical receiptHash, injected signing) lives in the leaf package; the
|
|
13
|
+
// agent only assembles what the auth gate already computed.
|
|
14
|
+
import { mintVerificationReceipt, } from '@agenticprimitives/verification-receipts';
|
|
11
15
|
import { deliverPush } from './push.js';
|
|
16
|
+
import { apAuthorityExtension } from './authority-extension.js';
|
|
17
|
+
import { x402AgentCardExtension } from './payment-gate.js';
|
|
18
|
+
const EXPOSURE_RANK = {
|
|
19
|
+
public: 0,
|
|
20
|
+
authenticated: 1,
|
|
21
|
+
private: 2,
|
|
22
|
+
'service-only': 3,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Card visibility for one skill. Fail-closed: `service-only` is never carded at any audience, and a
|
|
26
|
+
* `private` skill with no matching requester is visible to nobody.
|
|
27
|
+
*
|
|
28
|
+
* This is DISCLOSURE, not authorization — hiding a skill does not protect it, and showing one does
|
|
29
|
+
* not permit it. The delegation + policy gates run regardless (ADR-0056).
|
|
30
|
+
*/
|
|
31
|
+
function isSkillVisible(h, audience, requester) {
|
|
32
|
+
const exposure = h.exposure ?? 'public';
|
|
33
|
+
const ceiling = EXPOSURE_RANK[audience];
|
|
34
|
+
if (EXPOSURE_RANK[exposure] > ceiling)
|
|
35
|
+
return false;
|
|
36
|
+
if (exposure === 'private') {
|
|
37
|
+
return requester !== undefined && (h.audience?.includes(requester) ?? false);
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
12
41
|
const RPC_INVALID_REQUEST = -32600;
|
|
13
42
|
const RPC_UNAUTHORIZED = -32001;
|
|
14
43
|
const RPC_NOT_FOUND = -32004;
|
|
44
|
+
const RPC_BUDGET_EXHAUSTED = -32005;
|
|
15
45
|
const eq = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
16
46
|
export function createA2aAgent(config) {
|
|
17
|
-
|
|
47
|
+
// A2A-5 (seam audit): fail closed at construction — a PRICED handler (declares `payment`) with no
|
|
48
|
+
// `paymentGate` wired would otherwise run for free (the gate is a no-op without a rail). Force the
|
|
49
|
+
// operator to wire the gate rather than silently serve priced skills unpaid.
|
|
50
|
+
const pricedWithoutGate = config.handlers.filter((h) => h.payment).map((h) => h.skill);
|
|
51
|
+
if (pricedWithoutGate.length > 0 && !config.paymentGate) {
|
|
52
|
+
throw new Error(`[a2a] priced skill(s) [${pricedWithoutGate.join(', ')}] registered without a paymentGate — wire ` +
|
|
53
|
+
`config.paymentGate (they would otherwise execute for free), or remove the skill's payment (A2A-5)`);
|
|
54
|
+
}
|
|
55
|
+
const staticRegistry = buildSkillRegistry(config.handlers);
|
|
56
|
+
// Static first, resolver second — a registered handler always wins, so the seam cannot be used to
|
|
57
|
+
// override a skill the integrator declared.
|
|
58
|
+
const registry = {
|
|
59
|
+
get: (skill) => staticRegistry.get(skill) ?? config.resolveHandler?.(skill),
|
|
60
|
+
};
|
|
18
61
|
const now = () => (config.now ? config.now() : Date.now());
|
|
62
|
+
// NEW-A2A-3: a cryptographically-random 32-byte task id when the integrator doesn't inject one. The
|
|
63
|
+
// previous fallback was a CONSTANT (0x00..01), so every task collided / could be poisoned.
|
|
64
|
+
const defaultTaskId = () => {
|
|
65
|
+
const b = new Uint8Array(32);
|
|
66
|
+
globalThis.crypto.getRandomValues(b);
|
|
67
|
+
return `0x${Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('')}`;
|
|
68
|
+
};
|
|
19
69
|
let artCounter = 0;
|
|
20
70
|
const newArtifactId = () => config.newArtifactId ? config.newArtifactId() : (`0x${(++artCounter).toString(16).padStart(64, '0')}`);
|
|
71
|
+
// AUDIT NEW-A2A-2 — the caller of a read/control op MUST prove control of `caller` by signing the
|
|
72
|
+
// request digest. Fail-closed: missing or invalid signature → UNAUTHORIZED, before any party check.
|
|
73
|
+
async function verifyCaller(method, taskId, caller, signature, paramsHash, issuedAt) {
|
|
74
|
+
if (!signature || signature === '0x')
|
|
75
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature required' };
|
|
76
|
+
// N-2: when the operator configures a freshness window, the caller MUST stamp `issuedAt` and it must be
|
|
77
|
+
// recent — bounding replay of a captured read/control signature to that window instead of the life of
|
|
78
|
+
// the task. Fail-closed: window configured but no/stale/future issuedAt → reject.
|
|
79
|
+
if (config.callerSigMaxAgeSec !== undefined) {
|
|
80
|
+
const nowSec = Math.floor(now() / 1000);
|
|
81
|
+
if (typeof issuedAt !== 'number' || issuedAt <= 0)
|
|
82
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt required (freshness)' };
|
|
83
|
+
if (issuedAt > nowSec + 30)
|
|
84
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt in the future' };
|
|
85
|
+
if (nowSec - issuedAt > config.callerSigMaxAgeSec)
|
|
86
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature expired' };
|
|
87
|
+
}
|
|
88
|
+
// N-1: `paramsHash` binds method-specific params (e.g. the push url/token) into the signed digest so a
|
|
89
|
+
// captured signature can't be replayed with swapped parameters. The agent re-derives it server-side.
|
|
90
|
+
const digest = hashA2aTaskRequest({ method, taskId, agentSA: config.agentSA, chainId: config.chainId, paramsHash, issuedAt });
|
|
91
|
+
let valid = false;
|
|
92
|
+
try {
|
|
93
|
+
valid = await config.checks.verifyCallerSignature(caller, digest, signature);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
valid = false;
|
|
97
|
+
}
|
|
98
|
+
if (!valid)
|
|
99
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature invalid' };
|
|
100
|
+
return { ok: true, result: true };
|
|
101
|
+
}
|
|
102
|
+
/** The party test + the transition, shared by the signed and the transport-authenticated entries. */
|
|
103
|
+
async function cancelForParty(rec, caller) {
|
|
104
|
+
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
105
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
106
|
+
}
|
|
107
|
+
const t = applyTransition(rec, 'canceled', { now: now() });
|
|
108
|
+
if (!t.ok)
|
|
109
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
110
|
+
await config.taskStore.put(t.record);
|
|
111
|
+
return { ok: true, result: { taskId: rec.task.taskId, state: 'canceled' } };
|
|
112
|
+
}
|
|
113
|
+
// ─── Spec 303 W3 — verification-receipt mint (message/send + resubmit terminals) ───
|
|
114
|
+
// Assembles ONLY values the auth gate already computed: the signed bodyHash IS the
|
|
115
|
+
// exact-arguments binding, hashA2aMessage IS the invocation binding, and the real
|
|
116
|
+
// delegation EIP-712 hash is available here (unlike the MCP path). The coarse public
|
|
117
|
+
// reason mirrors the rpc message the caller sees (the raw auth reason is already
|
|
118
|
+
// suppressed, NEW-A2A-1). Fail posture per receipts.failClosed (spec 291 §5).
|
|
119
|
+
const mintReceipt = async (input) => {
|
|
120
|
+
const rc = config.receipts;
|
|
121
|
+
if (!rc)
|
|
122
|
+
return undefined;
|
|
123
|
+
try {
|
|
124
|
+
const ev = rc.statusEvidence ? await rc.statusEvidence() : undefined;
|
|
125
|
+
const minted = await mintVerificationReceipt({
|
|
126
|
+
verifier: rc.verifier,
|
|
127
|
+
decision: input.decision,
|
|
128
|
+
reasonCode: input.reasonCode,
|
|
129
|
+
principal: input.principal ?? 'unknown',
|
|
130
|
+
toolName: `a2a.${input.message.skill}`,
|
|
131
|
+
argsHash: input.message.bodyHash,
|
|
132
|
+
delegationHash: hashDelegation(input.delegation, config.chainId, config.delegationManager),
|
|
133
|
+
invocationProofHash: hashA2aMessage(input.message),
|
|
134
|
+
scopeDecision: input.scopeDecision,
|
|
135
|
+
status: {
|
|
136
|
+
revocation: input.decision === 'allow' ? 'active' : 'unavailable',
|
|
137
|
+
chainId: config.chainId,
|
|
138
|
+
blockNumber: ev?.blockNumber ?? '0',
|
|
139
|
+
blockHash: ev?.blockHash ?? `0x${'0'.repeat(64)}`,
|
|
140
|
+
},
|
|
141
|
+
verifiedAt: new Date(now()).toISOString(),
|
|
142
|
+
verifierPolicyVersion: rc.policyVersion,
|
|
143
|
+
correlationId: input.message.messageId,
|
|
144
|
+
receiptKey: rc.receiptKey,
|
|
145
|
+
}, rc.sign ? { sign: rc.sign } : undefined);
|
|
146
|
+
await rc.onReceipt(minted, {
|
|
147
|
+
outcome: input.decision,
|
|
148
|
+
messageId: input.message.messageId,
|
|
149
|
+
skill: input.message.skill,
|
|
150
|
+
taskId: input.taskId,
|
|
151
|
+
});
|
|
152
|
+
return minted.receipt;
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
if (rc.failClosed)
|
|
156
|
+
throw e;
|
|
157
|
+
console.error('[a2a] receipt mint failed (fail-soft):', e);
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
21
161
|
return {
|
|
22
162
|
async messageSend(params) {
|
|
23
163
|
const auth = await authorizeA2aMessage({
|
|
@@ -30,36 +170,82 @@ export function createA2aAgent(config) {
|
|
|
30
170
|
checks: config.checks,
|
|
31
171
|
store: config.taskStore,
|
|
32
172
|
now: now(),
|
|
173
|
+
scopeCovers: config.scopeCovers,
|
|
33
174
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
175
|
+
// NEW-A2A-1: do NOT surface the raw authorization reason — it's an oracle (reveals delegation
|
|
176
|
+
// revocation / party / method-scope state to an unauthorized caller). Return a generic denial.
|
|
177
|
+
if (!auth.ok) {
|
|
178
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation });
|
|
179
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' };
|
|
180
|
+
}
|
|
181
|
+
// Spec 290 §6 Stage-3 — reserve the per-SA hard budget AFTER authority (victim-bucket rule §9:
|
|
182
|
+
// verified-identity buckets only post-verify), keyed by the verified principal (= sponsorAgent).
|
|
183
|
+
// Idempotency = the single-use messageId. COMMIT only after the task is durably created; RELEASE on
|
|
184
|
+
// any pre-creation failure so a denied/failed submit never burns budget (the §3 A2A pattern).
|
|
185
|
+
let reservation;
|
|
186
|
+
if (config.budget) {
|
|
187
|
+
reservation = await config.budget.reserve({
|
|
188
|
+
sponsorAgent: auth.principal,
|
|
189
|
+
capabilityId: `a2a.${params.message.skill}`,
|
|
190
|
+
idempotencyKey: params.message.messageId,
|
|
191
|
+
});
|
|
192
|
+
if (!reservation.allowed) {
|
|
193
|
+
await auth.messageIdReservation.release(); // spec 290 §3 — don't burn the nonce on a budget reject
|
|
194
|
+
// Scope DID pass (the auth gate evaluated targets/skill/window) — the budget denied.
|
|
195
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'budget-exhausted', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
|
|
196
|
+
return { ok: false, code: RPC_BUDGET_EXHAUSTED, message: 'budget exhausted' };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Spec 290 §3 — release BOTH the in-flight message-id reservation AND the budget on any pre-acceptance
|
|
200
|
+
// failure: a rejected/failed submit must consume neither the single-use nonce nor the budget.
|
|
201
|
+
const release = async () => {
|
|
202
|
+
await auth.messageIdReservation.release();
|
|
203
|
+
if (config.budget && reservation?.reservationId)
|
|
204
|
+
await config.budget.release(reservation.reservationId);
|
|
205
|
+
};
|
|
206
|
+
try {
|
|
207
|
+
// FR-2.2 — body integrity + vault residency: the signed bodyHash must match the input; persist the
|
|
208
|
+
// input to THIS agent's vault namespace; the message keeps only the ref + hash.
|
|
209
|
+
if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
|
|
210
|
+
await release();
|
|
211
|
+
// The presented input diverges from the SIGNED bodyHash — the A2A form of out-of-scope args.
|
|
212
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
|
|
213
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
|
|
214
|
+
}
|
|
215
|
+
const bodyRef = await config.vault.write({
|
|
216
|
+
owner: config.agentSA,
|
|
217
|
+
recordType: `a2a:msg:${params.message.messageId}`,
|
|
218
|
+
data: params.input,
|
|
219
|
+
});
|
|
220
|
+
const message = { ...params.message, bodyRef };
|
|
221
|
+
const taskId = config.newTaskId ? config.newTaskId() : defaultTaskId();
|
|
222
|
+
const record = newTaskRecord({
|
|
223
|
+
taskId,
|
|
224
|
+
principal: auth.principal,
|
|
225
|
+
assignee: config.agentSA,
|
|
226
|
+
sender: params.requester,
|
|
227
|
+
skill: message.skill,
|
|
228
|
+
delegation: params.delegation,
|
|
229
|
+
inbound: message,
|
|
230
|
+
permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
|
|
231
|
+
inputHash: message.bodyHash,
|
|
232
|
+
now: now(),
|
|
233
|
+
});
|
|
234
|
+
const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
|
|
235
|
+
await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
|
|
236
|
+
// Durably created → COMMIT the single-use message-id (permanently consumed) + charge the budget
|
|
237
|
+
// (the over-estimate, if any, is freed). Only now is the authorization truly spent (spec 290 §3).
|
|
238
|
+
await auth.messageIdReservation.commit();
|
|
239
|
+
if (config.budget && reservation?.reservationId)
|
|
240
|
+
await config.budget.commit(reservation.reservationId);
|
|
241
|
+
// Spec 303 W3 — the accept receipt rides the result so the SENDER retains it.
|
|
242
|
+
const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message, delegation: params.delegation, taskId });
|
|
243
|
+
return { ok: true, result: { taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } }; // FR-2.3 — return immediately
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
await release();
|
|
247
|
+
throw e;
|
|
40
248
|
}
|
|
41
|
-
const bodyRef = await config.vault.write({
|
|
42
|
-
owner: config.agentSA,
|
|
43
|
-
recordType: `a2a:msg:${params.message.messageId}`,
|
|
44
|
-
data: params.input,
|
|
45
|
-
});
|
|
46
|
-
const message = { ...params.message, bodyRef };
|
|
47
|
-
const taskId = config.newTaskId ? config.newTaskId() : (`0x${'00'.repeat(31)}01`);
|
|
48
|
-
const record = newTaskRecord({
|
|
49
|
-
taskId,
|
|
50
|
-
principal: auth.principal,
|
|
51
|
-
assignee: config.agentSA,
|
|
52
|
-
sender: params.requester,
|
|
53
|
-
skill: message.skill,
|
|
54
|
-
delegation: params.delegation,
|
|
55
|
-
inbound: message,
|
|
56
|
-
permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
|
|
57
|
-
inputHash: message.bodyHash,
|
|
58
|
-
now: now(),
|
|
59
|
-
});
|
|
60
|
-
const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
|
|
61
|
-
await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
|
|
62
|
-
return { ok: true, result: { taskId, state: 'submitted' } }; // FR-2.3 — return immediately
|
|
63
249
|
},
|
|
64
250
|
async resubmit(params) {
|
|
65
251
|
const rec = await config.taskStore.get(params.taskId);
|
|
@@ -76,55 +262,107 @@ export function createA2aAgent(config) {
|
|
|
76
262
|
const auth = await authorizeA2aMessage({
|
|
77
263
|
delegation: params.delegation, requester: params.requester, message: params.message,
|
|
78
264
|
thisAgentSA: config.agentSA, skill: rec.skill, enforcers: config.enforcers,
|
|
79
|
-
checks: config.checks, store: config.taskStore, now: now(),
|
|
265
|
+
checks: config.checks, store: config.taskStore, now: now(), scopeCovers: config.scopeCovers,
|
|
80
266
|
});
|
|
81
|
-
if (!auth.ok)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
267
|
+
if (!auth.ok) {
|
|
268
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
269
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' }; // NEW-A2A-1: generic denial
|
|
270
|
+
}
|
|
271
|
+
// Spec 290 §3 — the resubmit's message-id is now reserved IN-FLIGHT; commit only after the durable
|
|
272
|
+
// put, release on any pre-acceptance rejection so a failed resubmit never burns the fresh nonce.
|
|
273
|
+
try {
|
|
274
|
+
if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
|
|
275
|
+
await auth.messageIdReservation.release();
|
|
276
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
277
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
|
|
278
|
+
}
|
|
279
|
+
const bodyRef = await config.vault.write({
|
|
280
|
+
owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
|
|
281
|
+
});
|
|
282
|
+
const t = applyTransition(rec, 'submitted', { now: now() });
|
|
283
|
+
if (!t.ok) {
|
|
284
|
+
await auth.messageIdReservation.release();
|
|
285
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
286
|
+
}
|
|
287
|
+
// Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
|
|
288
|
+
const updated = {
|
|
289
|
+
...t.record, delegation: params.delegation,
|
|
290
|
+
task: { ...t.record.task, inputHash: params.message.bodyHash },
|
|
291
|
+
inbound: [...t.record.inbound, { ...params.message, bodyRef }],
|
|
292
|
+
};
|
|
293
|
+
await config.taskStore.put(updated);
|
|
294
|
+
await auth.messageIdReservation.commit(); // durably accepted → the resubmit nonce is consumed
|
|
295
|
+
const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
296
|
+
return { ok: true, result: { taskId: params.taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } };
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
await auth.messageIdReservation.release();
|
|
300
|
+
throw e;
|
|
85
301
|
}
|
|
86
|
-
const bodyRef = await config.vault.write({
|
|
87
|
-
owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
|
|
88
|
-
});
|
|
89
|
-
const t = applyTransition(rec, 'submitted', { now: now() });
|
|
90
|
-
if (!t.ok)
|
|
91
|
-
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
92
|
-
// Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
|
|
93
|
-
const updated = {
|
|
94
|
-
...t.record, delegation: params.delegation,
|
|
95
|
-
task: { ...t.record.task, inputHash: params.message.bodyHash },
|
|
96
|
-
inbound: [...t.record.inbound, { ...params.message, bodyRef }],
|
|
97
|
-
};
|
|
98
|
-
await config.taskStore.put(updated);
|
|
99
|
-
return { ok: true, result: { taskId: params.taskId, state: 'submitted' } };
|
|
100
302
|
},
|
|
101
|
-
async tasksGet({ taskId, caller }) {
|
|
303
|
+
async tasksGet({ taskId, caller, signature, issuedAt }) {
|
|
102
304
|
const rec = await config.taskStore.get(taskId);
|
|
103
305
|
if (!rec)
|
|
104
306
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
307
|
+
const authd = await verifyCaller('tasks/get', taskId, caller, signature, undefined, issuedAt);
|
|
308
|
+
if (!authd.ok)
|
|
309
|
+
return authd;
|
|
105
310
|
// Caller must be the sender or the assignee (FR-2 tasks/get auth).
|
|
106
311
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
107
312
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
108
313
|
}
|
|
109
314
|
return { ok: true, result: { ...rec.task, error: rec.error, artifactRefs: rec.artifacts.map((a) => a.bodyRef) } };
|
|
110
315
|
},
|
|
111
|
-
async
|
|
316
|
+
async tasksArtifact({ taskId, artifactId, caller, signature, issuedAt }) {
|
|
112
317
|
const rec = await config.taskStore.get(taskId);
|
|
113
318
|
if (!rec)
|
|
114
319
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
320
|
+
const authd = await verifyCaller('tasks/artifact', taskId, caller, signature, hashArtifactParams(artifactId), issuedAt);
|
|
321
|
+
if (!authd.ok)
|
|
322
|
+
return authd;
|
|
323
|
+
// Identical party test to tasks/get — this returns what a party could already see the ref of.
|
|
115
324
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
116
325
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
117
326
|
}
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
327
|
+
const artifact = rec.artifacts.find((a) => eq(a.artifactId, artifactId));
|
|
328
|
+
// An artifact of ANOTHER task and one that does not exist read the same: a party to task A
|
|
329
|
+
// must not learn which artifact ids exist on task B.
|
|
330
|
+
if (!artifact)
|
|
331
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown artifact' };
|
|
332
|
+
const body = await config.vault.read(artifact.bodyRef);
|
|
333
|
+
return { ok: true, result: { artifactId: artifact.artifactId, artifactKind: artifact.artifactKind, bodyRef: artifact.bodyRef, body } };
|
|
334
|
+
},
|
|
335
|
+
async tasksCancel({ taskId, caller, signature, issuedAt }) {
|
|
336
|
+
const rec = await config.taskStore.get(taskId);
|
|
337
|
+
if (!rec)
|
|
338
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
339
|
+
const authd = await verifyCaller('tasks/cancel', taskId, caller, signature, undefined, issuedAt);
|
|
340
|
+
if (!authd.ok)
|
|
341
|
+
return authd;
|
|
342
|
+
return cancelForParty(rec, caller);
|
|
123
343
|
},
|
|
124
|
-
|
|
344
|
+
/**
|
|
345
|
+
* Cancel for a caller the TRANSPORT already authenticated (spec 372 S4). The party test is unchanged —
|
|
346
|
+
* the sender or the assignee, nobody else. What is absent is the per-request signature, and it is
|
|
347
|
+
* absent because it was already made: on the A2A 1.0 wire the caller proves who they are in the
|
|
348
|
+
* `Authorization` header, over the whole request, before any method runs. Passing an unverified address
|
|
349
|
+
* here would be an authority hole, so this is reachable only from a surface that authenticates.
|
|
350
|
+
*/
|
|
351
|
+
async tasksCancelAs({ taskId, caller }) {
|
|
125
352
|
const rec = await config.taskStore.get(taskId);
|
|
126
353
|
if (!rec)
|
|
127
354
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
355
|
+
return cancelForParty(rec, caller);
|
|
356
|
+
},
|
|
357
|
+
async pushConfigSet({ taskId, caller, signature, url, token, issuedAt }) {
|
|
358
|
+
const rec = await config.taskStore.get(taskId);
|
|
359
|
+
if (!rec)
|
|
360
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
361
|
+
// N-1: bind the presented url + token into the signed digest so the signature authorizes THIS target
|
|
362
|
+
// only — a captured set-signature can't be replayed with an attacker url to hijack the push envelope.
|
|
363
|
+
const authd = await verifyCaller('tasks/pushNotificationConfig/set', taskId, caller, signature, hashPushConfigParams(url, token), issuedAt);
|
|
364
|
+
if (!authd.ok)
|
|
365
|
+
return authd;
|
|
128
366
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
129
367
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
130
368
|
}
|
|
@@ -135,10 +373,21 @@ export function createA2aAgent(config) {
|
|
|
135
373
|
async processDue() {
|
|
136
374
|
const events = [];
|
|
137
375
|
const due = await config.taskStore.listDue(now());
|
|
376
|
+
// DIAGNOSTIC: is the task even considered? A task accepted by message/send and never picked up
|
|
377
|
+
// here is indistinguishable, from outside, from one that ran and produced nothing.
|
|
378
|
+
if (due.length)
|
|
379
|
+
console.log('[a2a processDue] due:', due.length, 'agent:', config.agentSA);
|
|
138
380
|
for (const taskId of due) {
|
|
139
381
|
const rec = await config.taskStore.get(taskId);
|
|
140
|
-
if (!rec
|
|
382
|
+
if (!rec) {
|
|
383
|
+
console.log('[a2a processDue] no record for', taskId);
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (rec.task.state !== 'submitted') {
|
|
387
|
+
console.log('[a2a processDue] skip', rec.skill, rec.task.state);
|
|
141
388
|
continue;
|
|
389
|
+
}
|
|
390
|
+
console.log('[a2a processDue] dispatching', rec.skill, taskId);
|
|
142
391
|
// Per-task context: read the input from the vault, persist emitted artifact bodies to the
|
|
143
392
|
// assignee's vault (A2A-INV-04), expose vault/mcp.
|
|
144
393
|
const captured = [];
|
|
@@ -160,13 +409,14 @@ export function createA2aAgent(config) {
|
|
|
160
409
|
disclosurePolicy: a.disclosurePolicy ?? 'private',
|
|
161
410
|
bodyRef,
|
|
162
411
|
createdAt: now(),
|
|
412
|
+
...(a.metadata ? { metadata: a.metadata } : {}),
|
|
163
413
|
});
|
|
164
414
|
return artifactId;
|
|
165
415
|
},
|
|
166
416
|
});
|
|
167
417
|
const input = await config.vault.read(rec.inbound[rec.inbound.length - 1].bodyRef);
|
|
168
418
|
const ctxBase = makeContext(rec);
|
|
169
|
-
const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } :
|
|
419
|
+
const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), { ...(config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } : {}), paymentGate: config.paymentGate });
|
|
170
420
|
const merged = { ...processed, artifacts: [...processed.artifacts, ...captured] };
|
|
171
421
|
await config.taskStore.put(merged);
|
|
172
422
|
events.push(...evs);
|
|
@@ -177,13 +427,47 @@ export function createA2aAgent(config) {
|
|
|
177
427
|
}
|
|
178
428
|
return events;
|
|
179
429
|
},
|
|
180
|
-
agentCard() {
|
|
430
|
+
agentCard(forAudience) {
|
|
431
|
+
// Default to the PUBLIC card. A caller that has not stated an audience has not authenticated
|
|
432
|
+
// anyone, so it must not receive extended content (spec 338 §8).
|
|
433
|
+
const { audience, requester } = forAudience ?? { audience: 'public' };
|
|
434
|
+
const visible = config.handlers.filter((h) => isSkillVisible(h, audience, requester));
|
|
435
|
+
// Only priced skills THIS audience can see may advertise the extension — otherwise the public
|
|
436
|
+
// card leaks the existence of a priced private skill through its capabilities block.
|
|
437
|
+
const priced = visible.some((h) => h.payment);
|
|
438
|
+
// The authority extension is the ONE that is NOT audience-conditional. x402 is hidden from an
|
|
439
|
+
// audience that cannot see the priced skill, because its presence would leak that the skill
|
|
440
|
+
// exists. Authority leaks nothing — it describes how anyone would authenticate to whatever they
|
|
441
|
+
// can already see — and hiding it from the public card would defeat its entire purpose, which is
|
|
442
|
+
// letting an unknown peer discover how to become authorized (spec 341 §2 exit criterion).
|
|
443
|
+
const authority = config.authority ? [apAuthorityExtension(config.authority)] : [];
|
|
181
444
|
return {
|
|
182
445
|
name: config.agentSA,
|
|
183
446
|
url: `/api/a2a`,
|
|
184
447
|
version: '0.1.0',
|
|
185
|
-
|
|
186
|
-
|
|
448
|
+
// ADR-0059 — the Card MUST NOT misdescribe the agent. These were hard-coded `true`, which meant
|
|
449
|
+
// an agent with push DISABLED (`signTerminal`/`pushSender` omitted — the documented way to turn
|
|
450
|
+
// it off) still advertised `pushNotifications: true`. A peer would register a webhook against
|
|
451
|
+
// an agent that can never call it, and nothing would report the mismatch: the registration
|
|
452
|
+
// succeeds, the callback simply never arrives.
|
|
453
|
+
//
|
|
454
|
+
// Push is DERIVED because it is knowable here. Streaming is DECLARED because it is not — the
|
|
455
|
+
// SSE transport is mounted by the embedding worker — and it defaults to false, because
|
|
456
|
+
// over-claiming a capability costs more than under-claiming one.
|
|
457
|
+
capabilities: {
|
|
458
|
+
streaming: config.declaredCapabilities?.streaming ?? false,
|
|
459
|
+
pushNotifications: Boolean(config.signTerminal && config.pushSender),
|
|
460
|
+
stateTransitionHistory: config.declaredCapabilities?.stateTransitionHistory ?? true,
|
|
461
|
+
...(authority.length || priced
|
|
462
|
+
? { extensions: [...authority, ...(priced ? [x402AgentCardExtension()] : [])] }
|
|
463
|
+
: {}),
|
|
464
|
+
},
|
|
465
|
+
skills: [
|
|
466
|
+
...visible.map((h) => (h.payment ? { id: h.skill, payment: h.payment } : { id: h.skill })),
|
|
467
|
+
// Dynamic (method-family) skills are advertised only on non-public cards: the family is
|
|
468
|
+
// resolver-driven and its membership is not statically reviewable for exposure.
|
|
469
|
+
...(audience === 'public' ? [] : (config.dynamicSkills?.() ?? []).map((id) => ({ id }))),
|
|
470
|
+
],
|
|
187
471
|
};
|
|
188
472
|
},
|
|
189
473
|
};
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|