@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.
- package/README.md +536 -87
- package/dist/ACTPClient.d.ts +200 -0
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +266 -2
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/ACTPKernel.json +16 -0
- package/dist/adapters/AdapterRegistry.d.ts +140 -0
- package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
- package/dist/adapters/AdapterRegistry.js +166 -0
- package/dist/adapters/AdapterRegistry.js.map +1 -0
- package/dist/adapters/AdapterRouter.d.ts +165 -0
- package/dist/adapters/AdapterRouter.d.ts.map +1 -0
- package/dist/adapters/AdapterRouter.js +350 -0
- package/dist/adapters/AdapterRouter.js.map +1 -0
- package/dist/adapters/BaseAdapter.d.ts +17 -0
- package/dist/adapters/BaseAdapter.d.ts.map +1 -1
- package/dist/adapters/BaseAdapter.js +21 -0
- package/dist/adapters/BaseAdapter.js.map +1 -1
- package/dist/adapters/BasicAdapter.d.ts +72 -3
- package/dist/adapters/BasicAdapter.d.ts.map +1 -1
- package/dist/adapters/BasicAdapter.js +178 -2
- package/dist/adapters/BasicAdapter.js.map +1 -1
- package/dist/adapters/IAdapter.d.ts +230 -0
- package/dist/adapters/IAdapter.d.ts.map +1 -0
- package/dist/adapters/IAdapter.js +44 -0
- package/dist/adapters/IAdapter.js.map +1 -0
- package/dist/adapters/StandardAdapter.d.ts +80 -6
- package/dist/adapters/StandardAdapter.d.ts.map +1 -1
- package/dist/adapters/StandardAdapter.js +203 -6
- package/dist/adapters/StandardAdapter.js.map +1 -1
- package/dist/adapters/X402Adapter.d.ts +208 -0
- package/dist/adapters/X402Adapter.d.ts.map +1 -0
- package/dist/adapters/X402Adapter.js +423 -0
- package/dist/adapters/X402Adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +8 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +19 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +146 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/config/networks.d.ts +9 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +27 -12
- package/dist/config/networks.js.map +1 -1
- package/dist/erc8004/ERC8004Bridge.d.ts +155 -0
- package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -0
- package/dist/erc8004/ERC8004Bridge.js +325 -0
- package/dist/erc8004/ERC8004Bridge.js.map +1 -0
- package/dist/erc8004/ReputationReporter.d.ts +223 -0
- package/dist/erc8004/ReputationReporter.d.ts.map +1 -0
- package/dist/erc8004/ReputationReporter.js +266 -0
- package/dist/erc8004/ReputationReporter.js.map +1 -0
- package/dist/erc8004/index.d.ts +36 -0
- package/dist/erc8004/index.d.ts.map +1 -0
- package/dist/erc8004/index.js +46 -0
- package/dist/erc8004/index.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -2
- package/dist/index.js.map +1 -1
- package/dist/level0/provide.d.ts.map +1 -1
- package/dist/level0/provide.js +2 -1
- package/dist/level0/provide.js.map +1 -1
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +11 -3
- package/dist/level1/Agent.js.map +1 -1
- package/dist/protocol/ACTPKernel.d.ts +1 -1
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +23 -12
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/DIDResolver.js +1 -1
- package/dist/protocol/DIDResolver.js.map +1 -1
- package/dist/protocol/EASHelper.d.ts.map +1 -1
- package/dist/protocol/EASHelper.js +2 -3
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts.map +1 -1
- package/dist/protocol/MessageSigner.js +8 -8
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +7 -0
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +40 -22
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/dist/runtime/IACTPRuntime.d.ts +21 -0
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.d.ts +19 -0
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +56 -4
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/runtime/types/MockState.d.ts +11 -2
- package/dist/runtime/types/MockState.d.ts.map +1 -1
- package/dist/runtime/types/MockState.js.map +1 -1
- package/dist/storage/ArchiveBundleBuilder.d.ts +150 -0
- package/dist/storage/ArchiveBundleBuilder.d.ts.map +1 -0
- package/dist/storage/ArchiveBundleBuilder.js +468 -0
- package/dist/storage/ArchiveBundleBuilder.js.map +1 -0
- package/dist/storage/ArweaveClient.d.ts +271 -0
- package/dist/storage/ArweaveClient.d.ts.map +1 -0
- package/dist/storage/ArweaveClient.js +761 -0
- package/dist/storage/ArweaveClient.js.map +1 -0
- package/dist/storage/FilebaseClient.d.ts +193 -0
- package/dist/storage/FilebaseClient.d.ts.map +1 -0
- package/dist/storage/FilebaseClient.js +643 -0
- package/dist/storage/FilebaseClient.js.map +1 -0
- package/dist/storage/index.d.ts +47 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +64 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/types.d.ts +291 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +18 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/types/adapter.d.ts +359 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +115 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/erc8004.d.ts +184 -0
- package/dist/types/erc8004.d.ts.map +1 -0
- package/dist/types/erc8004.js +132 -0
- package/dist/types/erc8004.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/state.d.ts +5 -4
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/state.js +10 -9
- package/dist/types/state.js.map +1 -1
- package/dist/types/transaction.d.ts +12 -0
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/types/x402.d.ts +162 -0
- package/dist/types/x402.d.ts.map +1 -0
- package/dist/types/x402.js +162 -0
- package/dist/types/x402.js.map +1 -0
- package/dist/utils/IPFSClient.d.ts.map +1 -1
- package/dist/utils/IPFSClient.js +5 -2
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/NonceManager.d.ts.map +1 -1
- package/dist/utils/NonceManager.js +3 -2
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/UsedAttestationTracker.d.ts.map +1 -1
- package/dist/utils/UsedAttestationTracker.js +3 -3
- package/dist/utils/UsedAttestationTracker.js.map +1 -1
- package/dist/utils/circuitBreaker.d.ts +136 -0
- package/dist/utils/circuitBreaker.d.ts.map +1 -0
- package/dist/utils/circuitBreaker.js +253 -0
- package/dist/utils/circuitBreaker.js.map +1 -0
- package/dist/utils/retry.d.ts +120 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +260 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/validation.d.ts +100 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +248 -1
- package/dist/utils/validation.js.map +1 -1
- package/package.json +16 -3
- package/src/ACTPClient.ts +318 -2
- package/src/abi/ACTPKernel.json +16 -0
- package/src/adapters/AdapterRegistry.ts +173 -0
- package/src/adapters/AdapterRouter.ts +417 -0
- package/src/adapters/BaseAdapter.ts +25 -0
- package/src/adapters/BasicAdapter.ts +210 -3
- package/src/adapters/IAdapter.ts +292 -0
- package/src/adapters/StandardAdapter.ts +246 -7
- package/src/adapters/X402Adapter.ts +653 -0
- package/src/adapters/index.ts +27 -0
- package/src/cli/commands/init.ts +166 -3
- package/src/config/networks.ts +36 -12
- package/src/erc8004/ERC8004Bridge.ts +461 -0
- package/src/erc8004/ReputationReporter.ts +472 -0
- package/src/erc8004/index.ts +61 -0
- package/src/index.ts +97 -0
- package/src/level0/provide.ts +2 -1
- package/src/level1/Agent.ts +13 -3
- package/src/protocol/ACTPKernel.ts +33 -12
- package/src/protocol/DIDResolver.ts +1 -1
- package/src/protocol/EASHelper.ts +2 -5
- package/src/protocol/MessageSigner.ts +8 -14
- package/src/runtime/BlockchainRuntime.ts +41 -45
- package/src/runtime/IACTPRuntime.ts +22 -0
- package/src/runtime/MockRuntime.ts +58 -4
- package/src/runtime/types/MockState.ts +12 -2
- package/src/storage/ArchiveBundleBuilder.ts +563 -0
- package/src/storage/ArweaveClient.ts +945 -0
- package/src/storage/FilebaseClient.ts +790 -0
- package/src/storage/index.ts +96 -0
- package/src/storage/types.ts +348 -0
- package/src/types/adapter.ts +296 -0
- package/src/types/erc8004.ts +293 -0
- package/src/types/index.ts +3 -0
- package/src/types/state.ts +10 -9
- package/src/types/transaction.ts +12 -0
- package/src/types/x402.ts +219 -0
- package/src/utils/IPFSClient.ts +5 -4
- package/src/utils/NonceManager.ts +3 -2
- package/src/utils/UsedAttestationTracker.ts +3 -5
- package/src/utils/circuitBreaker.ts +324 -0
- package/src/utils/fsSafe.ts +5 -0
- package/src/utils/retry.ts +365 -0
- package/src/utils/validation.ts +295 -1
package/src/cli/commands/init.ts
CHANGED
|
@@ -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.
|
|
157
|
-
output.print(' 2.
|
|
158
|
-
output.print(' 3.
|
|
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 };
|
package/src/config/networks.ts
CHANGED
|
@@ -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
|
|
53
|
-
actpKernel: '
|
|
54
|
-
escrowVault: '
|
|
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
|
-
//
|
|
86
|
-
actpKernel: '
|
|
87
|
-
escrowVault: '
|
|
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
|
-
//
|
|
95
|
-
deliverySchemaUID: '
|
|
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
|