@dev.sail.money/sailor 0.0.2-28 → 0.0.2-29

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 (116) hide show
  1. package/AGENTS.md +31 -2
  2. package/README.md +77 -12
  3. package/package.json +9 -3
  4. package/packages/cli/dist/index.cjs +285 -127
  5. package/packages/cli/dist/server.cjs +586 -1401
  6. package/packages/sdk/dist/chains.d.ts +12 -0
  7. package/packages/sdk/dist/chains.d.ts.map +1 -0
  8. package/packages/sdk/dist/chains.js +94 -0
  9. package/packages/sdk/dist/chains.js.map +1 -0
  10. package/packages/sdk/dist/index.d.ts +1 -0
  11. package/packages/sdk/dist/index.d.ts.map +1 -1
  12. package/packages/sdk/dist/index.js +1 -0
  13. package/packages/sdk/dist/index.js.map +1 -1
  14. package/packages/sdk/dist/intelligence.d.ts +1 -1
  15. package/packages/sdk/dist/intelligence.js +1 -1
  16. package/packages/sdk/dist/types.d.ts +2 -0
  17. package/packages/sdk/dist/types.d.ts.map +1 -1
  18. package/packages/sdk/package.json +27 -0
  19. package/packages/ui/dist/assets/{add-Cj0EIUcG.js → add-BtPPKW_S.js} +1 -1
  20. package/packages/ui/dist/assets/{all-wallets-DlyRsWoN.js → all-wallets-CliTUt-P.js} +1 -1
  21. package/packages/ui/dist/assets/{app-store-CXP08sks.js → app-store-Dn-qzfPP.js} +1 -1
  22. package/packages/ui/dist/assets/{apple-B62K6dJr.js → apple-CCxYFT90.js} +1 -1
  23. package/packages/ui/dist/assets/{arrow-bottom-BTuC5-tQ.js → arrow-bottom-Bo24o32F.js} +1 -1
  24. package/packages/ui/dist/assets/{arrow-bottom-circle-dlgFXE0q.js → arrow-bottom-circle-DEnDTNB2.js} +1 -1
  25. package/packages/ui/dist/assets/{arrow-left-Uohbz9c6.js → arrow-left-ufrfqGG4.js} +1 -1
  26. package/packages/ui/dist/assets/{arrow-right-CH0vSHgl.js → arrow-right-BkX5DoAK.js} +1 -1
  27. package/packages/ui/dist/assets/{arrow-top-CxY6BKDT.js → arrow-top-CtvgpoOn.js} +1 -1
  28. package/packages/ui/dist/assets/{bank-Dz6PlF79.js → bank-CfyC7KhE.js} +1 -1
  29. package/packages/ui/dist/assets/{basic-CTV3Ph_S.js → basic-GLsmxA9Q.js} +1 -1
  30. package/packages/ui/dist/assets/{browser-DBRTpG2H.js → browser-BXl5SSvD.js} +1 -1
  31. package/packages/ui/dist/assets/{card-DWA4Ne8q.js → card-BwTrNMXe.js} +1 -1
  32. package/packages/ui/dist/assets/{ccip-CJCerfkJ.js → ccip-BMqD_Aug.js} +1 -1
  33. package/packages/ui/dist/assets/{checkmark-Cx-ePFrg.js → checkmark-Dv3bs_r-.js} +1 -1
  34. package/packages/ui/dist/assets/{checkmark-bold-BhDIlGHD.js → checkmark-bold-v3XYVY9B.js} +1 -1
  35. package/packages/ui/dist/assets/{chevron-bottom-2uFzesS3.js → chevron-bottom-BtuSFYmE.js} +1 -1
  36. package/packages/ui/dist/assets/{chevron-left-BoKXXZ4E.js → chevron-left-Bj0j6Cyx.js} +1 -1
  37. package/packages/ui/dist/assets/{chevron-right-EUp-RhYw.js → chevron-right-QsZgfMHX.js} +1 -1
  38. package/packages/ui/dist/assets/{chevron-top-D51M78MN.js → chevron-top-B2LmuCUs.js} +1 -1
  39. package/packages/ui/dist/assets/{chrome-store-DrRbU0Rc.js → chrome-store-Be1HnDGs.js} +1 -1
  40. package/packages/ui/dist/assets/{clock-9mIuX-1G.js → clock-CCcblz1f.js} +1 -1
  41. package/packages/ui/dist/assets/{close-BvuXlx8s.js → close-rdnFQxXT.js} +1 -1
  42. package/packages/ui/dist/assets/{coinPlaceholder-Bi7hJj5a.js → coinPlaceholder-fRMoMI0y.js} +1 -1
  43. package/packages/ui/dist/assets/{compass-C623d6DE.js → compass-CSPR58D9.js} +1 -1
  44. package/packages/ui/dist/assets/{copy-CFhZQkfE.js → copy-C5WgEU7N.js} +1 -1
  45. package/packages/ui/dist/assets/{core-BGl4d2YS.js → core-CVXQL7tu.js} +3 -3
  46. package/packages/ui/dist/assets/cursor-C04TRGDh.js +3 -0
  47. package/packages/ui/dist/assets/{cursor-transparent-FBFMyBY2.js → cursor-transparent-zEBpsOE4.js} +1 -1
  48. package/packages/ui/dist/assets/{desktop-Cco6Py8z.js → desktop-CdkiOqLx.js} +1 -1
  49. package/packages/ui/dist/assets/{disconnect-GkX8GhOW.js → disconnect-B8I112zP.js} +1 -1
  50. package/packages/ui/dist/assets/{discord-BNJe-HNX.js → discord-x2BbO6cW.js} +1 -1
  51. package/packages/ui/dist/assets/{etherscan-CoY2RMWw.js → etherscan-C2OxN9Au.js} +1 -1
  52. package/packages/ui/dist/assets/{events-DlxPGhin.js → events-DwmWfwqa.js} +1 -1
  53. package/packages/ui/dist/assets/{exclamation-triangle-9thkvaBf.js → exclamation-triangle-IY-Iojhj.js} +1 -1
  54. package/packages/ui/dist/assets/{extension-BshOJ_bn.js → extension-Clnc3k0E.js} +1 -1
  55. package/packages/ui/dist/assets/{external-link-97rok_V_.js → external-link-DKjw-POo.js} +1 -1
  56. package/packages/ui/dist/assets/{facebook-BsiLEVlU.js → facebook-DA_F9Z5R.js} +1 -1
  57. package/packages/ui/dist/assets/{fallback-DlWsoHyh.js → fallback-CWZLJXZ9.js} +1 -1
  58. package/packages/ui/dist/assets/{farcaster-CmRL47La.js → farcaster-CulNjKFL.js} +1 -1
  59. package/packages/ui/dist/assets/{filters-DXAWgNLO.js → filters-BpETqr4_.js} +1 -1
  60. package/packages/ui/dist/assets/{github-bCBJUbbe.js → github-DywjW1rE.js} +1 -1
  61. package/packages/ui/dist/assets/{google-CYTI0KrI.js → google-DH_kH7BK.js} +1 -1
  62. package/packages/ui/dist/assets/{help-circle-LNgEbcGY.js → help-circle-DsMbG4i7.js} +1 -1
  63. package/packages/ui/dist/assets/{id-ChJn0Ugg.js → id-O5zOjYCk.js} +1 -1
  64. package/packages/ui/dist/assets/{image--Y7maC5b.js → image-BBJ-S1oj.js} +1 -1
  65. package/packages/ui/dist/assets/{index-BONuaN6W.js → index-9Als8Pk1.js} +1 -1
  66. package/packages/ui/dist/assets/{index-5MkegeeB.js → index-BP0G8SWV.js} +3 -3
  67. package/packages/ui/dist/assets/{index-BlU0aZ21.js → index-C9Q98LC_.js} +1 -1
  68. package/packages/ui/dist/assets/{index-CZMzzRJU.js → index-CMLePJSP.js} +1 -1
  69. package/packages/ui/dist/assets/{index-O4l6CrZ0.js → index-CkNlzfQa.js} +1 -1
  70. package/packages/ui/dist/assets/{index-BN0O-ZFZ.js → index-EVUMkF7X.js} +4 -4
  71. package/packages/ui/dist/assets/{index.es-CXlLR_xG.js → index.es-BS-p_sCc.js} +4 -4
  72. package/packages/ui/dist/assets/{info-DUq1c6sJ.js → info-CD3CYp-i.js} +1 -1
  73. package/packages/ui/dist/assets/{info-circle-UobJ0GGG.js → info-circle-CXbPnDro.js} +1 -1
  74. package/packages/ui/dist/assets/{lightbulb-BI4WR-IB.js → lightbulb-Bz1DT8Ju.js} +1 -1
  75. package/packages/ui/dist/assets/{mail-BSN2fVMe.js → mail-Lj8n2gbA.js} +1 -1
  76. package/packages/ui/dist/assets/{metamask-sdk-B7CK8pn-.js → metamask-sdk-DwS0o7ov.js} +1 -1
  77. package/packages/ui/dist/assets/{mobile-BfuUs9p7.js → mobile-O_sAbq2l.js} +1 -1
  78. package/packages/ui/dist/assets/{more-C1zkGuE3.js → more-DdiT_mbp.js} +1 -1
  79. package/packages/ui/dist/assets/{network-placeholder-CtiEl1UM.js → network-placeholder-Dx9MDHLN.js} +1 -1
  80. package/packages/ui/dist/assets/{nftPlaceholder-C_B9PGkr.js → nftPlaceholder-K9kW2r88.js} +1 -1
  81. package/packages/ui/dist/assets/{off-B93fIkKw.js → off-BOYfR8XB.js} +1 -1
  82. package/packages/ui/dist/assets/{parseSignature-BKzLunwo.js → parseSignature-NiLF290o.js} +1 -1
  83. package/packages/ui/dist/assets/{play-store-DfDTySLA.js → play-store-DRuPz3YP.js} +1 -1
  84. package/packages/ui/dist/assets/{plus-_EYE7Soi.js → plus-BhHn5k_7.js} +1 -1
  85. package/packages/ui/dist/assets/{qr-code-CSklhafe.js → qr-code-XQgVWw1M.js} +1 -1
  86. package/packages/ui/dist/assets/{recycle-horizontal-CoH2EBIZ.js → recycle-horizontal-B3DKBHl3.js} +1 -1
  87. package/packages/ui/dist/assets/{refresh-COGV5RR9.js → refresh-Bdt5zEiy.js} +1 -1
  88. package/packages/ui/dist/assets/{reown-logo-YYxIj6hm.js → reown-logo-B3-LoRif.js} +1 -1
  89. package/packages/ui/dist/assets/{search-CpoWhaNF.js → search-CT85WnLr.js} +1 -1
  90. package/packages/ui/dist/assets/{secp256k1-ZWo-L7nJ.js → secp256k1-CSD4IkAn.js} +1 -1
  91. package/packages/ui/dist/assets/{send-CjEG2p8N.js → send-DFlOyILV.js} +1 -1
  92. package/packages/ui/dist/assets/{swapHorizontal-3V6lypqD.js → swapHorizontal-BnJarCPM.js} +1 -1
  93. package/packages/ui/dist/assets/{swapHorizontalBold-7swnGG5R.js → swapHorizontalBold-BdXwQcVw.js} +1 -1
  94. package/packages/ui/dist/assets/{swapHorizontalMedium-zPdpOjAy.js → swapHorizontalMedium-DruY4Nll.js} +1 -1
  95. package/packages/ui/dist/assets/{swapHorizontalRoundedBold-2Mxr5XPm.js → swapHorizontalRoundedBold-BmU0rX2_.js} +1 -1
  96. package/packages/ui/dist/assets/{swapVertical-D9KAlnz7.js → swapVertical-BDYBLaB-.js} +1 -1
  97. package/packages/ui/dist/assets/{telegram-DztV38YW.js → telegram-Dj0PC8gI.js} +1 -1
  98. package/packages/ui/dist/assets/{three-dots-DWOvYMr0.js → three-dots-DCjLXmgH.js} +1 -1
  99. package/packages/ui/dist/assets/{twitch-B3UH6j0S.js → twitch-DtF7PahJ.js} +1 -1
  100. package/packages/ui/dist/assets/{twitterIcon-C2lA-xQv.js → twitterIcon-D5fHAEXR.js} +1 -1
  101. package/packages/ui/dist/assets/{verify-BP_uBvwh.js → verify-CvDrZusr.js} +1 -1
  102. package/packages/ui/dist/assets/{verify-filled-DLByZnlA.js → verify-filled-CPKWSwyP.js} +1 -1
  103. package/packages/ui/dist/assets/{w3m-modal-C2-cKwor.js → w3m-modal-DdzuRc6-.js} +1 -1
  104. package/packages/ui/dist/assets/{wallet-Bc7LMFHM.js → wallet-BDKdLwf0.js} +1 -1
  105. package/packages/ui/dist/assets/{wallet-placeholder-DsjujZQW.js → wallet-placeholder-DjYKf3de.js} +1 -1
  106. package/packages/ui/dist/assets/{walletconnect-i_fC7jz3.js → walletconnect-DtsEmRsg.js} +1 -1
  107. package/packages/ui/dist/assets/{warning-circle-DIxNhxFp.js → warning-circle-vXvip1Eh.js} +1 -1
  108. package/packages/ui/dist/assets/{x-BamJJInV.js → x-CIVAuGSw.js} +1 -1
  109. package/packages/ui/dist/index.html +1 -1
  110. package/templates/default/.env.example +15 -1
  111. package/templates/default/examples/dca/agent.ts +1 -1
  112. package/templates/default/examples/dca/mandate.ts +1 -1
  113. package/templates/default/src/agent.ts +1 -1
  114. package/templates/default/tsconfig.json +5 -2
  115. package/templates/lifi-permissions/README.md +1 -1
  116. package/packages/ui/dist/assets/cursor-CUSm3LCL.js +0 -3
package/AGENTS.md CHANGED
@@ -8,9 +8,8 @@ tooling to create SMAs, register permission contracts, and run strategy agents.
8
8
 
9
9
  | Package / path | Name | Role |
10
10
  |---|---|---|
11
- | `packages/sdk` | `@sail/sdk` | SailorClient, LocalKeyring, kernel ABIs, EIP-712 builders, deployment registry |
11
+ | `packages/sdk` | `@sail/sdk` | SailorClient, LocalKeyring, kernel ABIs, EIP-712 builders, deployment registry, per-chain address registry |
12
12
  | `packages/cli` | `sailor` | CLI: init, keys, account, mandate, onboard, station, ui, run, session, scan, status, owner, doctor, capabilities |
13
- | `packages/chains` | `@sail/chains` | Per-chain address registry (kernel, mandateFactory, governance) |
14
13
  | `packages/ui` | `sailor-ui` | Local dashboard + browser-driven onboarding wizard at localhost:3333 |
15
14
  | `templates/default` | — | Default agent starter: neutral blank scaffold + Foundry workspace + onboarding guide (AGENTS.md) |
16
15
  | `templates/custom-mandate` | — | Solidity reference: IPermission scaffold (not a project template) |
@@ -94,6 +93,36 @@ pnpm test:ui # playwright — requires pnpm build first
94
93
  Test fixtures live in `packages/ui/test/fixtures/` — isolated directories with pre-canned `.sail/`
95
94
  state; no real RPC needed.
96
95
 
96
+ ## RPC configuration
97
+
98
+ RPC URLs are resolved by `packages/cli/src/lib/chain.ts` `getRpcUrl(chainId)` in this order (first match wins):
99
+
100
+ 1. `.sail/.env.local` — chain-specific var (e.g. `BASE_RPC_URL`, `ARBITRUM_RPC_URL`)
101
+ 2. `.sail/.env.local` — generic `RPC_URL`
102
+ 3. Shell environment — chain-specific var
103
+ 4. Shell environment — generic `RPC_URL`
104
+
105
+ Two valid patterns for `.sail/.env.local`:
106
+
107
+ ```
108
+ # Option A — single active chain
109
+ RPC_URL=https://your-base-endpoint
110
+ CHAIN_ID=8453
111
+ ```
112
+
113
+ ```
114
+ # Option B — per-chain (multi-chain projects; omit RPC_URL if all chains have a specific var)
115
+ CHAIN_ID=8453
116
+ BASE_RPC_URL=https://your-base-endpoint
117
+ ARBITRUM_RPC_URL=https://your-arbitrum-endpoint
118
+ UNICHAIN_RPC_URL=https://your-unichain-endpoint
119
+ ETH_MAINNET_RPC_URL=https://your-mainnet-endpoint
120
+ BASE_SEPOLIA_RPC_URL=https://your-base-sepolia-endpoint
121
+ SEPOLIA_RPC_URL=https://your-sepolia-endpoint
122
+ ```
123
+
124
+ Per-chain vars always take precedence for their specific chain, so multi-chain projects resolve each endpoint correctly. `sailor chains --verify` uses this to check every chain that has a configured RPC.
125
+
97
126
  ## Conventions
98
127
 
99
128
  - `SAIL_DIR` — env var pointing to the project's `.sail/` directory (used by the UI server)
package/README.md CHANGED
@@ -10,9 +10,8 @@ Sailor is the operator layer for [Sail Protocol](../SailProtocol): the tooling a
10
10
 
11
11
  | Package | Name | Role |
12
12
  |---|---|---|
13
- | `packages/sdk` | `@sail/sdk` | TypeScript library wrapping SailKernel and MandateFactory |
14
- | `packages/cli` | `sailor` | CLI for account setup, mandate signing, and agent execution |
15
- | `packages/chains` | `@sail/chains` | Per-chain address registry (EVM-compatible) |
13
+ | `packages/sdk` | `@sail/sdk` (internal) | TypeScript library: SailorClient, EIP-712 helpers, ABIs, chain registry |
14
+ | `packages/cli` | `@sail.money/sailor` | CLI for account setup, mandate signing, and agent execution |
16
15
  | `packages/ui` | `sailor-ui` | Local dashboard running on localhost:3333 |
17
16
  | `templates/default` | — | Default agent starter (neutral; what `sailor init` scaffolds) |
18
17
  | `templates/custom-mandate` | — | Solidity reference: IPermission scaffold (not a project template) |
@@ -74,7 +73,7 @@ Prerequisites:
74
73
  - Node.js 18+
75
74
  - A wallet (MetaMask or Rabby)
76
75
  - An RPC URL (e.g. Alchemy free tier)
77
- - A supported chain: **Base, Base Sepolia, Arbitrum, or Unichain** — verified deployments are bundled in `@sail/sdk`, no `@sail/chains` entry needed. Other chains require addresses in `@sail/chains`.
76
+ - A supported chain: **Base, Base Sepolia, Arbitrum, or Unichain** — verified deployments are bundled in `@sail.money/sailor`.
78
77
 
79
78
  ### Recommended — assistant-driven
80
79
 
@@ -187,8 +186,7 @@ sailor ui stop
187
186
 
188
187
  ## Agent-driven onboarding & custom mandates
189
188
 
190
- For chains with a bundled Sail deployment (Base, Base Sepolia, Arbitrum, Unichain shipped
191
- in `@sail/sdk`, no `@sail/chains` entry required), an agent can drive the whole
189
+ For chains with a bundled Sail deployment (Base, Base Sepolia, Arbitrum, Unichain), an agent can drive the whole
192
190
  setup through a browser **signing station**. The station is a local HTTP +
193
191
  WebSocket daemon that bridges the CLI and the owner's wallet: the agent never
194
192
  holds the owner key — it pushes signing requests, the owner approves them in the
@@ -246,6 +244,75 @@ non-interactively. No private key ever appears in the workflow file or in secret
246
244
 
247
245
  ---
248
246
 
247
+ ## Packages
248
+
249
+ Sailor ships as a **single npm package** — the SDK is bundled inside it and exposed via a subpath export:
250
+
251
+ | Package | Contents |
252
+ |---|---|
253
+ | `@sail.money/sailor` | CLI binary, UI server, templates, examples, and SDK |
254
+
255
+ The SDK is available as a subpath export for use in agent code:
256
+
257
+ ```ts
258
+ import type { Agent, AgentContext, Dispatch } from '@sail.money/sailor/sdk'
259
+ ```
260
+
261
+ ### npm (`publish-npm.yml`)
262
+
263
+ Published to the public npm registry under the `@sail.money` scope.
264
+
265
+ | Trigger | Package | Version | dist-tag |
266
+ |---|---|---|---|
267
+ | Tag push (`v*`) | `@sail.money/sailor` | `1.0.0` | `latest` |
268
+ | Manual dispatch | `@dev.sail.money/sailor` | `1.0.0-42` | `dev` |
269
+
270
+ ```bash
271
+ npm install @sail.money/sailor # latest stable (tag push)
272
+ ```
273
+
274
+ For dev builds, the package name changes scope to `@dev.sail.money`. Use an alias so your import paths stay the same:
275
+
276
+ ```bash
277
+ npm install "@sail.money/sailor@npm:@dev.sail.money/sailor@dev"
278
+ ```
279
+
280
+ This installs the latest dev build and makes it available as `@sail.money/sailor` locally — `@sail.money/sailor/sdk` imports continue to work unchanged.
281
+
282
+ ### GitHub Packages (`publish.yml`)
283
+
284
+ Published to GitHub Packages under the `@sail-money` scope for internal testing — no public npm registry required.
285
+
286
+ | Trigger | Package | dist-tag |
287
+ |---|---|---|
288
+ | Merge to `main` | `@sail-money/sailor` | `latest` |
289
+ | Manual dispatch | `@sail-money/sailor-dev` | `dev` |
290
+
291
+ Both builds require an alias since the package scope differs from `@sail.money`:
292
+
293
+ ```bash
294
+ npm install "@sail.money/sailor@npm:@sail-money/sailor@latest" --registry https://npm.pkg.github.com
295
+ npm install "@sail.money/sailor@npm:@sail-money/sailor-dev@dev" --registry https://npm.pkg.github.com
296
+ ```
297
+
298
+ Or pin in `package.json`:
299
+
300
+ ```json
301
+ "dependencies": {
302
+ "@sail.money/sailor": "npm:@sail-money/sailor@latest"
303
+ }
304
+ ```
305
+
306
+ ```json
307
+ "dependencies": {
308
+ "@sail.money/sailor": "npm:@sail-money/sailor-dev@dev"
309
+ }
310
+ ```
311
+
312
+ Either way, `@sail.money/sailor/sdk` imports work unchanged.
313
+
314
+ ---
315
+
249
316
  ## Architecture
250
317
 
251
318
  ```
@@ -268,7 +335,7 @@ non-interactively. No private key ever appears in the workflow file or in secret
268
335
  │ (register perms) │ │ (custody) │ │ (named, per-call) │
269
336
  └────────────────────┘ └────────────────────┘ └────────────────────┘
270
337
 
271
- sailor CLI / @sail/sdk drive both signing paths above.
338
+ sailor CLI / @sail.money/sailor/sdk drive both signing paths above.
272
339
  .sail/ (account · mandate · activity) ──→ sailor-ui (localhost:3333)
273
340
  ```
274
341
 
@@ -290,13 +357,13 @@ The CLI and SDK sit between the operator and SailKernel: they build the EIP-712
290
357
 
291
358
  Sailor is functional and published as [`@sail.money/sailor`](https://www.npmjs.com/package/@sail.money/sailor) on npm (v0.0.1). The SDK, CLI, keystore, mandate flows, agent runner, and dashboard are implemented and have been exercised end to end against Base Sepolia.
292
359
 
293
- The Sail Protocol trusted core is deployed on Base, Base Sepolia, Arbitrum, and Unichain as staging deployments for testing ahead of a formal launch. All four run the selective dispatch model, with verified deployments bundled in `@sail/sdk`. These deployments are under an ongoing external audit by [Octane Security](https://octane.security) and are not final — do not use them with funds you are not prepared to lose. Permission templates are not yet deployed against the Base, Arbitrum, and Base Sepolia kernels; **Unichain** ships the full template suite (7 shared + 12 standalone, source-verified) and its template registries in `@sail/sdk` are populated. `@sail/chains` and the remaining template registries will be filled in as templates are deployed on the other chains and at mainnet launch.
360
+ The Sail Protocol trusted core is deployed on Base, Base Sepolia, Arbitrum, and Unichain as staging deployments for testing ahead of a formal launch. All four run the selective dispatch model, with verified deployments bundled in `@sail.money/sailor`. These deployments are under an ongoing external audit by [Octane Security](https://octane.security) and are not final — do not use them with funds you are not prepared to lose. Permission templates are not yet deployed against the Base, Arbitrum, and Base Sepolia kernels; **Unichain** ships the full template suite (7 shared + 12 standalone, source-verified) and its template registries are populated. The remaining template registries will be filled in as templates are deployed on the other chains and at mainnet launch.
294
361
 
295
362
  ---
296
363
 
297
364
  ## Deployments
298
365
 
299
- The Sail Protocol trusted core is live on the following chains as **staging deployments** ahead of a formal launch, bundled in `@sail/sdk`. All run the selective dispatch model with zero fees. Permission templates are not yet deployed against the Base, Arbitrum, and Base Sepolia kernels; **Unichain** ships the full template suite (7 shared + 12 standalone, source-verified on uniscan.xyz) and has its onboarding allowlists seeded at genesis.
366
+ The Sail Protocol trusted core is live on the following chains as **staging deployments** ahead of a formal launch. All addresses are bundled in `@sail.money/sailor` and run the selective dispatch model with zero fees. Permission templates are not yet deployed against the Base, Arbitrum, and Base Sepolia kernels; **Unichain** ships the full template suite (7 shared + 12 standalone, source-verified on uniscan.xyz) and has its onboarding allowlists seeded at genesis.
300
367
 
301
368
  ### Base (8453)
302
369
 
@@ -348,9 +415,7 @@ First chain to ship the full permission-template suite (7 shared + 12 standalone
348
415
  | SafeModuleEnabler | `0xFE9227A9F2baf704060c604466df354a5A137b9B` |
349
416
  | Treasury | `0xB01dCE443d052e44b7D13726c0EC9fFB7f5815B6` |
350
417
 
351
- The 19 template addresses are in `@sail/sdk` (`knownTemplates` + `standaloneTemplates` for chain 130).
352
-
353
- Addresses are sourced from `@sail/sdk` (`packages/sdk/src/deployments.ts`), the canonical registry.
418
+ The 19 template addresses are in `packages/sdk/src/deployments.ts` (`knownTemplates` + `standaloneTemplates` for chain 130).
354
419
 
355
420
  ---
356
421
 
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "name": "@dev.sail.money/sailor",
3
- "version": "0.0.2-28",
3
+ "version": "0.0.2-29",
4
4
  "description": "Operator toolkit for Sail Protocol",
5
5
  "bin": {
6
6
  "sailor": "packages/cli/dist/index.cjs"
7
7
  },
8
+ "exports": {
9
+ "./sdk": {
10
+ "import": "./packages/sdk/dist/index.js",
11
+ "types": "./packages/sdk/dist/index.d.ts"
12
+ }
13
+ },
8
14
  "files": [
9
15
  "packages/cli/dist",
10
16
  "packages/sdk/dist",
@@ -18,12 +24,12 @@
18
24
  "AGENTS.md"
19
25
  ],
20
26
  "scripts": {
21
- "build": "pnpm --filter @sail/sdk build && pnpm --filter @sail/chains build && pnpm --filter sailor build && pnpm --filter sailor-ui build",
27
+ "build": "pnpm --filter @sail/sdk build && pnpm --filter sailor build && pnpm --filter sailor-ui build",
22
28
  "test": "pnpm --filter sailor-ui test",
23
29
  "test:ui": "pnpm --filter sailor-ui test:ui",
24
30
  "link:cli": "pnpm link --global",
25
31
  "postinstall": "node scripts/postinstall.js",
26
- "typecheck": "pnpm --filter @sail/sdk build && pnpm --filter @sail/chains build && pnpm -r typecheck",
32
+ "typecheck": "pnpm --filter @sail/sdk build && pnpm -r typecheck",
27
33
  "docs:check": "node scripts/check-docs.mjs",
28
34
  "init:check": "node scripts/check-init.mjs",
29
35
  "eval": "node evals/run.mjs",