kompass-sdk 0.20.0 → 0.21.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/dist/aggregator.d.ts.map +1 -1
- package/dist/aggregator.js +13 -6
- package/dist/aggregator.js.map +1 -1
- package/dist/basename.d.ts +59 -0
- package/dist/basename.d.ts.map +1 -0
- package/dist/basename.js +253 -0
- package/dist/basename.js.map +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +64 -0
- package/dist/bridge.js.map +1 -1
- package/dist/cli.js +101 -0
- package/dist/cli.js.map +1 -1
- package/dist/erc8004.d.ts +179 -0
- package/dist/erc8004.d.ts.map +1 -0
- package/dist/erc8004.js +187 -0
- package/dist/erc8004.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/matching.d.ts.map +1 -1
- package/dist/matching.js +7 -6
- package/dist/matching.js.map +1 -1
- package/dist/onboard.d.ts +132 -0
- package/dist/onboard.d.ts.map +1 -0
- package/dist/onboard.js +285 -0
- package/dist/onboard.js.map +1 -0
- package/dist/router.js +2 -2
- package/dist/router.js.map +1 -1
- package/dist/sources/acp.d.ts.map +1 -1
- package/dist/sources/acp.js +8 -7
- package/dist/sources/acp.js.map +1 -1
- package/dist/sources/bankr.d.ts.map +1 -1
- package/dist/sources/bankr.js +7 -4
- package/dist/sources/bankr.js.map +1 -1
- package/dist/sources/erc8004.js +2 -2
- package/dist/sources/erc8004.js.map +1 -1
- package/dist/sources/locus.d.ts.map +1 -1
- package/dist/sources/locus.js +4 -0
- package/dist/sources/locus.js.map +1 -1
- package/dist/sources/mcp-registry.d.ts.map +1 -1
- package/dist/sources/mcp-registry.js +6 -0
- package/dist/sources/mcp-registry.js.map +1 -1
- package/dist/sources/olas.d.ts +3 -3
- package/dist/sources/olas.d.ts.map +1 -1
- package/dist/sources/olas.js +37 -31
- package/dist/sources/olas.js.map +1 -1
- package/dist/sources/skills.d.ts.map +1 -1
- package/dist/sources/skills.js +4 -2
- package/dist/sources/skills.js.map +1 -1
- package/dist/sources/x402-ecosystem.js +1 -1
- package/dist/sources/x402-ecosystem.js.map +1 -1
- package/dist/wallet/handlers/bankr.d.ts.map +1 -1
- package/dist/wallet/handlers/bankr.js +5 -4
- package/dist/wallet/handlers/bankr.js.map +1 -1
- package/dist/wallet/handlers/locus.d.ts.map +1 -1
- package/dist/wallet/handlers/locus.js +3 -2
- package/dist/wallet/handlers/locus.js.map +1 -1
- package/dist/wallet/handlers/olas.d.ts +5 -1
- package/dist/wallet/handlers/olas.d.ts.map +1 -1
- package/dist/wallet/handlers/olas.js +20 -28
- package/dist/wallet/handlers/olas.js.map +1 -1
- package/dist/wallet/index.d.ts +20 -20
- package/package.json +1 -1
- package/src/aggregator.ts +8 -4
- package/src/basename.ts +334 -0
- package/src/bridge.ts +53 -0
- package/src/cli.ts +113 -0
- package/src/erc8004.ts +253 -0
- package/src/index.ts +12 -0
- package/src/matching.ts +7 -6
- package/src/onboard.ts +420 -0
- package/src/router.ts +2 -2
- package/src/sources/acp.ts +8 -7
- package/src/sources/bankr.ts +6 -4
- package/src/sources/erc8004.ts +2 -2
- package/src/sources/locus.ts +5 -0
- package/src/sources/mcp-registry.ts +6 -0
- package/src/sources/olas.ts +53 -44
- package/src/sources/skills.ts +5 -2
- package/src/sources/x402-ecosystem.ts +1 -1
- package/src/wallet/handlers/bankr.ts +6 -4
- package/src/wallet/handlers/locus.ts +3 -2
- package/src/wallet/handlers/olas.ts +25 -30
package/dist/wallet/index.d.ts
CHANGED
|
@@ -3525,13 +3525,13 @@ export declare class KompassWallet {
|
|
|
3525
3525
|
type: "json-rpc";
|
|
3526
3526
|
} | undefined, chainOverride, calls>) => Promise<{
|
|
3527
3527
|
id: string;
|
|
3528
|
+
chainId: number;
|
|
3528
3529
|
atomic: boolean;
|
|
3529
3530
|
capabilities?: {
|
|
3530
3531
|
[key: string]: any;
|
|
3531
3532
|
} | {
|
|
3532
3533
|
[x: string]: any;
|
|
3533
3534
|
} | undefined;
|
|
3534
|
-
chainId: number;
|
|
3535
3535
|
receipts?: import("viem").WalletCallReceipt<bigint, "success" | "reverted">[] | undefined;
|
|
3536
3536
|
version: string;
|
|
3537
3537
|
statusCode: number;
|
|
@@ -4475,13 +4475,13 @@ export declare class KompassWallet {
|
|
|
4475
4475
|
[x: `bytes23[${string}]`]: undefined;
|
|
4476
4476
|
[x: `bytes10[${string}]`]: undefined;
|
|
4477
4477
|
[x: `bytes20[${string}]`]: undefined;
|
|
4478
|
+
[x: `bytes15[${string}]`]: undefined;
|
|
4479
|
+
[x: `bytes16[${string}]`]: undefined;
|
|
4478
4480
|
[x: `bytes7[${string}]`]: undefined;
|
|
4479
4481
|
[x: `bytes9[${string}]`]: undefined;
|
|
4480
4482
|
[x: `bytes12[${string}]`]: undefined;
|
|
4481
4483
|
[x: `bytes13[${string}]`]: undefined;
|
|
4482
4484
|
[x: `bytes14[${string}]`]: undefined;
|
|
4483
|
-
[x: `bytes15[${string}]`]: undefined;
|
|
4484
|
-
[x: `bytes16[${string}]`]: undefined;
|
|
4485
4485
|
[x: `bytes17[${string}]`]: undefined;
|
|
4486
4486
|
[x: `bytes18[${string}]`]: undefined;
|
|
4487
4487
|
[x: `bytes19[${string}]`]: undefined;
|
|
@@ -4498,9 +4498,9 @@ export declare class KompassWallet {
|
|
|
4498
4498
|
[x: `int[${string}]`]: undefined;
|
|
4499
4499
|
[x: `int48[${string}]`]: undefined;
|
|
4500
4500
|
[x: `int8[${string}]`]: undefined;
|
|
4501
|
+
[x: `int32[${string}]`]: undefined;
|
|
4501
4502
|
[x: `int16[${string}]`]: undefined;
|
|
4502
4503
|
[x: `int24[${string}]`]: undefined;
|
|
4503
|
-
[x: `int32[${string}]`]: undefined;
|
|
4504
4504
|
[x: `int40[${string}]`]: undefined;
|
|
4505
4505
|
[x: `int56[${string}]`]: undefined;
|
|
4506
4506
|
[x: `int64[${string}]`]: undefined;
|
|
@@ -4529,8 +4529,8 @@ export declare class KompassWallet {
|
|
|
4529
4529
|
[x: `int256[${string}]`]: undefined;
|
|
4530
4530
|
[x: `uint[${string}]`]: undefined;
|
|
4531
4531
|
[x: `uint48[${string}]`]: undefined;
|
|
4532
|
-
[x: `uint24[${string}]`]: undefined;
|
|
4533
4532
|
[x: `uint32[${string}]`]: undefined;
|
|
4533
|
+
[x: `uint24[${string}]`]: undefined;
|
|
4534
4534
|
[x: `uint40[${string}]`]: undefined;
|
|
4535
4535
|
[x: `uint56[${string}]`]: undefined;
|
|
4536
4536
|
[x: `uint72[${string}]`]: undefined;
|
|
@@ -4577,13 +4577,13 @@ export declare class KompassWallet {
|
|
|
4577
4577
|
bytes23?: undefined;
|
|
4578
4578
|
bytes10?: undefined;
|
|
4579
4579
|
bytes20?: undefined;
|
|
4580
|
+
bytes15?: undefined;
|
|
4581
|
+
bytes16?: undefined;
|
|
4580
4582
|
bytes7?: undefined;
|
|
4581
4583
|
bytes9?: undefined;
|
|
4582
4584
|
bytes12?: undefined;
|
|
4583
4585
|
bytes13?: undefined;
|
|
4584
4586
|
bytes14?: undefined;
|
|
4585
|
-
bytes15?: undefined;
|
|
4586
|
-
bytes16?: undefined;
|
|
4587
4587
|
bytes17?: undefined;
|
|
4588
4588
|
bytes18?: undefined;
|
|
4589
4589
|
bytes19?: undefined;
|
|
@@ -4599,9 +4599,9 @@ export declare class KompassWallet {
|
|
|
4599
4599
|
bytes31?: undefined;
|
|
4600
4600
|
int48?: undefined;
|
|
4601
4601
|
int8?: undefined;
|
|
4602
|
+
int32?: undefined;
|
|
4602
4603
|
int16?: undefined;
|
|
4603
4604
|
int24?: undefined;
|
|
4604
|
-
int32?: undefined;
|
|
4605
4605
|
int40?: undefined;
|
|
4606
4606
|
int56?: undefined;
|
|
4607
4607
|
int64?: undefined;
|
|
@@ -4629,8 +4629,8 @@ export declare class KompassWallet {
|
|
|
4629
4629
|
int248?: undefined;
|
|
4630
4630
|
int256?: undefined;
|
|
4631
4631
|
uint48?: undefined;
|
|
4632
|
-
uint24?: undefined;
|
|
4633
4632
|
uint32?: undefined;
|
|
4633
|
+
uint24?: undefined;
|
|
4634
4634
|
uint40?: undefined;
|
|
4635
4635
|
uint56?: undefined;
|
|
4636
4636
|
uint72?: undefined;
|
|
@@ -5305,6 +5305,7 @@ export declare class KompassWallet {
|
|
|
5305
5305
|
number: blockTag extends "pending" ? null : bigint;
|
|
5306
5306
|
nonce: blockTag extends "pending" ? null : `0x${string}`;
|
|
5307
5307
|
hash: blockTag extends "pending" ? null : `0x${string}`;
|
|
5308
|
+
gasUsed: bigint;
|
|
5308
5309
|
logsBloom: blockTag extends "pending" ? null : `0x${string}`;
|
|
5309
5310
|
baseFeePerGas: bigint | null;
|
|
5310
5311
|
blobGasUsed: bigint;
|
|
@@ -5312,7 +5313,6 @@ export declare class KompassWallet {
|
|
|
5312
5313
|
excessBlobGas: bigint;
|
|
5313
5314
|
extraData: Hex;
|
|
5314
5315
|
gasLimit: bigint;
|
|
5315
|
-
gasUsed: bigint;
|
|
5316
5316
|
miner: Address;
|
|
5317
5317
|
mixHash: import("viem").Hash;
|
|
5318
5318
|
parentBeaconBlockRoot?: `0x${string}` | undefined;
|
|
@@ -5347,9 +5347,9 @@ export declare class KompassWallet {
|
|
|
5347
5347
|
s: Hex;
|
|
5348
5348
|
v: bigint;
|
|
5349
5349
|
yParity?: undefined | undefined;
|
|
5350
|
-
chainId?: number | undefined;
|
|
5351
5350
|
input: Hex;
|
|
5352
5351
|
typeHex: Hex | null;
|
|
5352
|
+
chainId?: number | undefined;
|
|
5353
5353
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T ? T extends (blockTag extends "pending" ? true : false) ? T extends true ? null : bigint : never : never;
|
|
5354
5354
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_1 ? T_1 extends (blockTag extends "pending" ? true : false) ? T_1 extends true ? null : `0x${string}` : never : never;
|
|
5355
5355
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_2 ? T_2 extends (blockTag extends "pending" ? true : false) ? T_2 extends true ? null : number : never : never;
|
|
@@ -5372,9 +5372,9 @@ export declare class KompassWallet {
|
|
|
5372
5372
|
s: Hex;
|
|
5373
5373
|
v: bigint;
|
|
5374
5374
|
yParity: number;
|
|
5375
|
-
chainId: number;
|
|
5376
5375
|
input: Hex;
|
|
5377
5376
|
typeHex: Hex | null;
|
|
5377
|
+
chainId: number;
|
|
5378
5378
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_3 ? T_3 extends (blockTag extends "pending" ? true : false) ? T_3 extends true ? null : bigint : never : never;
|
|
5379
5379
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_4 ? T_4 extends (blockTag extends "pending" ? true : false) ? T_4 extends true ? null : `0x${string}` : never : never;
|
|
5380
5380
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_5 ? T_5 extends (blockTag extends "pending" ? true : false) ? T_5 extends true ? null : number : never : never;
|
|
@@ -5397,9 +5397,9 @@ export declare class KompassWallet {
|
|
|
5397
5397
|
s: Hex;
|
|
5398
5398
|
v: bigint;
|
|
5399
5399
|
yParity: number;
|
|
5400
|
-
chainId: number;
|
|
5401
5400
|
input: Hex;
|
|
5402
5401
|
typeHex: Hex | null;
|
|
5402
|
+
chainId: number;
|
|
5403
5403
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_6 ? T_6 extends (blockTag extends "pending" ? true : false) ? T_6 extends true ? null : bigint : never : never;
|
|
5404
5404
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_7 ? T_7 extends (blockTag extends "pending" ? true : false) ? T_7 extends true ? null : `0x${string}` : never : never;
|
|
5405
5405
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_8 ? T_8 extends (blockTag extends "pending" ? true : false) ? T_8 extends true ? null : number : never : never;
|
|
@@ -5422,9 +5422,9 @@ export declare class KompassWallet {
|
|
|
5422
5422
|
s: Hex;
|
|
5423
5423
|
v: bigint;
|
|
5424
5424
|
yParity: number;
|
|
5425
|
-
chainId: number;
|
|
5426
5425
|
input: Hex;
|
|
5427
5426
|
typeHex: Hex | null;
|
|
5427
|
+
chainId: number;
|
|
5428
5428
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_9 ? T_9 extends (blockTag extends "pending" ? true : false) ? T_9 extends true ? null : bigint : never : never;
|
|
5429
5429
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_10 ? T_10 extends (blockTag extends "pending" ? true : false) ? T_10 extends true ? null : `0x${string}` : never : never;
|
|
5430
5430
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_11 ? T_11 extends (blockTag extends "pending" ? true : false) ? T_11 extends true ? null : number : never : never;
|
|
@@ -5447,9 +5447,9 @@ export declare class KompassWallet {
|
|
|
5447
5447
|
s: Hex;
|
|
5448
5448
|
v: bigint;
|
|
5449
5449
|
yParity: number;
|
|
5450
|
-
chainId: number;
|
|
5451
5450
|
input: Hex;
|
|
5452
5451
|
typeHex: Hex | null;
|
|
5452
|
+
chainId: number;
|
|
5453
5453
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_12 ? T_12 extends (blockTag extends "pending" ? true : false) ? T_12 extends true ? null : bigint : never : never;
|
|
5454
5454
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_13 ? T_13 extends (blockTag extends "pending" ? true : false) ? T_13 extends true ? null : `0x${string}` : never : never;
|
|
5455
5455
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_14 ? T_14 extends (blockTag extends "pending" ? true : false) ? T_14 extends true ? null : number : never : never;
|
|
@@ -5498,9 +5498,9 @@ export declare class KompassWallet {
|
|
|
5498
5498
|
s: Hex;
|
|
5499
5499
|
v: bigint;
|
|
5500
5500
|
yParity?: undefined | undefined;
|
|
5501
|
-
chainId?: number | undefined;
|
|
5502
5501
|
input: Hex;
|
|
5503
5502
|
typeHex: Hex | null;
|
|
5503
|
+
chainId?: number | undefined;
|
|
5504
5504
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T ? T extends (blockTag extends "pending" ? true : false) ? T extends true ? null : bigint : never : never;
|
|
5505
5505
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_1 ? T_1 extends (blockTag extends "pending" ? true : false) ? T_1 extends true ? null : `0x${string}` : never : never;
|
|
5506
5506
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_2 ? T_2 extends (blockTag extends "pending" ? true : false) ? T_2 extends true ? null : number : never : never;
|
|
@@ -5523,9 +5523,9 @@ export declare class KompassWallet {
|
|
|
5523
5523
|
s: Hex;
|
|
5524
5524
|
v: bigint;
|
|
5525
5525
|
yParity: number;
|
|
5526
|
-
chainId: number;
|
|
5527
5526
|
input: Hex;
|
|
5528
5527
|
typeHex: Hex | null;
|
|
5528
|
+
chainId: number;
|
|
5529
5529
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_3 ? T_3 extends (blockTag extends "pending" ? true : false) ? T_3 extends true ? null : bigint : never : never;
|
|
5530
5530
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_4 ? T_4 extends (blockTag extends "pending" ? true : false) ? T_4 extends true ? null : `0x${string}` : never : never;
|
|
5531
5531
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_5 ? T_5 extends (blockTag extends "pending" ? true : false) ? T_5 extends true ? null : number : never : never;
|
|
@@ -5548,9 +5548,9 @@ export declare class KompassWallet {
|
|
|
5548
5548
|
s: Hex;
|
|
5549
5549
|
v: bigint;
|
|
5550
5550
|
yParity: number;
|
|
5551
|
-
chainId: number;
|
|
5552
5551
|
input: Hex;
|
|
5553
5552
|
typeHex: Hex | null;
|
|
5553
|
+
chainId: number;
|
|
5554
5554
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_6 ? T_6 extends (blockTag extends "pending" ? true : false) ? T_6 extends true ? null : bigint : never : never;
|
|
5555
5555
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_7 ? T_7 extends (blockTag extends "pending" ? true : false) ? T_7 extends true ? null : `0x${string}` : never : never;
|
|
5556
5556
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_8 ? T_8 extends (blockTag extends "pending" ? true : false) ? T_8 extends true ? null : number : never : never;
|
|
@@ -5573,9 +5573,9 @@ export declare class KompassWallet {
|
|
|
5573
5573
|
s: Hex;
|
|
5574
5574
|
v: bigint;
|
|
5575
5575
|
yParity: number;
|
|
5576
|
-
chainId: number;
|
|
5577
5576
|
input: Hex;
|
|
5578
5577
|
typeHex: Hex | null;
|
|
5578
|
+
chainId: number;
|
|
5579
5579
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_9 ? T_9 extends (blockTag extends "pending" ? true : false) ? T_9 extends true ? null : bigint : never : never;
|
|
5580
5580
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_10 ? T_10 extends (blockTag extends "pending" ? true : false) ? T_10 extends true ? null : `0x${string}` : never : never;
|
|
5581
5581
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_11 ? T_11 extends (blockTag extends "pending" ? true : false) ? T_11 extends true ? null : number : never : never;
|
|
@@ -5598,9 +5598,9 @@ export declare class KompassWallet {
|
|
|
5598
5598
|
s: Hex;
|
|
5599
5599
|
v: bigint;
|
|
5600
5600
|
yParity: number;
|
|
5601
|
-
chainId: number;
|
|
5602
5601
|
input: Hex;
|
|
5603
5602
|
typeHex: Hex | null;
|
|
5603
|
+
chainId: number;
|
|
5604
5604
|
blockNumber: (blockTag extends "pending" ? true : false) extends infer T_12 ? T_12 extends (blockTag extends "pending" ? true : false) ? T_12 extends true ? null : bigint : never : never;
|
|
5605
5605
|
blockHash: (blockTag extends "pending" ? true : false) extends infer T_13 ? T_13 extends (blockTag extends "pending" ? true : false) ? T_13 extends true ? null : `0x${string}` : never : never;
|
|
5606
5606
|
transactionIndex: (blockTag extends "pending" ? true : false) extends infer T_14 ? T_14 extends (blockTag extends "pending" ? true : false) ? T_14 extends true ? null : number : never : never;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kompass-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"description": "Get any job done. Universal agent capability discovery + coordination across ACP, MCP, x402, A2A, skills, L402, and ERC-8004.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/aggregator.ts
CHANGED
|
@@ -187,13 +187,17 @@ export class Aggregator {
|
|
|
187
187
|
// Has pricing info bonus (transparency)
|
|
188
188
|
if (agent.pricing && agent.pricing.model !== "unknown") score += 3;
|
|
189
189
|
|
|
190
|
-
// Has
|
|
190
|
+
// Has callable endpoint bonus
|
|
191
191
|
const endpointCount = Object.values(agent.endpoints).filter(Boolean).length;
|
|
192
192
|
score += endpointCount * 2;
|
|
193
193
|
|
|
194
|
-
//
|
|
195
|
-
|
|
196
|
-
if (
|
|
194
|
+
// Liveness signals — live verified gateways should rank higher in aggregator too
|
|
195
|
+
const src = agent.source as string;
|
|
196
|
+
if (src === "bankr") score += 20;
|
|
197
|
+
if (src === "locus") score += 15;
|
|
198
|
+
if (src === "x402-ecosystem") score += 10;
|
|
199
|
+
if (src === "acp") score += 8;
|
|
200
|
+
if (src === "olas") score += 8;
|
|
197
201
|
|
|
198
202
|
(agent as any)._score = score;
|
|
199
203
|
return agent;
|
package/src/basename.ts
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Basename Registration — .base.eth names on Base L2
|
|
3
|
+
*
|
|
4
|
+
* RegistrarController: 0x4cCb0BB02FCABA27e82a56646E81d8c5bC4119a5 (Base mainnet)
|
|
5
|
+
* L2Resolver: 0xC6d566A56A1aFf6508b41f6c90ff131615583BCD (Base mainnet)
|
|
6
|
+
*
|
|
7
|
+
* Pricing:
|
|
8
|
+
* 5-9 chars: 0.001 ETH (~$2.50) per year
|
|
9
|
+
* 10+ chars: 0.0001 ETH (~$0.25) per year
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { encodeFunctionData, namehash, type Address, type Hex } from "viem";
|
|
13
|
+
import type { KompassWallet } from "./wallet/index.js";
|
|
14
|
+
|
|
15
|
+
// ── Contract addresses ─────────────────────────────────────
|
|
16
|
+
export const BASENAME_REGISTRAR: Address = "0x4cCb0BB02FCABA27e82a56646E81d8c5bC4119a5";
|
|
17
|
+
export const BASENAME_L2_RESOLVER: Address = "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD";
|
|
18
|
+
|
|
19
|
+
// ── ABIs ───────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
const RegistrarControllerAbi = [
|
|
22
|
+
{
|
|
23
|
+
type: "function",
|
|
24
|
+
name: "register",
|
|
25
|
+
inputs: [
|
|
26
|
+
{
|
|
27
|
+
name: "request",
|
|
28
|
+
type: "tuple",
|
|
29
|
+
components: [
|
|
30
|
+
{ name: "name", type: "string" },
|
|
31
|
+
{ name: "owner", type: "address" },
|
|
32
|
+
{ name: "duration", type: "uint256" },
|
|
33
|
+
{ name: "resolver", type: "address" },
|
|
34
|
+
{ name: "data", type: "bytes[]" },
|
|
35
|
+
{ name: "reverseRecord", type: "bool" },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
outputs: [],
|
|
40
|
+
stateMutability: "payable",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: "function",
|
|
44
|
+
name: "registerPrice",
|
|
45
|
+
inputs: [
|
|
46
|
+
{ name: "name", type: "string" },
|
|
47
|
+
{ name: "duration", type: "uint256" },
|
|
48
|
+
],
|
|
49
|
+
outputs: [{ name: "", type: "uint256" }],
|
|
50
|
+
stateMutability: "view",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "function",
|
|
54
|
+
name: "available",
|
|
55
|
+
inputs: [{ name: "name", type: "string" }],
|
|
56
|
+
outputs: [{ name: "", type: "bool" }],
|
|
57
|
+
stateMutability: "view",
|
|
58
|
+
},
|
|
59
|
+
] as const;
|
|
60
|
+
|
|
61
|
+
const L2ResolverAbi = [
|
|
62
|
+
{
|
|
63
|
+
type: "function",
|
|
64
|
+
name: "setText",
|
|
65
|
+
inputs: [
|
|
66
|
+
{ name: "node", type: "bytes32" },
|
|
67
|
+
{ name: "key", type: "string" },
|
|
68
|
+
{ name: "value", type: "string" },
|
|
69
|
+
],
|
|
70
|
+
outputs: [],
|
|
71
|
+
stateMutability: "nonpayable",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: "function",
|
|
75
|
+
name: "setAddr",
|
|
76
|
+
inputs: [
|
|
77
|
+
{ name: "node", type: "bytes32" },
|
|
78
|
+
{ name: "a", type: "address" },
|
|
79
|
+
],
|
|
80
|
+
outputs: [],
|
|
81
|
+
stateMutability: "nonpayable",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: "function",
|
|
85
|
+
name: "text",
|
|
86
|
+
inputs: [
|
|
87
|
+
{ name: "node", type: "bytes32" },
|
|
88
|
+
{ name: "key", type: "string" },
|
|
89
|
+
],
|
|
90
|
+
outputs: [{ name: "", type: "string" }],
|
|
91
|
+
stateMutability: "view",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: "function",
|
|
95
|
+
name: "addr",
|
|
96
|
+
inputs: [{ name: "node", type: "bytes32" }],
|
|
97
|
+
outputs: [{ name: "", type: "address" }],
|
|
98
|
+
stateMutability: "view",
|
|
99
|
+
},
|
|
100
|
+
] as const;
|
|
101
|
+
|
|
102
|
+
// ── Types ──────────────────────────────────────────────────
|
|
103
|
+
|
|
104
|
+
export interface BasenameResult {
|
|
105
|
+
name: string;
|
|
106
|
+
fullName: string;
|
|
107
|
+
node: Hex;
|
|
108
|
+
txHash: Hex;
|
|
109
|
+
price: bigint;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface TextRecord {
|
|
113
|
+
key: string;
|
|
114
|
+
value: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ── Constants ──────────────────────────────────────────────
|
|
118
|
+
const ONE_YEAR_SECONDS = 365n * 24n * 60n * 60n;
|
|
119
|
+
|
|
120
|
+
// ── Functions ──────────────────────────────────────────────
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Compute the ENS namehash for a .base.eth name.
|
|
124
|
+
*/
|
|
125
|
+
/**
|
|
126
|
+
* Strip .base.eth suffix if present, returning just the label.
|
|
127
|
+
*/
|
|
128
|
+
function stripBasenameLabel(name: string): string {
|
|
129
|
+
return name.replace(/\.base\.eth$/i, "");
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Compute the ENS namehash for a .base.eth name.
|
|
134
|
+
*/
|
|
135
|
+
export function basenameNode(name: string): Hex {
|
|
136
|
+
const label = stripBasenameLabel(name);
|
|
137
|
+
return namehash(`${label}.base.eth`) as Hex;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Check if a basename is available for registration.
|
|
142
|
+
*/
|
|
143
|
+
export async function isBasenameAvailable(
|
|
144
|
+
wallet: KompassWallet,
|
|
145
|
+
name: string,
|
|
146
|
+
registrarAddress: Address = BASENAME_REGISTRAR,
|
|
147
|
+
): Promise<boolean> {
|
|
148
|
+
const publicClient = wallet.getPublicClient() as any;
|
|
149
|
+
|
|
150
|
+
return publicClient.readContract({
|
|
151
|
+
address: registrarAddress,
|
|
152
|
+
abi: RegistrarControllerAbi,
|
|
153
|
+
functionName: "available",
|
|
154
|
+
args: [name],
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Get the registration price for a basename.
|
|
160
|
+
*
|
|
161
|
+
* @param name — The name (without .base.eth)
|
|
162
|
+
* @param durationYears — Number of years (default 1)
|
|
163
|
+
* @returns Price in wei
|
|
164
|
+
*/
|
|
165
|
+
export async function getBasenamePrice(
|
|
166
|
+
wallet: KompassWallet,
|
|
167
|
+
name: string,
|
|
168
|
+
durationYears: number = 1,
|
|
169
|
+
registrarAddress: Address = BASENAME_REGISTRAR,
|
|
170
|
+
): Promise<bigint> {
|
|
171
|
+
const publicClient = wallet.getPublicClient() as any;
|
|
172
|
+
const duration = ONE_YEAR_SECONDS * BigInt(durationYears);
|
|
173
|
+
|
|
174
|
+
return publicClient.readContract({
|
|
175
|
+
address: registrarAddress,
|
|
176
|
+
abi: RegistrarControllerAbi,
|
|
177
|
+
functionName: "registerPrice",
|
|
178
|
+
args: [name, duration],
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Encode resolver data for setting text records + address during registration.
|
|
184
|
+
* These get passed as the `data[]` field in RegisterRequest so they execute atomically.
|
|
185
|
+
*/
|
|
186
|
+
function encodeResolverData(
|
|
187
|
+
node: Hex,
|
|
188
|
+
ownerAddress: Address,
|
|
189
|
+
textRecords?: TextRecord[],
|
|
190
|
+
): Hex[] {
|
|
191
|
+
const data: Hex[] = [];
|
|
192
|
+
|
|
193
|
+
// Set address record
|
|
194
|
+
data.push(
|
|
195
|
+
encodeFunctionData({
|
|
196
|
+
abi: L2ResolverAbi,
|
|
197
|
+
functionName: "setAddr",
|
|
198
|
+
args: [node, ownerAddress],
|
|
199
|
+
}),
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
// Set text records
|
|
203
|
+
if (textRecords) {
|
|
204
|
+
for (const record of textRecords) {
|
|
205
|
+
data.push(
|
|
206
|
+
encodeFunctionData({
|
|
207
|
+
abi: L2ResolverAbi,
|
|
208
|
+
functionName: "setText",
|
|
209
|
+
args: [node, record.key, record.value],
|
|
210
|
+
}),
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return data;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Register a Basename (.base.eth) for an agent.
|
|
220
|
+
*
|
|
221
|
+
* @param wallet — KompassWallet with funded account (needs ETH for price + gas)
|
|
222
|
+
* @param name — The name to register (without .base.eth suffix)
|
|
223
|
+
* @param textRecords — Optional text records to set atomically during registration
|
|
224
|
+
* @param durationYears — Registration duration in years (default 1)
|
|
225
|
+
*/
|
|
226
|
+
export async function registerBasename(
|
|
227
|
+
wallet: KompassWallet,
|
|
228
|
+
name: string,
|
|
229
|
+
textRecords?: TextRecord[],
|
|
230
|
+
durationYears: number = 1,
|
|
231
|
+
registrarAddress: Address = BASENAME_REGISTRAR,
|
|
232
|
+
resolverAddress: Address = BASENAME_L2_RESOLVER,
|
|
233
|
+
): Promise<BasenameResult> {
|
|
234
|
+
const walletClient = wallet.getWalletClient() as any;
|
|
235
|
+
const publicClient = wallet.getPublicClient() as any;
|
|
236
|
+
const ownerAddress = wallet.getAddress();
|
|
237
|
+
const duration = ONE_YEAR_SECONDS * BigInt(durationYears);
|
|
238
|
+
|
|
239
|
+
// Normalize: strip .base.eth suffix if user passed it
|
|
240
|
+
name = stripBasenameLabel(name);
|
|
241
|
+
|
|
242
|
+
// 1. Check availability
|
|
243
|
+
const available = await isBasenameAvailable(wallet, name, registrarAddress);
|
|
244
|
+
if (!available) {
|
|
245
|
+
throw new Error(`Basename "${name}.base.eth" is not available`);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// 2. Get price
|
|
249
|
+
const price = await getBasenamePrice(wallet, name, durationYears, registrarAddress);
|
|
250
|
+
|
|
251
|
+
// 3. Compute node for resolver data
|
|
252
|
+
const node = basenameNode(name);
|
|
253
|
+
|
|
254
|
+
// 4. Encode resolver data (setAddr + setText calls)
|
|
255
|
+
const data = encodeResolverData(node, ownerAddress, textRecords);
|
|
256
|
+
|
|
257
|
+
// 5. Register with 10% buffer for price fluctuation
|
|
258
|
+
const value = (price * 110n) / 100n;
|
|
259
|
+
|
|
260
|
+
const txHash = await walletClient.writeContract({
|
|
261
|
+
address: registrarAddress,
|
|
262
|
+
abi: RegistrarControllerAbi,
|
|
263
|
+
functionName: "register",
|
|
264
|
+
args: [
|
|
265
|
+
{
|
|
266
|
+
name,
|
|
267
|
+
owner: ownerAddress,
|
|
268
|
+
duration,
|
|
269
|
+
resolver: resolverAddress,
|
|
270
|
+
data,
|
|
271
|
+
reverseRecord: true,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
value,
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
278
|
+
|
|
279
|
+
return {
|
|
280
|
+
name,
|
|
281
|
+
fullName: `${name}.base.eth`,
|
|
282
|
+
node,
|
|
283
|
+
txHash,
|
|
284
|
+
price,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Set text records on an existing Basename via L2Resolver.
|
|
290
|
+
*/
|
|
291
|
+
export async function setBasenameTextRecords(
|
|
292
|
+
wallet: KompassWallet,
|
|
293
|
+
name: string,
|
|
294
|
+
records: TextRecord[],
|
|
295
|
+
resolverAddress: Address = BASENAME_L2_RESOLVER,
|
|
296
|
+
): Promise<Hex[]> {
|
|
297
|
+
const walletClient = wallet.getWalletClient() as any;
|
|
298
|
+
const publicClient = wallet.getPublicClient() as any;
|
|
299
|
+
const node = basenameNode(name);
|
|
300
|
+
|
|
301
|
+
const txHashes: Hex[] = [];
|
|
302
|
+
for (const record of records) {
|
|
303
|
+
const txHash = await walletClient.writeContract({
|
|
304
|
+
address: resolverAddress,
|
|
305
|
+
abi: L2ResolverAbi,
|
|
306
|
+
functionName: "setText",
|
|
307
|
+
args: [node, record.key, record.value],
|
|
308
|
+
});
|
|
309
|
+
await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
310
|
+
txHashes.push(txHash);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return txHashes;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Read a text record from a Basename.
|
|
318
|
+
*/
|
|
319
|
+
export async function getBasenameText(
|
|
320
|
+
wallet: KompassWallet,
|
|
321
|
+
name: string,
|
|
322
|
+
key: string,
|
|
323
|
+
resolverAddress: Address = BASENAME_L2_RESOLVER,
|
|
324
|
+
): Promise<string> {
|
|
325
|
+
const publicClient = wallet.getPublicClient() as any;
|
|
326
|
+
const node = basenameNode(name);
|
|
327
|
+
|
|
328
|
+
return publicClient.readContract({
|
|
329
|
+
address: resolverAddress,
|
|
330
|
+
abi: L2ResolverAbi,
|
|
331
|
+
functionName: "text",
|
|
332
|
+
args: [node, key],
|
|
333
|
+
});
|
|
334
|
+
}
|
package/src/bridge.ts
CHANGED
|
@@ -290,6 +290,59 @@ export class ProtocolBridge {
|
|
|
290
290
|
};
|
|
291
291
|
}
|
|
292
292
|
|
|
293
|
+
// Source-specific handlers — some HTTP agents need custom auth/params
|
|
294
|
+
const source = (agent as any).source ?? "";
|
|
295
|
+
|
|
296
|
+
if (source === "bankr") {
|
|
297
|
+
// Bankr handler uses API key auth, not wallet — wallet param is unused
|
|
298
|
+
const { handleBankrPayment } = await import("./wallet/handlers/bankr.js");
|
|
299
|
+
const { KompassWallet } = await import("./wallet/index.js");
|
|
300
|
+
let wallet;
|
|
301
|
+
try { wallet = KompassWallet.load(); } catch { wallet = KompassWallet.create(); }
|
|
302
|
+
const result = await handleBankrPayment(wallet, agent, options.task);
|
|
303
|
+
return {
|
|
304
|
+
success: result.success,
|
|
305
|
+
protocol: "http",
|
|
306
|
+
agent,
|
|
307
|
+
deliverable: result.deliverable,
|
|
308
|
+
jobId: result.jobId,
|
|
309
|
+
durationMs: Date.now() - start,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if (source === "locus") {
|
|
314
|
+
const { handleLocusPayment } = await import("./wallet/handlers/locus.js");
|
|
315
|
+
const { KompassWallet } = await import("./wallet/index.js");
|
|
316
|
+
let wallet;
|
|
317
|
+
try { wallet = KompassWallet.load(); } catch { wallet = KompassWallet.create(); }
|
|
318
|
+
const result = await handleLocusPayment(wallet, agent, options.task);
|
|
319
|
+
return {
|
|
320
|
+
success: result.success,
|
|
321
|
+
protocol: "http",
|
|
322
|
+
agent,
|
|
323
|
+
deliverable: result.deliverable,
|
|
324
|
+
txHash: result.txHash,
|
|
325
|
+
durationMs: Date.now() - start,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (source === "olas") {
|
|
330
|
+
// Olas mechs are on-chain only — no HTTP endpoint
|
|
331
|
+
const { handleOlasPayment } = await import("./wallet/handlers/olas.js");
|
|
332
|
+
const { KompassWallet } = await import("./wallet/index.js");
|
|
333
|
+
let wallet;
|
|
334
|
+
try { wallet = KompassWallet.load(); } catch { wallet = KompassWallet.create(); }
|
|
335
|
+
const result = await handleOlasPayment(wallet, agent, options.task);
|
|
336
|
+
return {
|
|
337
|
+
success: result.success,
|
|
338
|
+
protocol: "http",
|
|
339
|
+
agent,
|
|
340
|
+
deliverable: result.deliverable,
|
|
341
|
+
durationMs: Date.now() - start,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Default HTTP handler
|
|
293
346
|
const res = await fetch(endpoint, {
|
|
294
347
|
method: "POST",
|
|
295
348
|
headers: { "Content-Type": "application/json" },
|