@agenticprimitives/payments 0.0.0-alpha.3

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Agentic Trust Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # @agenticprimitives/payments
2
+
3
+ > **Status: STUB** (Wave 0.5 of the W1 implementation wave). Typed primitives and invariant guards ship today; the EIP-712 mandate signer and the three W1 rails land in Wave 6 per the [w1 implementation wave plan](../../docs/architecture/w1-implementation-wave-plan.md). A recent self-audit flagged this package's docs for overclaiming ([NEW-PMT-1](../../docs/audits/findings.yaml)); this README is written to the actual surface.
4
+
5
+ Machine payments arrived. x402 made HTTP-native pay-per-request real; Google's AP2 defined mandates for agent-initiated spend. What neither ships — what nobody ships — is machine payments scoped by the *same* delegation, custody, and audit substrate that governs everything else the agent does. "This agent may spend up to this amount, for this task, on this rail, until Friday — signed by a smart account, bound to the work it pays for, receipted into an attestation registry" is the combination the agent economy actually needs, and it only exists when payments are a layer of one system rather than a bolted-on rail.
6
+
7
+ This package is the designed payments slice of that substrate — spine Layer 9b, the `PaymentMandate` — spec'd in full, scaffolded now, landing in the implementation waves.
8
+
9
+ Part of [agenticprimitives](../../README.md) — the trust substrate for the agent economy: one canonical Smart Agent identity with custody, delegation, naming, credentials, and audit evidence designed as one system.
10
+
11
+ ## What ships today
12
+
13
+ Typed primitives and pure invariant guards — no signing, no execution, no money moves:
14
+
15
+ - **`PaymentMandate` type** — payer, payee, granter, rail, `AmountPolicy` (exact / range / formula), `maxRedemptions`, validity window, `mode`, and an optional `delegationRef` linking the mandate to the delegation that authorized it.
16
+ - **`ContextBinding` + `assertContextBindingValid`** — PMT-3.1 enforced: every mandate must bind to at least one of intent / agreement / task / artifact / HTTP resource. No context-free spend.
17
+ - **`MandateConstraints`** — AP2-aligned aggregate scope: cumulative caps, redemption frequency windows, category allow/deny, geo-fencing.
18
+ - **Open/closed mode discrimination + `assertClosedMandateInvariants`** — PMT-INV-14 enforced: a closed (final-charge) mandate is always one-shot.
19
+ - **`computeMandateId`** — deterministic keccak-256 mandate identity over payer + nonce + rail + chain.
20
+ - **`PaymentRailExecutor` interface + `registerRail` / `getRail`** — the extension point every rail (current and future, including the reserved confidential family) implements.
21
+
22
+ ## What lands in Wave 6 (designed, not shipped)
23
+
24
+ The EIP-712 typed-data builder, SA signing and ERC-1271 verification (no raw EOA signatures — PMT-INV-12), `redeemPaymentMandate`, and the three W1 rails: `rails/wallet` (SA-to-SA transfer via UserOp), `rails/x402` (HTTP-native per [x402.org](https://www.x402.org/) + reference facilitator), and `rails/sponsored-userop` (paymaster-sponsored, no value moved). Plus `PaymentReceipt` — an immutable, non-revocable credential asserted into the attestation registry per [ADR-0023](../../docs/architecture/decisions/0023-attestation-registry-eas-aligned-bilateral-consent.md), so every redemption leaves first-class evidence. Confidential rails (Aztec-style, Zcash-style, ZK paymasters) are a reserved W2 sub-module family.
25
+
26
+ ## Where this is heading / market context
27
+
28
+ - **x402** proved HTTP-native machine payments; it is one of our three W1 rails, not a competitor.
29
+ - **Google AP2** defined mandate semantics for agent spend; `MandateConstraints` is deliberately AP2-aligned so the substrate speaks the emerging lingua franca.
30
+ - The gap both leave open: x402 and AP2 authorize a *payment*; neither anchors it to a canonical on-chain identity with custody policy, a revocable delegation chain, and an audit trail behind it. Delegation-scoped machine payments — mandate references delegation, delegation references the Smart Agent, every step receipted — is the combination this layer exists to ship.
31
+
32
+ **Authoritative spec:** [spec 243 — payments](../../specs/243-payments.md) (see [`spec.md`](./spec.md)). Owns spine layer 9b; bounded surface in `CLAUDE.md` and `capability.manifest.json`.
33
+
34
+ ## Build
35
+
36
+ ```bash
37
+ pnpm --filter @agenticprimitives/payments typecheck
38
+ pnpm --filter @agenticprimitives/payments test
39
+ pnpm --filter @agenticprimitives/payments build
40
+ ```
41
+
42
+ ## Status — honest version
43
+
44
+ STUB. Nothing here signs or settles a payment today; treat the rails and the EIP-712 surface as spec'd commitments. The audit finding that this package's docs once claimed more ([NEW-PMT-1](../../docs/audits/findings.yaml)) is public — transparency about the gap is the point. Wave sequencing: [w1-implementation-wave-plan.md](../../docs/architecture/w1-implementation-wave-plan.md).
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @agenticprimitives/payments — PaymentMandate + rail abstraction.
3
+ * Spine Layer 9b.
4
+ *
5
+ * Authoritative spec: specs/243-payments.md
6
+ */
7
+ import type { Address, Hex } from '@agenticprimitives/types';
8
+ export declare const PACKAGE_NAME = "@agenticprimitives/payments";
9
+ export declare const PACKAGE_STATUS: "w1-foundational";
10
+ export declare const SPEC_REF = "specs/243-payments.md";
11
+ export type Hex32 = `0x${string}`;
12
+ export type PaymentRail = 'x402' | 'wallet' | 'sponsored-userop' | 'escrow' | 'invoice' | 'confidential-aztec' | 'confidential-zcash' | 'confidential-zk-paymaster';
13
+ export interface AssetRef {
14
+ id: string;
15
+ symbol?: string;
16
+ decimals?: number;
17
+ }
18
+ export type AmountPolicy = {
19
+ kind: 'exact';
20
+ amount: bigint;
21
+ asset: AssetRef;
22
+ chain: number;
23
+ } | {
24
+ kind: 'range';
25
+ minAmount: bigint;
26
+ maxAmount: bigint;
27
+ asset: AssetRef;
28
+ chain: number;
29
+ } | {
30
+ kind: 'formula';
31
+ formulaId: Hex32;
32
+ maxAmount: bigint;
33
+ asset: AssetRef;
34
+ chain: number;
35
+ };
36
+ export interface MandateConstraints {
37
+ maxAggregateAmount?: bigint;
38
+ frequency?: {
39
+ maxRedemptionsPerWindow: number;
40
+ windowSeconds: number;
41
+ };
42
+ categories?: string[];
43
+ excludedCategories?: string[];
44
+ geoFence?: string[];
45
+ }
46
+ export interface ContextBinding {
47
+ intentId?: string;
48
+ agreementCommitment?: Hex32;
49
+ taskId?: Hex32;
50
+ artifactHash?: Hex32;
51
+ resource?: {
52
+ method: string;
53
+ url: string;
54
+ requestBodyHash: Hex32;
55
+ };
56
+ chain: number;
57
+ asset: AssetRef;
58
+ nonce: bigint;
59
+ validFrom: number;
60
+ expiresAt: number;
61
+ }
62
+ export type PaymentMandateMode = 'open' | 'closed';
63
+ export interface PaymentMandate {
64
+ mandateId: Hex32;
65
+ payer: Address;
66
+ payee: Address;
67
+ granter: Address;
68
+ rail: PaymentRail;
69
+ railConfig?: Record<string, unknown>;
70
+ amountPolicy: AmountPolicy;
71
+ mandateConstraints?: MandateConstraints;
72
+ nonce: bigint;
73
+ maxRedemptions: number;
74
+ validFrom: number;
75
+ expiresAt: number;
76
+ contextBinding: ContextBinding;
77
+ delegationRef?: Hex32;
78
+ mode: PaymentMandateMode;
79
+ requiresClosedMandateForFinalCharge?: boolean;
80
+ reasonHash: Hex32;
81
+ signature: Hex;
82
+ }
83
+ /** PMT-3.1: at least one context-binding handle MUST be populated. */
84
+ export declare function assertContextBindingValid(cb: ContextBinding): void;
85
+ /** PMT-INV-14 / PMT-10.1: closed mandates are always one-shot. */
86
+ export declare function assertClosedMandateInvariants(mandate: PaymentMandate): void;
87
+ export declare function computeMandateId(args: {
88
+ payer: Address;
89
+ nonce: bigint;
90
+ rail: PaymentRail;
91
+ chain: number;
92
+ }): Hex32;
93
+ export interface PaymentRailExecutor {
94
+ rail: PaymentRail;
95
+ verifyMandate(mandate: PaymentMandate): Promise<{
96
+ valid: boolean;
97
+ reason?: string;
98
+ }>;
99
+ prepareRedemption(mandate: PaymentMandate): Promise<{
100
+ planId: Hex32;
101
+ details: Record<string, unknown>;
102
+ }>;
103
+ executeRedemption(plan: {
104
+ planId: Hex32;
105
+ }): Promise<{
106
+ receiptHash: Hex32;
107
+ settlementHash: Hex32;
108
+ }>;
109
+ }
110
+ export declare function registerRail(executor: PaymentRailExecutor): void;
111
+ export declare function getRail(rail: PaymentRail): PaymentRailExecutor | undefined;
112
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @agenticprimitives/payments — PaymentMandate + rail abstraction.
3
+ * Spine Layer 9b.
4
+ *
5
+ * Authoritative spec: specs/243-payments.md
6
+ */
7
+ import { keccak_256 } from '@noble/hashes/sha3.js';
8
+ import { utf8ToBytes } from '@noble/hashes/utils.js';
9
+ export const PACKAGE_NAME = '@agenticprimitives/payments';
10
+ export const PACKAGE_STATUS = 'w1-foundational';
11
+ export const SPEC_REF = 'specs/243-payments.md';
12
+ /** PMT-3.1: at least one context-binding handle MUST be populated. */
13
+ export function assertContextBindingValid(cb) {
14
+ const any = cb.intentId || cb.agreementCommitment || cb.taskId || cb.artifactHash || cb.resource;
15
+ if (!any) {
16
+ throw new Error('[payments/PMT-3.1] ContextBinding MUST populate at least one of intentId / agreementCommitment / taskId / artifactHash / resource');
17
+ }
18
+ }
19
+ /** PMT-INV-14 / PMT-10.1: closed mandates are always one-shot. */
20
+ export function assertClosedMandateInvariants(mandate) {
21
+ if (mandate.mode === 'closed' && mandate.maxRedemptions !== 1) {
22
+ throw new Error(`[payments/PMT-INV-14] closed mandate MUST have maxRedemptions = 1`);
23
+ }
24
+ }
25
+ export function computeMandateId(args) {
26
+ const blob = `${args.payer.toLowerCase()}:${args.nonce}:${args.rail}:${args.chain}`;
27
+ const digest = keccak_256(utf8ToBytes(blob));
28
+ let hex = '0x';
29
+ for (const v of digest)
30
+ hex += v.toString(16).padStart(2, '0');
31
+ return hex;
32
+ }
33
+ const _rails = new Map();
34
+ export function registerRail(executor) {
35
+ _rails.set(executor.rail, executor);
36
+ }
37
+ export function getRail(rail) {
38
+ return _rails.get(rail);
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,CAAC,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,iBAA0B,CAAC;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAqEhD,sEAAsE;AACtE,MAAM,UAAU,yBAAyB,CAAC,EAAkB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,QAAQ,CAAC;IACjG,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,mIAAmI,CACpI,CAAC;IACJ,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,6BAA6B,CAAC,OAAuB;IACnE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAKhC;IACC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/D,OAAO,GAAY,CAAC;AACtB,CAAC;AASD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoC,CAAC;AAC3D,MAAM,UAAU,YAAY,CAAC,QAA6B;IACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,IAAiB;IACvC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@agenticprimitives/payments",
3
+ "version": "0.0.0-alpha.3",
4
+ "description": "PaymentMandate + ContextBinding + MandateConstraints + open/closed mode discrimination. Three W1 rails (x402, wallet, sponsored-userop). PaymentReceipt asserted into AttestationRegistry per ADR-0023.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/agentictrustlabs/agenticprimitives.git",
9
+ "directory": "packages/payments"
10
+ },
11
+ "homepage": "https://github.com/agentictrustlabs/agenticprimitives/tree/master/packages/payments",
12
+ "bugs": {
13
+ "url": "https://github.com/agentictrustlabs/agenticprimitives/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ }
23
+ },
24
+ "files": [
25
+ "LICENSE",
26
+ "dist",
27
+ "spec.md",
28
+ "README.md"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "peerDependencies": {
34
+ "viem": "^2.52.2"
35
+ },
36
+ "devDependencies": {
37
+ "vitest": "^4.1.8",
38
+ "viem": "^2.52.2"
39
+ },
40
+ "keywords": [
41
+ "agentic",
42
+ "primitives",
43
+ "payments"
44
+ ],
45
+ "dependencies": {
46
+ "@noble/hashes": "^2.2.0",
47
+ "@agenticprimitives/attestations": "0.0.0-alpha.3",
48
+ "@agenticprimitives/delegation": "1.0.0-alpha.7",
49
+ "@agenticprimitives/verifiable-credentials": "0.0.0-alpha.3",
50
+ "@agenticprimitives/types": "1.0.0-alpha.7"
51
+ },
52
+ "scripts": {
53
+ "build": "tsc -p tsconfig.build.json",
54
+ "typecheck": "tsc -p tsconfig.json --noEmit",
55
+ "test": "vitest run",
56
+ "test:unit": "vitest run test/unit --passWithNoTests",
57
+ "test:watch": "vitest",
58
+ "clean": "rm -rf dist"
59
+ }
60
+ }
package/spec.md ADDED
@@ -0,0 +1,5 @@
1
+ # Spec pointer
2
+
3
+ Canonical spec: [`../../specs/243-*.md`](../../specs/)
4
+
5
+ Owning layers (per [coordination-substrate.md](../../docs/architecture/coordination-substrate.md)): layer-9b.