@dev.sail.money/sailor 1.2.1-93 → 1.3.0-206

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 (103) hide show
  1. package/README.md +63 -0
  2. package/package.json +2 -1
  3. package/packages/cli/dist/index.cjs +70 -2
  4. package/packages/sdk/dist/intelligence.d.ts +1 -1
  5. package/packages/sdk/dist/intelligence.js +1 -1
  6. package/packages/ui/dist/assets/{add-BER1P0s8.js → add-Dj4_n773.js} +1 -1
  7. package/packages/ui/dist/assets/{all-wallets-Dpvf_Fgb.js → all-wallets-BaFysN1G.js} +1 -1
  8. package/packages/ui/dist/assets/{app-store-CRRn8Odw.js → app-store-DOc31zzY.js} +1 -1
  9. package/packages/ui/dist/assets/{apple-Dt7cfB4T.js → apple-BvrvOkPH.js} +1 -1
  10. package/packages/ui/dist/assets/{arrow-bottom-nnnn08j6.js → arrow-bottom-E1AfjXOT.js} +1 -1
  11. package/packages/ui/dist/assets/{arrow-bottom-circle-CX3JbHmW.js → arrow-bottom-circle-sou7Vo1V.js} +1 -1
  12. package/packages/ui/dist/assets/{arrow-left-CA_ePKfw.js → arrow-left-wk3G9Ywf.js} +1 -1
  13. package/packages/ui/dist/assets/{arrow-right-PdNbPXya.js → arrow-right-_a703_Pw.js} +1 -1
  14. package/packages/ui/dist/assets/{arrow-top-Bi7Vtz7K.js → arrow-top-txyg3R3e.js} +1 -1
  15. package/packages/ui/dist/assets/{bank-pst7NvBz.js → bank-BB1kd0NJ.js} +1 -1
  16. package/packages/ui/dist/assets/{basic-CoHdyAX2.js → basic-D0dy7nIZ.js} +1 -1
  17. package/packages/ui/dist/assets/{browser-FFX3Izi4.js → browser-BwHLhsTn.js} +1 -1
  18. package/packages/ui/dist/assets/{card-DnCzRGnr.js → card-DRC6HmPF.js} +1 -1
  19. package/packages/ui/dist/assets/{ccip-DSxi6VpP.js → ccip-Dq6KeJQl.js} +1 -1
  20. package/packages/ui/dist/assets/{checkmark-DYPnyuve.js → checkmark-TbAAQGjd.js} +1 -1
  21. package/packages/ui/dist/assets/{checkmark-bold-Cw0Vp6CM.js → checkmark-bold-4723vJ0-.js} +1 -1
  22. package/packages/ui/dist/assets/{chevron-bottom-EVHy9xJn.js → chevron-bottom-DtLoBRe9.js} +1 -1
  23. package/packages/ui/dist/assets/{chevron-left-CxY9fiDc.js → chevron-left-BtydsF9j.js} +1 -1
  24. package/packages/ui/dist/assets/{chevron-right-Br_OBI9u.js → chevron-right-BbkU_Kf8.js} +1 -1
  25. package/packages/ui/dist/assets/{chevron-top-BpU3ntbA.js → chevron-top-BWf-sN-F.js} +1 -1
  26. package/packages/ui/dist/assets/{chrome-store-Dpgj_H8i.js → chrome-store-CVFxc5H2.js} +1 -1
  27. package/packages/ui/dist/assets/{clock-BXeQYwif.js → clock-B4hJww1X.js} +1 -1
  28. package/packages/ui/dist/assets/{close-DL5E5Xp_.js → close-Ci93jqGe.js} +1 -1
  29. package/packages/ui/dist/assets/{coinPlaceholder-DrwJ2B_l.js → coinPlaceholder-cRv_xDgC.js} +1 -1
  30. package/packages/ui/dist/assets/{compass-E5e-CeJQ.js → compass-_sZZPtm6.js} +1 -1
  31. package/packages/ui/dist/assets/{copy-BeNB4dl_.js → copy-DLaiLK0n.js} +1 -1
  32. package/packages/ui/dist/assets/{core-tNZO_nnA.js → core-YssZmpJa.js} +3 -3
  33. package/packages/ui/dist/assets/cursor-B_xyJnjj.js +3 -0
  34. package/packages/ui/dist/assets/{cursor-transparent-DZDjASnn.js → cursor-transparent-CzXQbB2p.js} +1 -1
  35. package/packages/ui/dist/assets/{desktop-Cius6BUw.js → desktop-BiqQI1Ss.js} +1 -1
  36. package/packages/ui/dist/assets/{disconnect-Bj35sHVy.js → disconnect-DYu7YCzu.js} +1 -1
  37. package/packages/ui/dist/assets/{discord-DfrcpsIk.js → discord-C-ife-UZ.js} +1 -1
  38. package/packages/ui/dist/assets/{etherscan-CBbH0szp.js → etherscan-Dq7ac-p9.js} +1 -1
  39. package/packages/ui/dist/assets/{events-C79WI7iD.js → events-BhTGLk8n.js} +1 -1
  40. package/packages/ui/dist/assets/{exclamation-triangle-BNJwMq9S.js → exclamation-triangle-BcOdRdbp.js} +1 -1
  41. package/packages/ui/dist/assets/{extension-CvYgSO7v.js → extension-DmJLIidM.js} +1 -1
  42. package/packages/ui/dist/assets/{external-link-CERn9oXB.js → external-link-HNjp7-Po.js} +1 -1
  43. package/packages/ui/dist/assets/{facebook-B7m7SaqX.js → facebook-BrSvHNyw.js} +1 -1
  44. package/packages/ui/dist/assets/{fallback-BQkB1W8W.js → fallback-Ubz80uXP.js} +1 -1
  45. package/packages/ui/dist/assets/{farcaster-Bwlsctme.js → farcaster-BsjltM6k.js} +1 -1
  46. package/packages/ui/dist/assets/{filters-C8rBtKff.js → filters-B4yQbYZP.js} +1 -1
  47. package/packages/ui/dist/assets/{github-PsXcSjMp.js → github-CFq82Dds.js} +1 -1
  48. package/packages/ui/dist/assets/{google-C_z3OmPf.js → google-DwZutf4a.js} +1 -1
  49. package/packages/ui/dist/assets/{help-circle-DwWgeVHE.js → help-circle-CyA_8KQg.js} +1 -1
  50. package/packages/ui/dist/assets/{id-CLuydosc.js → id-jyZYn4LJ.js} +1 -1
  51. package/packages/ui/dist/assets/{image-BsLEVlQ9.js → image-Zv0yoBcH.js} +1 -1
  52. package/packages/ui/dist/assets/{index-CQ2Kvj0a.js → index-67NncC_u.js} +3 -3
  53. package/packages/ui/dist/assets/{index-B_Jv-Jat.js → index-BY8A6EK8.js} +1 -1
  54. package/packages/ui/dist/assets/{index-B075MYIF.js → index-BdG43zCl.js} +1 -1
  55. package/packages/ui/dist/assets/{index-B9uA_-pd.js → index-BxRaYDiX.js} +1 -1
  56. package/packages/ui/dist/assets/{index-_AI1Rhpq.js → index-CeGppB9s.js} +1 -1
  57. package/packages/ui/dist/assets/index-DZ2C2rHq.css +1 -0
  58. package/packages/ui/dist/assets/{index-BrDR678h.js → index-_DkPx8RN.js} +45 -45
  59. package/packages/ui/dist/assets/{index.es-C70kk3Fw.js → index.es-C8EklrJY.js} +4 -4
  60. package/packages/ui/dist/assets/{info-BjPgE-Fn.js → info-BwGEOdmB.js} +1 -1
  61. package/packages/ui/dist/assets/{info-circle-CjkQM-HJ.js → info-circle-BPCcX-Iq.js} +1 -1
  62. package/packages/ui/dist/assets/{lightbulb-FhGsti_A.js → lightbulb-BRwr4IaC.js} +1 -1
  63. package/packages/ui/dist/assets/{mail-Bg5yFmja.js → mail-D-k_Vhe4.js} +1 -1
  64. package/packages/ui/dist/assets/{metamask-sdk-DtKlSkak.js → metamask-sdk-AcOgwGrj.js} +1 -1
  65. package/packages/ui/dist/assets/{mobile-BzAf0T-M.js → mobile-B1ok9PfY.js} +1 -1
  66. package/packages/ui/dist/assets/{more-Ccm3EzWe.js → more-DeMTMLWs.js} +1 -1
  67. package/packages/ui/dist/assets/{network-placeholder-DJBjBRGX.js → network-placeholder-J0Rc1I89.js} +1 -1
  68. package/packages/ui/dist/assets/{nftPlaceholder-DDTtQFge.js → nftPlaceholder-dXGrzzoa.js} +1 -1
  69. package/packages/ui/dist/assets/{off-UsG8XtRe.js → off-CS0f77lw.js} +1 -1
  70. package/packages/ui/dist/assets/{parseSignature-CfnKWXKa.js → parseSignature-DJ16fHC4.js} +1 -1
  71. package/packages/ui/dist/assets/{play-store-DCX3LKbh.js → play-store-DmK8UaNC.js} +1 -1
  72. package/packages/ui/dist/assets/{plus-JIY8UK-q.js → plus-CSGSnoCh.js} +1 -1
  73. package/packages/ui/dist/assets/{qr-code-D7zoAbI2.js → qr-code-BJMH0xmM.js} +1 -1
  74. package/packages/ui/dist/assets/{recycle-horizontal-D-TJ0tMe.js → recycle-horizontal-D5XP5VgJ.js} +1 -1
  75. package/packages/ui/dist/assets/{refresh-BLW9ZCWM.js → refresh-MLX3Rdp6.js} +1 -1
  76. package/packages/ui/dist/assets/{reown-logo-a6-yZeCb.js → reown-logo-CVoDFQbM.js} +1 -1
  77. package/packages/ui/dist/assets/{search-DL22Jf3a.js → search-BDJDyvjC.js} +1 -1
  78. package/packages/ui/dist/assets/{secp256k1-CcCxXqQL.js → secp256k1-BWh3B02k.js} +1 -1
  79. package/packages/ui/dist/assets/{send-CEqsNJ4v.js → send-BOq2svx_.js} +1 -1
  80. package/packages/ui/dist/assets/{swapHorizontal-qHIvFSq_.js → swapHorizontal-ByjLi_-_.js} +1 -1
  81. package/packages/ui/dist/assets/{swapHorizontalBold-BPLu_S-H.js → swapHorizontalBold-fmCp_4AE.js} +1 -1
  82. package/packages/ui/dist/assets/{swapHorizontalMedium-BtzOrTEk.js → swapHorizontalMedium-D6dFseYw.js} +1 -1
  83. package/packages/ui/dist/assets/{swapHorizontalRoundedBold-CxFUoyan.js → swapHorizontalRoundedBold-B2V3m4ha.js} +1 -1
  84. package/packages/ui/dist/assets/{swapVertical-CKwy7QFB.js → swapVertical-DVmCsmeT.js} +1 -1
  85. package/packages/ui/dist/assets/{telegram-NqtkQg8v.js → telegram-Bv8JRbMM.js} +1 -1
  86. package/packages/ui/dist/assets/{three-dots-CVGMz7ju.js → three-dots-YYDJ18z6.js} +1 -1
  87. package/packages/ui/dist/assets/{twitch-DLWcevwY.js → twitch-B2_Jy-Ft.js} +1 -1
  88. package/packages/ui/dist/assets/{twitterIcon-BWNZUbJU.js → twitterIcon-pKQzPQRt.js} +1 -1
  89. package/packages/ui/dist/assets/{verify-rPul4L0m.js → verify-Bty2jIav.js} +1 -1
  90. package/packages/ui/dist/assets/{verify-filled-nLelz9C-.js → verify-filled-CKz2fuKl.js} +1 -1
  91. package/packages/ui/dist/assets/{w3m-modal-jmFSiKg3.js → w3m-modal-Wg1mtmVM.js} +1 -1
  92. package/packages/ui/dist/assets/{wallet-CbYcUDfO.js → wallet-DslzC8rD.js} +1 -1
  93. package/packages/ui/dist/assets/{wallet-placeholder-6xP3kuxz.js → wallet-placeholder-Dyw8jJ56.js} +1 -1
  94. package/packages/ui/dist/assets/{walletconnect-Bj3tR3Jr.js → walletconnect-DZBfbgp4.js} +1 -1
  95. package/packages/ui/dist/assets/{warning-circle-vtLDBHkc.js → warning-circle-D7NPDx4k.js} +1 -1
  96. package/packages/ui/dist/assets/{x-C5WNnyzd.js → x-DRR_9FNs.js} +1 -1
  97. package/packages/ui/dist/index.html +2 -2
  98. package/scripts/clean.mjs +17 -0
  99. package/templates/default/.agents/skills/sail-onboarding/SKILL.md +36 -0
  100. package/templates/default/.agents/skills/sail-servers/SKILL.md +26 -0
  101. package/templates/default/AGENTS.md +1 -1
  102. package/packages/ui/dist/assets/cursor-DV0oS1UQ.js +0 -3
  103. package/packages/ui/dist/assets/index-CxWif5qB.css +0 -1
package/README.md CHANGED
@@ -102,6 +102,18 @@ npm install -g @sail.money/sailor
102
102
  sailor init my-agent
103
103
  ```
104
104
 
105
+ ### Docker (no Node.js required)
106
+
107
+ Run sailor from a pre-built image — useful when you don't want to install Node.js or want an isolated environment:
108
+
109
+ ```bash
110
+ mkdir my-agent && cd my-agent
111
+ docker run -d --name agent -P -v "${PWD}:/workspace" sailmoney/sailor
112
+ docker exec agent sailor init
113
+ ```
114
+
115
+ Then open the folder in your AI coding assistant and say **"start"**. See the [Docker Hub](#docker-hub-publish-dockeryml) section below for full usage details.
116
+
105
117
  ---
106
118
 
107
119
  ## Quickstart
@@ -382,6 +394,57 @@ Or pin in `package.json`:
382
394
 
383
395
  Either way, `@sail.money/sailor/sdk` imports work unchanged.
384
396
 
397
+ ### Docker Hub (`publish-docker.yml`)
398
+
399
+ A pre-built image is published to Docker Hub so you can run the CLI without installing Node.js locally. The image uses Alpine Linux and includes `tsx` (required to compile TypeScript agent code at runtime).
400
+
401
+ | Trigger | Tag |
402
+ |---|---|
403
+ | Merge to `main` or manual dispatch | `sailmoney/sailor:dev` |
404
+ | Tag push (`v*`) | `sailmoney/sailor:<version>` + `sailmoney/sailor:latest` |
405
+
406
+ #### Starting the container
407
+
408
+ Run this from your project root. `-P` publishes all exposed ports to random available host ports; use a fixed `-p <host>:3334` if you want a stable UI port.
409
+
410
+ ```bash
411
+ docker run -d --name agent -P -v "${PWD}:/workspace" sailmoney/sailor
412
+ ```
413
+
414
+ - `-d` — detached, runs in the background
415
+ - `--name agent` — container name used in all `docker exec` calls
416
+ - `-P` — maps container ports (UI: 3334, station: 3141) to random host ports
417
+ - `-v "${PWD}:/workspace"` — mounts the current project into the container
418
+
419
+ #### Running sailor commands
420
+
421
+ All sailor commands run via `docker exec`:
422
+
423
+ ```bash
424
+ docker exec agent sailor --version
425
+ docker exec agent sailor init
426
+ docker exec agent sailor ui start
427
+ docker exec agent sailor run --once
428
+ ```
429
+
430
+ Project files are on your **local filesystem** — read and write them directly from local paths. Only `sailor` commands need the `docker exec` prefix; the volume mount makes files accessible to both sides.
431
+
432
+ #### Opening the dashboard
433
+
434
+ The UI always binds to port **3334 inside the container**, but the host-side port depends on how `-P` mapped it. Resolve it before opening the browser:
435
+
436
+ ```bash
437
+ docker port agent 3334
438
+ # → 0.0.0.0:49201 (open http://localhost:49201 in the browser)
439
+ ```
440
+
441
+ #### Stopping
442
+
443
+ ```bash
444
+ docker stop agent # stop the container
445
+ docker start agent # restart it later (project files and state are on the host)
446
+ ```
447
+
385
448
  ---
386
449
 
387
450
  ## Security model
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev.sail.money/sailor",
3
- "version": "1.2.1-93",
3
+ "version": "1.3.0-206",
4
4
  "description": "Operator toolkit for Sail Protocol",
5
5
  "bin": {
6
6
  "sailor": "packages/cli/dist/index.cjs"
@@ -24,6 +24,7 @@
24
24
  "AGENTS.md"
25
25
  ],
26
26
  "scripts": {
27
+ "clean": "node scripts/clean.mjs",
27
28
  "build": "pnpm --filter @sail/sdk build && pnpm --filter sailor build && pnpm --filter sailor-ui build",
28
29
  "test": "pnpm --filter sailor-ui test",
29
30
  "test:ui": "pnpm --filter sailor-ui test:ui",
@@ -38519,7 +38519,8 @@ var import_websocket2 = __toESM(require_websocket2(), 1);
38519
38519
  var import_websocket_server2 = __toESM(require_websocket_server2(), 1);
38520
38520
 
38521
38521
  // src/signing/server.ts
38522
- var DEFAULT_SIGNING_PORT = 3141;
38522
+ var _signingPort = parseInt(process.env.SAILOR_STATION_PORT ?? "", 10);
38523
+ var DEFAULT_SIGNING_PORT = Number.isFinite(_signingPort) && _signingPort >= 1 && _signingPort <= 65535 ? _signingPort : 3141;
38523
38524
  var RUNTIME_SUBDIR = (0, import_node_path4.join)(".sail", "runtime");
38524
38525
  var SERVER_STATE_FILE = "server.json";
38525
38526
  var REQUEST_SECRET_HEADER = "x-sailor-secret";
@@ -40693,6 +40694,9 @@ function scaffoldProjectWorkspace(dest, name, options) {
40693
40694
  import_node_fs9.default.mkdirSync(import_node_path8.default.join(sailDir2, "keys"), { recursive: true });
40694
40695
  import_node_fs9.default.mkdirSync(import_node_path8.default.join(sailDir2, "runtime"), { recursive: true });
40695
40696
  import_node_fs9.default.mkdirSync(import_node_path8.default.join(sailDir2, "state"), { recursive: true });
40697
+ const installMode = process.env.SAILOR_INSTALL_MODE === "docker" ? "docker" : "local";
40698
+ const _rawContainerName = process.env.SAILOR_CONTAINER_NAME ?? "agent";
40699
+ const containerName = /^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(_rawContainerName) ? _rawContainerName : "agent";
40696
40700
  import_node_fs9.default.writeFileSync(
40697
40701
  import_node_path8.default.join(sailDir2, "config.json"),
40698
40702
  `${JSON.stringify(
@@ -40703,6 +40707,8 @@ function scaffoldProjectWorkspace(dest, name, options) {
40703
40707
  // null = chain not yet chosen; Stage 1 will set this
40704
40708
  stateDir: ".sail/state",
40705
40709
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
40710
+ installMode,
40711
+ ...installMode === "docker" ? { containerName } : {},
40706
40712
  contracts: {
40707
40713
  kernel: "",
40708
40714
  mandateFactory: ""
@@ -40794,6 +40800,14 @@ Pass --force to scaffold into it anyway (existing files with the same name are o
40794
40800
  "This project is already initialized.\nRun `sailor update` to re-sync template files, or `sailor init --force` to re-initialize (overwrites scaffold files; your .sail/keys/ and .sail/state/ are left in place)."
40795
40801
  );
40796
40802
  }
40803
+ const existingConfigPath = import_node_path8.default.join(dest, ".sail", "config.json");
40804
+ const previousConfig = import_node_fs9.default.existsSync(existingConfigPath) ? (() => {
40805
+ try {
40806
+ return JSON.parse(import_node_fs9.default.readFileSync(existingConfigPath, "utf-8"));
40807
+ } catch {
40808
+ return null;
40809
+ }
40810
+ })() : null;
40797
40811
  copyDirSync(templateSrc, dest);
40798
40812
  const pkgRoot = packageRoot();
40799
40813
  const examplesPermSrc = import_node_path8.default.join(pkgRoot, "examples", "permissions");
@@ -40833,6 +40847,18 @@ Pass --force to scaffold into it anyway (existing files with the same name are o
40833
40847
  }
40834
40848
  scaffoldProjectWorkspace(dest, name, options);
40835
40849
  scaffoldFoundryWorkspace(dest);
40850
+ const newMode = process.env.SAILOR_INSTALL_MODE === "docker" ? "docker" : "local";
40851
+ if (previousConfig?.installMode === "docker" && newMode === "local") {
40852
+ const prev = previousConfig.containerName ?? "agent";
40853
+ console.log(`
40854
+ Switched to local install. If the Docker container is still running:`);
40855
+ console.log(` docker stop ${prev}`);
40856
+ console.log(`You can restart it anytime with the standard docker run command.`);
40857
+ } else if (previousConfig?.installMode === "local" && newMode === "docker") {
40858
+ const containerName = process.env.SAILOR_CONTAINER_NAME ?? "agent";
40859
+ console.log(`
40860
+ Switched to Docker install (container: ${containerName}).`);
40861
+ }
40836
40862
  printWelcome(
40837
40863
  dest,
40838
40864
  name,
@@ -40943,6 +40969,12 @@ Created ${name}/`);
40943
40969
  "\u2551 If you skip this step, setup WILL break and you will have to \u2551",
40944
40970
  "\u2551 restart. There are no shortcuts. \u2551",
40945
40971
  "\u2551 \u2551",
40972
+ "\u2551 IF SAILOR IS RUNNING IN DOCKER: \u2551",
40973
+ "\u2551 \u2022 Read project files from your local filesystem \u2014 they are \u2551",
40974
+ "\u2551 shared via volume mount, do NOT use docker exec to read them. \u2551",
40975
+ "\u2551 \u2022 Prefix every sailor command with: \u2551",
40976
+ "\u2551 docker exec <containerName> sailor <command> \u2551",
40977
+ "\u2551 \u2551",
40946
40978
  "\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D",
40947
40979
  ""
40948
40980
  ].join("\n"));
@@ -40996,6 +41028,41 @@ async function updateCommand() {
40996
41028
  }
40997
41029
  const added = [];
40998
41030
  copyDirSyncIfMissing(templateSrc, dest, added);
41031
+ const configPath = import_node_path9.default.join(dest, ".sail", "config.json");
41032
+ try {
41033
+ const config = JSON.parse(import_node_fs10.default.readFileSync(configPath, "utf-8"));
41034
+ const newMode = process.env.SAILOR_INSTALL_MODE === "docker" ? "docker" : "local";
41035
+ const _rawContainerName = process.env.SAILOR_CONTAINER_NAME ?? "agent";
41036
+ const containerName = /^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(_rawContainerName) ? _rawContainerName : "agent";
41037
+ if (config.installMode !== newMode) {
41038
+ const previousMode = config.installMode;
41039
+ const previousContainer = config.containerName;
41040
+ config.installMode = newMode;
41041
+ if (newMode === "docker") {
41042
+ config.containerName = containerName;
41043
+ } else {
41044
+ delete config.containerName;
41045
+ }
41046
+ import_node_fs10.default.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}
41047
+ `, "utf-8");
41048
+ if (previousMode === "docker" && newMode === "local") {
41049
+ const prev = previousContainer ?? "agent";
41050
+ console.log(`
41051
+ Switched to local install. If the Docker container is still running:`);
41052
+ console.log(` docker stop ${prev}`);
41053
+ console.log(`You can restart it anytime with the standard docker run command.`);
41054
+ } else if (newMode === "docker") {
41055
+ console.log(`
41056
+ Switched to Docker install (container: ${containerName}).`);
41057
+ }
41058
+ } else if (newMode === "docker" && config.containerName !== containerName) {
41059
+ config.containerName = containerName;
41060
+ import_node_fs10.default.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}
41061
+ `, "utf-8");
41062
+ }
41063
+ } catch {
41064
+ console.warn("Warning: could not update install mode in .sail/config.json");
41065
+ }
40999
41066
  if (removed.length === 0 && updated.length === 0 && added.length === 0) {
41000
41067
  console.log("Nothing to update.");
41001
41068
  return;
@@ -45148,7 +45215,8 @@ async function uiCommand() {
45148
45215
  const serverBundle = import_node_path16.default.resolve(distDir, "server.cjs");
45149
45216
  const projectRoot = process.cwd();
45150
45217
  const sailDir2 = import_node_path16.default.join(projectRoot, ".sail");
45151
- const port = await findFreePort(projectPort(projectRoot));
45218
+ const envPort = Number(process.env.PORT);
45219
+ const port = await findFreePort(Number.isInteger(envPort) && envPort > 0 && envPort <= 65535 ? envPort : projectPort(projectRoot));
45152
45220
  if (!import_node_fs20.default.existsSync(serverBundle)) {
45153
45221
  throw new Error(`Server bundle not found at ${serverBundle}. Re-run the sailor build.`);
45154
45222
  }
@@ -5,7 +5,7 @@
5
5
  * Do not edit manually — run `pnpm build` to regenerate.
6
6
  *
7
7
  * Spec version : 1.2.0
8
- * Generated at : 2026-06-20T13:48:40.238Z
8
+ * Generated at : 2026-06-23T09:10:35.761Z
9
9
  */
10
10
  export declare const SAIL_INTELLIGENCE_BASE_URL = "https://api.sail.money";
11
11
  export declare const SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
@@ -5,7 +5,7 @@
5
5
  * Do not edit manually — run `pnpm build` to regenerate.
6
6
  *
7
7
  * Spec version : 1.2.0
8
- * Generated at : 2026-06-20T13:48:40.238Z
8
+ * Generated at : 2026-06-23T09:10:35.761Z
9
9
  */
10
10
  export const SAIL_INTELLIGENCE_BASE_URL = "https://api.sail.money";
11
11
  export const SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const d=o`<svg
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const d=o`<svg
2
2
  width="14"
3
3
  height="14"
4
4
  viewBox="0 0 14 14"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 24 24">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 24 24">
2
2
  <path
3
3
  style="fill: var(--wui-color-accent-100);"
4
4
  d="M10.2 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 6.6a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM10.2 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0ZM21 17.4a3.6 3.6 0 1 1-7.2 0 3.6 3.6 0 0 1 7.2 0Z"
@@ -1,4 +1,4 @@
1
- import{F as t}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const e=t`
1
+ import{F as t}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const e=t`
2
2
  <svg width="36" height="36">
3
3
  <path
4
4
  d="M28.724 0H7.271A7.269 7.269 0 0 0 0 7.272v21.46A7.268 7.268 0 0 0 7.271 36H28.73A7.272 7.272 0 0 0 36 28.728V7.272A7.275 7.275 0 0 0 28.724 0Z"
@@ -1,4 +1,4 @@
1
- import{F as i}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const h=i`<svg fill="none" viewBox="0 0 40 40">
1
+ import{F as i}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const h=i`<svg fill="none" viewBox="0 0 40 40">
2
2
  <g clip-path="url(#a)">
3
3
  <g clip-path="url(#b)">
4
4
  <circle cx="20" cy="19.89" r="20" fill="#000" />
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const t=o`<svg
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const t=o`<svg
2
2
  fill="none"
3
3
  viewBox="0 0 21 20"
4
4
  >
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const a=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const a=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const t=o`<svg fill="none" viewBox="0 0 14 15">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const H=o`<svg
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const H=o`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="12"
4
4
  height="13"
@@ -1,4 +1,4 @@
1
- import{u as P,s as M,y as A,v as I,p as c,g as L,c as T,O as Y,l as E,m as J,R as O,h as ke,e as D,f as S,o as ft,j as Hi,W as gt,C as jt,d as si,T as kt,n as Qe,M as vi,k as yi,F as Ae,A as li,q as Ki}from"./core-tNZO_nnA.js";import{n as u,c as C,o as y,r as v,U as se,e as Gi,f as Yi,a as Ji}from"./index-CQ2Kvj0a.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const Qi=P`
1
+ import{u as P,s as M,y as A,v as I,p as c,g as L,c as T,O as Y,l as E,m as J,R as O,h as ke,e as D,f as S,o as ft,j as Hi,W as gt,C as jt,d as si,T as kt,n as Qe,M as vi,k as yi,F as Ae,A as li,q as Ki}from"./core-YssZmpJa.js";import{n as u,c as C,o as y,r as v,U as se,e as Gi,f as Yi,a as Ji}from"./index-67NncC_u.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const Qi=P`
2
2
  :host {
3
3
  position: relative;
4
4
  background-color: var(--wui-color-gray-glass-002);
@@ -1,4 +1,4 @@
1
- import{F as l}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const i=l`<svg fill="none" viewBox="0 0 20 20">
1
+ import{F as l}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const i=l`<svg fill="none" viewBox="0 0 20 20">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as C}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const l=C`<svg
1
+ import{F as C}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const l=C`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="12"
4
4
  height="13"
@@ -1 +1 @@
1
- import{B as u,cY as p,fP as k,c0 as x,de as M,dl as S,dk as $,bK as A,bR as T,cd as C,cJ as w,dc as E,a0 as b,dg as G}from"./index-BrDR678h.js";class D extends u{constructor({callbackSelector:a,cause:t,data:f,extraData:e,sender:d,urls:i}){var o;super(t.shortMessage||"An error occurred while fetching for an offchain result.",{cause:t,metaMessages:[...t.metaMessages||[],(o=t.metaMessages)!=null&&o.length?"":[],"Offchain Gateway Call:",i&&[" Gateway URL(s):",...i.map(n=>` ${p(n)}`)],` Sender: ${d}`,` Data: ${f}`,` Callback selector: ${a}`,` Extra data: ${e}`].flat(),name:"OffchainLookupError"})}}class P extends u{constructor({result:a,url:t}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${p(t)}`,`Response: ${k(a)}`],name:"OffchainLookupResponseMalformedError"})}}class B extends u{constructor({sender:a,to:t}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${t}`,`OffchainLookup sender address: ${a}`],name:"OffchainLookupSenderMismatchError"})}}const H="0x556f1830",U={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function J(c,{blockNumber:a,blockTag:t,data:f,requestOptions:e,to:d}){var s;const{args:i}=x({data:f,abi:[U]}),[o,n,l,g,y]=i,{ccipRead:h}=c,r=h&&typeof(h==null?void 0:h.request)=="function"?h.request:j;try{if(!M(d,o))throw new B({sender:o,to:d});const m=n.includes(S)?await $({data:l,ccipRequest:R=>r({...R,requestOptions:e})}):await r({data:l,requestOptions:e,sender:o,urls:n}),{data:L}=await A(c,{blockNumber:a,blockTag:t,data:T([g,C([{type:"bytes"},{type:"bytes"}],[m,y])]),requestOptions:e,to:d});return L}catch(m){throw(s=e==null?void 0:e.signal)!=null&&s.aborted?w(e.signal):E(m)?m:new D({callbackSelector:g,cause:m,data:f,extraData:y,sender:o,urls:n})}}async function j({data:c,requestOptions:a,sender:t,urls:f}){var d,i,o;let e=new Error("An unknown error occurred.");for(let n=0;n<f.length;n++){if((d=a==null?void 0:a.signal)!=null&&d.aborted)throw w(a.signal);const l=f[n],g=l.includes("{data}")?"GET":"POST",y=g==="POST"?{data:c,sender:t}:void 0,h=g==="POST"?{"Content-Type":"application/json"}:{};try{const r=await fetch(l.replace("{sender}",t.toLowerCase()).replace("{data}",c),{body:JSON.stringify(y),headers:h,method:g,...a!=null&&a.signal?{signal:a.signal}:{}});let s;if((i=r.headers.get("Content-Type"))!=null&&i.startsWith("application/json")?s=(await r.json()).data:s=await r.text(),!r.ok){e=new b({body:y,details:s!=null&&s.error?k(s.error):r.statusText,headers:r.headers,status:r.status,url:l});continue}if(!G(s)){e=new P({result:s,url:l});continue}return s}catch(r){if((o=a==null?void 0:a.signal)!=null&&o.aborted)throw w(a.signal);if(E(r))throw r;e=new b({body:y,details:r.message,url:l})}}throw e}export{j as ccipRequest,J as offchainLookup,U as offchainLookupAbiItem,H as offchainLookupSignature};
1
+ import{B as u,cY as p,fP as k,c0 as x,de as M,dl as S,dk as $,bK as A,bR as T,cd as C,cJ as w,dc as E,a0 as b,dg as G}from"./index-_DkPx8RN.js";class D extends u{constructor({callbackSelector:a,cause:t,data:f,extraData:e,sender:d,urls:i}){var o;super(t.shortMessage||"An error occurred while fetching for an offchain result.",{cause:t,metaMessages:[...t.metaMessages||[],(o=t.metaMessages)!=null&&o.length?"":[],"Offchain Gateway Call:",i&&[" Gateway URL(s):",...i.map(n=>` ${p(n)}`)],` Sender: ${d}`,` Data: ${f}`,` Callback selector: ${a}`,` Extra data: ${e}`].flat(),name:"OffchainLookupError"})}}class P extends u{constructor({result:a,url:t}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${p(t)}`,`Response: ${k(a)}`],name:"OffchainLookupResponseMalformedError"})}}class B extends u{constructor({sender:a,to:t}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${t}`,`OffchainLookup sender address: ${a}`],name:"OffchainLookupSenderMismatchError"})}}const H="0x556f1830",U={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function J(c,{blockNumber:a,blockTag:t,data:f,requestOptions:e,to:d}){var s;const{args:i}=x({data:f,abi:[U]}),[o,n,l,g,y]=i,{ccipRead:h}=c,r=h&&typeof(h==null?void 0:h.request)=="function"?h.request:j;try{if(!M(d,o))throw new B({sender:o,to:d});const m=n.includes(S)?await $({data:l,ccipRequest:R=>r({...R,requestOptions:e})}):await r({data:l,requestOptions:e,sender:o,urls:n}),{data:L}=await A(c,{blockNumber:a,blockTag:t,data:T([g,C([{type:"bytes"},{type:"bytes"}],[m,y])]),requestOptions:e,to:d});return L}catch(m){throw(s=e==null?void 0:e.signal)!=null&&s.aborted?w(e.signal):E(m)?m:new D({callbackSelector:g,cause:m,data:f,extraData:y,sender:o,urls:n})}}async function j({data:c,requestOptions:a,sender:t,urls:f}){var d,i,o;let e=new Error("An unknown error occurred.");for(let n=0;n<f.length;n++){if((d=a==null?void 0:a.signal)!=null&&d.aborted)throw w(a.signal);const l=f[n],g=l.includes("{data}")?"GET":"POST",y=g==="POST"?{data:c,sender:t}:void 0,h=g==="POST"?{"Content-Type":"application/json"}:{};try{const r=await fetch(l.replace("{sender}",t.toLowerCase()).replace("{data}",c),{body:JSON.stringify(y),headers:h,method:g,...a!=null&&a.signal?{signal:a.signal}:{}});let s;if((i=r.headers.get("Content-Type"))!=null&&i.startsWith("application/json")?s=(await r.json()).data:s=await r.text(),!r.ok){e=new b({body:y,details:s!=null&&s.error?k(s.error):r.statusText,headers:r.headers,status:r.status,url:l});continue}if(!G(s)){e=new P({result:s,url:l});continue}return s}catch(r){if((o=a==null?void 0:a.signal)!=null&&o.aborted)throw w(a.signal);if(E(r))throw r;e=new b({body:y,details:r.message,url:l})}}throw e}export{j as ccipRequest,J as offchainLookup,U as offchainLookupAbiItem,H as offchainLookupSignature};
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg
2
2
  width="28"
3
3
  height="28"
4
4
  viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 14 14">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 14 14">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const t=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as t}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const l=t`<svg width="36" height="36" fill="none">
1
+ import{F as t}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const l=t`<svg width="36" height="36" fill="none">
2
2
  <path
3
3
  fill="#fff"
4
4
  fill-opacity=".05"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const t=o`<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const t=o`<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
2
2
  <path
3
3
  fill-rule="evenodd"
4
4
  clip-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const m=o`<svg fill="none" viewBox="0 0 20 20">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const m=o`<svg fill="none" viewBox="0 0 20 20">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as o}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
1
+ import{F as o}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const p=o`<svg fill="none" viewBox="0 0 16 16">
2
2
  <path
3
3
  fill="currentColor"
4
4
  fill-rule="evenodd"
@@ -1,4 +1,4 @@
1
- import{F as C}from"./core-tNZO_nnA.js";import"./index-BrDR678h.js";import"./events-C79WI7iD.js";import"./index.es-C70kk3Fw.js";import"./fallback-BQkB1W8W.js";const e=C`<svg
1
+ import{F as C}from"./core-YssZmpJa.js";import"./index-_DkPx8RN.js";import"./events-BhTGLk8n.js";import"./index.es-C8EklrJY.js";import"./fallback-Ubz80uXP.js";const e=C`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  width="16"
4
4
  height="16"