@atrib/agent 0.2.7 → 0.2.8
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 +6 -2
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +34 -29
- package/dist/middleware.js.map +1 -1
- package/dist/transaction.d.ts +8 -37
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +162 -30
- package/dist/transaction.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ Two coverage surfaces define what you get:
|
|
|
26
26
|
|
|
27
27
|
## Coverage Matrix 2: Agent Payment Protocols
|
|
28
28
|
|
|
29
|
-
`@atrib/agent` sits **above** every major agent payment protocol. It does not implement payments, move money, or enforce transactions; it detects transaction events in the response flow of whichever payment protocol your agent is using, and writes a
|
|
29
|
+
`@atrib/agent` sits **above** every major agent payment protocol. It does not implement payments, move money, or enforce transactions; it detects transaction events in the response flow of whichever payment protocol your agent is using, and writes a fallback transaction record when no upstream atrib token already closed the chain. **You do not choose a payment protocol at install time**; the detection logic for all six (ACP, UCP, x402, MPP, AP2, a2a-x402) runs simultaneously and fires on whichever one your tool responses happen to carry. The fallback record carries an agent `signers[]` entry over the atrib transaction bytes. Counterparty signatures and payment-receipt evidence are verifier inputs when the protocol supplies them; [D052](https://github.com/creatornader/atrib/blob/main/DECISIONS.md#d052-cross-attestation-requirement-for-transaction-records)-aware verifiers still flag records that do not meet the required cross-attestation bar.
|
|
30
30
|
|
|
31
31
|
All detection logic lives in `packages/agent/src/transaction.ts` and runs against unit tests for each protocol's published spec.
|
|
32
32
|
|
|
@@ -101,8 +101,12 @@ Payment-Receipt: eyJzdGF0dXMiOiJzdWNjZXNzIn0
|
|
|
101
101
|
|
|
102
102
|
Detected from successful AP2 receipts. Current AP2 uses Checkout and Payment Mandates for authorization, then returns signed Checkout Receipts and Payment Receipts when a verifier accepts or rejects the mandate. atrib treats the successful receipt as the transaction close signal.
|
|
103
103
|
|
|
104
|
+
AP2 receipt JWT signatures remain verifier evidence. They are not counted as transaction `signers[]` unless an AP2 participant also signs the atrib transaction record bytes. See [D098](https://github.com/creatornader/atrib/blob/main/DECISIONS.md#d098-ap2-receipts-stay-external-evidence-for-cross-attestation).
|
|
105
|
+
|
|
104
106
|
Decoded receipt objects are detected when they carry `status: "Success"` and the required AP2 fields. Signed receipt JWTs are detected in AP2 sample result envelopes when the envelope has `status: "success"` plus `payment_receipt` or `checkout_receipt`.
|
|
105
107
|
|
|
108
|
+
For Path 2 fallback transaction records, AP2 detection also returns a protocol-specific `contentId` when stable identity fields are visible. Decoded Payment Receipts take priority, then compact payment receipt JWT hashes, decoded Checkout Receipts, compact checkout receipt JWT hashes, legacy AP2 PaymentMandates, and a2a-x402 transaction receipts. If none are present, middleware falls back to the MCP server URL plus `"checkout"` like before.
|
|
109
|
+
|
|
106
110
|
```json
|
|
107
111
|
{
|
|
108
112
|
"status": "success",
|
|
@@ -139,7 +143,7 @@ The older AP2 v0.1 DataPart shape remains supported as a compatibility fallback:
|
|
|
139
143
|
|
|
140
144
|
#### a2a-x402: Google AP2 crypto path
|
|
141
145
|
|
|
142
|
-
Detected from an A2A `task` whose `status.message.metadata` contains `"x402.payment.status": "payment-completed"` **and** at least one entry in `"x402.payment.receipts"` with `success: true`. A `payment-completed` status with no successful receipt does NOT detect (a failed receipt is not a transaction). Reported as `protocol: 'AP2'` because a2a-x402 is the AP2 crypto path, not a separate protocol.
|
|
146
|
+
Detected from an A2A `task` whose `status.message.metadata` contains `"x402.payment.status": "payment-completed"` **and** at least one entry in `"x402.payment.receipts"` with `success: true`. A `payment-completed` status with no successful receipt does NOT detect (a failed receipt is not a transaction). Reported as `protocol: 'AP2'` because a2a-x402 is the AP2 crypto path, not a separate protocol. When a successful receipt exposes a transaction id, Path 2 uses that receipt identity for the AP2 `contentId`; otherwise it uses the generic AP2 fallback.
|
|
143
147
|
|
|
144
148
|
```json
|
|
145
149
|
{
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEtD,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnC;;;OAGG;IACH,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;QAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,iFAAiF;QACjF,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,IAAI,CAAA;IACP,sDAAsD;IACtD,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAA;IACtE,yDAAyD;IACzD,WAAW,IAAI,OAAO,EAAE,CAAA;IACxB,qCAAqC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEtD,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnC;;;OAGG;IACH,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;QAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,iFAAiF;QACjF,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,GACA,IAAI,CAAA;IACP,sDAAsD;IACtD,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAA;IACtE,yDAAyD;IACzD,WAAW,IAAI,OAAO,EAAE,CAAA;IACxB,qCAAqC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,CAqN1E"}
|
package/dist/middleware.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Wraps an agent or MCP client to automatically manage attribution
|
|
6
6
|
* context across tool calls. Zero ongoing surface area.
|
|
7
7
|
*/
|
|
8
|
-
import { base64urlDecode, base64urlEncode,
|
|
8
|
+
import { base64urlDecode, base64urlEncode, signTransactionRecord, getPublicKey, computeContentId, hexEncode, genesisChainRoot, createSubmissionQueue, } from '@atrib/mcp';
|
|
9
9
|
import { createSession, buildOutboundMeta, accumulateInboundContext } from './session.js';
|
|
10
10
|
import { detectTransaction } from './transaction.js';
|
|
11
11
|
import { initializeSessionPolicy } from './policy.js';
|
|
@@ -153,9 +153,11 @@ export function atrib(options = {}) {
|
|
|
153
153
|
addRuntimeWarning('transaction_detected_by_heuristic');
|
|
154
154
|
}
|
|
155
155
|
// Emit transaction record asynchronously
|
|
156
|
-
const emission = emitTransactionRecord(toolName, detection, callOptions?.serverUrl, session, privateKey, publicKeyReady, () => publicKeyB64, queue)
|
|
156
|
+
const emission = emitTransactionRecord(toolName, detection, callOptions?.serverUrl, session, privateKey, publicKeyReady, () => publicKeyB64, queue)
|
|
157
|
+
.catch((err) => {
|
|
157
158
|
console.warn('atrib: transaction emission failed', err);
|
|
158
|
-
})
|
|
159
|
+
})
|
|
160
|
+
.finally(() => {
|
|
159
161
|
const idx = pendingEmissions.indexOf(emission);
|
|
160
162
|
if (idx !== -1)
|
|
161
163
|
pendingEmissions.splice(idx, 1);
|
|
@@ -195,6 +197,7 @@ export function atrib(options = {}) {
|
|
|
195
197
|
* Derives content_id per protocol:
|
|
196
198
|
* - ACP/UCP: checkout URL from response, tool_name = "checkout"
|
|
197
199
|
* - x402/MPP: HTTP endpoint URL, tool_name = "checkout"
|
|
200
|
+
* - AP2: protocol-specific receipt or mandate identity when present
|
|
198
201
|
* - Heuristic: MCP server URL of tool, actual tool_name
|
|
199
202
|
*/
|
|
200
203
|
async function emitTransactionRecord(toolName, detection, callServerUrl, session, privateKey, publicKeyReady, publicKeyB64Getter, queue) {
|
|
@@ -204,32 +207,34 @@ async function emitTransactionRecord(toolName, detection, callServerUrl, session
|
|
|
204
207
|
throw new Error('public key not ready');
|
|
205
208
|
}
|
|
206
209
|
// Derive content_id per protocol (§5.4.5)
|
|
207
|
-
let contentIdServerUrl;
|
|
208
|
-
let contentIdToolName;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
210
|
+
let contentIdServerUrl = '';
|
|
211
|
+
let contentIdToolName = '';
|
|
212
|
+
if (!detection.contentId) {
|
|
213
|
+
switch (detection.protocol) {
|
|
214
|
+
case 'ACP':
|
|
215
|
+
case 'UCP':
|
|
216
|
+
contentIdServerUrl = detection.checkoutUrl ?? callServerUrl ?? '';
|
|
217
|
+
contentIdToolName = 'checkout';
|
|
218
|
+
break;
|
|
219
|
+
case 'x402':
|
|
220
|
+
case 'MPP':
|
|
221
|
+
// Use the HTTP endpoint URL that returned Payment-Receipt
|
|
222
|
+
contentIdServerUrl = callServerUrl ?? '';
|
|
223
|
+
contentIdToolName = 'checkout';
|
|
224
|
+
break;
|
|
225
|
+
case 'AP2':
|
|
226
|
+
contentIdServerUrl = callServerUrl ?? '';
|
|
227
|
+
contentIdToolName = 'checkout';
|
|
228
|
+
break;
|
|
229
|
+
case 'heuristic':
|
|
230
|
+
default:
|
|
231
|
+
// Heuristic: weakest case, use the MCP server URL of the tool that was called
|
|
232
|
+
contentIdServerUrl = callServerUrl ?? '';
|
|
233
|
+
contentIdToolName = toolName;
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
231
236
|
}
|
|
232
|
-
const contentId = computeContentId(contentIdServerUrl, contentIdToolName);
|
|
237
|
+
const contentId = detection.contentId ?? computeContentId(contentIdServerUrl, contentIdToolName);
|
|
233
238
|
// §1.2.3: chain_root for genesis records
|
|
234
239
|
const chainRoot = session.latestContext
|
|
235
240
|
? `sha256:${hexEncode(session.latestContext.recordHash)}`
|
|
@@ -245,7 +250,7 @@ async function emitTransactionRecord(toolName, detection, callServerUrl, session
|
|
|
245
250
|
signature: '',
|
|
246
251
|
session_token: session.sessionToken,
|
|
247
252
|
};
|
|
248
|
-
const signed = await
|
|
253
|
+
const signed = await signTransactionRecord(record, privateKey);
|
|
249
254
|
// Submit immediately. transaction records are the closing anchor
|
|
250
255
|
queue.submit(signed, 'high');
|
|
251
256
|
}
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/transaction.d.ts
CHANGED
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transaction detection (§5.4.5).
|
|
3
|
-
*
|
|
4
|
-
* Detects transaction events from response shapes for ACP, UCP, x402, MPP,
|
|
5
|
-
* AP2, and heuristic tool name matching.
|
|
6
|
-
*
|
|
7
|
-
* Protocol shape sources (verified 2026-05-27):
|
|
8
|
-
* - ACP: github.com/agentic-commerce-protocol/agentic-commerce-protocol
|
|
9
|
-
* rfcs/rfc.agentic_checkout.md
|
|
10
|
-
* - UCP: github.com/universal-commerce-protocol/ucp
|
|
11
|
-
* docs/specification/checkout-rest.md (version 2026-01-11)
|
|
12
|
-
* - AP2: github.com/google-agentic-commerce/AP2 (v0.2). Current AP2 uses
|
|
13
|
-
* SD-JWT Mandates for authorization and signed CheckoutReceipt /
|
|
14
|
-
* PaymentReceipt JWTs for acceptance. Detection fires on successful
|
|
15
|
-
* receipt shapes, not mandate-only payloads. The legacy v0.1 A2A
|
|
16
|
-
* DataPart key `ap2.mandates.PaymentMandate` remains supported as a
|
|
17
|
-
* compatibility fallback.
|
|
18
|
-
* - a2a-x402: github.com/google-agentic-commerce/a2a-x402. extension that
|
|
19
|
-
* layers x402 crypto payments over A2A. Detection signal is
|
|
20
|
-
* `status.message.metadata["x402.payment.status"] === "payment-completed"`
|
|
21
|
-
* with at least one `success: true` entry in
|
|
22
|
-
* `status.message.metadata["x402.payment.receipts"]`. Both shapes are
|
|
23
|
-
* reported as `protocol: 'AP2'` since a2a-x402 is the AP2 crypto path.
|
|
24
|
-
* - x402: github.com/coinbase/x402. response header `PAYMENT-RESPONSE` (v2)
|
|
25
|
-
* or `X-PAYMENT-RESPONSE` (v1 legacy). Value is base64-encoded JSON
|
|
26
|
-
* with shape { success: bool, transaction, network, payer, requirements }.
|
|
27
|
-
* - MPP: IETF draft-ryan-httpauth-payment-01 ("The 'Payment' HTTP Authentication
|
|
28
|
-
* Scheme"), per Section 5.3. Response header is `Payment-Receipt` on a
|
|
29
|
-
* 200 success after the client retries with Authorization: Payment.
|
|
30
|
-
* Value is base64url-nopad JSON with required field { status: "success",
|
|
31
|
-
* method, timestamp, reference }.
|
|
32
|
-
*
|
|
33
|
-
* x402 and MPP are different protocols that use different headers. Earlier
|
|
34
|
-
* versions of this code conflated them on a fictitious shared `Payment-Receipt`
|
|
35
|
-
* header. see DECISIONS.md D016 for the verification trail.
|
|
36
|
-
*/
|
|
37
1
|
export type TransactionProtocol = 'ACP' | 'UCP' | 'x402' | 'MPP' | 'AP2' | 'heuristic';
|
|
38
2
|
export interface TransactionDetection {
|
|
39
3
|
detected: boolean;
|
|
@@ -42,10 +6,17 @@ export interface TransactionDetection {
|
|
|
42
6
|
* For Path 2 content_id derivation (§5.4.5):
|
|
43
7
|
* - ACP/UCP: the order permalink URL from the response (if present)
|
|
44
8
|
* - x402/MPP: not available here (caller must use HTTP endpoint URL)
|
|
45
|
-
* - AP2:
|
|
9
|
+
* - AP2: usually null because AP2 identity is carried in `contentId`
|
|
46
10
|
* - Heuristic: not available here (caller uses MCP server URL)
|
|
47
11
|
*/
|
|
48
12
|
checkoutUrl: string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Optional protocol-specific content_id. AP2 can expose stable receipt or
|
|
15
|
+
* mandate identifiers directly in the response; the detector hashes the
|
|
16
|
+
* canonical identity ladder and returns the final content_id here. Null
|
|
17
|
+
* means the caller should keep the generic §5.4.5 fallback.
|
|
18
|
+
*/
|
|
19
|
+
contentId: string | null;
|
|
49
20
|
}
|
|
50
21
|
/**
|
|
51
22
|
* Detect whether a tool call response contains a transaction signal (§5.4.5).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AA0CA,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAA;AAEtF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACpC;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAgOD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC3C,oBAAoB,CAiJtB"}
|
package/dist/transaction.js
CHANGED
|
@@ -1,4 +1,42 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Transaction detection (§5.4.5).
|
|
4
|
+
*
|
|
5
|
+
* Detects transaction events from response shapes for ACP, UCP, x402, MPP,
|
|
6
|
+
* AP2, and heuristic tool name matching.
|
|
7
|
+
*
|
|
8
|
+
* Protocol shape sources (verified 2026-05-27):
|
|
9
|
+
* - ACP: github.com/agentic-commerce-protocol/agentic-commerce-protocol
|
|
10
|
+
* rfcs/rfc.agentic_checkout.md
|
|
11
|
+
* - UCP: github.com/universal-commerce-protocol/ucp
|
|
12
|
+
* docs/specification/checkout-rest.md (version 2026-01-11)
|
|
13
|
+
* - AP2: github.com/google-agentic-commerce/AP2 (v0.2). Current AP2 uses
|
|
14
|
+
* SD-JWT Mandates for authorization and signed CheckoutReceipt /
|
|
15
|
+
* PaymentReceipt JWTs for acceptance. Detection fires on successful
|
|
16
|
+
* receipt shapes, not mandate-only payloads. The legacy v0.1 A2A
|
|
17
|
+
* DataPart key `ap2.mandates.PaymentMandate` remains supported as a
|
|
18
|
+
* compatibility fallback.
|
|
19
|
+
* - a2a-x402: github.com/google-agentic-commerce/a2a-x402. extension that
|
|
20
|
+
* layers x402 crypto payments over A2A. Detection signal is
|
|
21
|
+
* `status.message.metadata["x402.payment.status"] === "payment-completed"`
|
|
22
|
+
* with at least one `success: true` entry in
|
|
23
|
+
* `status.message.metadata["x402.payment.receipts"]`. Both shapes are
|
|
24
|
+
* reported as `protocol: 'AP2'` since a2a-x402 is the AP2 crypto path.
|
|
25
|
+
* - x402: github.com/coinbase/x402. response header `PAYMENT-RESPONSE` (v2)
|
|
26
|
+
* or `X-PAYMENT-RESPONSE` (v1 legacy). Value is base64-encoded JSON
|
|
27
|
+
* with shape { success: bool, transaction, network, payer, requirements }.
|
|
28
|
+
* - MPP: IETF draft-ryan-httpauth-payment-01 ("The 'Payment' HTTP Authentication
|
|
29
|
+
* Scheme"), per Section 5.3. Response header is `Payment-Receipt` on a
|
|
30
|
+
* 200 success after the client retries with Authorization: Payment.
|
|
31
|
+
* Value is base64url-nopad JSON with required field { status: "success",
|
|
32
|
+
* method, timestamp, reference }.
|
|
33
|
+
*
|
|
34
|
+
* x402 and MPP are different protocols that use different headers. Earlier
|
|
35
|
+
* versions of this code conflated them on a fictitious shared `Payment-Receipt`
|
|
36
|
+
* header. see DECISIONS.md D016 for the verification trail.
|
|
37
|
+
*/
|
|
38
|
+
import canonicalize from 'canonicalize';
|
|
39
|
+
import { hexEncode, sha256 } from '@atrib/mcp';
|
|
2
40
|
const HEURISTIC_KEYWORDS = [
|
|
3
41
|
'create_order',
|
|
4
42
|
'complete_checkout',
|
|
@@ -10,6 +48,7 @@ const HEURISTIC_KEYWORDS = [
|
|
|
10
48
|
const AP2_PAYMENT_RECEIPT_KEYS = ['ap2.PaymentReceipt', 'payment_receipt'];
|
|
11
49
|
const AP2_CHECKOUT_RECEIPT_KEYS = ['ap2.CheckoutReceipt', 'checkout_receipt'];
|
|
12
50
|
const AP2_RECEIPT_SCAN_LIMIT = 80;
|
|
51
|
+
const textEncoder = new TextEncoder();
|
|
13
52
|
function isRecord(value) {
|
|
14
53
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
15
54
|
}
|
|
@@ -19,6 +58,32 @@ function isString(value) {
|
|
|
19
58
|
function isNonEmptyString(value) {
|
|
20
59
|
return typeof value === 'string' && value.length > 0;
|
|
21
60
|
}
|
|
61
|
+
function detection(protocol, checkoutUrl = null, contentId = null) {
|
|
62
|
+
return { detected: true, protocol, checkoutUrl, contentId };
|
|
63
|
+
}
|
|
64
|
+
function noDetection() {
|
|
65
|
+
return { detected: false, protocol: null, checkoutUrl: null, contentId: null };
|
|
66
|
+
}
|
|
67
|
+
function sha256Utf8(value) {
|
|
68
|
+
return `sha256:${hexEncode(sha256(textEncoder.encode(value)))}`;
|
|
69
|
+
}
|
|
70
|
+
function ap2ContentId(source, fields) {
|
|
71
|
+
const canonical = canonicalize({
|
|
72
|
+
protocol: 'AP2',
|
|
73
|
+
version: 1,
|
|
74
|
+
source,
|
|
75
|
+
fields,
|
|
76
|
+
});
|
|
77
|
+
if (!canonical)
|
|
78
|
+
return null;
|
|
79
|
+
return sha256Utf8(canonical);
|
|
80
|
+
}
|
|
81
|
+
function ap2ObjectHash(value) {
|
|
82
|
+
const canonical = canonicalize(value);
|
|
83
|
+
if (!canonical)
|
|
84
|
+
return null;
|
|
85
|
+
return sha256Utf8(canonical);
|
|
86
|
+
}
|
|
22
87
|
function hasAp2SuccessStatus(record) {
|
|
23
88
|
return record['status'] === 'Success' || record['status'] === 'success';
|
|
24
89
|
}
|
|
@@ -45,20 +110,62 @@ function isAp2CheckoutReceiptObject(value) {
|
|
|
45
110
|
isNonEmptyString(value['reference']) &&
|
|
46
111
|
isNonEmptyString(value['order_id']));
|
|
47
112
|
}
|
|
48
|
-
function
|
|
113
|
+
function ap2PaymentReceiptCandidate(value) {
|
|
114
|
+
if (!isAp2PaymentReceiptObject(value) || !isRecord(value))
|
|
115
|
+
return null;
|
|
116
|
+
const contentId = ap2ContentId('payment_receipt', {
|
|
117
|
+
iss: value['iss'],
|
|
118
|
+
reference: value['reference'],
|
|
119
|
+
payment_id: value['payment_id'],
|
|
120
|
+
psp_confirmation_id: value['psp_confirmation_id'],
|
|
121
|
+
network_confirmation_id: value['network_confirmation_id'],
|
|
122
|
+
});
|
|
123
|
+
return contentId ? { contentId, priority: 10 } : null;
|
|
124
|
+
}
|
|
125
|
+
function ap2CheckoutReceiptCandidate(value) {
|
|
126
|
+
if (!isAp2CheckoutReceiptObject(value) || !isRecord(value))
|
|
127
|
+
return null;
|
|
128
|
+
const contentId = ap2ContentId('checkout_receipt', {
|
|
129
|
+
iss: value['iss'],
|
|
130
|
+
reference: value['reference'],
|
|
131
|
+
order_id: value['order_id'],
|
|
132
|
+
});
|
|
133
|
+
return contentId ? { contentId, priority: 30 } : null;
|
|
134
|
+
}
|
|
135
|
+
function ap2ReceiptJwtCandidate(value, source) {
|
|
136
|
+
if (!looksLikeCompactJwt(value))
|
|
137
|
+
return null;
|
|
138
|
+
const contentId = ap2ContentId(source, { jwt_hash: sha256Utf8(value) });
|
|
139
|
+
if (!contentId)
|
|
140
|
+
return null;
|
|
141
|
+
return { contentId, priority: source === 'payment_receipt_jwt' ? 20 : 40 };
|
|
142
|
+
}
|
|
143
|
+
function ap2ReceiptFieldCandidate(record, keys, objectCandidate, jwtSource) {
|
|
49
144
|
for (const key of keys) {
|
|
50
145
|
const value = record[key];
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
146
|
+
const object = objectCandidate(value);
|
|
147
|
+
if (object)
|
|
148
|
+
return object;
|
|
149
|
+
if (hasAp2SuccessStatus(record)) {
|
|
150
|
+
const jwt = ap2ReceiptJwtCandidate(value, jwtSource);
|
|
151
|
+
if (jwt)
|
|
152
|
+
return jwt;
|
|
153
|
+
}
|
|
55
154
|
}
|
|
56
|
-
return
|
|
155
|
+
return null;
|
|
57
156
|
}
|
|
58
|
-
function
|
|
157
|
+
function chooseBetterAp2Candidate(current, candidate) {
|
|
158
|
+
if (!candidate)
|
|
159
|
+
return current;
|
|
160
|
+
if (!current || candidate.priority < current.priority)
|
|
161
|
+
return candidate;
|
|
162
|
+
return current;
|
|
163
|
+
}
|
|
164
|
+
function findAp2V02ReceiptContentId(value) {
|
|
59
165
|
const queue = [value];
|
|
60
166
|
const seen = new Set();
|
|
61
167
|
let scanned = 0;
|
|
168
|
+
let best = null;
|
|
62
169
|
while (queue.length > 0 && scanned < AP2_RECEIPT_SCAN_LIMIT) {
|
|
63
170
|
const current = queue.shift();
|
|
64
171
|
scanned += 1;
|
|
@@ -72,19 +179,40 @@ function containsAp2V02Receipt(value) {
|
|
|
72
179
|
if (seen.has(current))
|
|
73
180
|
continue;
|
|
74
181
|
seen.add(current);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
hasAp2ReceiptField(current, AP2_CHECKOUT_RECEIPT_KEYS, isAp2CheckoutReceiptObject)) {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
182
|
+
best = chooseBetterAp2Candidate(best, ap2PaymentReceiptCandidate(current));
|
|
183
|
+
best = chooseBetterAp2Candidate(best, ap2CheckoutReceiptCandidate(current));
|
|
184
|
+
best = chooseBetterAp2Candidate(best, ap2ReceiptFieldCandidate(current, AP2_PAYMENT_RECEIPT_KEYS, ap2PaymentReceiptCandidate, 'payment_receipt_jwt'));
|
|
185
|
+
best = chooseBetterAp2Candidate(best, ap2ReceiptFieldCandidate(current, AP2_CHECKOUT_RECEIPT_KEYS, ap2CheckoutReceiptCandidate, 'checkout_receipt_jwt'));
|
|
82
186
|
for (const nested of Object.values(current)) {
|
|
83
187
|
if (isRecord(nested) || Array.isArray(nested))
|
|
84
188
|
queue.push(nested);
|
|
85
189
|
}
|
|
86
190
|
}
|
|
87
|
-
return
|
|
191
|
+
return best?.contentId ?? null;
|
|
192
|
+
}
|
|
193
|
+
function legacyAp2MandateContentId(value) {
|
|
194
|
+
const mandateHash = ap2ObjectHash(value);
|
|
195
|
+
if (!mandateHash)
|
|
196
|
+
return null;
|
|
197
|
+
return ap2ContentId('legacy_payment_mandate', { mandate_hash: mandateHash });
|
|
198
|
+
}
|
|
199
|
+
function a2aX402ContentId(receipts) {
|
|
200
|
+
if (!Array.isArray(receipts))
|
|
201
|
+
return null;
|
|
202
|
+
for (const receipt of receipts) {
|
|
203
|
+
if (!isRecord(receipt) || receipt['success'] !== true)
|
|
204
|
+
continue;
|
|
205
|
+
const transaction = receipt['transaction'];
|
|
206
|
+
if (!isNonEmptyString(transaction))
|
|
207
|
+
continue;
|
|
208
|
+
const fields = { transaction };
|
|
209
|
+
if (isNonEmptyString(receipt['network']))
|
|
210
|
+
fields['network'] = receipt['network'];
|
|
211
|
+
if (isNonEmptyString(receipt['payer']))
|
|
212
|
+
fields['payer'] = receipt['payer'];
|
|
213
|
+
return ap2ContentId('a2a_x402_receipt', fields);
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
88
216
|
}
|
|
89
217
|
/**
|
|
90
218
|
* Detect whether a tool call response contains a transaction signal (§5.4.5).
|
|
@@ -103,14 +231,14 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
103
231
|
const ucpEnvelope = resp['ucp'];
|
|
104
232
|
const isUcp = !!ucpEnvelope && typeof ucpEnvelope['version'] === 'string';
|
|
105
233
|
const checkoutUrl = typeof order['permalink_url'] === 'string' ? order['permalink_url'] : null;
|
|
106
|
-
return
|
|
234
|
+
return detection(isUcp ? 'UCP' : 'ACP', checkoutUrl);
|
|
107
235
|
}
|
|
108
236
|
// ACP webhook event shapes (server → merchant): order_create / order_update.
|
|
109
237
|
// { type: "order_create", data: { type: "order", checkout_session_id, permalink_url, status, refunds } }
|
|
110
238
|
if (resp['type'] === 'order_create' || resp['type'] === 'order_update') {
|
|
111
239
|
const data = resp['data'];
|
|
112
240
|
const checkoutUrl = typeof data?.['permalink_url'] === 'string' ? data['permalink_url'] : null;
|
|
113
|
-
return
|
|
241
|
+
return detection('ACP', checkoutUrl);
|
|
114
242
|
}
|
|
115
243
|
}
|
|
116
244
|
// x402 and MPP: distinct protocols, distinct response headers.
|
|
@@ -129,11 +257,11 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
129
257
|
}
|
|
130
258
|
// x402. accept v2 and v1 names
|
|
131
259
|
if (lower['payment-response'] || lower['x-payment-response']) {
|
|
132
|
-
return
|
|
260
|
+
return detection('x402');
|
|
133
261
|
}
|
|
134
262
|
// MPP. IETF draft Payment-Receipt header
|
|
135
263
|
if (lower['payment-receipt']) {
|
|
136
|
-
return
|
|
264
|
+
return detection('MPP');
|
|
137
265
|
}
|
|
138
266
|
}
|
|
139
267
|
// AP2 v0.2. Successful CheckoutReceipt / PaymentReceipt is the close signal.
|
|
@@ -146,8 +274,11 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
146
274
|
// - { status: "success", payment_receipt: "<signed JWT>" }
|
|
147
275
|
// - { status: "success", checkout_receipt: "<signed JWT>" }
|
|
148
276
|
// - { parts: [{ kind: "data", data: { "ap2.PaymentReceipt": { status: "Success", ... } } }] }
|
|
149
|
-
if (resp
|
|
150
|
-
|
|
277
|
+
if (resp) {
|
|
278
|
+
const ap2Content = findAp2V02ReceiptContentId(resp);
|
|
279
|
+
if (ap2Content) {
|
|
280
|
+
return detection('AP2', null, ap2Content);
|
|
281
|
+
}
|
|
151
282
|
}
|
|
152
283
|
// AP2 v0.1 compatibility. PaymentMandate Message inside an A2A DataPart.
|
|
153
284
|
// Source: github.com/google-agentic-commerce/ap2 docs/specification.md
|
|
@@ -161,7 +292,8 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
161
292
|
if (data &&
|
|
162
293
|
typeof data === 'object' &&
|
|
163
294
|
'ap2.mandates.PaymentMandate' in data) {
|
|
164
|
-
|
|
295
|
+
const mandate = data['ap2.mandates.PaymentMandate'];
|
|
296
|
+
return detection('AP2', null, legacyAp2MandateContentId(mandate));
|
|
165
297
|
}
|
|
166
298
|
}
|
|
167
299
|
}
|
|
@@ -177,11 +309,11 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
177
309
|
const metadata = statusMessage?.['metadata'];
|
|
178
310
|
if (metadata && metadata['x402.payment.status'] === 'payment-completed') {
|
|
179
311
|
const receipts = metadata['x402.payment.receipts'];
|
|
180
|
-
if (Array.isArray(receipts)
|
|
181
|
-
receipts.some((r) => r
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
312
|
+
if (Array.isArray(receipts)) {
|
|
313
|
+
const accepted = receipts.some((r) => isRecord(r) && r['success'] === true);
|
|
314
|
+
if (accepted) {
|
|
315
|
+
return detection('AP2', null, a2aX402ContentId(receipts));
|
|
316
|
+
}
|
|
185
317
|
}
|
|
186
318
|
}
|
|
187
319
|
}
|
|
@@ -202,14 +334,14 @@ export function detectTransaction(toolName, response, headers) {
|
|
|
202
334
|
// so no credentialSubject check needed. For v1 string form: type is just
|
|
203
335
|
// "VerifiableCredential" so we need credentialSubject to confirm it's a PaymentMandate.
|
|
204
336
|
if (isVcArray || (isVcStringLegacy && subjectIsPaymentMandate)) {
|
|
205
|
-
return
|
|
337
|
+
return detection('AP2', null, legacyAp2MandateContentId(resp));
|
|
206
338
|
}
|
|
207
339
|
}
|
|
208
340
|
// Heuristic: tool name keywords (last resort)
|
|
209
341
|
const lowerName = toolName.toLowerCase();
|
|
210
342
|
if (HEURISTIC_KEYWORDS.some((k) => lowerName.includes(k))) {
|
|
211
|
-
return
|
|
343
|
+
return detection('heuristic');
|
|
212
344
|
}
|
|
213
|
-
return
|
|
345
|
+
return noDetection();
|
|
214
346
|
}
|
|
215
347
|
//# sourceMappingURL=transaction.js.map
|
package/dist/transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atrib/agent",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@noble/ed25519": "^3.1.0",
|
|
34
34
|
"@noble/hashes": "^2.2.0",
|
|
35
35
|
"canonicalize": "^3.0.0",
|
|
36
|
-
"@atrib/mcp": "0.
|
|
37
|
-
"@atrib/verify": "0.
|
|
36
|
+
"@atrib/mcp": "0.13.0",
|
|
37
|
+
"@atrib/verify": "0.4.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.9.1",
|