@dev.sail.money/sailor 0.0.2-21 → 0.0.2-23
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/package.json +1 -1
- package/packages/cli/dist/index.cjs +2454 -2057
- package/packages/cli/dist/server.cjs +166 -156
- package/packages/sdk/dist/deployments.d.ts +14 -7
- package/packages/sdk/dist/deployments.d.ts.map +1 -1
- package/packages/sdk/dist/deployments.js +132 -141
- package/packages/sdk/dist/deployments.js.map +1 -1
- package/packages/sdk/dist/intelligence.d.ts +1 -1
- package/packages/sdk/dist/intelligence.js +1 -1
- package/packages/ui/dist/assets/{add-BzRDG6go.js → add-BcGCle88.js} +1 -1
- package/packages/ui/dist/assets/{all-wallets-C6juL2cm.js → all-wallets-8Jcfw5Qj.js} +1 -1
- package/packages/ui/dist/assets/{app-store-DSJ1ow5G.js → app-store-R1-af7b6.js} +1 -1
- package/packages/ui/dist/assets/{apple-CUEgIX9k.js → apple-Cxitz1aK.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-circle-C4CzuHiR.js → arrow-bottom-circle-BGQ9w6zi.js} +1 -1
- package/packages/ui/dist/assets/{arrow-bottom-BOhBj1Je.js → arrow-bottom-n-1aGCMa.js} +1 -1
- package/packages/ui/dist/assets/{arrow-left-BTD8zZ12.js → arrow-left-BngH26cQ.js} +1 -1
- package/packages/ui/dist/assets/{arrow-right-qcOukPwm.js → arrow-right-Bd1vyPNZ.js} +1 -1
- package/packages/ui/dist/assets/{arrow-top-C0f2945G.js → arrow-top-nst6Ttr2.js} +1 -1
- package/packages/ui/dist/assets/{bank-BSWzLP3R.js → bank-3aeQOng_.js} +1 -1
- package/packages/ui/dist/assets/{basic-DGTBsmnG.js → basic-Ds-ESc-H.js} +1 -1
- package/packages/ui/dist/assets/{browser-DJNepafc.js → browser-COcw6X9p.js} +1 -1
- package/packages/ui/dist/assets/{card-u08LJx43.js → card-B8clsijS.js} +1 -1
- package/packages/ui/dist/assets/{ccip-DcWZjG37.js → ccip-SgLYYQWq.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-DVD-obDl.js → checkmark-CxpPWG40.js} +1 -1
- package/packages/ui/dist/assets/{checkmark-bold-CSXDqIAx.js → checkmark-bold-3THr8VIu.js} +1 -1
- package/packages/ui/dist/assets/{chevron-bottom-Be7f0gi2.js → chevron-bottom-HfWcF1bE.js} +1 -1
- package/packages/ui/dist/assets/{chevron-left-v8cgKRhQ.js → chevron-left-CkXbcOst.js} +1 -1
- package/packages/ui/dist/assets/{chevron-right-B0ux2X-3.js → chevron-right-Bt7ATlLQ.js} +1 -1
- package/packages/ui/dist/assets/{chevron-top-De-a8tmA.js → chevron-top-BZc4xycM.js} +1 -1
- package/packages/ui/dist/assets/{chrome-store-BIIIRGPA.js → chrome-store-IT1ftwJy.js} +1 -1
- package/packages/ui/dist/assets/{clock-8d5kvRPQ.js → clock-DpBvmJiH.js} +1 -1
- package/packages/ui/dist/assets/{close-BSSJkFv0.js → close-BoRwHijk.js} +1 -1
- package/packages/ui/dist/assets/{coinPlaceholder-CLJaQiUO.js → coinPlaceholder-Dba1nosr.js} +1 -1
- package/packages/ui/dist/assets/{compass-CR1zP0b-.js → compass-D4QnmoWi.js} +1 -1
- package/packages/ui/dist/assets/{copy-CGkuIFo6.js → copy-iBRvR2f1.js} +1 -1
- package/packages/ui/dist/assets/{core-ea860JM2.js → core-B0JxSbAV.js} +3 -3
- package/packages/ui/dist/assets/cursor-D3cYdnOt.js +3 -0
- package/packages/ui/dist/assets/{cursor-transparent-C8s5LY_P.js → cursor-transparent-Djp2Lulv.js} +1 -1
- package/packages/ui/dist/assets/{desktop-CQyixryE.js → desktop-DF6t43QS.js} +1 -1
- package/packages/ui/dist/assets/{disconnect-Ct0234l0.js → disconnect-BUeUrh3r.js} +1 -1
- package/packages/ui/dist/assets/{discord-haYPGMDl.js → discord-DWtvIwBI.js} +1 -1
- package/packages/ui/dist/assets/{etherscan-BTLrS1KK.js → etherscan-CrPMVPiO.js} +1 -1
- package/packages/ui/dist/assets/{events-wdo_D3Zy.js → events-DC84dMPF.js} +1 -1
- package/packages/ui/dist/assets/{exclamation-triangle-CMlYpOat.js → exclamation-triangle-9IcrwUru.js} +1 -1
- package/packages/ui/dist/assets/{extension-CNGBCbo8.js → extension-_qe-89Jo.js} +1 -1
- package/packages/ui/dist/assets/{external-link-DmYJSKcL.js → external-link-Bsar6cmv.js} +1 -1
- package/packages/ui/dist/assets/{facebook-F0iMVTem.js → facebook-CZnM2tIe.js} +1 -1
- package/packages/ui/dist/assets/{fallback-BqeFDEuW.js → fallback-BOfZ_bwu.js} +1 -1
- package/packages/ui/dist/assets/{farcaster-CYr9I6UA.js → farcaster-DyBlkt7c.js} +1 -1
- package/packages/ui/dist/assets/{filters-CxE97nqU.js → filters-DwCepBxH.js} +1 -1
- package/packages/ui/dist/assets/{github-CjRht-Wv.js → github-DgFcdJPt.js} +1 -1
- package/packages/ui/dist/assets/{google-3G0o4pR9.js → google-Csj-pWAm.js} +1 -1
- package/packages/ui/dist/assets/{help-circle-C5gNChqZ.js → help-circle-CF8XrZBx.js} +1 -1
- package/packages/ui/dist/assets/{id-C6_zK0Tb.js → id-YqFg_Hnr.js} +1 -1
- package/packages/ui/dist/assets/{image-DsU8Irlu.js → image-DvX7Dg9U.js} +1 -1
- package/packages/ui/dist/assets/{index-DQ44LBvq.js → index-3OLndEW6.js} +3 -3
- package/packages/ui/dist/assets/{index-CjvcQefO.js → index-BR_6qS4k.js} +1 -1
- package/packages/ui/dist/assets/{index-c8ZmMTds.js → index-BiN726SD.js} +1 -1
- package/packages/ui/dist/assets/index-DCnJ64lX.css +1 -0
- package/packages/ui/dist/assets/{index-Drc17uEc.js → index-Da0fOMbp.js} +1 -1
- package/packages/ui/dist/assets/{index-D1lgDFZV.js → index-DsS2DJdh.js} +1 -1
- package/packages/ui/dist/assets/index-yQSvDbVa.js +1775 -0
- package/packages/ui/dist/assets/{index.es-BhDQmlR4.js → index.es-BiIWW5o1.js} +4 -4
- package/packages/ui/dist/assets/{info-circle-CHV1idfy.js → info-circle-poBAGMBs.js} +1 -1
- package/packages/ui/dist/assets/{info-CAKKH6T2.js → info-zvmQXfcd.js} +1 -1
- package/packages/ui/dist/assets/{lightbulb-ew10LUMl.js → lightbulb-Dce_oD8K.js} +1 -1
- package/packages/ui/dist/assets/{mail-CACYeWXj.js → mail-dmvvhqN6.js} +1 -1
- package/packages/ui/dist/assets/{metamask-sdk-BUYu4RDE.js → metamask-sdk-BnCx3I3r.js} +1 -1
- package/packages/ui/dist/assets/{mobile-DX601q1y.js → mobile-B8JxvnR1.js} +1 -1
- package/packages/ui/dist/assets/{more-CQGeX45N.js → more-BwL7SLTo.js} +1 -1
- package/packages/ui/dist/assets/{network-placeholder-BQw8E4X-.js → network-placeholder-BGXRLaM_.js} +1 -1
- package/packages/ui/dist/assets/{nftPlaceholder-CifJ2CzA.js → nftPlaceholder-YKLlOwZU.js} +1 -1
- package/packages/ui/dist/assets/{off-B6oUArCZ.js → off-BdCZJUYq.js} +1 -1
- package/packages/ui/dist/assets/{parseSignature-DjWIdHkx.js → parseSignature-D9i4CKzP.js} +1 -1
- package/packages/ui/dist/assets/{play-store-Kq51oh3r.js → play-store-3UXzYs09.js} +1 -1
- package/packages/ui/dist/assets/{plus-BxZxVpff.js → plus-42VUC7wg.js} +1 -1
- package/packages/ui/dist/assets/{qr-code-CSBFpyhP.js → qr-code-W99JyxAx.js} +1 -1
- package/packages/ui/dist/assets/{recycle-horizontal-D0HyLkot.js → recycle-horizontal-B2t10e4m.js} +1 -1
- package/packages/ui/dist/assets/{refresh-BAQo228i.js → refresh-DEFqVlG3.js} +1 -1
- package/packages/ui/dist/assets/{reown-logo-DeUbwRp6.js → reown-logo-BpYt7vTo.js} +1 -1
- package/packages/ui/dist/assets/{search-C8Sd0Mpz.js → search-C38Hy_cf.js} +1 -1
- package/packages/ui/dist/assets/{secp256k1-BujG3JoP.js → secp256k1-IKD5pd64.js} +1 -1
- package/packages/ui/dist/assets/{send-B0JwUp6Q.js → send-gSwkftFg.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontal-B2k5yDqc.js → swapHorizontal-C1XbgPr5.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalBold-yQqq0yPi.js → swapHorizontalBold-CtEf5r93.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalMedium-NafYmdDj.js → swapHorizontalMedium-CHP_nvzn.js} +1 -1
- package/packages/ui/dist/assets/{swapHorizontalRoundedBold-BUn0GwEK.js → swapHorizontalRoundedBold-Crnco-Af.js} +1 -1
- package/packages/ui/dist/assets/{swapVertical-Be1m6suD.js → swapVertical-Ozkl0BQE.js} +1 -1
- package/packages/ui/dist/assets/{telegram-D-u7QHT5.js → telegram-BdfzLFDW.js} +1 -1
- package/packages/ui/dist/assets/{three-dots-B6Y4DFOR.js → three-dots-H2XRHPIG.js} +1 -1
- package/packages/ui/dist/assets/{twitch-DSy1rhWQ.js → twitch-DvbgB-BL.js} +1 -1
- package/packages/ui/dist/assets/{twitterIcon-tac1plSa.js → twitterIcon-BBsTYQzn.js} +1 -1
- package/packages/ui/dist/assets/{verify-6MylluBY.js → verify-3A_7IJxL.js} +1 -1
- package/packages/ui/dist/assets/{verify-filled-CZc0otb8.js → verify-filled-B4sP0yi_.js} +1 -1
- package/packages/ui/dist/assets/{w3m-modal-DbT03Pyz.js → w3m-modal-Bfua7kiP.js} +1 -1
- package/packages/ui/dist/assets/{wallet-473-ObZE.js → wallet-BbJ989Xh.js} +1 -1
- package/packages/ui/dist/assets/{wallet-placeholder-B9h3WvTk.js → wallet-placeholder-CQ2v8t-c.js} +1 -1
- package/packages/ui/dist/assets/{walletconnect-5GHIf5FR.js → walletconnect-BuShZt17.js} +1 -1
- package/packages/ui/dist/assets/{warning-circle-8A009Dx3.js → warning-circle-DMs8QNCr.js} +1 -1
- package/packages/ui/dist/assets/{x-B4jK8e8X.js → x-DzP75KD1.js} +1 -1
- package/packages/ui/dist/index.html +2 -2
- package/templates/default/AGENTS.md +3 -1
- package/packages/ui/dist/assets/cursor-DCRoxgSY.js +0 -3
- package/packages/ui/dist/assets/index-BCb0Nju4.js +0 -1775
- package/packages/ui/dist/assets/index-DDKDa0s2.css +0 -1
|
@@ -40463,178 +40463,148 @@ var REGISTER_PERMISSION_TYPEHASHES = {
|
|
|
40463
40463
|
};
|
|
40464
40464
|
|
|
40465
40465
|
// ../sdk/dist/deployments.js
|
|
40466
|
+
var CREATE2_KERNEL = "0x02ABC18B65A328de2e749F56ba79ACF2718a6659";
|
|
40467
|
+
var CREATE2_GOVERNANCE = "0x7A478118715791728BDE3bc7A4D7ECfdEB89C6EC";
|
|
40468
|
+
var CREATE2_TIMELOCK = "0xE48Ba8DB6d748adafD13155c3590f62e58a77f56";
|
|
40469
|
+
var CREATE2_SAFE_MODULE_ENABLER = "0x7897Cb53a4be4a2eaAf46D60573C4Fd83b33fE1F";
|
|
40470
|
+
var CREATE2_MANDATE_FACTORY = "0x14EDd6c2a56EfC0d71E215ab13094B9AF90543d2";
|
|
40471
|
+
var CREATE2_STANDARD_FEE_POLICY = "0xe7B5901b839cFFDEd9D4108A22712C8BfdA1D80D";
|
|
40472
|
+
var CREATE2_TREASURY = "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6";
|
|
40466
40473
|
var sailDeployments = {
|
|
40467
|
-
|
|
40468
|
-
|
|
40469
|
-
//
|
|
40470
|
-
//
|
|
40471
|
-
|
|
40472
|
-
|
|
40473
|
-
|
|
40474
|
-
|
|
40475
|
-
|
|
40476
|
-
|
|
40477
|
-
|
|
40478
|
-
|
|
40479
|
-
|
|
40480
|
-
|
|
40481
|
-
kernel: "0xf1D0F4C9893612627409948BAa9d82a01a373799",
|
|
40482
|
-
permissionFactory: "0xdfF6a2272F667cDf78Af4681b9c88A219998db95",
|
|
40483
|
-
standardFeePolicy: "0x05570F7973b46Eb9Ed4518422891EFC26BD58b97",
|
|
40484
|
-
safeModuleEnabler: "0xB2C2B52d94412e3472C9fb2B52186eA12a935869",
|
|
40485
|
-
treasury: "0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6",
|
|
40474
|
+
// ── Ethereum mainnet ─────────────────────────────────────────────────────────
|
|
40475
|
+
1: {
|
|
40476
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
|
|
40477
|
+
// allowlistBootstrapped=true (genesis bootstrap), zero fees, 48h timelock.
|
|
40478
|
+
chainId: 1,
|
|
40479
|
+
blockNumber: 25280925,
|
|
40480
|
+
deployer: CREATE2_TREASURY,
|
|
40481
|
+
governance: CREATE2_GOVERNANCE,
|
|
40482
|
+
timelock: CREATE2_TIMELOCK,
|
|
40483
|
+
kernel: CREATE2_KERNEL,
|
|
40484
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40485
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40486
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40487
|
+
treasury: CREATE2_TREASURY,
|
|
40486
40488
|
maxPermissionFeeWei: 1000000000000000n,
|
|
40487
40489
|
initialBaseFee: 0n,
|
|
40488
40490
|
initialComplexityRate: 0n,
|
|
40489
40491
|
dispatchModel: "selective",
|
|
40490
|
-
// selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
40491
40492
|
knownTemplates: [],
|
|
40492
40493
|
standaloneTemplates: {}
|
|
40493
40494
|
},
|
|
40495
|
+
// ── Base mainnet ─────────────────────────────────────────────────────────────
|
|
40494
40496
|
8453: {
|
|
40495
|
-
//
|
|
40496
|
-
//
|
|
40497
|
-
//
|
|
40498
|
-
// local CREATE2 proxy prediction carried over; allowlistBootstrapped=true,
|
|
40499
|
-
// zero fees, onboarding live. Supersedes 0x20eff0DbE752e22655A6dAA5A94521FA06CDdE06.
|
|
40500
|
-
// Only `core` was redeployed; shared/standalone permission templates are NOT yet
|
|
40501
|
-
// deployed against this kernel (run the templates targets + refill the maps first).
|
|
40497
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
|
|
40498
|
+
// 0x6319d3dfDDe3804ba93D65752b00c52bFb05a1ab (SAIL-405 redeploy).
|
|
40499
|
+
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
40502
40500
|
chainId: 8453,
|
|
40503
|
-
blockNumber:
|
|
40504
|
-
deployer:
|
|
40505
|
-
governance:
|
|
40506
|
-
timelock:
|
|
40507
|
-
kernel:
|
|
40508
|
-
|
|
40509
|
-
standardFeePolicy:
|
|
40510
|
-
safeModuleEnabler:
|
|
40511
|
-
treasury:
|
|
40501
|
+
blockNumber: 47115338,
|
|
40502
|
+
deployer: CREATE2_TREASURY,
|
|
40503
|
+
governance: CREATE2_GOVERNANCE,
|
|
40504
|
+
timelock: CREATE2_TIMELOCK,
|
|
40505
|
+
kernel: CREATE2_KERNEL,
|
|
40506
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40507
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40508
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40509
|
+
treasury: CREATE2_TREASURY,
|
|
40512
40510
|
maxPermissionFeeWei: 1000000000000000n,
|
|
40513
40511
|
initialBaseFee: 0n,
|
|
40514
40512
|
initialComplexityRate: 0n,
|
|
40515
40513
|
dispatchModel: "selective",
|
|
40516
|
-
// selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
40517
40514
|
knownTemplates: [],
|
|
40518
40515
|
standaloneTemplates: {}
|
|
40519
40516
|
},
|
|
40517
|
+
// ── Arbitrum mainnet ─────────────────────────────────────────────────────────
|
|
40520
40518
|
42161: {
|
|
40521
|
-
//
|
|
40522
|
-
//
|
|
40523
|
-
//
|
|
40524
|
-
// local CREATE2 proxy prediction carried over; allowlistBootstrapped=true,
|
|
40525
|
-
// zero fees, onboarding live. Supersedes 0x9AF32E0C395fb31f5cA28994351F8fAE3003e125.
|
|
40526
|
-
// Bootstrap was sent as a standalone tx post-core-deploy; identical end state to Base.
|
|
40527
|
-
// Only `core` was redeployed; shared/standalone permission templates are NOT yet
|
|
40528
|
-
// deployed against this kernel (run the templates targets + refill the maps first).
|
|
40519
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
|
|
40520
|
+
// 0x2716B12832DED0EF5688519c5Fe069EFc0374E02 (SAIL-405 redeploy).
|
|
40521
|
+
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
40529
40522
|
chainId: 42161,
|
|
40530
|
-
blockNumber:
|
|
40531
|
-
deployer:
|
|
40532
|
-
governance:
|
|
40533
|
-
timelock:
|
|
40534
|
-
kernel:
|
|
40535
|
-
|
|
40536
|
-
standardFeePolicy:
|
|
40537
|
-
safeModuleEnabler:
|
|
40538
|
-
treasury:
|
|
40523
|
+
blockNumber: 471736462,
|
|
40524
|
+
deployer: CREATE2_TREASURY,
|
|
40525
|
+
governance: CREATE2_GOVERNANCE,
|
|
40526
|
+
timelock: CREATE2_TIMELOCK,
|
|
40527
|
+
kernel: CREATE2_KERNEL,
|
|
40528
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40529
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40530
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40531
|
+
treasury: CREATE2_TREASURY,
|
|
40539
40532
|
maxPermissionFeeWei: 1000000000000000n,
|
|
40540
40533
|
initialBaseFee: 0n,
|
|
40541
40534
|
initialComplexityRate: 0n,
|
|
40542
40535
|
dispatchModel: "selective",
|
|
40543
|
-
// selective: verified on-chain DISPATCH_TYPEHASH 0xbe50c5391dcf9e08d11d2c30dbee822c14ad07af2ceb503c778d265801fb0e5c
|
|
40544
40536
|
knownTemplates: [],
|
|
40545
40537
|
standaloneTemplates: {}
|
|
40546
40538
|
},
|
|
40539
|
+
// ── Unichain mainnet ─────────────────────────────────────────────────────────
|
|
40547
40540
|
130: {
|
|
40548
|
-
//
|
|
40549
|
-
//
|
|
40550
|
-
//
|
|
40551
|
-
//
|
|
40552
|
-
//
|
|
40553
|
-
// 0xd7d408eb…fb4c), zero fees, onboarding live without the 48h timelock.
|
|
40554
|
-
// First chain to ship permission templates against the kernel.
|
|
40541
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
|
|
40542
|
+
// 0xD985029960a9B7C2E7E38e102C448b8b8539B156 (SAIL-406 deploy).
|
|
40543
|
+
// NOTE: knownTemplates and standaloneTemplates from SAIL-406 were deployed
|
|
40544
|
+
// against the old kernel 0xD985029... and are now invalid. They must be
|
|
40545
|
+
// redeployed against the new kernel 0x02ABC1... and re-populated here.
|
|
40555
40546
|
chainId: 130,
|
|
40556
|
-
blockNumber:
|
|
40557
|
-
deployer:
|
|
40558
|
-
governance:
|
|
40559
|
-
timelock:
|
|
40560
|
-
kernel:
|
|
40561
|
-
|
|
40562
|
-
standardFeePolicy:
|
|
40563
|
-
safeModuleEnabler:
|
|
40564
|
-
treasury:
|
|
40547
|
+
blockNumber: 50271704,
|
|
40548
|
+
deployer: CREATE2_TREASURY,
|
|
40549
|
+
governance: CREATE2_GOVERNANCE,
|
|
40550
|
+
timelock: CREATE2_TIMELOCK,
|
|
40551
|
+
kernel: CREATE2_KERNEL,
|
|
40552
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40553
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40554
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40555
|
+
treasury: CREATE2_TREASURY,
|
|
40565
40556
|
maxPermissionFeeWei: 1000000000000000n,
|
|
40566
40557
|
initialBaseFee: 0n,
|
|
40567
40558
|
initialComplexityRate: 0n,
|
|
40568
40559
|
dispatchModel: "selective",
|
|
40569
|
-
//
|
|
40570
|
-
|
|
40571
|
-
|
|
40572
|
-
|
|
40573
|
-
|
|
40574
|
-
|
|
40575
|
-
|
|
40576
|
-
|
|
40577
|
-
|
|
40578
|
-
|
|
40579
|
-
|
|
40580
|
-
|
|
40581
|
-
|
|
40582
|
-
|
|
40583
|
-
|
|
40584
|
-
|
|
40585
|
-
|
|
40586
|
-
|
|
40587
|
-
|
|
40588
|
-
|
|
40589
|
-
|
|
40590
|
-
|
|
40591
|
-
|
|
40592
|
-
|
|
40593
|
-
|
|
40594
|
-
|
|
40595
|
-
|
|
40596
|
-
|
|
40597
|
-
|
|
40598
|
-
|
|
40599
|
-
|
|
40600
|
-
|
|
40601
|
-
|
|
40602
|
-
|
|
40603
|
-
|
|
40604
|
-
|
|
40605
|
-
|
|
40606
|
-
|
|
40607
|
-
|
|
40608
|
-
|
|
40609
|
-
|
|
40610
|
-
|
|
40611
|
-
|
|
40612
|
-
|
|
40613
|
-
|
|
40614
|
-
|
|
40615
|
-
|
|
40616
|
-
|
|
40617
|
-
label: "Shared Transfer Target",
|
|
40618
|
-
description: "Allows transfers only to a pre-approved target address."
|
|
40619
|
-
}
|
|
40620
|
-
],
|
|
40621
|
-
standaloneTemplates: {
|
|
40622
|
-
// EIP-1167 clone LOGIC addresses — the `impl` argument to
|
|
40623
|
-
// PermissionFactory.deployAndAttach(account, impl, salt, initData). A clone
|
|
40624
|
-
// is created and configured per account via its initialize(...).
|
|
40625
|
-
azuroPrediction: "0xd48cdBB25bF0A214dEffECac3c9431650834b046",
|
|
40626
|
-
boundedApprove: "0xbF7089A905081054c9dA628707f2e1EF70A7F300",
|
|
40627
|
-
boundedBorrow: "0x17D466309C7E0237960f68126Cc4A109D194ac28",
|
|
40628
|
-
boundedDeposit: "0xf49E304EDf806AF46E8f17740e56C1CBFad5d264",
|
|
40629
|
-
boundedLiFi: "0x6a0171013FeD6B2Eda16A4dd4DB33Fa34b7F3e3f",
|
|
40630
|
-
boundedSwap: "0x06696F9dd4bD0994f55b075600627Dc6E54635c9",
|
|
40631
|
-
boundedWithdraw: "0xE207CfC8c2204b15ee5fD22B79472929706c7E4b",
|
|
40632
|
-
gmxPerp: "0xB1bb967aC11D61C0599c8458D9B950461db5D4E9",
|
|
40633
|
-
gainsNetworkPerp: "0x1297673f71A9be02bc876Dbd0ceaB3c96D268bE3",
|
|
40634
|
-
limitlessPrediction: "0x2bE4280d8816626e1dea4E94A83d9334A971AF90",
|
|
40635
|
-
synthetixPerp: "0x711a70B16D013a9B96Bd6733F4b3097e5787f860",
|
|
40636
|
-
transferTarget: "0x8428155b6b9eea4E78b9a52c2312752eD04Baf16"
|
|
40637
|
-
}
|
|
40560
|
+
// Templates cleared: the SAIL-406 shared + standalone templates were deployed
|
|
40561
|
+
// against the old kernel (0xD985029...) and are invalid against the new one.
|
|
40562
|
+
// Re-populate after redeploying templates against 0x02ABC1...
|
|
40563
|
+
knownTemplates: [],
|
|
40564
|
+
standaloneTemplates: {}
|
|
40565
|
+
},
|
|
40566
|
+
// ── Base Sepolia (testnet) ───────────────────────────────────────────────────
|
|
40567
|
+
84532: {
|
|
40568
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33). Supersedes
|
|
40569
|
+
// 0xf1D0F4C9893612627409948BAa9d82a01a373799 (SAIL-405 redeploy).
|
|
40570
|
+
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
40571
|
+
chainId: 84532,
|
|
40572
|
+
blockNumber: 42625843,
|
|
40573
|
+
deployer: CREATE2_TREASURY,
|
|
40574
|
+
governance: CREATE2_GOVERNANCE,
|
|
40575
|
+
timelock: CREATE2_TIMELOCK,
|
|
40576
|
+
kernel: CREATE2_KERNEL,
|
|
40577
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40578
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40579
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40580
|
+
treasury: CREATE2_TREASURY,
|
|
40581
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
40582
|
+
initialBaseFee: 0n,
|
|
40583
|
+
initialComplexityRate: 0n,
|
|
40584
|
+
dispatchModel: "selective",
|
|
40585
|
+
knownTemplates: [],
|
|
40586
|
+
standaloneTemplates: {}
|
|
40587
|
+
},
|
|
40588
|
+
// ── Eth Sepolia (testnet) ────────────────────────────────────────────────────
|
|
40589
|
+
11155111: {
|
|
40590
|
+
// CREATE2 deterministic deploy (2026-06-09, gitCommit 1199b33).
|
|
40591
|
+
// allowlistBootstrapped=true, zero fees, 48h timelock.
|
|
40592
|
+
chainId: 11155111,
|
|
40593
|
+
blockNumber: 11023571,
|
|
40594
|
+
deployer: CREATE2_TREASURY,
|
|
40595
|
+
governance: CREATE2_GOVERNANCE,
|
|
40596
|
+
timelock: CREATE2_TIMELOCK,
|
|
40597
|
+
kernel: CREATE2_KERNEL,
|
|
40598
|
+
mandateFactory: CREATE2_MANDATE_FACTORY,
|
|
40599
|
+
standardFeePolicy: CREATE2_STANDARD_FEE_POLICY,
|
|
40600
|
+
safeModuleEnabler: CREATE2_SAFE_MODULE_ENABLER,
|
|
40601
|
+
treasury: CREATE2_TREASURY,
|
|
40602
|
+
maxPermissionFeeWei: 1000000000000000n,
|
|
40603
|
+
initialBaseFee: 0n,
|
|
40604
|
+
initialComplexityRate: 0n,
|
|
40605
|
+
dispatchModel: "selective",
|
|
40606
|
+
knownTemplates: [],
|
|
40607
|
+
standaloneTemplates: {}
|
|
40638
40608
|
}
|
|
40639
40609
|
};
|
|
40640
40610
|
function getSailDeployment(chainId) {
|
|
@@ -49623,6 +49593,17 @@ function signerEntry(role, address, balanceByAddr) {
|
|
|
49623
49593
|
status: balanceStatus(wei)
|
|
49624
49594
|
};
|
|
49625
49595
|
}
|
|
49596
|
+
function addManagerToList(existing, current, next) {
|
|
49597
|
+
const base = existing ?? (current ? [getAddress(current)] : []);
|
|
49598
|
+
const all = [...base, getAddress(next)];
|
|
49599
|
+
const seen = /* @__PURE__ */ new Set();
|
|
49600
|
+
return all.filter((a) => {
|
|
49601
|
+
const l = a.toLowerCase();
|
|
49602
|
+
if (seen.has(l)) return false;
|
|
49603
|
+
seen.add(l);
|
|
49604
|
+
return true;
|
|
49605
|
+
});
|
|
49606
|
+
}
|
|
49626
49607
|
var OVERVIEW_TTL_MS = 1e4;
|
|
49627
49608
|
function startServer(sailDir, { port = PORT } = {}) {
|
|
49628
49609
|
const app = (0, import_express.default)();
|
|
@@ -49913,7 +49894,8 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49913
49894
|
try {
|
|
49914
49895
|
const account = JSON.parse(import_node_fs2.default.readFileSync(at("account.json"), "utf-8"));
|
|
49915
49896
|
if (account?.safe?.toLowerCase() === safe.toLowerCase()) {
|
|
49916
|
-
|
|
49897
|
+
const managers = addManagerToList(account.managers, account.manager, manager);
|
|
49898
|
+
import_node_fs2.default.writeFileSync(at("account.json"), `${JSON.stringify({ ...account, manager, managers }, null, 2)}
|
|
49917
49899
|
`);
|
|
49918
49900
|
}
|
|
49919
49901
|
} catch {
|
|
@@ -49923,7 +49905,9 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49923
49905
|
const list = JSON.parse(import_node_fs2.default.readFileSync(listPath, "utf-8"));
|
|
49924
49906
|
const idx = list.findIndex((a) => a.safe?.toLowerCase() === safe.toLowerCase());
|
|
49925
49907
|
if (idx !== -1) {
|
|
49926
|
-
|
|
49908
|
+
const entry = list[idx];
|
|
49909
|
+
const managers = addManagerToList(entry.managers, entry.manager, manager);
|
|
49910
|
+
list[idx] = { ...entry, manager, managers };
|
|
49927
49911
|
import_node_fs2.default.writeFileSync(listPath, `${JSON.stringify(list, null, 2)}
|
|
49928
49912
|
`);
|
|
49929
49913
|
}
|
|
@@ -49945,7 +49929,20 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49945
49929
|
res.status(500).json({ error: String(err) });
|
|
49946
49930
|
}
|
|
49947
49931
|
});
|
|
49948
|
-
const isManagerKeyFile = (file) => file === "manager.json" || file.startsWith("manager-") && file.endsWith(".json");
|
|
49932
|
+
const isManagerKeyFile = (file) => file === "manager.json" || file.startsWith("manager-") && file.endsWith(".json") || file.startsWith("managers/") && file.endsWith(".json");
|
|
49933
|
+
const listManagerKeyFiles = () => {
|
|
49934
|
+
let files = [];
|
|
49935
|
+
try {
|
|
49936
|
+
files = import_node_fs2.default.readdirSync(at("keys"));
|
|
49937
|
+
} catch {
|
|
49938
|
+
files = [];
|
|
49939
|
+
}
|
|
49940
|
+
try {
|
|
49941
|
+
files.push(...import_node_fs2.default.readdirSync(at("keys/managers")).map((f) => `managers/${f}`));
|
|
49942
|
+
} catch {
|
|
49943
|
+
}
|
|
49944
|
+
return files;
|
|
49945
|
+
};
|
|
49949
49946
|
const keystoreAddress = (file) => {
|
|
49950
49947
|
try {
|
|
49951
49948
|
const ks = JSON.parse(import_node_fs2.default.readFileSync(at(`keys/${file}`), "utf-8"));
|
|
@@ -49957,12 +49954,7 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
49957
49954
|
};
|
|
49958
49955
|
app.get("/api/signers", (_req, res) => {
|
|
49959
49956
|
try {
|
|
49960
|
-
|
|
49961
|
-
try {
|
|
49962
|
-
files = import_node_fs2.default.readdirSync(at("keys"));
|
|
49963
|
-
} catch {
|
|
49964
|
-
files = [];
|
|
49965
|
-
}
|
|
49957
|
+
const files = listManagerKeyFiles();
|
|
49966
49958
|
const activeSafe = readActiveSafe();
|
|
49967
49959
|
let activeManager = null;
|
|
49968
49960
|
try {
|
|
@@ -50002,12 +49994,7 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
50002
49994
|
return;
|
|
50003
49995
|
}
|
|
50004
49996
|
try {
|
|
50005
|
-
|
|
50006
|
-
try {
|
|
50007
|
-
files = import_node_fs2.default.readdirSync(at("keys"));
|
|
50008
|
-
} catch {
|
|
50009
|
-
files = [];
|
|
50010
|
-
}
|
|
49997
|
+
const files = listManagerKeyFiles();
|
|
50011
49998
|
const want = getAddress(address).toLowerCase();
|
|
50012
49999
|
const match = files.find((file) => isManagerKeyFile(file) && keystoreAddress(file)?.toLowerCase() === want);
|
|
50013
50000
|
if (!match) {
|
|
@@ -50640,8 +50627,9 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
50640
50627
|
const [permissionSigner, manager, , sessionActive] = configs;
|
|
50641
50628
|
const managerSet = Boolean(manager) && getAddress(manager) !== zeroAddress2;
|
|
50642
50629
|
const managerAddr = managerSet ? getAddress(manager) : localSigner;
|
|
50630
|
+
const knownManagerAddrs = (account.managers ?? []).map((a) => getAddress(a));
|
|
50643
50631
|
const signerAddrs = [
|
|
50644
|
-
...new Set([managerAddr, account.owner ? getAddress(account.owner) : null, ...localManagerAddrs].filter(Boolean))
|
|
50632
|
+
...new Set([managerAddr, account.owner ? getAddress(account.owner) : null, ...localManagerAddrs, ...knownManagerAddrs].filter(Boolean))
|
|
50645
50633
|
];
|
|
50646
50634
|
const balances = await Promise.all(signerAddrs.map((a) => client.getBalance({ address: a })));
|
|
50647
50635
|
const balanceByAddr = new Map(signerAddrs.map((a, i) => [a.toLowerCase(), balances[i]]));
|
|
@@ -50667,6 +50655,17 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
50667
50655
|
} else {
|
|
50668
50656
|
managerEntry = { role: "manager", address: null, balanceWei: null, balanceEth: null, status: "unconfigured" };
|
|
50669
50657
|
}
|
|
50658
|
+
if (knownManagerAddrs.length > 0) {
|
|
50659
|
+
const activeLower = (managerSet ? getAddress(manager) : account.manager ?? null)?.toLowerCase() ?? null;
|
|
50660
|
+
managerEntry.managers = knownManagerAddrs.map((a) => {
|
|
50661
|
+
const bal = balanceByAddr.get(a.toLowerCase());
|
|
50662
|
+
return {
|
|
50663
|
+
address: a,
|
|
50664
|
+
balanceEth: bal != null ? formatEther(bal) : null,
|
|
50665
|
+
isActive: a.toLowerCase() === activeLower
|
|
50666
|
+
};
|
|
50667
|
+
});
|
|
50668
|
+
}
|
|
50670
50669
|
const signers = [managerEntry];
|
|
50671
50670
|
for (const la of localManagerAddrs) {
|
|
50672
50671
|
if (getAddress(la) !== (managerAddr ? getAddress(managerAddr) : null)) {
|
|
@@ -50695,6 +50694,17 @@ function startServer(sailDir, { port = PORT } = {}) {
|
|
|
50695
50694
|
status: "local"
|
|
50696
50695
|
}));
|
|
50697
50696
|
}
|
|
50697
|
+
if (account.managers?.length > 0) {
|
|
50698
|
+
const onchainMgr = result.sma.manager;
|
|
50699
|
+
const activeLower = (onchainMgr && onchainMgr !== zeroAddress2 ? onchainMgr : account.manager ?? null)?.toLowerCase() ?? null;
|
|
50700
|
+
const managersPayload = account.managers.map((a) => ({
|
|
50701
|
+
address: getAddress(a),
|
|
50702
|
+
balanceEth: null,
|
|
50703
|
+
isActive: a.toLowerCase() === activeLower
|
|
50704
|
+
}));
|
|
50705
|
+
const mgrSigner = result.signers.find((s) => s.role === "manager");
|
|
50706
|
+
if (mgrSigner && !mgrSigner.managers) mgrSigner.managers = managersPayload;
|
|
50707
|
+
}
|
|
50698
50708
|
return result;
|
|
50699
50709
|
}
|
|
50700
50710
|
const distDir = process.env.SAILOR_UI_DIST ?? import_node_path.default.join(import_node_path.default.dirname(_thisFile), "dist");
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
import type { DispatchModel } from "./capabilities.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Chains with a bundled Sail Protocol deployment.
|
|
5
|
+
* Mainnets: Ethereum (1), Base (8453), Arbitrum (42161), Unichain (130).
|
|
6
|
+
* Testnets: Base Sepolia (84532), Eth Sepolia (11155111).
|
|
7
|
+
*
|
|
8
|
+
* All six chains were redeployed via CREATE2 (global salt, gitCommit 1199b33)
|
|
9
|
+
* so every core contract lands at the same address on every chain.
|
|
10
|
+
*/
|
|
11
|
+
export type SailChainId = 1 | 8453 | 42161 | 130 | 84532 | 11155111;
|
|
5
12
|
/** A pre-audited mandate template available on a chain. */
|
|
6
13
|
export type KnownTemplate = {
|
|
7
14
|
kind: string;
|
|
@@ -21,7 +28,7 @@ export type CloneTemplateParam = {
|
|
|
21
28
|
* Rich, self-describing metadata for an EIP-1167 clone permission template — the
|
|
22
29
|
* wizard-/tooling-facing companion to the bare `standaloneTemplates` address map.
|
|
23
30
|
* `address` mirrors `standaloneTemplates[key]` (the clone LOGIC). A clone is created
|
|
24
|
-
* per account via `
|
|
31
|
+
* per account via `MandateFactory.deployAndAttach(account, address, salt,
|
|
25
32
|
* initData)`, where `initData` ABI-encodes a call to `initialize(initParams…)`.
|
|
26
33
|
*/
|
|
27
34
|
export type CloneTemplateInfo = {
|
|
@@ -46,7 +53,7 @@ export type SailDeployment = {
|
|
|
46
53
|
governance: Address;
|
|
47
54
|
timelock: Address;
|
|
48
55
|
kernel: Address;
|
|
49
|
-
|
|
56
|
+
mandateFactory: Address;
|
|
50
57
|
standardFeePolicy: Address;
|
|
51
58
|
safeModuleEnabler: Address;
|
|
52
59
|
treasury: Address;
|
|
@@ -57,15 +64,15 @@ export type SailDeployment = {
|
|
|
57
64
|
* Dispatch model this kernel implements, as a static hint. Verified on-chain
|
|
58
65
|
* against each kernel's DISPATCH_TYPEHASH. The SDK still prefers live detection
|
|
59
66
|
* (detectKernelCapabilities) and uses this only as a fallback when the on-chain
|
|
60
|
-
* read is unavailable. All
|
|
61
|
-
*
|
|
67
|
+
* read is unavailable. All deployed chains run the "selective" model, verified
|
|
68
|
+
* on-chain against each kernel's DISPATCH_TYPEHASH.
|
|
62
69
|
*/
|
|
63
70
|
dispatchModel?: DispatchModel;
|
|
64
71
|
/** Pre-audited shared mandate templates available on this chain. */
|
|
65
72
|
knownTemplates?: KnownTemplate[];
|
|
66
73
|
/**
|
|
67
74
|
* Standalone (EIP-1167 clone) permission template LOGIC addresses, keyed by a
|
|
68
|
-
* short name. These are the `impl` argument to
|
|
75
|
+
* short name. These are the `impl` argument to MandateFactory.deployAndAttach.
|
|
69
76
|
*/
|
|
70
77
|
standaloneTemplates?: Record<string, Address>;
|
|
71
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../src/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpE,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oEAAoE;IACpE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACtC,CAAC;AAoBF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,CAwI/D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAMjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CA4BlF"}
|