@agirails/sdk 2.2.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -23
- package/dist/ACTPClient.d.ts +7 -0
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +56 -1
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/AgentRegistry.json +133 -0
- package/dist/adapters/X402Adapter.d.ts +34 -7
- package/dist/adapters/X402Adapter.d.ts.map +1 -1
- package/dist/adapters/X402Adapter.js +36 -8
- package/dist/adapters/X402Adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/cli/commands/diff.d.ts +11 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +115 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +51 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/publish.d.ts +11 -0
- package/dist/cli/commands/publish.d.ts.map +1 -0
- package/dist/cli/commands/publish.js +170 -0
- package/dist/cli/commands/publish.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +12 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/commands/pull.js +99 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/agirailsmd.d.ts +94 -0
- package/dist/config/agirailsmd.d.ts.map +1 -0
- package/dist/config/agirailsmd.js +209 -0
- package/dist/config/agirailsmd.js.map +1 -0
- package/dist/config/networks.d.ts +2 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +10 -4
- package/dist/config/networks.js.map +1 -1
- package/dist/config/publishPipeline.d.ts +61 -0
- package/dist/config/publishPipeline.d.ts.map +1 -0
- package/dist/config/publishPipeline.js +192 -0
- package/dist/config/publishPipeline.js.map +1 -0
- package/dist/config/syncOperations.d.ts +67 -0
- package/dist/config/syncOperations.d.ts.map +1 -0
- package/dist/config/syncOperations.js +208 -0
- package/dist/config/syncOperations.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/level0/request.d.ts.map +1 -1
- package/dist/level0/request.js +23 -86
- package/dist/level0/request.js.map +1 -1
- package/dist/level1/Agent.d.ts +0 -11
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +15 -32
- package/dist/level1/Agent.js.map +1 -1
- package/dist/registry/AgentRegistryClient.d.ts +75 -0
- package/dist/registry/AgentRegistryClient.d.ts.map +1 -0
- package/dist/registry/AgentRegistryClient.js +160 -0
- package/dist/registry/AgentRegistryClient.js.map +1 -0
- package/dist/types/adapter.d.ts +39 -0
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/adapter.js +7 -0
- package/dist/types/adapter.js.map +1 -1
- package/dist/types/x402.d.ts +23 -0
- package/dist/types/x402.d.ts.map +1 -1
- package/dist/types/x402.js.map +1 -1
- package/dist/wallet/keystore.d.ts +16 -0
- package/dist/wallet/keystore.d.ts.map +1 -0
- package/dist/wallet/keystore.js +132 -0
- package/dist/wallet/keystore.js.map +1 -0
- package/package.json +2 -1
- package/src/ACTPClient.ts +63 -1
- package/src/abi/AgentRegistry.json +133 -0
- package/src/adapters/X402Adapter.ts +94 -16
- package/src/adapters/index.ts +9 -1
- package/src/cli/commands/diff.ts +141 -0
- package/src/cli/commands/init.ts +65 -4
- package/src/cli/commands/publish.ts +209 -0
- package/src/cli/commands/pull.ts +124 -0
- package/src/cli/index.ts +8 -0
- package/src/config/agirailsmd.ts +262 -0
- package/src/config/networks.ts +12 -4
- package/src/config/publishPipeline.ts +276 -0
- package/src/config/syncOperations.ts +279 -0
- package/src/index.ts +3 -0
- package/src/level0/request.ts +27 -88
- package/src/level1/Agent.ts +16 -32
- package/src/registry/AgentRegistryClient.ts +202 -0
- package/src/types/adapter.ts +14 -0
- package/src/types/x402.ts +32 -0
- package/src/wallet/keystore.ts +119 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentRegistryClient - Thin wrapper for AgentRegistry v2 config operations
|
|
3
|
+
*
|
|
4
|
+
* Provides methods for:
|
|
5
|
+
* - Publishing AGIRAILS.md config (CID + hash) on-chain
|
|
6
|
+
* - Managing launchpad listing visibility
|
|
7
|
+
* - Reading config state for any agent
|
|
8
|
+
*
|
|
9
|
+
* @module registry/AgentRegistryClient
|
|
10
|
+
*/
|
|
11
|
+
import { Signer, Provider } from 'ethers';
|
|
12
|
+
export interface AgentConfigState {
|
|
13
|
+
configHash: string;
|
|
14
|
+
configCID: string;
|
|
15
|
+
listed: boolean;
|
|
16
|
+
isActive: boolean;
|
|
17
|
+
updatedAt: number;
|
|
18
|
+
}
|
|
19
|
+
export interface PublishConfigResult {
|
|
20
|
+
txHash: string;
|
|
21
|
+
}
|
|
22
|
+
interface GasOptions {
|
|
23
|
+
maxFeePerGas?: bigint;
|
|
24
|
+
maxPriorityFeePerGas?: bigint;
|
|
25
|
+
}
|
|
26
|
+
export declare class AgentRegistryClient {
|
|
27
|
+
private readonly registryAddress;
|
|
28
|
+
private readonly signer;
|
|
29
|
+
private readonly gasSettings?;
|
|
30
|
+
private contract;
|
|
31
|
+
private readonlyContract;
|
|
32
|
+
constructor(registryAddress: string, signer: Signer, gasSettings?: GasOptions | undefined);
|
|
33
|
+
/**
|
|
34
|
+
* Create a read-only client (no signer required)
|
|
35
|
+
*/
|
|
36
|
+
static readOnly(registryAddress: string, provider: Provider): AgentRegistryClient;
|
|
37
|
+
/**
|
|
38
|
+
* Publish config (AGIRAILS.md) on-chain
|
|
39
|
+
*
|
|
40
|
+
* @param cid - IPFS CID pointing to the AGIRAILS.md file
|
|
41
|
+
* @param hash - keccak256 of canonical AGIRAILS.md content (bytes32)
|
|
42
|
+
* @returns Transaction hash
|
|
43
|
+
*/
|
|
44
|
+
publishConfig(cid: string, hash: string): Promise<PublishConfigResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Set launchpad listing visibility
|
|
47
|
+
*
|
|
48
|
+
* @param listed - Whether agent should be visible on launchpad
|
|
49
|
+
* @returns Transaction hash
|
|
50
|
+
*/
|
|
51
|
+
setListed(listed: boolean): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Get config state for an agent
|
|
54
|
+
*
|
|
55
|
+
* @param agentAddress - Agent's Ethereum address
|
|
56
|
+
* @returns Config state (hash, CID, listed, isActive, updatedAt)
|
|
57
|
+
*/
|
|
58
|
+
getConfig(agentAddress: string): Promise<AgentConfigState>;
|
|
59
|
+
/**
|
|
60
|
+
* Check if an agent is listed on the launchpad
|
|
61
|
+
*
|
|
62
|
+
* @param agentAddress - Agent's Ethereum address
|
|
63
|
+
* @returns true if agent is listed
|
|
64
|
+
*/
|
|
65
|
+
isListed(agentAddress: string): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Get the on-chain config hash for an agent
|
|
68
|
+
*
|
|
69
|
+
* @param agentAddress - Agent's Ethereum address
|
|
70
|
+
* @returns Config hash (bytes32) or zero hash if not published
|
|
71
|
+
*/
|
|
72
|
+
getConfigHash(agentAddress: string): Promise<string>;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=AgentRegistryClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRegistryClient.d.ts","sourceRoot":"","sources":["../../src/registry/AgentRegistryClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAY,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQpD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAMD,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAN/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,gBAAgB,CAAW;gBAGhB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,wBAAY;IAM3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,mBAAmB;IAajF;;;;;;OAMG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6C5E;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCjD;;;;;OAKG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAahE;;;;;OAKG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;;;;OAKG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAI3D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentRegistryClient - Thin wrapper for AgentRegistry v2 config operations
|
|
4
|
+
*
|
|
5
|
+
* Provides methods for:
|
|
6
|
+
* - Publishing AGIRAILS.md config (CID + hash) on-chain
|
|
7
|
+
* - Managing launchpad listing visibility
|
|
8
|
+
* - Reading config state for any agent
|
|
9
|
+
*
|
|
10
|
+
* @module registry/AgentRegistryClient
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.AgentRegistryClient = void 0;
|
|
17
|
+
const ethers_1 = require("ethers");
|
|
18
|
+
const AgentRegistry_json_1 = __importDefault(require("../abi/AgentRegistry.json"));
|
|
19
|
+
const errors_1 = require("../errors");
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Client
|
|
22
|
+
// ============================================================================
|
|
23
|
+
class AgentRegistryClient {
|
|
24
|
+
constructor(registryAddress, signer, gasSettings) {
|
|
25
|
+
this.registryAddress = registryAddress;
|
|
26
|
+
this.signer = signer;
|
|
27
|
+
this.gasSettings = gasSettings;
|
|
28
|
+
this.contract = new ethers_1.Contract(registryAddress, AgentRegistry_json_1.default, signer);
|
|
29
|
+
this.readonlyContract = this.contract;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a read-only client (no signer required)
|
|
33
|
+
*/
|
|
34
|
+
static readOnly(registryAddress, provider) {
|
|
35
|
+
// Create a minimal signer-like object for the contract
|
|
36
|
+
// but only the readonly contract will be used
|
|
37
|
+
const contract = new ethers_1.Contract(registryAddress, AgentRegistry_json_1.default, provider);
|
|
38
|
+
const client = Object.create(AgentRegistryClient.prototype);
|
|
39
|
+
client.registryAddress = registryAddress;
|
|
40
|
+
client.readonlyContract = contract;
|
|
41
|
+
client.contract = null; // Write operations will throw
|
|
42
|
+
return client;
|
|
43
|
+
}
|
|
44
|
+
// ========== WRITE OPERATIONS ==========
|
|
45
|
+
/**
|
|
46
|
+
* Publish config (AGIRAILS.md) on-chain
|
|
47
|
+
*
|
|
48
|
+
* @param cid - IPFS CID pointing to the AGIRAILS.md file
|
|
49
|
+
* @param hash - keccak256 of canonical AGIRAILS.md content (bytes32)
|
|
50
|
+
* @returns Transaction hash
|
|
51
|
+
*/
|
|
52
|
+
async publishConfig(cid, hash) {
|
|
53
|
+
if (!this.contract) {
|
|
54
|
+
throw new Error('Write operations require a signer. Use AgentRegistryClient constructor, not readOnly().');
|
|
55
|
+
}
|
|
56
|
+
if (!cid || cid.length === 0) {
|
|
57
|
+
throw new errors_1.ValidationError('cid', 'IPFS CID is required');
|
|
58
|
+
}
|
|
59
|
+
if (cid.length > 128) {
|
|
60
|
+
throw new errors_1.ValidationError('cid', 'CID too long (max 128 characters)');
|
|
61
|
+
}
|
|
62
|
+
if (!hash || hash === '0x' + '0'.repeat(64)) {
|
|
63
|
+
throw new errors_1.ValidationError('hash', 'Config hash is required (cannot be zero)');
|
|
64
|
+
}
|
|
65
|
+
if (!/^0x[a-fA-F0-9]{64}$/.test(hash)) {
|
|
66
|
+
throw new errors_1.ValidationError('hash', 'Config hash must be a valid bytes32 hex string');
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const estimatedGas = await this.contract.publishConfig.estimateGas(cid, hash);
|
|
70
|
+
const gasLimit = (estimatedGas * 120n) / 100n; // 20% buffer
|
|
71
|
+
const txOptions = { gasLimit };
|
|
72
|
+
if (this.gasSettings?.maxFeePerGas) {
|
|
73
|
+
txOptions.maxFeePerGas = this.gasSettings.maxFeePerGas;
|
|
74
|
+
}
|
|
75
|
+
if (this.gasSettings?.maxPriorityFeePerGas) {
|
|
76
|
+
txOptions.maxPriorityFeePerGas = this.gasSettings.maxPriorityFeePerGas;
|
|
77
|
+
}
|
|
78
|
+
const tx = await this.contract.publishConfig(cid, hash, txOptions);
|
|
79
|
+
const receipt = await tx.wait();
|
|
80
|
+
return { txHash: receipt.hash };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof Error && error.message.includes('Not registered')) {
|
|
84
|
+
throw new errors_1.TransactionRevertedError('Agent not registered. Register first using the AgentRegistry before publishing config.', 'publishConfig');
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set launchpad listing visibility
|
|
91
|
+
*
|
|
92
|
+
* @param listed - Whether agent should be visible on launchpad
|
|
93
|
+
* @returns Transaction hash
|
|
94
|
+
*/
|
|
95
|
+
async setListed(listed) {
|
|
96
|
+
if (!this.contract) {
|
|
97
|
+
throw new Error('Write operations require a signer. Use AgentRegistryClient constructor, not readOnly().');
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const estimatedGas = await this.contract.setListed.estimateGas(listed);
|
|
101
|
+
const gasLimit = (estimatedGas * 115n) / 100n; // 15% buffer
|
|
102
|
+
const txOptions = { gasLimit };
|
|
103
|
+
if (this.gasSettings?.maxFeePerGas) {
|
|
104
|
+
txOptions.maxFeePerGas = this.gasSettings.maxFeePerGas;
|
|
105
|
+
}
|
|
106
|
+
if (this.gasSettings?.maxPriorityFeePerGas) {
|
|
107
|
+
txOptions.maxPriorityFeePerGas = this.gasSettings.maxPriorityFeePerGas;
|
|
108
|
+
}
|
|
109
|
+
const tx = await this.contract.setListed(listed, txOptions);
|
|
110
|
+
const receipt = await tx.wait();
|
|
111
|
+
return receipt.hash;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
if (error instanceof Error && error.message.includes('Not registered')) {
|
|
115
|
+
throw new errors_1.TransactionRevertedError('Agent not registered. Register first before setting listing status.', 'setListed');
|
|
116
|
+
}
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// ========== READ OPERATIONS ==========
|
|
121
|
+
/**
|
|
122
|
+
* Get config state for an agent
|
|
123
|
+
*
|
|
124
|
+
* @param agentAddress - Agent's Ethereum address
|
|
125
|
+
* @returns Config state (hash, CID, listed, isActive, updatedAt)
|
|
126
|
+
*/
|
|
127
|
+
async getConfig(agentAddress) {
|
|
128
|
+
const contract = this.readonlyContract || this.contract;
|
|
129
|
+
const profile = await contract.getAgent(agentAddress);
|
|
130
|
+
return {
|
|
131
|
+
configHash: profile.configHash,
|
|
132
|
+
configCID: profile.configCID,
|
|
133
|
+
listed: profile.listed,
|
|
134
|
+
isActive: profile.isActive,
|
|
135
|
+
updatedAt: Number(profile.updatedAt),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Check if an agent is listed on the launchpad
|
|
140
|
+
*
|
|
141
|
+
* @param agentAddress - Agent's Ethereum address
|
|
142
|
+
* @returns true if agent is listed
|
|
143
|
+
*/
|
|
144
|
+
async isListed(agentAddress) {
|
|
145
|
+
const config = await this.getConfig(agentAddress);
|
|
146
|
+
return config.listed;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the on-chain config hash for an agent
|
|
150
|
+
*
|
|
151
|
+
* @param agentAddress - Agent's Ethereum address
|
|
152
|
+
* @returns Config hash (bytes32) or zero hash if not published
|
|
153
|
+
*/
|
|
154
|
+
async getConfigHash(agentAddress) {
|
|
155
|
+
const config = await this.getConfig(agentAddress);
|
|
156
|
+
return config.configHash;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.AgentRegistryClient = AgentRegistryClient;
|
|
160
|
+
//# sourceMappingURL=AgentRegistryClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRegistryClient.js","sourceRoot":"","sources":["../../src/registry/AgentRegistryClient.ts"],"names":[],"mappings":"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"}
|
package/dist/types/adapter.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* @module types/adapter
|
|
11
11
|
*/
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
+
import type { X402FeeBreakdown } from './x402';
|
|
13
14
|
/**
|
|
14
15
|
* Metadata describing an adapter's capabilities.
|
|
15
16
|
*
|
|
@@ -294,6 +295,11 @@ export interface UnifiedPayResult {
|
|
|
294
295
|
* Use with ReputationReporter.reportSettlement() after release.
|
|
295
296
|
*/
|
|
296
297
|
erc8004AgentId?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Fee breakdown for x402 payments routed through X402Relay.
|
|
300
|
+
* Present only when relay is configured and payment used the relay path.
|
|
301
|
+
*/
|
|
302
|
+
feeBreakdown?: X402FeeBreakdown;
|
|
297
303
|
}
|
|
298
304
|
/**
|
|
299
305
|
* Zod schema for UnifiedPayResult validation.
|
|
@@ -312,6 +318,25 @@ export declare const UnifiedPayResultSchema: z.ZodObject<{
|
|
|
312
318
|
requester: z.ZodString;
|
|
313
319
|
deadline: z.ZodString;
|
|
314
320
|
erc8004AgentId: z.ZodOptional<z.ZodString>;
|
|
321
|
+
feeBreakdown: z.ZodOptional<z.ZodObject<{
|
|
322
|
+
grossAmount: z.ZodString;
|
|
323
|
+
providerNet: z.ZodString;
|
|
324
|
+
platformFee: z.ZodString;
|
|
325
|
+
feeBps: z.ZodNumber;
|
|
326
|
+
estimated: z.ZodLiteral<true>;
|
|
327
|
+
}, "strip", z.ZodTypeAny, {
|
|
328
|
+
grossAmount: string;
|
|
329
|
+
providerNet: string;
|
|
330
|
+
platformFee: string;
|
|
331
|
+
feeBps: number;
|
|
332
|
+
estimated: true;
|
|
333
|
+
}, {
|
|
334
|
+
grossAmount: string;
|
|
335
|
+
providerNet: string;
|
|
336
|
+
platformFee: string;
|
|
337
|
+
feeBps: number;
|
|
338
|
+
estimated: true;
|
|
339
|
+
}>>;
|
|
315
340
|
}, "strip", z.ZodTypeAny, {
|
|
316
341
|
txId: string;
|
|
317
342
|
requester: string;
|
|
@@ -326,6 +351,13 @@ export declare const UnifiedPayResultSchema: z.ZodObject<{
|
|
|
326
351
|
response?: any;
|
|
327
352
|
error?: string | undefined;
|
|
328
353
|
erc8004AgentId?: string | undefined;
|
|
354
|
+
feeBreakdown?: {
|
|
355
|
+
grossAmount: string;
|
|
356
|
+
providerNet: string;
|
|
357
|
+
platformFee: string;
|
|
358
|
+
feeBps: number;
|
|
359
|
+
estimated: true;
|
|
360
|
+
} | undefined;
|
|
329
361
|
}, {
|
|
330
362
|
txId: string;
|
|
331
363
|
requester: string;
|
|
@@ -340,6 +372,13 @@ export declare const UnifiedPayResultSchema: z.ZodObject<{
|
|
|
340
372
|
response?: any;
|
|
341
373
|
error?: string | undefined;
|
|
342
374
|
erc8004AgentId?: string | undefined;
|
|
375
|
+
feeBreakdown?: {
|
|
376
|
+
grossAmount: string;
|
|
377
|
+
providerNet: string;
|
|
378
|
+
platformFee: string;
|
|
379
|
+
feeBps: number;
|
|
380
|
+
estimated: true;
|
|
381
|
+
} | undefined;
|
|
343
382
|
}>;
|
|
344
383
|
/**
|
|
345
384
|
* Validates UnifiedPayParams at runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAM/C;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;IAEpB,kDAAkD;IAClD,gBAAgB,EAAE,OAAO,CAAC;IAE1B,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAE1B,mDAAmD;IACnD,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAElC;;;;;OAKG;IACH,cAAc,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAEhD,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gCAAgC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1C;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IAEX,sCAAsC;IACtC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3B,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAajC,CAAC;AAMH;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,aAAa,CAAC;AAElE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,KAAK,EAAE,uBAAuB,CAAC;IAE/B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IAEjB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBjC,CAAC;AAMH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAEvG"}
|
package/dist/types/adapter.js
CHANGED
|
@@ -87,6 +87,13 @@ exports.UnifiedPayResultSchema = zod_1.z.object({
|
|
|
87
87
|
requester: zod_1.z.string().min(1),
|
|
88
88
|
deadline: zod_1.z.string().min(1),
|
|
89
89
|
erc8004AgentId: zod_1.z.string().optional(),
|
|
90
|
+
feeBreakdown: zod_1.z.object({
|
|
91
|
+
grossAmount: zod_1.z.string(),
|
|
92
|
+
providerNet: zod_1.z.string(),
|
|
93
|
+
platformFee: zod_1.z.string(),
|
|
94
|
+
feeBps: zod_1.z.number(),
|
|
95
|
+
estimated: zod_1.z.literal(true),
|
|
96
|
+
}).optional(),
|
|
90
97
|
});
|
|
91
98
|
// ============================================================================
|
|
92
99
|
// Validation Helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,6BAAwB;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/types/x402.d.ts
CHANGED
|
@@ -145,6 +145,29 @@ export declare class X402Error extends Error {
|
|
|
145
145
|
*/
|
|
146
146
|
toString(): string;
|
|
147
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Fee breakdown for x402 payments routed through X402Relay.
|
|
150
|
+
*
|
|
151
|
+
* Shows how the gross amount was split between provider and platform.
|
|
152
|
+
* Fee = max(grossAmount * feeBps / 10000, MIN_FEE).
|
|
153
|
+
*
|
|
154
|
+
* NOTE: This is a client-side **estimate** computed from the configured
|
|
155
|
+
* platformFeeBps. The on-chain X402Relay contract is the source of truth.
|
|
156
|
+
* If an admin updates the relay's fee rate, this estimate may diverge
|
|
157
|
+
* from the actual on-chain split until the SDK config is refreshed.
|
|
158
|
+
*/
|
|
159
|
+
export interface X402FeeBreakdown {
|
|
160
|
+
/** Total amount from the 402 header (USDC wei, 6 decimals) */
|
|
161
|
+
grossAmount: string;
|
|
162
|
+
/** Estimated amount provider received: grossAmount - platformFee */
|
|
163
|
+
providerNet: string;
|
|
164
|
+
/** Estimated amount treasury received: max(feeBps%, $0.05) */
|
|
165
|
+
platformFee: string;
|
|
166
|
+
/** Fee rate used for estimate (basis points, e.g. 100 = 1%) */
|
|
167
|
+
feeBps: number;
|
|
168
|
+
/** True — this is a client-side estimate, not read from chain */
|
|
169
|
+
estimated: true;
|
|
170
|
+
}
|
|
148
171
|
/**
|
|
149
172
|
* Type guard to check if an error is an X402Error.
|
|
150
173
|
*
|
package/dist/types/x402.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../src/types/x402.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;;GAIG;AACH,eAAO,MAAM,YAAY;IACvB,qDAAqD;;IAErD,8CAA8C;;IAE9C,sCAAsC;;IAEtC,wDAAwD;;IAExD,uCAAuC;;IAEvC,0CAA0C;;IAE1C,0CAA0C;;IAE1C,gDAAgD;;CAExC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;IAC7B,wCAAwC;;IAExC,mCAAmC;;CAE3B,CAAC;AAMX,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IAEvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,OAAO,EAAE,WAAW,CAAC;IAErB,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;IAEjB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;GAIG;AACH,oBAAY,aAAa;IACvB,kCAAkC;IAClC,gBAAgB,qBAAqB;IAErC,+CAA+C;IAC/C,eAAe,oBAAoB;IAEnC,iEAAiE;IACjE,cAAc,mBAAmB;IAEjC,wDAAwD;IACxD,eAAe,oBAAoB;IAEnC,oDAAoD;IACpD,eAAe,oBAAoB;IAEnC,+DAA+D;IAC/D,gBAAgB,qBAAqB;IAErC,uDAAuD;IACvD,cAAc,mBAAmB;IAEjC,8CAA8C;IAC9C,YAAY,iBAAiB;IAE7B,4CAA4C;IAC5C,eAAe,oBAAoB;IAEnC,4CAA4C;IAC5C,iBAAiB,sBAAsB;CACxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAYhB,IAAI,EAAE,aAAa;aACnB,QAAQ,CAAC;IAZ3B,SAAgB,IAAI,eAAe;IAEnC;;;;;;OAMG;gBAED,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,sBAAU;IAUrC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW,CAE1E"}
|
|
1
|
+
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../src/types/x402.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;;GAIG;AACH,eAAO,MAAM,YAAY;IACvB,qDAAqD;;IAErD,8CAA8C;;IAE9C,sCAAsC;;IAEtC,wDAAwD;;IAExD,uCAAuC;;IAEvC,0CAA0C;;IAE1C,0CAA0C;;IAE1C,gDAAgD;;CAExC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;IAC7B,wCAAwC;;IAExC,mCAAmC;;CAE3B,CAAC;AAMX,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IAEvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,OAAO,EAAE,WAAW,CAAC;IAErB,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;IAEjB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;GAIG;AACH,oBAAY,aAAa;IACvB,kCAAkC;IAClC,gBAAgB,qBAAqB;IAErC,+CAA+C;IAC/C,eAAe,oBAAoB;IAEnC,iEAAiE;IACjE,cAAc,mBAAmB;IAEjC,wDAAwD;IACxD,eAAe,oBAAoB;IAEnC,oDAAoD;IACpD,eAAe,oBAAoB;IAEnC,+DAA+D;IAC/D,gBAAgB,qBAAqB;IAErC,uDAAuD;IACvD,cAAc,mBAAmB;IAEjC,8CAA8C;IAC9C,YAAY,iBAAiB;IAE7B,4CAA4C;IAC5C,eAAe,oBAAoB;IAEnC,4CAA4C;IAC5C,iBAAiB,sBAAsB;CACxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAYhB,IAAI,EAAE,aAAa;aACnB,QAAQ,CAAC;IAZ3B,SAAgB,IAAI,eAAe;IAEnC;;;;;;OAMG;gBAED,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,sBAAU;IAUrC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IAEpB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IAEpB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IAEf,iEAAiE;IACjE,SAAS,EAAE,IAAI,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW,CAE1E"}
|
package/dist/types/x402.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/types/x402.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;GAIG;AACU,QAAA,YAAY,GAAG;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,oBAAoB;IAC9B,8CAA8C;IAC9C,OAAO,EAAE,mBAAmB;IAC5B,sCAAsC;IACtC,MAAM,EAAE,kBAAkB;IAC1B,wDAAwD;IACxD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,KAAK,EAAE,iBAAiB;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,oBAAoB;IAC9B,0CAA0C;IAC1C,cAAc,EAAE,kBAAkB;IAClC,gDAAgD;IAChD,UAAU,EAAE,cAAc;CAClB,CAAC;AAEX;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG;IAChC,wCAAwC;IACxC,KAAK,EAAE,iBAAiB;IACxB,mCAAmC;IACnC,SAAS,EAAE,qBAAqB;CACxB,CAAC;AA4CX,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;GAIG;AACH,IAAY,aA8BX;AA9BD,WAAY,aAAa;IACvB,kCAAkC;IAClC,sDAAqC,CAAA;IAErC,+CAA+C;IAC/C,oDAAmC,CAAA;IAEnC,iEAAiE;IACjE,kDAAiC,CAAA;IAEjC,wDAAwD;IACxD,oDAAmC,CAAA;IAEnC,oDAAoD;IACpD,oDAAmC,CAAA;IAEnC,+DAA+D;IAC/D,sDAAqC,CAAA;IAErC,uDAAuD;IACvD,kDAAiC,CAAA;IAEjC,8CAA8C;IAC9C,8CAA6B,CAAA;IAE7B,4CAA4C;IAC5C,oDAAmC,CAAA;IAEnC,4CAA4C;IAC5C,wDAAuC,CAAA;AACzC,CAAC,EA9BW,aAAa,6BAAb,aAAa,QA8BxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,SAAU,SAAQ,KAAK;IAGlC;;;;;;OAMG;IACH,YACE,OAAe,EACC,IAAmB,EACnB,QAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAe;QACnB,aAAQ,GAAR,QAAQ,CAAW;QAZrB,SAAI,GAAG,WAAW,CAAC;QAgBjC,kDAAkD;QAClD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,cAAc,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;CACF;AA7BD,8BA6BC;
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/types/x402.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;GAIG;AACU,QAAA,YAAY,GAAG;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,oBAAoB;IAC9B,8CAA8C;IAC9C,OAAO,EAAE,mBAAmB;IAC5B,sCAAsC;IACtC,MAAM,EAAE,kBAAkB;IAC1B,wDAAwD;IACxD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,KAAK,EAAE,iBAAiB;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,oBAAoB;IAC9B,0CAA0C;IAC1C,cAAc,EAAE,kBAAkB;IAClC,gDAAgD;IAChD,UAAU,EAAE,cAAc;CAClB,CAAC;AAEX;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG;IAChC,wCAAwC;IACxC,KAAK,EAAE,iBAAiB;IACxB,mCAAmC;IACnC,SAAS,EAAE,qBAAqB;CACxB,CAAC;AA4CX,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;GAIG;AACH,IAAY,aA8BX;AA9BD,WAAY,aAAa;IACvB,kCAAkC;IAClC,sDAAqC,CAAA;IAErC,+CAA+C;IAC/C,oDAAmC,CAAA;IAEnC,iEAAiE;IACjE,kDAAiC,CAAA;IAEjC,wDAAwD;IACxD,oDAAmC,CAAA;IAEnC,oDAAoD;IACpD,oDAAmC,CAAA;IAEnC,+DAA+D;IAC/D,sDAAqC,CAAA;IAErC,uDAAuD;IACvD,kDAAiC,CAAA;IAEjC,8CAA8C;IAC9C,8CAA6B,CAAA;IAE7B,4CAA4C;IAC5C,oDAAmC,CAAA;IAEnC,4CAA4C;IAC5C,wDAAuC,CAAA;AACzC,CAAC,EA9BW,aAAa,6BAAb,aAAa,QA8BxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,SAAU,SAAQ,KAAK;IAGlC;;;;;;OAMG;IACH,YACE,OAAe,EACC,IAAmB,EACnB,QAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAe;QACnB,aAAQ,GAAR,QAAQ,CAAW;QAZrB,SAAI,GAAG,WAAW,CAAC;QAgBjC,kDAAkD;QAClD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,cAAc,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;CACF;AA7BD,8BA6BC;AAkCD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,SAAS,CAAC;AACpC,CAAC;AAFD,kCAEC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,cAAc,CAAC;AAClE,CAAC;AAFD,gDAEC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-resolve private key: env var → keystore → undefined.
|
|
3
|
+
* Never logs or prints the key itself.
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolvePrivateKey(stateDirectory?: string): Promise<string | undefined>;
|
|
6
|
+
/**
|
|
7
|
+
* Get cached address from last resolvePrivateKey() call.
|
|
8
|
+
* Works for both env-var and keystore resolution paths.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCachedAddress(stateDirectory?: string): string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Clear all cached keys and addresses (for testing).
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare function _clearCache(): void;
|
|
16
|
+
//# sourceMappingURL=keystore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../../src/wallet/keystore.ts"],"names":[],"mappings":"AA+CA;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU5E;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports._clearCache = exports.getCachedAddress = exports.resolvePrivateKey = void 0;
|
|
27
|
+
/**
|
|
28
|
+
* Keystore auto-resolution for ACTP wallets.
|
|
29
|
+
*
|
|
30
|
+
* Resolution order:
|
|
31
|
+
* 1. ACTP_PRIVATE_KEY env var (backward compat, highest priority)
|
|
32
|
+
* 2. .actp/keystore.json decrypted with ACTP_KEY_PASSWORD
|
|
33
|
+
* 3. undefined (caller decides what to do)
|
|
34
|
+
*/
|
|
35
|
+
const fs = __importStar(require("fs"));
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const ethers_1 = require("ethers");
|
|
38
|
+
// Cache keyed by resolved keystorePath to support multiple stateDirectories
|
|
39
|
+
const _cache = new Map();
|
|
40
|
+
// Separate cache for env-var-resolved key (no path dependency)
|
|
41
|
+
let _envCache = null;
|
|
42
|
+
/**
|
|
43
|
+
* Validate that stateDirectory doesn't escape expected boundaries.
|
|
44
|
+
* Guards against path traversal when stateDirectory comes from user input.
|
|
45
|
+
*/
|
|
46
|
+
function validateStateDirectory(stateDirectory) {
|
|
47
|
+
if (stateDirectory.includes('\0')) {
|
|
48
|
+
throw new Error('Invalid stateDirectory: null byte detected');
|
|
49
|
+
}
|
|
50
|
+
// Reject raw '..' in the input (before normalization resolves it)
|
|
51
|
+
// Catches both relative traversal (../../etc) and embedded traversal (/tmp/../../etc)
|
|
52
|
+
if (stateDirectory.includes('..')) {
|
|
53
|
+
throw new Error('Invalid stateDirectory: path traversal detected (..)');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate and normalize a raw private key string.
|
|
58
|
+
* Trims whitespace and verifies 0x-prefixed 64-char hex format.
|
|
59
|
+
*/
|
|
60
|
+
function validateRawKey(raw, source) {
|
|
61
|
+
const trimmed = raw.trim();
|
|
62
|
+
if (!/^0x[0-9a-fA-F]{64}$/.test(trimmed)) {
|
|
63
|
+
throw new Error(`Invalid private key from ${source}: expected 0x-prefixed 64-char hex string`);
|
|
64
|
+
}
|
|
65
|
+
return trimmed;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Auto-resolve private key: env var → keystore → undefined.
|
|
69
|
+
* Never logs or prints the key itself.
|
|
70
|
+
*/
|
|
71
|
+
async function resolvePrivateKey(stateDirectory) {
|
|
72
|
+
// 1. Env var (highest priority, backward compat)
|
|
73
|
+
if (process.env.ACTP_PRIVATE_KEY) {
|
|
74
|
+
if (_envCache)
|
|
75
|
+
return _envCache.key;
|
|
76
|
+
const key = validateRawKey(process.env.ACTP_PRIVATE_KEY, 'ACTP_PRIVATE_KEY env var');
|
|
77
|
+
const address = new ethers_1.Wallet(key).address;
|
|
78
|
+
_envCache = { key, address };
|
|
79
|
+
return key;
|
|
80
|
+
}
|
|
81
|
+
// 2. Resolve keystore path
|
|
82
|
+
if (stateDirectory) {
|
|
83
|
+
validateStateDirectory(stateDirectory);
|
|
84
|
+
}
|
|
85
|
+
const actpDir = stateDirectory
|
|
86
|
+
? path.join(stateDirectory, '.actp')
|
|
87
|
+
: path.join(process.cwd(), '.actp');
|
|
88
|
+
const keystorePath = path.resolve(actpDir, 'keystore.json');
|
|
89
|
+
// 3. Cache hit (keyed by resolved path)
|
|
90
|
+
const cached = _cache.get(keystorePath);
|
|
91
|
+
if (cached)
|
|
92
|
+
return cached.key;
|
|
93
|
+
// 4. Keystore file
|
|
94
|
+
if (!fs.existsSync(keystorePath))
|
|
95
|
+
return undefined;
|
|
96
|
+
const password = process.env.ACTP_KEY_PASSWORD;
|
|
97
|
+
if (!password) {
|
|
98
|
+
throw new Error('Keystore found at ' + keystorePath + ' but ACTP_KEY_PASSWORD is not set.\n' +
|
|
99
|
+
'Set it: export ACTP_KEY_PASSWORD="your-password"');
|
|
100
|
+
}
|
|
101
|
+
const keystore = fs.readFileSync(keystorePath, 'utf-8');
|
|
102
|
+
const wallet = await ethers_1.Wallet.fromEncryptedJson(keystore, password);
|
|
103
|
+
_cache.set(keystorePath, { key: wallet.privateKey, address: wallet.address });
|
|
104
|
+
return wallet.privateKey;
|
|
105
|
+
}
|
|
106
|
+
exports.resolvePrivateKey = resolvePrivateKey;
|
|
107
|
+
/**
|
|
108
|
+
* Get cached address from last resolvePrivateKey() call.
|
|
109
|
+
* Works for both env-var and keystore resolution paths.
|
|
110
|
+
*/
|
|
111
|
+
function getCachedAddress(stateDirectory) {
|
|
112
|
+
// Env var path
|
|
113
|
+
if (_envCache)
|
|
114
|
+
return _envCache.address;
|
|
115
|
+
// Keystore path — look up by resolved path
|
|
116
|
+
const actpDir = stateDirectory
|
|
117
|
+
? path.join(stateDirectory, '.actp')
|
|
118
|
+
: path.join(process.cwd(), '.actp');
|
|
119
|
+
const keystorePath = path.resolve(actpDir, 'keystore.json');
|
|
120
|
+
return _cache.get(keystorePath)?.address;
|
|
121
|
+
}
|
|
122
|
+
exports.getCachedAddress = getCachedAddress;
|
|
123
|
+
/**
|
|
124
|
+
* Clear all cached keys and addresses (for testing).
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
function _clearCache() {
|
|
128
|
+
_cache.clear();
|
|
129
|
+
_envCache = null;
|
|
130
|
+
}
|
|
131
|
+
exports._clearCache = _clearCache;
|
|
132
|
+
//# sourceMappingURL=keystore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/wallet/keystore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agirails/sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "AGIRAILS SDK for the ACTP (Agent Commerce Transaction Protocol) - Unified mock + blockchain support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"fast-json-stable-stringify": "2.1.0",
|
|
81
81
|
"kubo-rpc-client": "3.0.1",
|
|
82
82
|
"proper-lockfile": "4.1.2",
|
|
83
|
+
"yaml": "^2.8.2",
|
|
83
84
|
"zod": "^3.22.4"
|
|
84
85
|
},
|
|
85
86
|
"devDependencies": {
|