@agirails/sdk 2.0.4 → 2.2.1

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 (201) hide show
  1. package/README.md +536 -87
  2. package/dist/ACTPClient.d.ts +200 -0
  3. package/dist/ACTPClient.d.ts.map +1 -1
  4. package/dist/ACTPClient.js +266 -2
  5. package/dist/ACTPClient.js.map +1 -1
  6. package/dist/abi/ACTPKernel.json +16 -0
  7. package/dist/adapters/AdapterRegistry.d.ts +140 -0
  8. package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
  9. package/dist/adapters/AdapterRegistry.js +166 -0
  10. package/dist/adapters/AdapterRegistry.js.map +1 -0
  11. package/dist/adapters/AdapterRouter.d.ts +165 -0
  12. package/dist/adapters/AdapterRouter.d.ts.map +1 -0
  13. package/dist/adapters/AdapterRouter.js +350 -0
  14. package/dist/adapters/AdapterRouter.js.map +1 -0
  15. package/dist/adapters/BaseAdapter.d.ts +17 -0
  16. package/dist/adapters/BaseAdapter.d.ts.map +1 -1
  17. package/dist/adapters/BaseAdapter.js +21 -0
  18. package/dist/adapters/BaseAdapter.js.map +1 -1
  19. package/dist/adapters/BasicAdapter.d.ts +72 -3
  20. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  21. package/dist/adapters/BasicAdapter.js +178 -2
  22. package/dist/adapters/BasicAdapter.js.map +1 -1
  23. package/dist/adapters/IAdapter.d.ts +230 -0
  24. package/dist/adapters/IAdapter.d.ts.map +1 -0
  25. package/dist/adapters/IAdapter.js +44 -0
  26. package/dist/adapters/IAdapter.js.map +1 -0
  27. package/dist/adapters/StandardAdapter.d.ts +80 -6
  28. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  29. package/dist/adapters/StandardAdapter.js +203 -6
  30. package/dist/adapters/StandardAdapter.js.map +1 -1
  31. package/dist/adapters/X402Adapter.d.ts +208 -0
  32. package/dist/adapters/X402Adapter.d.ts.map +1 -0
  33. package/dist/adapters/X402Adapter.js +423 -0
  34. package/dist/adapters/X402Adapter.js.map +1 -0
  35. package/dist/adapters/index.d.ts +8 -0
  36. package/dist/adapters/index.d.ts.map +1 -1
  37. package/dist/adapters/index.js +19 -1
  38. package/dist/adapters/index.js.map +1 -1
  39. package/dist/cli/commands/init.d.ts +4 -0
  40. package/dist/cli/commands/init.d.ts.map +1 -1
  41. package/dist/cli/commands/init.js +146 -4
  42. package/dist/cli/commands/init.js.map +1 -1
  43. package/dist/config/networks.d.ts +9 -0
  44. package/dist/config/networks.d.ts.map +1 -1
  45. package/dist/config/networks.js +27 -12
  46. package/dist/config/networks.js.map +1 -1
  47. package/dist/erc8004/ERC8004Bridge.d.ts +155 -0
  48. package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -0
  49. package/dist/erc8004/ERC8004Bridge.js +325 -0
  50. package/dist/erc8004/ERC8004Bridge.js.map +1 -0
  51. package/dist/erc8004/ReputationReporter.d.ts +223 -0
  52. package/dist/erc8004/ReputationReporter.d.ts.map +1 -0
  53. package/dist/erc8004/ReputationReporter.js +266 -0
  54. package/dist/erc8004/ReputationReporter.js.map +1 -0
  55. package/dist/erc8004/index.d.ts +36 -0
  56. package/dist/erc8004/index.d.ts.map +1 -0
  57. package/dist/erc8004/index.js +46 -0
  58. package/dist/erc8004/index.js.map +1 -0
  59. package/dist/index.d.ts +11 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +51 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/level0/provide.d.ts.map +1 -1
  64. package/dist/level0/provide.js +2 -1
  65. package/dist/level0/provide.js.map +1 -1
  66. package/dist/level1/Agent.d.ts.map +1 -1
  67. package/dist/level1/Agent.js +11 -3
  68. package/dist/level1/Agent.js.map +1 -1
  69. package/dist/protocol/ACTPKernel.d.ts +1 -1
  70. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  71. package/dist/protocol/ACTPKernel.js +23 -12
  72. package/dist/protocol/ACTPKernel.js.map +1 -1
  73. package/dist/protocol/DIDResolver.js +1 -1
  74. package/dist/protocol/DIDResolver.js.map +1 -1
  75. package/dist/protocol/EASHelper.d.ts.map +1 -1
  76. package/dist/protocol/EASHelper.js +2 -3
  77. package/dist/protocol/EASHelper.js.map +1 -1
  78. package/dist/protocol/MessageSigner.d.ts.map +1 -1
  79. package/dist/protocol/MessageSigner.js +8 -8
  80. package/dist/protocol/MessageSigner.js.map +1 -1
  81. package/dist/runtime/BlockchainRuntime.d.ts +7 -0
  82. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  83. package/dist/runtime/BlockchainRuntime.js +40 -22
  84. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  85. package/dist/runtime/IACTPRuntime.d.ts +21 -0
  86. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  87. package/dist/runtime/MockRuntime.d.ts +19 -0
  88. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  89. package/dist/runtime/MockRuntime.js +56 -4
  90. package/dist/runtime/MockRuntime.js.map +1 -1
  91. package/dist/runtime/types/MockState.d.ts +11 -2
  92. package/dist/runtime/types/MockState.d.ts.map +1 -1
  93. package/dist/runtime/types/MockState.js.map +1 -1
  94. package/dist/storage/ArchiveBundleBuilder.d.ts +150 -0
  95. package/dist/storage/ArchiveBundleBuilder.d.ts.map +1 -0
  96. package/dist/storage/ArchiveBundleBuilder.js +468 -0
  97. package/dist/storage/ArchiveBundleBuilder.js.map +1 -0
  98. package/dist/storage/ArweaveClient.d.ts +271 -0
  99. package/dist/storage/ArweaveClient.d.ts.map +1 -0
  100. package/dist/storage/ArweaveClient.js +761 -0
  101. package/dist/storage/ArweaveClient.js.map +1 -0
  102. package/dist/storage/FilebaseClient.d.ts +193 -0
  103. package/dist/storage/FilebaseClient.d.ts.map +1 -0
  104. package/dist/storage/FilebaseClient.js +643 -0
  105. package/dist/storage/FilebaseClient.js.map +1 -0
  106. package/dist/storage/index.d.ts +47 -0
  107. package/dist/storage/index.d.ts.map +1 -0
  108. package/dist/storage/index.js +64 -0
  109. package/dist/storage/index.js.map +1 -0
  110. package/dist/storage/types.d.ts +291 -0
  111. package/dist/storage/types.d.ts.map +1 -0
  112. package/dist/storage/types.js +18 -0
  113. package/dist/storage/types.js.map +1 -0
  114. package/dist/types/adapter.d.ts +359 -0
  115. package/dist/types/adapter.d.ts.map +1 -0
  116. package/dist/types/adapter.js +115 -0
  117. package/dist/types/adapter.js.map +1 -0
  118. package/dist/types/erc8004.d.ts +184 -0
  119. package/dist/types/erc8004.d.ts.map +1 -0
  120. package/dist/types/erc8004.js +132 -0
  121. package/dist/types/erc8004.js.map +1 -0
  122. package/dist/types/index.d.ts +3 -0
  123. package/dist/types/index.d.ts.map +1 -1
  124. package/dist/types/index.js +3 -0
  125. package/dist/types/index.js.map +1 -1
  126. package/dist/types/state.d.ts +5 -4
  127. package/dist/types/state.d.ts.map +1 -1
  128. package/dist/types/state.js +10 -9
  129. package/dist/types/state.js.map +1 -1
  130. package/dist/types/transaction.d.ts +12 -0
  131. package/dist/types/transaction.d.ts.map +1 -1
  132. package/dist/types/x402.d.ts +162 -0
  133. package/dist/types/x402.d.ts.map +1 -0
  134. package/dist/types/x402.js +162 -0
  135. package/dist/types/x402.js.map +1 -0
  136. package/dist/utils/IPFSClient.d.ts.map +1 -1
  137. package/dist/utils/IPFSClient.js +5 -2
  138. package/dist/utils/IPFSClient.js.map +1 -1
  139. package/dist/utils/NonceManager.d.ts.map +1 -1
  140. package/dist/utils/NonceManager.js +3 -2
  141. package/dist/utils/NonceManager.js.map +1 -1
  142. package/dist/utils/UsedAttestationTracker.d.ts.map +1 -1
  143. package/dist/utils/UsedAttestationTracker.js +3 -3
  144. package/dist/utils/UsedAttestationTracker.js.map +1 -1
  145. package/dist/utils/circuitBreaker.d.ts +136 -0
  146. package/dist/utils/circuitBreaker.d.ts.map +1 -0
  147. package/dist/utils/circuitBreaker.js +253 -0
  148. package/dist/utils/circuitBreaker.js.map +1 -0
  149. package/dist/utils/retry.d.ts +120 -0
  150. package/dist/utils/retry.d.ts.map +1 -0
  151. package/dist/utils/retry.js +260 -0
  152. package/dist/utils/retry.js.map +1 -0
  153. package/dist/utils/validation.d.ts +100 -0
  154. package/dist/utils/validation.d.ts.map +1 -1
  155. package/dist/utils/validation.js +248 -1
  156. package/dist/utils/validation.js.map +1 -1
  157. package/package.json +16 -3
  158. package/src/ACTPClient.ts +318 -2
  159. package/src/abi/ACTPKernel.json +16 -0
  160. package/src/adapters/AdapterRegistry.ts +173 -0
  161. package/src/adapters/AdapterRouter.ts +417 -0
  162. package/src/adapters/BaseAdapter.ts +25 -0
  163. package/src/adapters/BasicAdapter.ts +210 -3
  164. package/src/adapters/IAdapter.ts +292 -0
  165. package/src/adapters/StandardAdapter.ts +246 -7
  166. package/src/adapters/X402Adapter.ts +653 -0
  167. package/src/adapters/index.ts +27 -0
  168. package/src/cli/commands/init.ts +166 -3
  169. package/src/config/networks.ts +36 -12
  170. package/src/erc8004/ERC8004Bridge.ts +461 -0
  171. package/src/erc8004/ReputationReporter.ts +472 -0
  172. package/src/erc8004/index.ts +61 -0
  173. package/src/index.ts +97 -0
  174. package/src/level0/provide.ts +2 -1
  175. package/src/level1/Agent.ts +13 -3
  176. package/src/protocol/ACTPKernel.ts +33 -12
  177. package/src/protocol/DIDResolver.ts +1 -1
  178. package/src/protocol/EASHelper.ts +2 -5
  179. package/src/protocol/MessageSigner.ts +8 -14
  180. package/src/runtime/BlockchainRuntime.ts +41 -45
  181. package/src/runtime/IACTPRuntime.ts +22 -0
  182. package/src/runtime/MockRuntime.ts +58 -4
  183. package/src/runtime/types/MockState.ts +12 -2
  184. package/src/storage/ArchiveBundleBuilder.ts +563 -0
  185. package/src/storage/ArweaveClient.ts +945 -0
  186. package/src/storage/FilebaseClient.ts +790 -0
  187. package/src/storage/index.ts +96 -0
  188. package/src/storage/types.ts +348 -0
  189. package/src/types/adapter.ts +296 -0
  190. package/src/types/erc8004.ts +293 -0
  191. package/src/types/index.ts +3 -0
  192. package/src/types/state.ts +10 -9
  193. package/src/types/transaction.ts +12 -0
  194. package/src/types/x402.ts +219 -0
  195. package/src/utils/IPFSClient.ts +5 -4
  196. package/src/utils/NonceManager.ts +3 -2
  197. package/src/utils/UsedAttestationTracker.ts +3 -5
  198. package/src/utils/circuitBreaker.ts +324 -0
  199. package/src/utils/fsSafe.ts +5 -0
  200. package/src/utils/retry.ts +365 -0
  201. package/src/utils/validation.ts +295 -1
@@ -8,6 +8,8 @@
8
8
  */
9
9
 
10
10
  import * as crypto from 'crypto';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
11
13
  import { Command } from 'commander';
12
14
  import {
13
15
  saveConfig,
@@ -30,6 +32,10 @@ export function createInitCommand(): Command {
30
32
  .option('-m, --mode <mode>', 'Operating mode: mock, testnet, mainnet', 'mock')
31
33
  .option('-a, --address <address>', 'Your Ethereum address')
32
34
  .option('-f, --force', 'Overwrite existing configuration')
35
+ .option('--scaffold', 'Generate a starter agent.ts file')
36
+ .option('--intent <intent>', 'Agent intent: earn, pay, or both (default: earn)')
37
+ .option('--service <name>', 'Service name (default: my-service)')
38
+ .option('--price <usdc>', 'Base price in USDC (default: 1)')
33
39
  .option('--json', 'Output as JSON')
34
40
  .option('-q, --quiet', 'Minimal output')
35
41
  .action(async (options) => {
@@ -55,10 +61,16 @@ export function createInitCommand(): Command {
55
61
  // Implementation
56
62
  // ============================================================================
57
63
 
64
+ type ScaffoldIntent = 'earn' | 'pay' | 'both';
65
+
58
66
  interface InitOptions {
59
67
  mode: string;
60
68
  address?: string;
61
69
  force?: boolean;
70
+ scaffold?: boolean;
71
+ intent?: string;
72
+ service?: string;
73
+ price?: string;
62
74
  }
63
75
 
64
76
  async function runInit(options: InitOptions, output: Output): Promise<void> {
@@ -151,11 +163,162 @@ async function runInit(options: InitOptions, output: Output): Promise<void> {
151
163
  { quietKey: 'address' }
152
164
  );
153
165
 
166
+ // Generate scaffold if requested
167
+ if (options.scaffold) {
168
+ await runScaffold(options, mode, output);
169
+ } else {
170
+ output.blank();
171
+ output.print('Next steps:');
172
+ output.print(' 1. Create a payment: actp pay <provider> <amount>');
173
+ output.print(' 2. Check your balance: actp balance');
174
+ output.print(' 3. List transactions: actp tx list');
175
+ output.print('');
176
+ output.print('Tip: Use --scaffold to generate a starter agent.ts');
177
+ }
178
+ }
179
+
180
+ // ============================================================================
181
+ // Scaffold
182
+ // ============================================================================
183
+
184
+ async function runScaffold(
185
+ options: InitOptions,
186
+ mode: CLIMode,
187
+ output: Output,
188
+ ): Promise<void> {
189
+ const validIntents: ScaffoldIntent[] = ['earn', 'pay', 'both'];
190
+ const intent: ScaffoldIntent = (options.intent as ScaffoldIntent) || 'earn';
191
+
192
+ if (!validIntents.includes(intent)) {
193
+ throw new Error(
194
+ `Invalid intent: "${options.intent}". Valid intents: ${validIntents.join(', ')}`
195
+ );
196
+ }
197
+
198
+ const service = options.service || 'my-service';
199
+ const price = options.price || '1';
200
+ const agentFile = path.join(process.cwd(), 'agent.ts');
201
+
202
+ // Check if file already exists
203
+ if (fs.existsSync(agentFile) && !options.force) {
204
+ output.warning('agent.ts already exists. Use --force to overwrite.');
205
+ return;
206
+ }
207
+
208
+ // Derive agent name from directory
209
+ const agentName = path.basename(process.cwd());
210
+
211
+ // Get template and substitute variables
212
+ const template = getTemplate(intent);
213
+ const content = template
214
+ .replace(/\{\{service\}\}/g, service)
215
+ .replace(/\{\{mode\}\}/g, mode)
216
+ .replace(/\{\{price\}\}/g, price)
217
+ .replace(/\{\{name\}\}/g, agentName);
218
+
219
+ // Atomic write
220
+ const tempFile = `${agentFile}.tmp`;
221
+ try {
222
+ fs.writeFileSync(tempFile, content, 'utf-8');
223
+ fs.renameSync(tempFile, agentFile);
224
+ } catch (error) {
225
+ if (fs.existsSync(tempFile)) {
226
+ try { fs.unlinkSync(tempFile); } catch { /* ignore */ }
227
+ }
228
+ throw error;
229
+ }
230
+
231
+ output.success(`Generated agent.ts (intent: ${intent})`);
154
232
  output.blank();
155
233
  output.print('Next steps:');
156
- output.print(' 1. Create a payment: actp pay <provider> <amount>');
157
- output.print(' 2. Check your balance: actp balance');
158
- output.print(' 3. List transactions: actp tx list');
234
+ output.print(' 1. Edit agent.ts with your logic');
235
+ output.print(' 2. Run: npx ts-node agent.ts');
236
+ output.print(' 3. Check balance: actp balance');
237
+ }
238
+
239
+ function getTemplate(intent: ScaffoldIntent): string {
240
+ switch (intent) {
241
+ case 'earn':
242
+ return TEMPLATE_EARN;
243
+ case 'pay':
244
+ return TEMPLATE_PAY;
245
+ case 'both':
246
+ return TEMPLATE_BOTH;
247
+ }
159
248
  }
160
249
 
250
+ // ============================================================================
251
+ // Templates
252
+ // ============================================================================
253
+
254
+ const TEMPLATE_EARN = `import { provide } from '@agirails/sdk';
255
+
256
+ const provider = provide('{{service}}', async (job) => {
257
+ console.log(\`Job received: \${job.id} (\${job.budget} USDC)\`);
258
+
259
+ // TODO: Replace with your actual work
260
+ const result = await processJob(job.input);
261
+
262
+ return result;
263
+ }, {
264
+ network: '{{mode}}',
265
+ filter: { minBudget: {{price}} },
266
+ });
267
+
268
+ async function processJob(input: any): Promise<any> {
269
+ // Your logic here
270
+ return { status: 'completed', output: input };
271
+ }
272
+
273
+ console.log(\`Provider listening for '{{service}}' jobs...\`);
274
+ `;
275
+
276
+ const TEMPLATE_PAY = `import { request } from '@agirails/sdk';
277
+
278
+ async function main() {
279
+ const { result, transaction } = await request('{{service}}', {
280
+ input: { /* your data here */ },
281
+ budget: {{price}},
282
+ network: '{{mode}}',
283
+ });
284
+
285
+ console.log('Result:', result);
286
+ console.log('Transaction:', transaction.id);
287
+ console.log('Fee:', transaction.fee, 'USDC');
288
+ }
289
+
290
+ main().catch(console.error);
291
+ `;
292
+
293
+ const TEMPLATE_BOTH = `import { Agent } from '@agirails/sdk';
294
+
295
+ async function main() {
296
+ const agent = new Agent({
297
+ name: '{{name}}',
298
+ network: '{{mode}}',
299
+ behavior: {
300
+ autoAccept: true,
301
+ concurrency: 10,
302
+ },
303
+ });
304
+
305
+ // Provide a service
306
+ agent.provide('{{service}}', async (job, ctx) => {
307
+ ctx.progress(50, 'Working...');
308
+
309
+ // TODO: Replace with your actual work
310
+ return { status: 'completed', output: job.input };
311
+ });
312
+
313
+ agent.on('payment:received', (data) => {
314
+ console.log(\`Earned \${data.amount} USDC\`);
315
+ });
316
+
317
+ await agent.start();
318
+ console.log(\`Agent '{{name}}' running on {{mode}}\`);
319
+ }
320
+
321
+ main().catch(console.error);
322
+ `;
323
+
161
324
  export { runInit };
@@ -30,6 +30,8 @@ export interface NetworkConfig {
30
30
  eas: string; // EAS contract address
31
31
  easSchemaRegistry: string; // EAS SchemaRegistry contract
32
32
  agentRegistry?: string; // AIP-7 Agent Registry (optional until deployed)
33
+ identityRegistry?: string; // AIP-7 ERC-1056 DID Registry (optional until deployed)
34
+ archiveTreasury?: string; // AIP-7 Archive Treasury for Arweave funding (optional until deployed)
33
35
  };
34
36
  eas: {
35
37
  deliverySchemaUID: string; // AIP-4 delivery proof schema
@@ -38,6 +40,13 @@ export interface NetworkConfig {
38
40
  maxFeePerGas: bigint;
39
41
  maxPriorityFeePerGas: bigint;
40
42
  };
43
+ /**
44
+ * Maximum transaction amount in USDC (human-readable, e.g., 100 = $100)
45
+ *
46
+ * SECURITY: Limits exposure on unaudited mainnet contracts.
47
+ * Set to undefined for no limit (testnet only).
48
+ */
49
+ maxTransactionAmount?: number;
41
50
  }
42
51
 
43
52
  /**
@@ -49,15 +58,19 @@ export const BASE_SEPOLIA: NetworkConfig = {
49
58
  rpcUrl: BASE_SEPOLIA_RPC_URL,
50
59
  blockExplorer: 'https://sepolia.basescan.org',
51
60
  contracts: {
52
- // Redeployed 2025-12-10 by Arha (new deployer wallet 0x42a2f11555b9363fb7ebdcdc76d7cb26e01dcb00)
53
- actpKernel: '0xD199070F8e9FB9a127F6Fe730Bc13300B4b3d962',
54
- escrowVault: '0x948b9Ea081C4Cec1E112Af2e539224c531d4d585',
61
+ // Redeployed 2026-02-06 with agentId support
62
+ actpKernel: '0x469CBADbACFFE096270594F0a31f0EEC53753411',
63
+ escrowVault: '0x57f888261b629bB380dfb983f5DA6c70Ff2D49E5',
55
64
  usdc: '0x444b4e1A65949AB2ac75979D5d0166Eb7A248Ccb', // MockUSDC
56
65
  // EAS contracts (Base native deployment)
57
66
  eas: '0x4200000000000000000000000000000000000021',
58
67
  easSchemaRegistry: '0x4200000000000000000000000000000000000020',
59
68
  // AIP-7 Agent Registry (deployed 2025-12-11)
60
- agentRegistry: '0xFed6914Aa70c0a53E9c7Cc4d2Ae159e4748fb09D'
69
+ agentRegistry: '0xFed6914Aa70c0a53E9c7Cc4d2Ae159e4748fb09D',
70
+ // AIP-7 Identity Registry - ERC-1056 DID Registry (deployed 2026-01-09)
71
+ identityRegistry: '0xF64F748C7802a68Cb936a9213881fE74e83FDA97',
72
+ // AIP-7 Archive Treasury - Arweave funding (deployed 2026-01-09)
73
+ archiveTreasury: '0xeB75DE7cF5ce77ab15BB0fFa3a2A79e6aaa554B0'
61
74
  },
62
75
  eas: {
63
76
  // Deployed 2025-11-23 - AIP-4 delivery proof schema
@@ -82,22 +95,31 @@ export const BASE_MAINNET: NetworkConfig = {
82
95
  rpcUrl: BASE_MAINNET_RPC_URL,
83
96
  blockExplorer: 'https://basescan.org',
84
97
  contracts: {
85
- // NOT DEPLOYED: Will throw error via validateNetworkConfig()
86
- actpKernel: '0x0000000000000000000000000000000000000000',
87
- escrowVault: '0x0000000000000000000000000000000000000000',
98
+ // Deployed 2026-02-03
99
+ actpKernel: '0xeaE4D6925510284dbC45C8C64bb8104a079D4c60',
100
+ escrowVault: '0xb7bCadF7F26f0761995d95105DFb2346F81AF02D',
88
101
  usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // Official USDC on Base
89
102
  // EAS contracts (Base native deployment)
90
103
  eas: '0x4200000000000000000000000000000000000021',
91
- easSchemaRegistry: '0x4200000000000000000000000000000000000020'
104
+ easSchemaRegistry: '0x4200000000000000000000000000000000000020',
105
+ // AIP-7 contracts
106
+ agentRegistry: '0xbf9Aa0FC291A06A4dFA943c3E0Ad41E7aE20DF02',
107
+ archiveTreasury: '0x64B8f93fef2D2E749F5E88586753343F73246012'
92
108
  },
93
109
  eas: {
94
- // NOT DEPLOYED: Requires mainnet schema registration
95
- deliverySchemaUID: '0x0000000000000000000000000000000000000000000000000000000000000000'
110
+ // Registered 2026-02-03
111
+ deliverySchemaUID: '0x166501e7476e2fcf9214c4c5144533c2957d56fe59d639effc1719a0658d9c9a'
96
112
  },
97
113
  gasSettings: {
98
114
  maxFeePerGas: ethers.parseUnits('0.5', 'gwei'),
99
115
  maxPriorityFeePerGas: ethers.parseUnits('0.1', 'gwei')
100
- }
116
+ },
117
+ /**
118
+ * SECURITY: $1,000 max transaction limit until contracts are audited.
119
+ * This limits exposure in case of undiscovered vulnerabilities.
120
+ * Will be removed/increased after formal security audit.
121
+ */
122
+ maxTransactionAmount: 1000
101
123
  };
102
124
 
103
125
  /**
@@ -134,7 +156,9 @@ export function getNetwork(network: string): NetworkConfig {
134
156
  usdc: config.contracts.usdc,
135
157
  eas: config.contracts.eas,
136
158
  easSchemaRegistry: config.contracts.easSchemaRegistry,
137
- agentRegistry: config.contracts.agentRegistry
159
+ agentRegistry: config.contracts.agentRegistry,
160
+ identityRegistry: config.contracts.identityRegistry,
161
+ archiveTreasury: config.contracts.archiveTreasury
138
162
  },
139
163
  eas: {
140
164
  deliverySchemaUID: config.eas.deliverySchemaUID