@pay-skill/sdk 0.1.8 → 0.2.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.
Files changed (60) hide show
  1. package/README.md +143 -154
  2. package/dist/auth.d.ts +11 -6
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +19 -7
  5. package/dist/auth.js.map +1 -1
  6. package/dist/errors.d.ts +4 -2
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +8 -3
  9. package/dist/errors.js.map +1 -1
  10. package/dist/index.d.ts +2 -13
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -6
  13. package/dist/index.js.map +1 -1
  14. package/dist/keychain.d.ts +8 -0
  15. package/dist/keychain.d.ts.map +1 -0
  16. package/dist/keychain.js +17 -0
  17. package/dist/keychain.js.map +1 -0
  18. package/dist/wallet.d.ts +135 -104
  19. package/dist/wallet.d.ts.map +1 -1
  20. package/dist/wallet.js +631 -276
  21. package/dist/wallet.js.map +1 -1
  22. package/jsr.json +13 -13
  23. package/knip.json +5 -5
  24. package/package.json +51 -48
  25. package/src/auth.ts +210 -200
  26. package/src/eip3009.ts +79 -79
  27. package/src/errors.ts +55 -48
  28. package/src/index.ts +24 -51
  29. package/src/keychain.ts +18 -0
  30. package/src/wallet.ts +1111 -445
  31. package/tests/test_auth_rejection.ts +102 -154
  32. package/tests/test_crypto.ts +138 -251
  33. package/tests/test_e2e.ts +99 -158
  34. package/tests/test_errors.ts +44 -36
  35. package/tests/test_ows.ts +153 -0
  36. package/tests/test_wallet.ts +194 -0
  37. package/dist/client.d.ts +0 -94
  38. package/dist/client.d.ts.map +0 -1
  39. package/dist/client.js +0 -443
  40. package/dist/client.js.map +0 -1
  41. package/dist/models.d.ts +0 -78
  42. package/dist/models.d.ts.map +0 -1
  43. package/dist/models.js +0 -2
  44. package/dist/models.js.map +0 -1
  45. package/dist/ows-signer.d.ts +0 -75
  46. package/dist/ows-signer.d.ts.map +0 -1
  47. package/dist/ows-signer.js +0 -130
  48. package/dist/ows-signer.js.map +0 -1
  49. package/dist/signer.d.ts +0 -46
  50. package/dist/signer.d.ts.map +0 -1
  51. package/dist/signer.js +0 -111
  52. package/dist/signer.js.map +0 -1
  53. package/src/client.ts +0 -644
  54. package/src/models.ts +0 -77
  55. package/src/ows-signer.ts +0 -223
  56. package/src/signer.ts +0 -147
  57. package/tests/test_ows_integration.ts +0 -92
  58. package/tests/test_ows_signer.ts +0 -365
  59. package/tests/test_signer.ts +0 -47
  60. package/tests/test_validation.ts +0 -66
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/jsr.json CHANGED
@@ -1,13 +1,13 @@
1
- {
2
- "name": "@pay-skill/sdk",
3
- "version": "0.1.8",
4
- "license": "MIT",
5
- "exports": "./src/index.ts",
6
- "publish": {
7
- "include": [
8
- "src/**/*.ts",
9
- "README.md",
10
- "LICENSE"
11
- ]
12
- }
13
- }
1
+ {
2
+ "name": "@pay-skill/sdk",
3
+ "version": "0.1.8",
4
+ "license": "MIT",
5
+ "exports": "./src/index.ts",
6
+ "publish": {
7
+ "include": [
8
+ "src/**/*.ts",
9
+ "README.md",
10
+ "LICENSE"
11
+ ]
12
+ }
13
+ }
package/knip.json CHANGED
@@ -1,5 +1,5 @@
1
- {
2
- "$schema": "https://unpkg.com/knip@5/schema.json",
3
- "ignoreDependencies": ["@open-wallet-standard/core"],
4
- "ignoreExportsUsedInFile": true
5
- }
1
+ {
2
+ "$schema": "https://unpkg.com/knip@5/schema.json",
3
+ "ignoreDependencies": ["@open-wallet-standard/core"],
4
+ "ignoreExportsUsedInFile": true
5
+ }
package/package.json CHANGED
@@ -1,48 +1,51 @@
1
- {
2
- "name": "@pay-skill/sdk",
3
- "version": "0.1.8",
4
- "description": "TypeScript SDK for pay — payment infrastructure for AI agents",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/index.js",
11
- "types": "./dist/index.d.ts"
12
- }
13
- },
14
- "scripts": {
15
- "build": "tsc",
16
- "test": "node --import tsx --test tests/*.ts",
17
- "typecheck": "tsc --noEmit",
18
- "lint": "eslint src"
19
- },
20
- "dependencies": {
21
- "viem": "^2.0.0"
22
- },
23
- "peerDependencies": {
24
- "@open-wallet-standard/core": ">=1.2.0"
25
- },
26
- "peerDependenciesMeta": {
27
- "@open-wallet-standard/core": {
28
- "optional": true
29
- }
30
- },
31
- "devDependencies": {
32
- "@eslint/js": "^10.0.0",
33
- "@types/node": "^25.5.2",
34
- "eslint": "^10.2.0",
35
- "globals": "^17.0.0",
36
- "tsx": "^4.0.0",
37
- "typescript": "^5.0.0",
38
- "typescript-eslint": "^8.0.0"
39
- },
40
- "engines": {
41
- "node": ">=20.0.0"
42
- },
43
- "license": "MIT",
44
- "repository": {
45
- "type": "git",
46
- "url": "https://github.com/pay-skill/pay-sdk"
47
- }
48
- }
1
+ {
2
+ "name": "@pay-skill/sdk",
3
+ "version": "0.2.0",
4
+ "description": "TypeScript SDK for pay — payment infrastructure for AI agents",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "test": "node --import tsx --test tests/*.ts",
17
+ "typecheck": "tsc --noEmit",
18
+ "lint": "eslint src"
19
+ },
20
+ "dependencies": {
21
+ "viem": "^2.0.0"
22
+ },
23
+ "optionalDependencies": {
24
+ "keytar": "^7.9.0"
25
+ },
26
+ "peerDependencies": {
27
+ "@open-wallet-standard/core": ">=1.2.0"
28
+ },
29
+ "peerDependenciesMeta": {
30
+ "@open-wallet-standard/core": {
31
+ "optional": true
32
+ }
33
+ },
34
+ "devDependencies": {
35
+ "@eslint/js": "^10.0.0",
36
+ "@types/node": "^25.5.2",
37
+ "eslint": "^10.2.0",
38
+ "globals": "^17.0.0",
39
+ "tsx": "^4.0.0",
40
+ "typescript": "^5.0.0",
41
+ "typescript-eslint": "^8.0.0"
42
+ },
43
+ "engines": {
44
+ "node": ">=18.0.0"
45
+ },
46
+ "license": "MIT",
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "https://github.com/pay-skill/pay-sdk"
50
+ }
51
+ }
package/src/auth.ts CHANGED
@@ -1,200 +1,210 @@
1
- /**
2
- * EIP-712 authentication for pay API requests.
3
- *
4
- * Every authenticated request includes four headers:
5
- * X-Pay-Agent — wallet address (0x-prefixed, checksummed)
6
- * X-Pay-Signature — EIP-712 signature (0x-prefixed hex, 65 bytes)
7
- * X-Pay-Timestamp — unix timestamp in seconds
8
- * X-Pay-Nonce — random 32-byte hex (0x-prefixed)
9
- *
10
- * The EIP-712 domain:
11
- * name: "pay"
12
- * version: "0.1"
13
- * chainId: <from config>
14
- * verifyingContract: <router address>
15
- *
16
- * The typed data:
17
- * APIRequest(string method, string path, uint256 timestamp, bytes32 nonce)
18
- */
19
-
20
- import { type Hex, keccak256, encodePacked, type Address } from "viem";
21
- import { privateKeyToAccount } from "viem/accounts";
22
- import { randomBytes } from "node:crypto";
23
-
24
- export interface AuthConfig {
25
- chainId: number;
26
- routerAddress: Address;
27
- }
28
-
29
- export interface AuthHeaders {
30
- "X-Pay-Agent": string;
31
- "X-Pay-Signature": string;
32
- "X-Pay-Timestamp": string;
33
- "X-Pay-Nonce": string;
34
- }
35
-
36
- const EIP712_DOMAIN = {
37
- name: "pay",
38
- version: "0.1",
39
- } as const;
40
-
41
- const API_REQUEST_TYPES = {
42
- APIRequest: [
43
- { name: "method", type: "string" },
44
- { name: "path", type: "string" },
45
- { name: "timestamp", type: "uint256" },
46
- { name: "nonce", type: "bytes32" },
47
- ],
48
- } as const;
49
-
50
- /**
51
- * Build auth headers for an API request using a private key.
52
- */
53
- export async function buildAuthHeaders(
54
- privateKey: Hex,
55
- method: string,
56
- path: string,
57
- config: AuthConfig
58
- ): Promise<AuthHeaders> {
59
- const account = privateKeyToAccount(privateKey);
60
- const timestamp = BigInt(Math.floor(Date.now() / 1000));
61
- const nonce = ("0x" + randomBytes(32).toString("hex")) as Hex;
62
-
63
- const signature = await account.signTypedData({
64
- domain: {
65
- ...EIP712_DOMAIN,
66
- chainId: config.chainId,
67
- verifyingContract: config.routerAddress,
68
- },
69
- types: API_REQUEST_TYPES,
70
- primaryType: "APIRequest",
71
- message: {
72
- method: method.toUpperCase(),
73
- path,
74
- timestamp,
75
- nonce,
76
- },
77
- });
78
-
79
- return {
80
- "X-Pay-Agent": account.address,
81
- "X-Pay-Signature": signature,
82
- "X-Pay-Timestamp": timestamp.toString(),
83
- "X-Pay-Nonce": nonce,
84
- };
85
- }
86
-
87
- /**
88
- * Build auth headers using a generic signer (Signer interface).
89
- * Computes the EIP-712 hash manually and delegates signing to the signer.
90
- */
91
- export function buildAuthHeadersWithSigner(
92
- signer: { sign(hash: Uint8Array): Uint8Array; address: string },
93
- method: string,
94
- path: string,
95
- config: AuthConfig
96
- ): AuthHeaders {
97
- const timestamp = BigInt(Math.floor(Date.now() / 1000));
98
- const nonce = ("0x" + randomBytes(32).toString("hex")) as Hex;
99
-
100
- const hash = computeEip712Hash(
101
- method.toUpperCase(),
102
- path,
103
- timestamp,
104
- nonce,
105
- config.chainId,
106
- config.routerAddress
107
- );
108
-
109
- const sigBytes = signer.sign(hash);
110
- const signature = ("0x" + Buffer.from(sigBytes).toString("hex")) as Hex;
111
-
112
- return {
113
- "X-Pay-Agent": signer.address,
114
- "X-Pay-Signature": signature,
115
- "X-Pay-Timestamp": timestamp.toString(),
116
- "X-Pay-Nonce": nonce,
117
- };
118
- }
119
-
120
- /**
121
- * Compute the EIP-712 hash for an APIRequest.
122
- * Must match the server's computation exactly.
123
- */
124
- export function computeEip712Hash(
125
- method: string,
126
- path: string,
127
- timestamp: bigint,
128
- nonce: Hex,
129
- chainId: number,
130
- verifyingContract: Address
131
- ): Uint8Array {
132
- // Type hashes
133
- const domainTypehash = keccak256(
134
- encodePacked(
135
- ["string"],
136
- [
137
- "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)",
138
- ]
139
- )
140
- );
141
- const structTypehash = keccak256(
142
- encodePacked(
143
- ["string"],
144
- [
145
- "APIRequest(string method,string path,uint256 timestamp,bytes32 nonce)",
146
- ]
147
- )
148
- );
149
-
150
- // Domain separator
151
- const nameHash = keccak256(encodePacked(["string"], ["pay"]));
152
- const versionHash = keccak256(encodePacked(["string"], ["0.1"]));
153
-
154
- const domainSeparator = keccak256(
155
- encodePacked(
156
- ["bytes32", "bytes32", "bytes32", "uint256", "bytes32"],
157
- [
158
- domainTypehash,
159
- nameHash,
160
- versionHash,
161
- BigInt(chainId),
162
- ("0x000000000000000000000000" + verifyingContract.slice(2)) as Hex,
163
- ]
164
- )
165
- );
166
-
167
- // Struct hash
168
- const methodHash = keccak256(encodePacked(["string"], [method]));
169
- const pathHash = keccak256(encodePacked(["string"], [path]));
170
-
171
- // Pad nonce to bytes32
172
- const nonceClean = nonce.startsWith("0x") ? nonce.slice(2) : nonce;
173
- const noncePadded = ("0x" + nonceClean.padEnd(64, "0")) as Hex;
174
-
175
- const structHash = keccak256(
176
- encodePacked(
177
- ["bytes32", "bytes32", "bytes32", "uint256", "bytes32"],
178
- [structTypehash, methodHash, pathHash, timestamp, noncePadded]
179
- )
180
- );
181
-
182
- // Final hash: keccak256("\x19\x01" || domainSeparator || structHash)
183
- const finalHash = keccak256(
184
- encodePacked(
185
- ["bytes2", "bytes32", "bytes32"],
186
- ["0x1901" as Hex, domainSeparator, structHash]
187
- )
188
- );
189
-
190
- return hexToBytes(finalHash);
191
- }
192
-
193
- function hexToBytes(hex: string): Uint8Array {
194
- const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
195
- const bytes = new Uint8Array(clean.length / 2);
196
- for (let i = 0; i < bytes.length; i++) {
197
- bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
198
- }
199
- return bytes;
200
- }
1
+ /**
2
+ * EIP-712 authentication for pay API requests.
3
+ *
4
+ * Every authenticated request includes four headers:
5
+ * X-Pay-Agent — wallet address (0x-prefixed, checksummed)
6
+ * X-Pay-Signature — EIP-712 signature (0x-prefixed hex, 65 bytes)
7
+ * X-Pay-Timestamp — unix timestamp in seconds
8
+ * X-Pay-Nonce — random 32-byte hex (0x-prefixed)
9
+ *
10
+ * The EIP-712 domain:
11
+ * name: "pay"
12
+ * version: "0.1"
13
+ * chainId: <from config>
14
+ * verifyingContract: <router address>
15
+ *
16
+ * The typed data:
17
+ * APIRequest(string method, string path, uint256 timestamp, bytes32 nonce)
18
+ */
19
+
20
+ import { type Hex, keccak256, encodePacked, type Address } from "viem";
21
+ import { privateKeyToAccount } from "viem/accounts";
22
+ import { randomBytes } from "node:crypto";
23
+
24
+ export interface AuthConfig {
25
+ chainId: number;
26
+ routerAddress: Address;
27
+ }
28
+
29
+ export interface AuthHeaders {
30
+ "X-Pay-Agent": string;
31
+ "X-Pay-Signature": string;
32
+ "X-Pay-Timestamp": string;
33
+ "X-Pay-Nonce": string;
34
+ }
35
+
36
+ const EIP712_DOMAIN = {
37
+ name: "pay",
38
+ version: "0.1",
39
+ } as const;
40
+
41
+ const API_REQUEST_TYPES = {
42
+ APIRequest: [
43
+ { name: "method", type: "string" },
44
+ { name: "path", type: "string" },
45
+ { name: "timestamp", type: "uint256" },
46
+ { name: "nonce", type: "bytes32" },
47
+ ],
48
+ } as const;
49
+
50
+ /**
51
+ * Build auth headers for an API request using a private key.
52
+ */
53
+ export async function buildAuthHeaders(
54
+ privateKey: Hex,
55
+ method: string,
56
+ path: string,
57
+ config: AuthConfig
58
+ ): Promise<AuthHeaders> {
59
+ const account = privateKeyToAccount(privateKey);
60
+ const timestamp = BigInt(Math.floor(Date.now() / 1000));
61
+ const nonce = ("0x" + randomBytes(32).toString("hex")) as Hex;
62
+
63
+ const signature = await account.signTypedData({
64
+ domain: {
65
+ ...EIP712_DOMAIN,
66
+ chainId: config.chainId,
67
+ verifyingContract: config.routerAddress,
68
+ },
69
+ types: API_REQUEST_TYPES,
70
+ primaryType: "APIRequest",
71
+ message: {
72
+ method: method.toUpperCase(),
73
+ path,
74
+ timestamp,
75
+ nonce,
76
+ },
77
+ });
78
+
79
+ return {
80
+ "X-Pay-Agent": account.address,
81
+ "X-Pay-Signature": signature,
82
+ "X-Pay-Timestamp": timestamp.toString(),
83
+ "X-Pay-Nonce": nonce,
84
+ };
85
+ }
86
+
87
+ /**
88
+ * Build auth headers using a signTypedData function.
89
+ * Used by OWS signers and any non-raw-key signing path.
90
+ */
91
+ export async function buildAuthHeadersSigned(
92
+ address: string,
93
+ signTypedData: (params: {
94
+ domain: Record<string, unknown>;
95
+ types: Record<string, readonly { name: string; type: string }[]>;
96
+ primaryType: string;
97
+ message: Record<string, unknown>;
98
+ }) => Promise<string>,
99
+ method: string,
100
+ path: string,
101
+ config: AuthConfig,
102
+ ): Promise<AuthHeaders> {
103
+ const timestamp = BigInt(Math.floor(Date.now() / 1000));
104
+ const nonce = ("0x" + randomBytes(32).toString("hex")) as Hex;
105
+
106
+ const signature = await signTypedData({
107
+ domain: {
108
+ ...EIP712_DOMAIN,
109
+ chainId: config.chainId,
110
+ verifyingContract: config.routerAddress,
111
+ },
112
+ types: API_REQUEST_TYPES,
113
+ primaryType: "APIRequest",
114
+ message: {
115
+ method: method.toUpperCase(),
116
+ path,
117
+ timestamp,
118
+ nonce,
119
+ },
120
+ });
121
+
122
+ return {
123
+ "X-Pay-Agent": address,
124
+ "X-Pay-Signature": signature,
125
+ "X-Pay-Timestamp": timestamp.toString(),
126
+ "X-Pay-Nonce": nonce,
127
+ };
128
+ }
129
+
130
+ /**
131
+ * Compute the EIP-712 hash for an APIRequest.
132
+ * Must match the server's computation exactly.
133
+ */
134
+ export function computeEip712Hash(
135
+ method: string,
136
+ path: string,
137
+ timestamp: bigint,
138
+ nonce: Hex,
139
+ chainId: number,
140
+ verifyingContract: Address
141
+ ): Uint8Array {
142
+ // Type hashes
143
+ const domainTypehash = keccak256(
144
+ encodePacked(
145
+ ["string"],
146
+ [
147
+ "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)",
148
+ ]
149
+ )
150
+ );
151
+ const structTypehash = keccak256(
152
+ encodePacked(
153
+ ["string"],
154
+ [
155
+ "APIRequest(string method,string path,uint256 timestamp,bytes32 nonce)",
156
+ ]
157
+ )
158
+ );
159
+
160
+ // Domain separator
161
+ const nameHash = keccak256(encodePacked(["string"], ["pay"]));
162
+ const versionHash = keccak256(encodePacked(["string"], ["0.1"]));
163
+
164
+ const domainSeparator = keccak256(
165
+ encodePacked(
166
+ ["bytes32", "bytes32", "bytes32", "uint256", "bytes32"],
167
+ [
168
+ domainTypehash,
169
+ nameHash,
170
+ versionHash,
171
+ BigInt(chainId),
172
+ ("0x000000000000000000000000" + verifyingContract.slice(2)) as Hex,
173
+ ]
174
+ )
175
+ );
176
+
177
+ // Struct hash
178
+ const methodHash = keccak256(encodePacked(["string"], [method]));
179
+ const pathHash = keccak256(encodePacked(["string"], [path]));
180
+
181
+ // Pad nonce to bytes32
182
+ const nonceClean = nonce.startsWith("0x") ? nonce.slice(2) : nonce;
183
+ const noncePadded = ("0x" + nonceClean.padEnd(64, "0")) as Hex;
184
+
185
+ const structHash = keccak256(
186
+ encodePacked(
187
+ ["bytes32", "bytes32", "bytes32", "uint256", "bytes32"],
188
+ [structTypehash, methodHash, pathHash, timestamp, noncePadded]
189
+ )
190
+ );
191
+
192
+ // Final hash: keccak256("\x19\x01" || domainSeparator || structHash)
193
+ const finalHash = keccak256(
194
+ encodePacked(
195
+ ["bytes2", "bytes32", "bytes32"],
196
+ ["0x1901" as Hex, domainSeparator, structHash]
197
+ )
198
+ );
199
+
200
+ return hexToBytes(finalHash);
201
+ }
202
+
203
+ function hexToBytes(hex: string): Uint8Array {
204
+ const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
205
+ const bytes = new Uint8Array(clean.length / 2);
206
+ for (let i = 0; i < bytes.length; i++) {
207
+ bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
208
+ }
209
+ return bytes;
210
+ }