@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.
Files changed (93) hide show
  1. package/README.md +20 -23
  2. package/dist/ACTPClient.d.ts +7 -0
  3. package/dist/ACTPClient.d.ts.map +1 -1
  4. package/dist/ACTPClient.js +56 -1
  5. package/dist/ACTPClient.js.map +1 -1
  6. package/dist/abi/AgentRegistry.json +133 -0
  7. package/dist/adapters/X402Adapter.d.ts +34 -7
  8. package/dist/adapters/X402Adapter.d.ts.map +1 -1
  9. package/dist/adapters/X402Adapter.js +36 -8
  10. package/dist/adapters/X402Adapter.js.map +1 -1
  11. package/dist/adapters/index.d.ts +1 -1
  12. package/dist/adapters/index.d.ts.map +1 -1
  13. package/dist/adapters/index.js.map +1 -1
  14. package/dist/cli/commands/diff.d.ts +11 -0
  15. package/dist/cli/commands/diff.d.ts.map +1 -0
  16. package/dist/cli/commands/diff.js +115 -0
  17. package/dist/cli/commands/diff.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +51 -2
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/publish.d.ts +11 -0
  22. package/dist/cli/commands/publish.d.ts.map +1 -0
  23. package/dist/cli/commands/publish.js +170 -0
  24. package/dist/cli/commands/publish.js.map +1 -0
  25. package/dist/cli/commands/pull.d.ts +12 -0
  26. package/dist/cli/commands/pull.d.ts.map +1 -0
  27. package/dist/cli/commands/pull.js +99 -0
  28. package/dist/cli/commands/pull.js.map +1 -0
  29. package/dist/cli/index.js +7 -0
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/config/agirailsmd.d.ts +94 -0
  32. package/dist/config/agirailsmd.d.ts.map +1 -0
  33. package/dist/config/agirailsmd.js +209 -0
  34. package/dist/config/agirailsmd.js.map +1 -0
  35. package/dist/config/networks.d.ts +2 -0
  36. package/dist/config/networks.d.ts.map +1 -1
  37. package/dist/config/networks.js +10 -4
  38. package/dist/config/networks.js.map +1 -1
  39. package/dist/config/publishPipeline.d.ts +61 -0
  40. package/dist/config/publishPipeline.d.ts.map +1 -0
  41. package/dist/config/publishPipeline.js +192 -0
  42. package/dist/config/publishPipeline.js.map +1 -0
  43. package/dist/config/syncOperations.d.ts +67 -0
  44. package/dist/config/syncOperations.d.ts.map +1 -0
  45. package/dist/config/syncOperations.js +208 -0
  46. package/dist/config/syncOperations.js.map +1 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +7 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/level0/request.d.ts.map +1 -1
  52. package/dist/level0/request.js +23 -86
  53. package/dist/level0/request.js.map +1 -1
  54. package/dist/level1/Agent.d.ts +0 -11
  55. package/dist/level1/Agent.d.ts.map +1 -1
  56. package/dist/level1/Agent.js +15 -32
  57. package/dist/level1/Agent.js.map +1 -1
  58. package/dist/registry/AgentRegistryClient.d.ts +75 -0
  59. package/dist/registry/AgentRegistryClient.d.ts.map +1 -0
  60. package/dist/registry/AgentRegistryClient.js +160 -0
  61. package/dist/registry/AgentRegistryClient.js.map +1 -0
  62. package/dist/types/adapter.d.ts +39 -0
  63. package/dist/types/adapter.d.ts.map +1 -1
  64. package/dist/types/adapter.js +7 -0
  65. package/dist/types/adapter.js.map +1 -1
  66. package/dist/types/x402.d.ts +23 -0
  67. package/dist/types/x402.d.ts.map +1 -1
  68. package/dist/types/x402.js.map +1 -1
  69. package/dist/wallet/keystore.d.ts +16 -0
  70. package/dist/wallet/keystore.d.ts.map +1 -0
  71. package/dist/wallet/keystore.js +132 -0
  72. package/dist/wallet/keystore.js.map +1 -0
  73. package/package.json +2 -1
  74. package/src/ACTPClient.ts +63 -1
  75. package/src/abi/AgentRegistry.json +133 -0
  76. package/src/adapters/X402Adapter.ts +94 -16
  77. package/src/adapters/index.ts +9 -1
  78. package/src/cli/commands/diff.ts +141 -0
  79. package/src/cli/commands/init.ts +65 -4
  80. package/src/cli/commands/publish.ts +209 -0
  81. package/src/cli/commands/pull.ts +124 -0
  82. package/src/cli/index.ts +8 -0
  83. package/src/config/agirailsmd.ts +262 -0
  84. package/src/config/networks.ts +12 -4
  85. package/src/config/publishPipeline.ts +276 -0
  86. package/src/config/syncOperations.ts +279 -0
  87. package/src/index.ts +3 -0
  88. package/src/level0/request.ts +27 -88
  89. package/src/level1/Agent.ts +16 -32
  90. package/src/registry/AgentRegistryClient.ts +202 -0
  91. package/src/types/adapter.ts +14 -0
  92. package/src/types/x402.ts +32 -0
  93. 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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"}
@@ -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":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"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"}
@@ -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
  *
@@ -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"}
@@ -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;AAED,+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"}
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.2.3",
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": {