@fangorn-network/westmarch 2026.10.27-dev → 2026.10.28

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 (342) hide show
  1. package/dist/ts/eval.js +0 -0
  2. package/package.json +11 -11
  3. package/site/worker.js +27 -8
  4. package/src/agent/agent-card.js +18 -1
  5. package/src/agent/mcp.js +15 -5
  6. package/src/discover/apps.js +15 -1
  7. package/src/publish/ship.js +27 -6
  8. package/src/publish/view.js +134 -40
  9. package/template/package.json +1 -1
  10. package/site/dist/assets/AccountNotFoundScreen-C4njXc69-DyVH4CEz.js +0 -1
  11. package/site/dist/assets/AddFundsSelectionScreen-RAoCn7ej-Dz1--SS9.js +0 -31
  12. package/site/dist/assets/Address-H8kD1d9O-BdFZmRwI.js +0 -17
  13. package/site/dist/assets/AffirmativeConsentScreen-BG0MJxku-CxaCAisL.js +0 -6
  14. package/site/dist/assets/AllowlistRejectionScreen-Cae6e1Od-JGk7vndN.js +0 -1
  15. package/site/dist/assets/ApiController-CTLbMCcH.js +0 -5
  16. package/site/dist/assets/ArrowsRightLeftIcon-B8g9adpz.js +0 -1
  17. package/site/dist/assets/AuthenticateWithWalletScreen-CU6hIcFT-CXD9_OP8.js +0 -1
  18. package/site/dist/assets/AwaitingEvmToSolBridgingScreen-D0e_sZMS-BtJCglvU.js +0 -1
  19. package/site/dist/assets/AwaitingExternalEthereumTransferScreen-ur5HL4R7-BgC2TsqH.js +0 -1
  20. package/site/dist/assets/AwaitingPasswordlessCodeScreen-DRHz76mM-B9OzLeEO.js +0 -103
  21. package/site/dist/assets/AwaitingSolToEvmBridgingScreen-CdLRrGD2-C7r5snUL.js +0 -1
  22. package/site/dist/assets/BridgeNetworkSelectionView-CFGjB2nO-BTV0NRio.js +0 -68
  23. package/site/dist/assets/CaptchaScreen-DbpvkIGx-7rSZIuM-.js +0 -1
  24. package/site/dist/assets/CheckCircleIcon-B1l17ioc.js +0 -1
  25. package/site/dist/assets/CheckCircleIcon-BGSI8nKf.js +0 -1
  26. package/site/dist/assets/Checkbox-D1EDeo41-BUfq0w99.js +0 -52
  27. package/site/dist/assets/ChevronDownIcon-B6uJvPHu.js +0 -1
  28. package/site/dist/assets/Chip-CZKIKt9K-r9Nk__0-.js +0 -26
  29. package/site/dist/assets/CoinbaseOnrampStatusScreen-BbyCJDXL-DWWNHxmR.js +0 -16
  30. package/site/dist/assets/ConnectEmailForm-B-VRE0MN-CRQwS0Xu.js +0 -3
  31. package/site/dist/assets/ConnectLedgerScreen-DWHABGot-CZcCt31O.js +0 -10
  32. package/site/dist/assets/ConnectOnlyLandingScreen-CZYx9Bmp-C5IOf-SQ.js +0 -1
  33. package/site/dist/assets/ConnectOnlyStatusScreen-DCRzjxHx-cwg74F3A.js +0 -1
  34. package/site/dist/assets/ConnectOrCreateScreen-CUUYUO07-D28oeK6b.js +0 -1
  35. package/site/dist/assets/ConnectPhoneForm-Dek5xn4C-EEdkKeTp.js +0 -95
  36. package/site/dist/assets/ConnectWalletView-DqI-PTvX-C2mEzukj.js +0 -74
  37. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-CH_7r8iV.js +0 -7
  38. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-Z33kis0B.js +0 -1
  39. package/site/dist/assets/ConnectorUtil-DH4NePk5.js +0 -21
  40. package/site/dist/assets/ConstantsUtil-DmLsRHAl.js +0 -198
  41. package/site/dist/assets/CopyToClipboard-i_OQSBJr-_G88JCVR.js +0 -39
  42. package/site/dist/assets/CopyableText-CQapvaMr-CGGfc_zM.js +0 -28
  43. package/site/dist/assets/CrossAppAuthScreen-CLw7ymZq-C9Okoc0V.js +0 -1
  44. package/site/dist/assets/CustomLandingScreenView-Cm_MBSyX-D2l6hdSl.js +0 -22
  45. package/site/dist/assets/DelegatedActionsConsentScreen-DYF2U4y5-Dda3KKqS.js +0 -1
  46. package/site/dist/assets/DelegatedActionsRevokeScreen-bPp6Uwyh-DG8kJPt1.js +0 -1
  47. package/site/dist/assets/DepositAddressAddressStepView-4vdkb55L-CcOUfn6f.js +0 -187
  48. package/site/dist/assets/DepositAddressScreen-DBLRs7aI-DeituDNh.js +0 -8
  49. package/site/dist/assets/DepositAddressV3Screen-CDqIEMQw-FDg6K14-.js +0 -1
  50. package/site/dist/assets/EmailInputForm-Cqo1mda8-BmbxvPHC.js +0 -124
  51. package/site/dist/assets/EmbeddedWalletConnectingScreen-D4T7DUzs-B05CQ9rx.js +0 -1
  52. package/site/dist/assets/EmbeddedWalletCreatedScreen-D7WhW5ve-Cxd1b9XH.js +0 -1
  53. package/site/dist/assets/EmbeddedWalletKeyExportScreen-CqV4NYQ3-CrJy0ViX.js +0 -23
  54. package/site/dist/assets/EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-Bakaa3zu.js +0 -1
  55. package/site/dist/assets/EmbeddedWalletPasswordUpdateScreen-D3rMlqS7-j78vKrcj.js +0 -1
  56. package/site/dist/assets/EmbeddedWalletPasswordUpdateSplashScreen-BPFkWJeE-D3dr7W9_.js +0 -1
  57. package/site/dist/assets/EnrollTotp-Dibew4dp-BXbYV8nI.js +0 -66
  58. package/site/dist/assets/EnvelopeIcon-DjPofnRI.js +0 -1
  59. package/site/dist/assets/ErrorBanner-BcpGRt0h-BhH6_V-9.js +0 -21
  60. package/site/dist/assets/ErrorMessage-D8VaAP5m-Bs7uX2a9.js +0 -8
  61. package/site/dist/assets/ErrorScreen-DipdTWzE-BgPRgnOb.js +0 -4
  62. package/site/dist/assets/ErrorScreen-DipdTWzE-CvxXC6pz.js +0 -1
  63. package/site/dist/assets/ExclamationCircleIcon-BE-WGrut.js +0 -1
  64. package/site/dist/assets/ExclamationTriangleIcon-Ca1Xlc_f.js +0 -1
  65. package/site/dist/assets/FarcasterConnectStatusScreen-51tjUxqq-De2JvZdV.js +0 -75
  66. package/site/dist/assets/FarcasterSignerStatusScreen-6x-Uh95G-bLp3hXoO.js +0 -28
  67. package/site/dist/assets/FiatOnrampScreen-BAhYeiTI-Jr6D6JiZ.js +0 -491
  68. package/site/dist/assets/FingerPrintIcon-DOCbS93y.js +0 -1
  69. package/site/dist/assets/FundSolWalletWithExternalSolanaWallet-WtLwYaOl-A_G5kfa1.js +0 -1
  70. package/site/dist/assets/FundWalletMethodHeader-BWNkokCT-LPv35wkD.js +0 -1
  71. package/site/dist/assets/FundWithBankDepositScreen-DajkHxBD-0hfGrfvf.js +0 -58
  72. package/site/dist/assets/FundingEditAmountScreen-CpvpiO4M-Dz0s_NWR.js +0 -1
  73. package/site/dist/assets/FundingMethodSelectionScreen-Db7vhRlE-ZGm-3-Io.js +0 -1
  74. package/site/dist/assets/GlobeAltIcon-BBRl2MMn.js +0 -1
  75. package/site/dist/assets/GooglePay-B53WnudL-BGiVpB8y.js +0 -1
  76. package/site/dist/assets/HCaptchaWrapper-CUi9LJsp-CHdfIeD_.js +0 -4
  77. package/site/dist/assets/InAppBrowserLoginNotPossible-BMR9br1T-Cgoiow3m.js +0 -1
  78. package/site/dist/assets/InfoBanner-Cb3p1z12-_YqQmRiu.js +0 -22
  79. package/site/dist/assets/InjectedWalletIcon-DLcYOGDj-tuIrKQHH.js +0 -1
  80. package/site/dist/assets/InstallWalletScreen-DTA8dwLv-BMU_wa61.js +0 -1
  81. package/site/dist/assets/JsonTree-BHzNC-ic-DcVr0YF0.js +0 -34
  82. package/site/dist/assets/LabelXs-oqZNqbm_-CNprGVQM.js +0 -6
  83. package/site/dist/assets/LandingScreen-CGWUoSUG-fH6rsQen.js +0 -1
  84. package/site/dist/assets/Layouts-BMRfo5hw-e-sepi6F.js +0 -77
  85. package/site/dist/assets/Link-BdDilT2T-BdwlRJch.js +0 -40
  86. package/site/dist/assets/LinkConflictScreen-C3ZEPsgl-BXKN2Qm5.js +0 -77
  87. package/site/dist/assets/LinkEmailScreen-dKo9frwc-Cyn7Q8p1.js +0 -1
  88. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-CWiqnwLM.js +0 -117
  89. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-YmDevJzf.js +0 -1
  90. package/site/dist/assets/LinkPhoneScreen-oIUpfj0w-h7shW-Ay.js +0 -1
  91. package/site/dist/assets/Loader-UAZqxsnw-DJEVblm1.js +0 -62
  92. package/site/dist/assets/LoadingSkeleton-BMsgO5PV-D2atjsP5.js +0 -17
  93. package/site/dist/assets/LockClosedIcon-9EFzWK1C.js +0 -1
  94. package/site/dist/assets/LoginFailedScreen-CN0dJV6U-By3Si77a.js +0 -1
  95. package/site/dist/assets/ManualTransferScreen-CHqcuqbs-BAHPY8rs.js +0 -1
  96. package/site/dist/assets/MfaAuthEnrollmentFlowScreen-Dj7gPTRC-CLjffFG1.js +0 -1
  97. package/site/dist/assets/MfaAuthVerifyFlowScreen-DbFpyWMy-BmQg1Y61.js +0 -1
  98. package/site/dist/assets/MfaEnrollmentFlowScreen-DhLnGgnr-DmBtTtlw.js +0 -1
  99. package/site/dist/assets/MfaVerifyFlowScreen-C_XPjMRP-4a683Bmf.js +0 -1
  100. package/site/dist/assets/ModalFooter-BCuEK_nz-C_71qsaz.js +0 -403
  101. package/site/dist/assets/MoonpayStatusScreen-CzTUtokc-DEHHcEf8.js +0 -16
  102. package/site/dist/assets/OAuthStatusScreen-ufbOa-da-BjAb_WsY.js +0 -1
  103. package/site/dist/assets/OpenLink-CUpJ1mOr-BLWFsPOW.js +0 -39
  104. package/site/dist/assets/PasskeySelectSignupOrLogin-xh2ScC_l-2PJTJxX-.js +0 -1
  105. package/site/dist/assets/PasskeyStatusScreen-Bla8MaOk-DCEg761l.js +0 -6
  106. package/site/dist/assets/PasswordRecoveryScreen-awGXZkQk-8nVjNc8k.js +0 -20
  107. package/site/dist/assets/PhArrowCircleDown-D97G-BOA.js +0 -14
  108. package/site/dist/assets/PhArrowClockwise-DVgyFuez.js +0 -14
  109. package/site/dist/assets/PhArrowDown-87b1BizM.js +0 -14
  110. package/site/dist/assets/PhArrowLeft-Da0MfnbK.js +0 -14
  111. package/site/dist/assets/PhArrowRight-AdrIL4DW.js +0 -14
  112. package/site/dist/assets/PhArrowSquareOut-Bk2CMG3I.js +0 -14
  113. package/site/dist/assets/PhArrowUp-4sgyKPGx.js +0 -14
  114. package/site/dist/assets/PhArrowUpRight-BNghD2zq.js +0 -14
  115. package/site/dist/assets/PhArrowsClockwise-BXRn1GEl.js +0 -14
  116. package/site/dist/assets/PhArrowsDownUp-DM09Jo_3.js +0 -14
  117. package/site/dist/assets/PhArrowsLeftRight-MuKBLUoF.js +0 -14
  118. package/site/dist/assets/PhBank-fHbgCqqZ.js +0 -14
  119. package/site/dist/assets/PhBrowser-2-9m-AkM.js +0 -14
  120. package/site/dist/assets/PhCaretDown-BDNabFuL.js +0 -14
  121. package/site/dist/assets/PhCaretLeft-CI460R-A.js +0 -14
  122. package/site/dist/assets/PhCaretRight-D7ZS3Ls8.js +0 -14
  123. package/site/dist/assets/PhCaretUp-C-iIfyvO.js +0 -14
  124. package/site/dist/assets/PhCheck-DxQXn57r.js +0 -14
  125. package/site/dist/assets/PhCircleHalf-MJZeRBGF.js +0 -14
  126. package/site/dist/assets/PhClock-x3MS3Mwi.js +0 -14
  127. package/site/dist/assets/PhCompass-hYn3HhGN.js +0 -14
  128. package/site/dist/assets/PhCopy-CWNYcABI.js +0 -14
  129. package/site/dist/assets/PhCreditCard-Fy4pzwtt.js +0 -14
  130. package/site/dist/assets/PhCurrencyDollar-BgiaenCi.js +0 -14
  131. package/site/dist/assets/PhDesktop-CxrzCSv5.js +0 -14
  132. package/site/dist/assets/PhDeviceMobile-CsyA5Goi.js +0 -14
  133. package/site/dist/assets/PhDotsThree-D-k1BiYg.js +0 -14
  134. package/site/dist/assets/PhEnvelope-D8kzeNox.js +0 -14
  135. package/site/dist/assets/PhFunnelSimple-CfQs5DAW.js +0 -14
  136. package/site/dist/assets/PhGlobe-DvmSc9_A.js +0 -14
  137. package/site/dist/assets/PhIdentificationCard-CfkZm-5K.js +0 -14
  138. package/site/dist/assets/PhImage-Cf0J2ZfJ.js +0 -14
  139. package/site/dist/assets/PhInfo-Bwi51-2X.js +0 -14
  140. package/site/dist/assets/PhLightbulb-C4FZV7Es.js +0 -14
  141. package/site/dist/assets/PhMagnifyingGlass-C9u8jSCJ.js +0 -14
  142. package/site/dist/assets/PhPaperPlaneRight-zxQVvPLX.js +0 -14
  143. package/site/dist/assets/PhPlus-C4UoW-2n.js +0 -14
  144. package/site/dist/assets/PhPower-CFyWDmgD.js +0 -14
  145. package/site/dist/assets/PhPuzzlePiece-BjoNVfST.js +0 -14
  146. package/site/dist/assets/PhQrCode-CP3tFauY.js +0 -14
  147. package/site/dist/assets/PhQuestion-wOWJBd3G.js +0 -14
  148. package/site/dist/assets/PhQuestionMark-CV0k9C0Y.js +0 -14
  149. package/site/dist/assets/PhSealCheck-vIKzREuN.js +0 -14
  150. package/site/dist/assets/PhSignOut-CxELV-i0.js +0 -14
  151. package/site/dist/assets/PhSpinner-CGDmbzUd.js +0 -14
  152. package/site/dist/assets/PhTrash-C9PD0SAt.js +0 -14
  153. package/site/dist/assets/PhUser-0sWNXQeZ.js +0 -14
  154. package/site/dist/assets/PhVault-6JTskUcC.js +0 -14
  155. package/site/dist/assets/PhWarning-CoKs3gz6.js +0 -14
  156. package/site/dist/assets/PhWarningCircle-BXHw1fCt.js +0 -14
  157. package/site/dist/assets/PhX-DX0SFIqC.js +0 -14
  158. package/site/dist/assets/PhoneIcon-CZ47md80.js +0 -1
  159. package/site/dist/assets/PinInput-DbZ0b1i1-BrTXu3Km.js +0 -247
  160. package/site/dist/assets/PrivyPluginContext-DA-yS5vO-CY60yubk.js +0 -1
  161. package/site/dist/assets/QrCode-DbnZwlkH-CcMrWV5D.js +0 -22
  162. package/site/dist/assets/RecoveryOAuthStatusScreen-CsgtTI2x-DgeDnHOK.js +0 -1
  163. package/site/dist/assets/RecoveryPasswordCreateScreen-Be-qJ-LU-CvJJwLhK.js +0 -1
  164. package/site/dist/assets/RecoverySelectionScreen-D1iGtpmi-CADtGtSV.js +0 -7
  165. package/site/dist/assets/SIWXUtil-Cpiv91-M.js +0 -1
  166. package/site/dist/assets/Screen-D30meWsY-vEusJ7KX.js +0 -175
  167. package/site/dist/assets/ScreenHeader-CHmc4-Lu-BvGTLg53.js +0 -31
  168. package/site/dist/assets/ScreenLayout-OwaQQcxH-cfOTmyl0.js +0 -1
  169. package/site/dist/assets/SelectSourceAsset-CWFog6gm-DxYklZYs.js +0 -140
  170. package/site/dist/assets/SetAutomaticRecoveryScreen-BO_OEqAZ-oeqeo05x.js +0 -14
  171. package/site/dist/assets/SetWalletPasswordForm-DwCTVtAh-BxFee9UA.js +0 -11
  172. package/site/dist/assets/ShieldCheckIcon-eFjsosCA.js +0 -1
  173. package/site/dist/assets/SignRequestScreen-BHKv32KR-z8ixfIma.js +0 -26
  174. package/site/dist/assets/SolanaWalletConnector-C7Lqk-Wz-Bc_lvdiF.js +0 -1
  175. package/site/dist/assets/StackedContainer-B2vaEl56-Do5dXB8-.js +0 -24
  176. package/site/dist/assets/StandardSignAndSendTransactionScreen-CfhIXVtd-DudetZAc.js +0 -20
  177. package/site/dist/assets/Subtitle-CV-2yKE4-DV0o1av3.js +0 -13
  178. package/site/dist/assets/TelegramAuthScreen-UL9zLfO8-Bo3sONvf.js +0 -1
  179. package/site/dist/assets/Title-BnzYV3Is-C3qOPnO_.js +0 -7
  180. package/site/dist/assets/TodoList-DnyULl18-BvxvubbF.js +0 -36
  181. package/site/dist/assets/TransactionDetails-e9nesl30-WWflkOIi.js +0 -109
  182. package/site/dist/assets/TransactionErrorView-BDBNqA_f-CotYKcgf.js +0 -178
  183. package/site/dist/assets/TransferFromWalletScreen-Qvn1Yuno-sVFlWqa8.js +0 -31
  184. package/site/dist/assets/TransferOrBridgeLoadingScreen-Dl1I_iIz-CV2-mY19.js +0 -6
  185. package/site/dist/assets/TurnstileWrapper-B7sNddys-oPbuMTQt.js +0 -1
  186. package/site/dist/assets/UpdateEmailScreen-DVOhPV0H-D_mjSpAy.js +0 -1
  187. package/site/dist/assets/UpdatePhoneScreen-CXRswTNZ-6RLG0ahv.js +0 -1
  188. package/site/dist/assets/UserLimitReachedScreen-5we2DHn8-CaVN0bti.js +0 -1
  189. package/site/dist/assets/Value-DTgR824E-Bp6WGZZm.js +0 -27
  190. package/site/dist/assets/WalletCards-DH1rqayz-D3cOTb9x.js +0 -1
  191. package/site/dist/assets/WalletIcon-DOIZhb2l.js +0 -1
  192. package/site/dist/assets/WalletInfoCard-sq_2wgFg-bOqfl5MA.js +0 -29
  193. package/site/dist/assets/WalletInterstitialScreen-Sh7LfsAh-DWaVkMCA.js +0 -1
  194. package/site/dist/assets/WalletLink-DK5LB5Ha-DjUZvqs-.js +0 -20
  195. package/site/dist/assets/WalletOverflowButton-bfCnp-9T-B6P7DQXA.js +0 -1
  196. package/site/dist/assets/WarningBanner-ZZqCEtZK-Bc2YKZb7.js +0 -21
  197. package/site/dist/assets/__vite-browser-external-NciY4Vu1.js +0 -1
  198. package/site/dist/assets/_esm-BZP3cXTv.js +0 -1
  199. package/site/dist/assets/_esm-ZmzBJpEs.js +0 -6
  200. package/site/dist/assets/accounts-D4AXF17G.js +0 -1
  201. package/site/dist/assets/accounts-IkdFx9nq.js +0 -1
  202. package/site/dist/assets/analytics-mkkvFRju-BRBcadka.js +0 -1
  203. package/site/dist/assets/baseSepolia-Bn1j1Ysw.js +0 -1
  204. package/site/dist/assets/basic-Cz1YiCSk.js +0 -1575
  205. package/site/dist/assets/capitalizeFirstLetter-DmLYqXsO-DtOXx-2n.js +0 -1
  206. package/site/dist/assets/ccip-B1J3oTZx.js +0 -7
  207. package/site/dist/assets/ccip-Bd7261zy.js +0 -1
  208. package/site/dist/assets/ccip-D6EHKpjI.js +0 -1
  209. package/site/dist/assets/chain-scefkYIH.js +0 -5
  210. package/site/dist/assets/check-DHnllI8N.js +0 -1
  211. package/site/dist/assets/chevron-down-1y-r4bGO.js +0 -1
  212. package/site/dist/assets/circle-alert-OwxamXUX.js +0 -1
  213. package/site/dist/assets/circle-check-big-3sZGVC10.js +0 -1
  214. package/site/dist/assets/circle-x-DQjNUV9J.js +0 -1
  215. package/site/dist/assets/client-B-BpRtwY.js +0 -1
  216. package/site/dist/assets/client-BfIR1FvH.js +0 -9
  217. package/site/dist/assets/coinbase-DCPC2L_R-YEuIn3jh.js +0 -3
  218. package/site/dist/assets/copy-DMOX_yn7.js +0 -1
  219. package/site/dist/assets/core-GIEmxmAa.js +0 -12
  220. package/site/dist/assets/createLucideIcon-BsERoFTA.js +0 -1
  221. package/site/dist/assets/defineChain-B-SQDLTG.js +0 -1
  222. package/site/dist/assets/dijkstra-CY95afk4.js +0 -1
  223. package/site/dist/assets/dist-CoS6E-3x.js +0 -1
  224. package/site/dist/assets/dist-Cp6IXeJd.js +0 -1
  225. package/site/dist/assets/dist-CrNxmdZj.js +0 -1
  226. package/site/dist/assets/dist-DYGtf4F0.js +0 -16
  227. package/site/dist/assets/embed.worker-Cnl4VGr3.js +0 -1
  228. package/site/dist/assets/errors-BQ3N-RVt-CZPAWCgC.js +0 -1
  229. package/site/dist/assets/esm-C3DslVJx.js +0 -1
  230. package/site/dist/assets/esm-Ci1ogKuK.js +0 -1
  231. package/site/dist/assets/esm-Co94ENUV.js +0 -37
  232. package/site/dist/assets/esm-bb8SANZh.js +0 -1
  233. package/site/dist/assets/esm-n2lWo7kz.js +0 -1
  234. package/site/dist/assets/ethers-zTjbodk5-Cs648CnD.js +0 -1
  235. package/site/dist/assets/eventemitter3-Dzc_0Uq2.js +0 -1
  236. package/site/dist/assets/external-link-BBPG3rG7.js +0 -1
  237. package/site/dist/assets/farcaster-DPlSjvF5-CzBCmgyL.js +0 -1
  238. package/site/dist/assets/features-CuiHbgEJ.js +0 -2
  239. package/site/dist/assets/fingerprint-pattern-CjLtyIxB.js +0 -1
  240. package/site/dist/assets/floating-ui.react-DmaCfayr.js +0 -1
  241. package/site/dist/assets/floating-ui.react-dom-CaoMF8mP.js +0 -1
  242. package/site/dist/assets/formatErc20TokenAmount-BuPk9xcy-BVqOKQif.js +0 -1
  243. package/site/dist/assets/formatter-CVbp4SlJ.js +0 -1
  244. package/site/dist/assets/get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js +0 -1
  245. package/site/dist/assets/getChainName-DjpPdUSc-DUyKDrnp.js +0 -1
  246. package/site/dist/assets/getErc20Balance-jXNpFf0N-q4bV8kQq.js +0 -1
  247. package/site/dist/assets/getErc20TokenInfo-BNTrzLMP-DcnTFrXN.js +0 -1
  248. package/site/dist/assets/getFormattedUsdFromLamports-De3U9GlO-Gx4_wxON.js +0 -1
  249. package/site/dist/assets/getUsdcMintAddress-BVgm9GRo-r2UnDeEy.js +0 -1
  250. package/site/dist/assets/guards-BIW-GiMJ-D3tWTQAR.js +0 -1
  251. package/site/dist/assets/hooks.module-BYZGfwDl.js +0 -1
  252. package/site/dist/assets/hourglass-D_GfQdJr.js +0 -1
  253. package/site/dist/assets/id-UqEwL2BI-CTlvRMA5.js +0 -1
  254. package/site/dist/assets/index-BdEw5wyl-kLbhqLbv.js +0 -1
  255. package/site/dist/assets/index-C2h3EneX.js +0 -8
  256. package/site/dist/assets/index-CWARkn2w-DxuckIFn.js +0 -61
  257. package/site/dist/assets/index-DvMddJcd-CNBb4VUn.js +0 -12
  258. package/site/dist/assets/index-YiCw0Y_x-Czl0tWfF.js +0 -436
  259. package/site/dist/assets/index.browser-B-i-Lj3J.js +0 -1
  260. package/site/dist/assets/index.browser-BMmUcykv.js +0 -1
  261. package/site/dist/assets/index.es-Crd0TyUS.js +0 -2
  262. package/site/dist/assets/index.es-DQbup1WG.js +0 -3
  263. package/site/dist/assets/isPaymentRequestAvailable-Bq1cemEn-Cjf3l05I.js +0 -1
  264. package/site/dist/assets/jsx-runtime-CndCZlyt.js +0 -1
  265. package/site/dist/assets/landmark-BZPqMFEf.js +0 -1
  266. package/site/dist/assets/lib-DGtzi2DK.js +0 -1
  267. package/site/dist/assets/localBatchGatewayRequest-B71J8sQ9.js +0 -29
  268. package/site/dist/assets/lock-DyN_c-ud.js +0 -1
  269. package/site/dist/assets/logger-CsXm3oIv-B0UYpNFI.js +0 -1
  270. package/site/dist/assets/mail-V_mcPb64.js +0 -1
  271. package/site/dist/assets/modal-context-CwmSeFcv-DPWNJrfK.js +0 -1
  272. package/site/dist/assets/native-BKj27wfc.js +0 -1
  273. package/site/dist/assets/ofetch.CWycOUEr-Duby3iHT.js +0 -1
  274. package/site/dist/assets/parseAbi-Csg-8t59.js +0 -2
  275. package/site/dist/assets/parseAbiParameters-BWbIMYe4.js +0 -1
  276. package/site/dist/assets/parseEther-CHS0GNkM.js +0 -1
  277. package/site/dist/assets/pkce-DXF0yKjP-7_VY-d83.js +0 -1
  278. package/site/dist/assets/preload-helper-CRzLMJPS.js +0 -1
  279. package/site/dist/assets/privy-context-81KmsBw2-DiR6-Yq8.js +0 -2
  280. package/site/dist/assets/property-DuZ9DLP4.js +0 -3
  281. package/site/dist/assets/react-BfYA1q0G.js +0 -1
  282. package/site/dist/assets/react-CK2HRI1t.js +0 -1
  283. package/site/dist/assets/react-DxGeY8B8.js +0 -1
  284. package/site/dist/assets/react-auth-sHnipzbS.js +0 -1
  285. package/site/dist/assets/react-dom-BI2Koe4o.js +0 -1
  286. package/site/dist/assets/reservoir-x-nGuZkT-BguVFH3D.js +0 -1
  287. package/site/dist/assets/roles-BDPDWrwo.js +0 -1
  288. package/site/dist/assets/roles-DKPW79Ca.js +0 -1
  289. package/site/dist/assets/rolldown-runtime-Bjp52BOI.js +0 -1
  290. package/site/dist/assets/safe-url-D7SRPu33-CkMedGro.js +0 -1
  291. package/site/dist/assets/secp256k1-BeYL8aZl.js +0 -1
  292. package/site/dist/assets/secp256k1-Bh4MSkhz.js +0 -1
  293. package/site/dist/assets/secp256k1-Ci4cqHl0.js +0 -1
  294. package/site/dist/assets/secp256k1-DsxXqbXv.js +0 -1
  295. package/site/dist/assets/secp256k1-N9RUmafO.js +0 -1
  296. package/site/dist/assets/serializeAuthorizationList-DGMik9Wx.js +0 -1
  297. package/site/dist/assets/serializeSignature-CWKpxoab.js +0 -2
  298. package/site/dist/assets/sha2-C6s7zZmb.js +0 -1
  299. package/site/dist/assets/shared-DRZUmnL5-BewE5wK8.js +0 -193
  300. package/site/dist/assets/shared-FM0rljBt-CxLACri_.js +0 -21
  301. package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BkAKsRNi.js +0 -1
  302. package/site/dist/assets/simulateTransaction-CfuOrae4-PjA_tGjX.js +0 -1
  303. package/site/dist/assets/smartphone-3p8nFSTE.js +0 -1
  304. package/site/dist/assets/src-BBjkfi-Q.js +0 -1
  305. package/site/dist/assets/storage-Ufl800Ne-1qCR2JMO.js +0 -8
  306. package/site/dist/assets/stringify-DqUj9VzO.js +0 -20
  307. package/site/dist/assets/stripe.esm-DEi2D291.js +0 -2
  308. package/site/dist/assets/styles-BsotlekN-Aq27nZGc.js +0 -9
  309. package/site/dist/assets/styles-Cm9H63WO-p_ic_dxE.js +0 -92
  310. package/site/dist/assets/styles-DVyDvTdj-CjsWqAld.js +0 -74
  311. package/site/dist/assets/styles-hslXy6xG-D5QHIrJU.js +0 -164
  312. package/site/dist/assets/telegram-B-JqnkqZ-Dqkm4rDn.js +0 -1
  313. package/site/dist/assets/to-ui-error-DWe-qwS3-Bi1HUQI9.js +0 -4
  314. package/site/dist/assets/toViemAccount-B5iDGq1b-CdFZwv07.js +0 -2
  315. package/site/dist/assets/transaction-BNTP-bFm-M5tJx8vY.js +0 -1
  316. package/site/dist/assets/transfer-6YztDh-t-BVQkTvG-.js +0 -1
  317. package/site/dist/assets/transformers.web-BTyOEJ0C.js +0 -40
  318. package/site/dist/assets/transformers.web-CUZUFjAK.js +0 -49
  319. package/site/dist/assets/triangle-alert-BG3Qw-Hq.js +0 -1
  320. package/site/dist/assets/twitch-5IOe4sIQ-CaXHFlAu.js +0 -1
  321. package/site/dist/assets/types-4CuOD23i.js +0 -1
  322. package/site/dist/assets/use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js +0 -1
  323. package/site/dist/assets/use-unlink-wallet-BKK4_5Ur-C0xQN_Lp.js +0 -1
  324. package/site/dist/assets/useActiveWallet-B-yZYGc6-BkK6rFBm.js +0 -123
  325. package/site/dist/assets/useGetSolPrice-x7gfUIHJ-CLVXqv6I.js +0 -1
  326. package/site/dist/assets/useGetTokenPrice-CaoUkb79-DAXXs3rs.js +0 -1
  327. package/site/dist/assets/useI18n-C-5n_noF-CGpkgIVy.js +0 -1
  328. package/site/dist/assets/useWalletBalance-CZnP5f_f-Cfd64m4n.js +0 -1
  329. package/site/dist/assets/useWallets-X1ndvJ_U-CAYqg7Za.js +0 -1
  330. package/site/dist/assets/utils-BkR7EQjg.js +0 -1
  331. package/site/dist/assets/utils-DJhBNOZA.js +0 -1
  332. package/site/dist/assets/utils-DdckVfQr.js +0 -1
  333. package/site/dist/assets/w3m-modal-B4H_uiPH.js +0 -1174
  334. package/site/dist/assets/wallet-BNI12IYk.js +0 -1
  335. package/site/dist/assets/wallet-CITSaPlB.js +0 -2
  336. package/site/dist/assets/wallet-connect-BvJtUsDt-CVlSNIXP.js +0 -1
  337. package/site/dist/assets/walletconnect-registry-xxG8XLCb-BpzpBq5s.js +0 -1
  338. package/site/dist/assets/walletconnect-v2-3frQFwbg-CzZ6oybX.js +0 -12
  339. package/site/dist/assets/wui-ux-by-reown-XyHdtV1O.js +0 -1147
  340. package/site/dist/assets/x-gjDrY2rk.js +0 -1
  341. package/site/dist/index.html +0 -21
  342. package/site/dist/theme.css +0 -7
@@ -40,6 +40,9 @@ import { dirname } from "node:path";
40
40
  import { EMBED_DIM, EMBED_DTYPE, EMBED_MODEL, embedDocumentDirect, packVec, unpackVec } from "../core/embed.js";
41
41
  import { coverage as fitCoverage } from "../market/reactions.js";
42
42
 
43
+ // The origin the agent card is built with; the Worker swaps in wherever it is served from.
44
+ // Here, not in site/worker.js: workerd refuses a Worker module exporting anything but handlers.
45
+ export const ORIGIN = "https://origin.westmarch.invalid";
43
46
  export const EMBEDDER = { runtime: "transformers.js", model: EMBED_MODEL, dtype: EMBED_DTYPE };
44
47
  const SINGULAR = ["identity", "title", "subtitle", "temporal", "spatial", "media", "thread"];
45
48
  const MULTI = ["tags", "measures", "relations", "text"];
@@ -168,12 +171,21 @@ export async function readOnlyFangorn() {
168
171
  * A build that must not touch the chain — a candidate recipe graded before it ships —
169
172
  * runs the exact code a real one does. */
170
173
  export function localFangorn(chain, { appId, owner }) {
171
- const root = (k) => `0x${createHash("sha256").update(JSON.stringify(chain[k])).digest("hex")}`;
174
+ // Every version handed out is kept, so repoDiff can diff any two, as the SDK diffs two roots.
175
+ const versions = new Map();
176
+ const root = (k) => { const h = `0x${createHash("sha256").update(JSON.stringify(chain[k])).digest("hex")}`; versions.set(h, structuredClone(chain[k]?.records ?? [])); return h; };
177
+ const repoDiff = async (from, to) => {
178
+ if (!versions.has(from) || !versions.has(to)) throw new Error("unknown root");
179
+ const [a, b] = [versions.get(from), versions.get(to)], cidOf = new Map(a.map((r) => [r.id, r.cid])), ids = new Set(b.map((r) => r.id));
180
+ return { puts: b.filter((r) => cidOf.get(r.id) !== r.cid), deletes: a.filter((r) => !ids.has(r.id)).map((r) => r.id),
181
+ superseded: a.filter((r) => !ids.has(r.id) || b.some((x) => x.id === r.id && x.cid !== r.cid)).map((r) => r.cid) };
182
+ };
172
183
  return {
184
+ engine: { repoDiff }, reads: 0,
173
185
  setAppId() {}, getAppId: () => appId,
174
186
  getAppRegistry: () => ({ getAppOwner: async () => owner }),
175
187
  appRepos: async () => Object.keys(chain).map((k) => ({ owner: k.split("/")[0], repo: k.split("/").slice(1).join("/"), root: root(k) })),
176
- readRepo: async (o, repo) => { const c = chain[`${o}/${repo}`]; return { tip: c ? root(`${o}/${repo}`) : null, contents: { records: c?.records ?? [] } }; },
188
+ readRepo: async function (o, repo) { this.reads++; const c = chain[`${o}/${repo}`]; return { tip: c ? root(`${o}/${repo}`) : null, contents: { records: c?.records ?? [] } }; },
177
189
  };
178
190
  }
179
191
 
@@ -243,11 +255,12 @@ export function r2Store(bucket, prefix = "view/") {
243
255
  const readJson = async (store, p, dflt) => { const b = await store.get(p); return b ? JSON.parse(new TextDecoder().decode(b)) : dflt; };
244
256
  const writeJson = (store, p, o) => store.put(p, JSON.stringify(o, null, 1));
245
257
 
246
- /** What a domain already serves: its manifest and every row (for tombstones and coverage). */
247
- async function loadDomain(store, dir) {
258
+ /** What a domain already serves: its manifest and every row (for tombstones and coverage), or
259
+ * with `only`, the rows of those shard files alone. */
260
+ async function loadDomain(store, dir, only = null) {
248
261
  const manifest = await readJson(store, `${dir}/manifest`, null);
249
262
  const rows = new Map();
250
- for (const s of manifest?.shards ?? []) {
263
+ for (const s of (manifest?.shards ?? []).filter((x) => !only || only.includes(x.file))) {
251
264
  const b = await store.get(`${dir}/shards/${s.file}`);
252
265
  if (!b) throw new Error(`${dir}: shard ${s.file} is named by its manifest and missing`);
253
266
  for (const line of gunzipSync(b).toString("utf8").split("\n")) if (line.trim()) { const r = JSON.parse(line); rows.set(r.track_id, r); }
@@ -339,21 +352,38 @@ async function retry(f, tries = 6) {
339
352
  }
340
353
  }
341
354
 
355
+ const CHECKPOINT = 2048; // rows embedded between saves; a killed run redoes at most this many
342
356
  async function publishDomain({ fangorn, store, schema, schemaHash, publisher, repo, head, domain, dir, rebake, embedBatch, embedder, log, shardRows, open }) {
343
357
  // The head the domain was built from, and the schema it was built under: neither moved,
344
358
  // nothing to read. This is what keeps a cron run with nothing new to one read per repo.
345
359
  const was = rebake ? null : await readJson(store, `${dir}/manifest`, null);
346
360
  if (was && was.head === head && was.schema_hash === schemaHash) return null;
347
361
 
348
- const { contents } = await retry(() => fangorn.readRepo(publisher, repo));
362
+ // The head moved from one this domain was built from: read only what changed between them (the
363
+ // SDK's repoDiff opens only the changed paths of the record tree), not every record again. A
364
+ // schema with relations links each row against all the others, so it still reads the whole repo;
365
+ // so does an SDK whose diff can't name the replaced versions, and a diff that fails (a force-push
366
+ // to a head whose blocks are gone).
367
+ // ponytail: relations read whole; diff their targets too when a big corpus declares one.
368
+ const diff = was?.head && !schema.relations?.length && fangorn.engine?.repoDiff
369
+ ? await retry(() => fangorn.engine.repoDiff(was.head, head)).catch((e) => { log(`${domain}: diff from ${was.head} failed (${e.message}); reading it whole`); return null; })
370
+ : null;
371
+ const got = diff?.superseded ? diff.puts : (await retry(() => fangorn.readRepo(publisher, repo))).contents.records;
349
372
  // `open`: a private app's rows are sealed on chain (x402.js's sealRow); the Worker opens them here.
350
- const records = new Map(await Promise.all(contents.records.filter((r) => r.payload && typeof r.payload === "object")
373
+ const records = new Map(await Promise.all(got.filter((r) => r.payload && typeof r.payload === "object")
351
374
  .map(async (r) => [r.cid, { id: r.id, fields: { ...(await open(r.payload)), entityType: r.type } }])));
352
375
  linkRelations(records, schema);
353
376
  const fieldsOf = (cid) => records.get(cid).fields;
354
377
 
355
378
  if (rebake) await store.del(dir); // old shards would stay reachable
356
- const had = await loadDomain(store, dir);
379
+ // Append only: the diff replaced nothing, so no row already served changes, and the 50k of them
380
+ // are left unread. Only the shards saved since the last head (`ahead`, a killed run's checkpoints)
381
+ // are read, to skip what they hold. A removal, an edit, a rebake or a coverage refit reads all.
382
+ // Rows in `ahead` are already counted, and come back among the puts of a diff from the old head.
383
+ const aheadRows = (was?.shards ?? []).filter((x) => was.ahead?.includes(x.file)).reduce((n, x) => n + x.count, 0);
384
+ const append = !!was && !!diff?.superseded && !diff.superseded.length && !was.tombstones?.length
385
+ && (was.count ?? 0) + diff.puts.length - aheadRows < COVERAGE_REFIT * (was.coverage?.fit_at ?? 0);
386
+ const had = await loadDomain(store, dir, append ? was.ahead ?? [] : null);
357
387
  const made = had.manifest?.embedder ?? (had.manifest ? { runtime: "fastembed", dtype: "fp32" } : null);
358
388
  // Same model and dtype is the same encoder, whatever ran it: q8 on CPU, CUDA and WASM agree to
359
389
  // ~0.98-0.99 cosine, fp32 against q8 noticeably less.
@@ -364,10 +394,11 @@ async function publishDomain({ fangorn, store, schema, schemaHash, publisher, re
364
394
  const dead = new Set(had.manifest?.tombstones ?? []);
365
395
  const live = (id) => had.rows.has(id) && !dead.has(id);
366
396
  const fresh = [...records.keys()].filter((id) => !live(id));
367
- const gone = [...had.rows.keys()].filter((id) => live(id) && !records.has(id));
397
+ // From a diff, `records` holds only what changed: what is gone is what it superseded.
398
+ const gone = diff?.superseded ? diff.superseded.filter(live) : [...had.rows.keys()].filter((id) => live(id) && !records.has(id));
368
399
  // A row already served whose links changed (its matter came later, or moved): new fields,
369
- // the same vector, so no embedding, only a rewrite.
370
- const relinked = [...had.rows.keys()].filter((id) => live(id) && records.has(id)
400
+ // the same vector, so no embedding, only a rewrite. Only relations relink, and they read whole.
401
+ const relinked = diff?.superseded ? [] : [...had.rows.keys()].filter((id) => live(id) && records.has(id)
371
402
  && JSON.stringify(had.rows.get(id).fields) !== JSON.stringify(fieldsOf(id)));
372
403
  for (const id of relinked) had.rows.get(id).fields = fieldsOf(id);
373
404
 
@@ -383,6 +414,34 @@ async function publishDomain({ fangorn, store, schema, schemaHash, publisher, re
383
414
  }
384
415
  }
385
416
 
417
+ const manifest = had.manifest ?? { name: domain, description: "", count: 0, dim: EMBED_DIM, model: EMBED_MODEL,
418
+ distance: "Cosine", embedder, filter: { owner: [publisher], repo: [repo] }, shards: [], tombstones: [] };
419
+ // Pages and R2 serve files of any size, but a reader holds a shard whole; 52k Steam games
420
+ // gzipped to 28 MiB in one. ponytail: split by row count (~550 B a row gzipped).
421
+ const writeShard = async (all) => {
422
+ const files = [];
423
+ for (let i = 0; i < all.length; i += shardRows) {
424
+ const ls = all.slice(i, i + shardRows);
425
+ const gz = gzipSync(`${ls.join("\n")}\n`, { level: 9 });
426
+ const digest = sha256(gz);
427
+ const file = `shard-${String(manifest.shards.length).padStart(4, "0")}-${digest.slice(0, 12)}.ndjson.gz`;
428
+ await store.put(`${dir}/shards/${file}`, gz);
429
+ manifest.shards.push({ file, count: ls.length, bytes: gz.length, sha256: digest });
430
+ files.push(file);
431
+ }
432
+ return files;
433
+ };
434
+ // What is embedded so far, served now under the old head: a run killed later (CPU, wall time:
435
+ // no exception, no `finally`) loses at most CHECKPOINT rows, and the next run embeds only the rest.
436
+ const save = async () => {
437
+ manifest.ahead = [...(manifest.ahead ?? []), ...await writeShard(lines)];
438
+ const rows = lines.map((l) => JSON.parse(l));
439
+ for (const r of rows) { had.rows.set(r.track_id, r); dead.delete(r.track_id); }
440
+ lines.length = 0;
441
+ manifest.head = had.manifest?.head ?? null;
442
+ manifest.schema_hash = schemaHash;
443
+ await applySpec(store, dir, manifest, schema, had.rows, dead, rolesOf, append ? rows : null);
444
+ };
386
445
  let n = 0, stopped = null;
387
446
  const lines = [];
388
447
  // 32 at a time: what an encoder batches (embed.js, a GPU, the Worker's AI binding).
@@ -400,39 +459,26 @@ async function publishDomain({ fangorn, store, schema, schemaHash, publisher, re
400
459
  }
401
460
  if (Math.floor((n + ids.length) / 1000) > Math.floor(n / 1000)) log(`${domain}: embedded ${n + ids.length}/${fresh.length}`);
402
461
  n += ids.length;
462
+ if (lines.length >= CHECKPOINT && n < fresh.length) await save();
403
463
  }
404
- const manifest = had.manifest ?? { name: domain, description: "", count: 0, dim: EMBED_DIM, model: EMBED_MODEL,
405
- distance: "Cosine", embedder, filter: { owner: [publisher], repo: [repo] }, shards: [], tombstones: [] };
406
464
  // Unfinished: the old head stays, so the next run sees a head to catch up to and embeds only what is missing.
407
465
  manifest.head = stopped ? (had.manifest?.head ?? null) : head;
408
466
  manifest.schema_hash = schemaHash;
467
+ if (!stopped) delete manifest.ahead; // the head is taken: everything is behind it
409
468
  if (!fresh.length && !gone.length && !relinked.length && had.manifest && !rebake) {
410
- await applySpec(store, dir, manifest, schema, had.rows, dead); // a schema change alone still lands
469
+ await applySpec(store, dir, manifest, schema, had.rows, dead, new Map(), append ? [] : null); // a schema change alone still lands
411
470
  return { added: 0, removed: 0 };
412
471
  }
413
472
 
414
- // Pages and R2 serve files of any size, but a reader holds a shard whole; 52k Steam games
415
- // gzipped to 28 MiB in one. ponytail: split by row count (~550 B a row gzipped).
416
- const writeShard = async (all) => {
417
- for (let i = 0; i < all.length; i += shardRows) {
418
- const ls = all.slice(i, i + shardRows);
419
- const gz = gzipSync(`${ls.join("\n")}\n`, { level: 9 });
420
- const digest = sha256(gz);
421
- const file = `shard-${String(manifest.shards.length).padStart(4, "0")}-${digest.slice(0, 12)}.ndjson.gz`;
422
- await store.put(`${dir}/shards/${file}`, gz);
423
- manifest.shards.push({ file, count: ls.length, bytes: gz.length, sha256: digest });
424
- }
425
- };
426
473
  if (stopped) {
427
- await writeShard(lines);
428
- for (const l of lines) { const r = JSON.parse(l); had.rows.set(r.track_id, r); dead.delete(r.track_id); }
429
- await applySpec(store, dir, manifest, schema, had.rows, dead, rolesOf);
474
+ await save();
430
475
  log(`${domain}: stopped at ${n}/${fresh.length} (${stopped.message}); the rest on the next run`);
431
476
  return { added: n, removed: 0, partial: true };
432
477
  }
478
+ const last = lines.map((l) => JSON.parse(l));
433
479
  if (lines.length) {
434
480
  await writeShard(lines);
435
- for (const l of lines) { const r = JSON.parse(l); had.rows.set(r.track_id, r); dead.delete(r.track_id); }
481
+ for (const r of last) { had.rows.set(r.track_id, r); dead.delete(r.track_id); }
436
482
  }
437
483
  for (const id of gone) dead.add(id);
438
484
  // A tombstone hides a row from readers, but its shard still serves the bytes. A record
@@ -441,6 +487,8 @@ async function publishDomain({ fangorn, store, schema, schemaHash, publisher, re
441
487
  // files are deleted. No re-embedding: the vectors are already in the rows.
442
488
  // ponytail: rewrites the whole domain on every removal; compact past a threshold if domains get big.
443
489
  if (dead.size || relinked.length) {
490
+ // A compaction rewrites `had.rows` as the whole domain, which append mode never loaded.
491
+ if (append) throw new Error(`${domain}: append mode reached a compaction; nothing written past the new shard`);
444
492
  for (const s of manifest.shards) await store.del(`${dir}/shards/${s.file}`);
445
493
  manifest.shards = [];
446
494
  for (const id of dead) had.rows.delete(id);
@@ -449,16 +497,19 @@ async function publishDomain({ fangorn, store, schema, schemaHash, publisher, re
449
497
  }
450
498
  manifest.tombstones = [...dead].sort();
451
499
  manifest.created_at = Math.floor(Date.now() / 1000);
452
- await applySpec(store, dir, manifest, schema, had.rows, dead, rolesOf);
500
+ await applySpec(store, dir, manifest, schema, had.rows, dead, rolesOf, append ? last : null);
453
501
  log(`${domain}: +${fresh.length} embedded, -${gone.length} removed, ${relinked.length} relinked, ${manifest.count} live`);
454
502
  return { added: fresh.length, removed: gone.length, ...(relinked.length ? { relinked: relinked.length } : {}) };
455
503
  }
456
504
 
457
505
  /** Counts, types, roles, description, presentation, coverage and the hosts its media role
458
- * links to (what a Worker may show inline, see site/worker.js) from what the domain holds. */
459
- async function applySpec(store, dir, manifest, schema, rows, dead, guessed = new Map()) {
460
- const liveRows = [...rows.values()].filter((r) => !dead.has(r.track_id));
461
- const types = {};
506
+ * links to (what a Worker may show inline, see site/worker.js) from what the domain holds.
507
+ * `added`: append mode, where `rows` is not the whole domain: fold these new rows into the
508
+ * manifest's totals instead of recounting. Coverage is left as fitted (publishDomain appends only
509
+ * while no refit is due). ponytail: hosts only grow on append; a removal recounts them. */
510
+ async function applySpec(store, dir, manifest, schema, rows, dead, guessed = new Map(), added = null) {
511
+ const liveRows = added ?? [...rows.values()].filter((r) => !dead.has(r.track_id));
512
+ const types = added ? Object.fromEntries((manifest.entity_types ?? []).map((e) => [e.type, e.count])) : {};
462
513
  for (const r of liveRows) types[r.fields?.entityType] = (types[r.fields?.entityType] ?? 0) + 1;
463
514
  const tags = Object.entries(types).sort((a, b) => b[1] - a[1]).map(([t]) => t);
464
515
  // Compare with what is stored, not with the manifest as it arrived: publishDomain has already
@@ -466,20 +517,20 @@ async function applySpec(store, dir, manifest, schema, rows, dead, guessed = new
466
517
  // the old manifest naming deleted shards.
467
518
  const before = JSON.stringify(await readJson(store, `${dir}/manifest`, null));
468
519
 
469
- manifest.count = liveRows.length;
520
+ manifest.count = added ? (manifest.count ?? 0) + added.length : liveRows.length;
470
521
  manifest.entity_types = tags.map((t) => ({ type: t, count: types[t] }));
471
522
  const spec = domainSpec(schema, tags);
472
- const fields = [...new Set(liveRows.slice(0, 500).flatMap((r) => Object.keys(r.fields ?? {})))].sort();
523
+ const fields = [...new Set([...(added ? manifest.role_map?.fields ?? [] : []), ...liveRows.slice(0, 500).flatMap((r) => Object.keys(r.fields ?? {}))])].sort();
473
524
  manifest.role_map = { ...(spec?.role_map ?? manifest.role_map ?? guessed.values().next().value ?? completeRoles()), fields };
474
525
  if (spec?.description) manifest.description = spec.description;
475
526
  if (spec && Object.keys(spec.presentation).length) manifest.presentation = spec.presentation;
476
527
  const media = [manifest.role_map.media ?? []].flat();
477
- manifest.link_hosts = [...new Set(liveRows.flatMap((r) => media.map((m) => r.fields?.[m]))
528
+ manifest.link_hosts = [...new Set([...(added ? manifest.link_hosts ?? [] : []), ...liveRows.flatMap((r) => media.map((m) => r.fields?.[m]))
478
529
  .filter((u) => typeof u === "string" && u.startsWith("https://"))
479
- .map((u) => { try { return new URL(u).hostname; } catch { return null; } }).filter(Boolean))].sort();
530
+ .map((u) => { try { return new URL(u).hostname; } catch { return null; } })].filter(Boolean))].sort();
480
531
 
481
532
  const cov = manifest.coverage;
482
- if (liveRows.length && (!cov || liveRows.length >= COVERAGE_REFIT * (cov.fit_at ?? 0))) {
533
+ if (!added && liveRows.length && (!cov || liveRows.length >= COVERAGE_REFIT * (cov.fit_at ?? 0))) {
483
534
  manifest.coverage = { ...fitCoverage(liveRows.map((r) => unpackVec(r.v))), fit_at: liveRows.length };
484
535
  }
485
536
  if (JSON.stringify(manifest) !== before) await writeJson(store, `${dir}/manifest`, manifest);
@@ -617,6 +668,49 @@ if (typeof process !== "undefined" && import.meta.url === `file://${process.argv
617
668
  eq((await publishView({ fangorn, app: APP, schema, out: big, repos: ["big"], embedBatch: capped, log: () => {} }))[bd],
618
669
  { added: 48, removed: 0 }, "the next run embeds only the rest");
619
670
  eq(manifestOf(big, bd).count, 80, "and serves all of it");
671
+ // Killed partway (a Worker over its CPU or wall time: no exception, no return): the last
672
+ // checkpoint is served, and the next run embeds only what came after it.
673
+ chain[BIG] = { records: Array.from({ length: CHECKPOINT + 100 }, (_, i) => ({ id: `k${i}`, cid: `kill${i}`, type: "shop.item.v1", payload: { sku: `k${i}`, name: `Kept ${i}` } })) };
674
+ let left = CHECKPOINT + 64;
675
+ const dies = (ts) => (left -= ts.length) < 0 ? new Promise(() => {}) : Promise.all(ts.map(embed));
676
+ publishView({ fangorn, app: APP, schema, out: big, repos: ["big"], embedBatch: dies, log: () => {} });
677
+ for (let i = 0; i < 200 && manifestOf(big, bd).count < CHECKPOINT; i++) await new Promise((ok) => setTimeout(ok, 10));
678
+ eq((await publishView({ fangorn, app: APP, schema, out: big, repos: ["big"], embedBatch: capped, log: () => {} }))[bd],
679
+ { added: 100, removed: 80 }, "a killed run resumes from its last checkpoint");
680
+ // A built domain whose head moves reads only the diff: 10 new tracks on top of thousands
681
+ // never read the thousands again, and a removal or an edit drops the version it replaced.
682
+ const whole = fangorn.reads;
683
+ chain[BIG].records.push(...Array.from({ length: 10 }, (_, i) => ({ id: `n${i}`, cid: `next${i}`, type: "shop.item.v1", payload: { sku: `n${i}`, name: `New ${i}` } })));
684
+ chain[BIG].records.splice(0, 1, { ...chain[BIG].records[0], cid: "kill0-v2", payload: { sku: "k0", name: "Kept 0, renamed" } });
685
+ chain[BIG].records.splice(1, 1);
686
+ eq([(await publishView({ fangorn, app: APP, schema, out: big, repos: ["big"], embedBatch: capped, log: () => {} }))[bd], fangorn.reads - whole],
687
+ [{ added: 11, removed: 2 }, 0], "a moved head reads only what changed");
688
+ eq(manifestOf(big, bd).count, CHECKPOINT + 100 + 10 - 1, "and serves the repo as it now stands");
689
+ // Only additions: the rows already served are not read at all, only a delta shard is written.
690
+ const disk = fsStore(big), opened = [];
691
+ const watched = { ...disk, get: (p) => { opened.push(p); return disk.get(p); } };
692
+ const n0 = manifestOf(big, bd).count, shards0 = manifestOf(big, bd).shards.length;
693
+ chain[BIG].records.push(...Array.from({ length: 10 }, (_, i) => ({ id: `m${i}`, cid: `more${i}`, type: "shop.item.v1", payload: { sku: `m${i}`, name: `More ${i}` } })));
694
+ eq((await publishView({ fangorn, app: APP, schema, store: watched, repos: ["big"], embedBatch: capped, log: () => {} }))[bd],
695
+ { added: 10, removed: 0 }, "an append embeds only the new records");
696
+ eq(opened.filter((p) => p.includes("/shards/")), [], "and reads no shard it already served");
697
+ const after = manifestOf(big, bd);
698
+ eq([after.count, after.shards.length, after.entity_types[0].count, after.ahead], [n0 + 10, shards0 + 1, n0 + 10, undefined], "counts, types and one delta shard, with the head taken");
699
+ eq((await liveFields(big)).length, n0 + 10, "and every row is still served");
700
+ // An append killed after a checkpoint: the next run reads only that checkpoint's shard, and
701
+ // embeds only what came after it, never the checkpointed rows a second time.
702
+ const n1 = manifestOf(big, bd).count, fit = manifestOf(big, bd).coverage.fit_at, extra = CHECKPOINT + 2;
703
+ if (n1 + extra >= COVERAGE_REFIT * fit) throw new Error(`test setup: ${n1} + ${extra} rows would refit coverage (fit at ${fit}), not append`);
704
+ chain[BIG].records.push(...Array.from({ length: extra }, (_, i) => ({ id: `a${i}`, cid: `app${i}`, type: "shop.item.v1", payload: { sku: `a${i}`, name: `Appended ${i}` } })));
705
+ left = CHECKPOINT + 1;
706
+ publishView({ fangorn, app: APP, schema, out: big, repos: ["big"], embedBatch: dies, log: () => {} });
707
+ for (let i = 0; i < 300 && !manifestOf(big, bd).ahead; i++) await new Promise((ok) => setTimeout(ok, 10));
708
+ eq([manifestOf(big, bd).count, manifestOf(big, bd).ahead?.length], [n1 + CHECKPOINT, 1], "a killed append serves its checkpoint, named as ahead of the head");
709
+ opened.length = 0;
710
+ eq((await publishView({ fangorn, app: APP, schema, store: watched, repos: ["big"], embedBatch: capped, log: () => {} }))[bd],
711
+ { added: 2, removed: 0 }, "and the next run embeds only what came after it");
712
+ eq([opened.filter((p) => p.includes("/shards/")).length, manifestOf(big, bd).count, (await liveFields(big)).length],
713
+ [1, n1 + extra, n1 + extra], "reading only the checkpoint's shard, and serving each row once");
620
714
  delete chain[BIG];
621
715
  rmSync(big, { recursive: true, force: true });
622
716
  eq((await publishView({ fangorn, app: APP, schema, out, embed, rebake: true, log: () => {} }))[d],
@@ -6,7 +6,7 @@
6
6
  "deploy": "wrangler deploy"
7
7
  },
8
8
  "dependencies": {
9
- "@fangorn-network/westmarch": "2026.10.2-2.0-dev",
9
+ "@fangorn-network/westmarch": "2026.10.27.2",
10
10
  "@huggingface/transformers": "^4.3.1",
11
11
  "wrangler": "^4.83.0"
12
12
  }
@@ -1 +0,0 @@
1
- import{$ as e,D as t}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as n}from"./jsx-runtime-CndCZlyt.js";import{t as r}from"./createLucideIcon-BsERoFTA.js";import{n as i}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{t as a}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";var o=r(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),s=n(),c=({title:e=`Account not found`,subtitle:t,appName:n=`this app`,ctaText:r=`Try logging in again`,onRetry:i})=>(0,s.jsx)(a,{title:e,subtitle:t||`Please try logging in again or go to ${n} to create an account.`,icon:o,iconVariant:`warning`,primaryCta:{label:r,onClick:i},watermark:!0}),l={component:()=>{let{navigate:n,setModalData:r,data:a}=i(),o=t(),{getAuthMeta:l,client:u}=e();return(0,s.jsx)(c,{appName:o?.name,onRetry:()=>{let e=l();r({...a,login:{...a?.login,...e?.disableSignup?{disableSignup:!0}:{}}}),u?.authFlow&&(u.authFlow=void 0),n(`LandingScreen`)}})}};export{l as AccountNotFoundScreen,l as default,c as AccountNotFoundScreenView};
@@ -1,31 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{D as t}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as n}from"./jsx-runtime-CndCZlyt.js";import{t as r}from"./react-BfYA1q0G.js";import{n as i,t as a}from"./landmark-BZPqMFEf.js";import{t as o}from"./wallet-BNI12IYk.js";import{n as s}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c}from"./Loader-UAZqxsnw-DJEVblm1.js";import{t as l}from"./index-CWARkn2w-DxuckIFn.js";import{n as u,t as d}from"./GooglePay-B53WnudL-BGiVpB8y.js";import{n as f,r as p,t as m}from"./isPaymentRequestAvailable-Bq1cemEn-Cjf3l05I.js";import{r as h}from"./styles-DVyDvTdj-CjsWqAld.js";import{c as g,l as _,p as v}from"./styles-hslXy6xG-D5QHIrJU.js";import{l as y,y as b}from"./use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js";var x=n(),S=e(r(),1),C={component:()=>{let e=b(),{onUserCloseViaDialogOrKeybindRef:n}=s(),r=t(),c=(0,S.useRef)(!1),C=m(f),O=m(p),[k,A]=(0,S.useState)(!1),j=C?`APPLE_PAY`:!1===C&&O?`GOOGLE_PAY`:null,M=!0===C||!1===C&&O!==void 0,N=!e?.startFiat||M||k;(0,S.useEffect)((()=>{let e=window.setTimeout((()=>A(!0)),2e3);return()=>window.clearTimeout(e)}),[]),(0,S.useEffect)((()=>{e&&(c.current=!1)}),[e]);let P=(0,S.useRef)(null);(0,S.useEffect)((()=>{e&&!e.error&&N&&P.current!==e&&(P.current=e,e.recordRowsViewed?.({walletPay:e.startFiat?j:void 0,walletPayTimedOut:e.startFiat?!M:void 0}))}),[N,e,j,M]);let F=(0,S.useCallback)((async()=>{!c.current&&e&&(c.current=!0,y(),await e.onCancel())}),[e]);if((0,S.useEffect)((()=>(n.current=F,()=>{n.current===F&&(n.current=null)})),[F,n]),!e)return null;if(e.error)return(0,x.jsx)(g,{title:`Unable to add funds`,subtitle:e.error,showClose:!0,onClose:F,primaryCta:{label:`Close`,onClick:F}});let I=async t=>{c.current||(c.current=!0,await e.startFiat?.(t))};return(0,x.jsx)(g,{title:`Pay with`,subtitle:`Debit cards typically have higher success rates than credit cards, even with Apple Pay or Google Pay.`,showClose:!0,onClose:F,children:N?(0,x.jsxs)(h,{style:{marginTop:`1rem`},$colorScheme:r.appearance.palette.colorScheme,children:[e.startFiat&&(0,x.jsxs)(_,{onClick:()=>I(`CREDIT_DEBIT_CARD`),children:[(0,x.jsx)(T,{children:(0,x.jsx)(i,{})}),(0,x.jsxs)(E,{children:[(0,x.jsx)(v,{children:`Debit or credit card`}),(0,x.jsx)(D,{children:`Less than 10 minutes`})]})]}),e.startFiat&&j===`APPLE_PAY`&&(0,x.jsxs)(_,{onClick:()=>I(`APPLE_PAY`),children:[(0,x.jsx)(T,{children:(0,x.jsx)(u,{width:18,height:18})}),(0,x.jsxs)(E,{children:[(0,x.jsx)(v,{children:`Apple Pay`}),(0,x.jsx)(D,{children:`Less than 10 minutes`})]})]}),e.startFiat&&j===`GOOGLE_PAY`&&(0,x.jsxs)(_,{onClick:()=>I(`GOOGLE_PAY`),children:[(0,x.jsx)(T,{children:(0,x.jsx)(d,{width:18,height:18})}),(0,x.jsxs)(E,{children:[(0,x.jsx)(v,{children:`Google Pay`}),(0,x.jsx)(D,{children:`Less than 10 minutes`})]})]}),e.startFiat&&(0,x.jsxs)(_,{onClick:()=>I(`BANK`),children:[(0,x.jsx)(T,{children:(0,x.jsx)(a,{})}),(0,x.jsxs)(E,{children:[(0,x.jsx)(v,{children:`Bank account`}),(0,x.jsx)(D,{children:`1–2 days`})]})]}),e.startCrypto&&(0,x.jsxs)(_,{onClick:async()=>{c.current||(c.current=!0,await e.startCrypto?.())},children:[(0,x.jsx)(T,{children:(0,x.jsx)(o,{})}),(0,x.jsxs)(E,{children:[(0,x.jsx)(v,{children:`Crypto wallet or exchange`}),(0,x.jsx)(D,{children:`Instant`})]})]})]}):(0,x.jsx)(w,{children:(0,x.jsx)(l,{size:`50px`})})})}},w=c.div`
2
- display: flex;
3
- justify-content: center;
4
- align-items: center;
5
- margin-top: 1rem;
6
- min-height: 8rem;
7
- `,T=c.span`
8
- width: 2rem;
9
- height: 2rem;
10
- border-radius: var(--privy-border-radius-full);
11
- background-color: var(--privy-color-background-2);
12
- color: var(--privy-color-icon-muted);
13
- display: flex;
14
- align-items: center;
15
- justify-content: center;
16
- flex-shrink: 0;
17
- overflow: hidden;
18
-
19
- svg {
20
- width: 1.125rem;
21
- height: 1.125rem;
22
- }
23
- `,E=c.span`
24
- display: flex;
25
- flex-direction: column;
26
- align-items: flex-start;
27
- `,D=c.span`
28
- font-size: 0.875rem;
29
- line-height: 1.25rem;
30
- color: var(--privy-color-foreground-3);
31
- `;export{C as AddFundsSelectionScreen,C as default};
@@ -1,17 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{t}from"./jsx-runtime-CndCZlyt.js";import{t as n}from"./react-BfYA1q0G.js";import{t as r}from"./check-DHnllI8N.js";import{t as i}from"./copy-DMOX_yn7.js";import{c as a}from"./Loader-UAZqxsnw-DJEVblm1.js";import{o}from"./ModalFooter-BCuEK_nz-C_71qsaz.js";import{p as s}from"./storage-Ufl800Ne-1qCR2JMO.js";var c=t(),l=e(n(),1),u=({address:e,showCopyIcon:t,url:n,className:a})=>{let[u,m]=(0,l.useState)(!1);function h(t){t.stopPropagation(),navigator.clipboard.writeText(e).then((()=>m(!0))).catch(console.error)}return(0,l.useEffect)((()=>{if(u){let e=setTimeout((()=>m(!1)),3e3);return()=>clearTimeout(e)}}),[u]),(0,c.jsxs)(d,n?{children:[(0,c.jsx)(p,{title:e,className:a,href:`${n}/address/${e}`,target:`_blank`,children:s(e)}),t&&(0,c.jsx)(o,{onClick:h,size:`sm`,style:{gap:`0.375rem`},children:(0,c.jsxs)(c.Fragment,u?{children:[`Copied`,(0,c.jsx)(r,{size:16})]}:{children:[`Copy`,(0,c.jsx)(i,{size:16})]})})]}:{children:[(0,c.jsx)(f,{title:e,className:a,children:s(e)}),t&&(0,c.jsx)(o,{onClick:h,size:`sm`,style:{gap:`0.375rem`,fontSize:`14px`},children:(0,c.jsxs)(c.Fragment,u?{children:[`Copied`,(0,c.jsx)(r,{size:14})]}:{children:[`Copy`,(0,c.jsx)(i,{size:14})]})})]})},d=a.span`
2
- display: inline-flex;
3
- align-items: center;
4
- gap: 0.5rem;
5
- `,f=a.span`
6
- font-size: 14px;
7
- font-weight: 500;
8
- color: var(--privy-color-foreground);
9
- `,p=a.a`
10
- font-size: 14px;
11
- color: var(--privy-color-foreground);
12
- text-decoration: none;
13
-
14
- &:hover {
15
- text-decoration: underline;
16
- }
17
- `;export{u as t};
@@ -1,6 +0,0 @@
1
- import"./rolldown-runtime-Bjp52BOI.js";import{$ as e,D as t,i as n}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as r}from"./jsx-runtime-CndCZlyt.js";import{t as i}from"./react-BfYA1q0G.js";import{t as a}from"./createLucideIcon-BsERoFTA.js";import{t as o}from"./external-link-BBPG3rG7.js";import{n as s}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{c}from"./Loader-UAZqxsnw-DJEVblm1.js";import{l}from"./ModalFooter-BCuEK_nz-C_71qsaz.js";import{t as u}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";import{t as d}from"./shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BkAKsRNi.js";var f=a(`file-check`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m9 15 2 2 4-4`,key:`1grp1n`}]]),p=r();i();var m={component:()=>{let{user:r,logout:i}=n(),{onUserCloseViaDialogOrKeybindRef:a,setModalData:o,navigate:c}=s(),l=t(),{acceptTerms:u,closePrivyModal:f,createAnalyticsEvent:m}=e(),g=e=>{e?.preventDefault(),f({shouldCallAuthOnSuccess:!1}),i()};return a.current=g,(0,p.jsx)(h,{termsAndConditionsUrl:l?.legal.termsAndConditionsUrl,privacyPolicyUrl:l?.legal.privacyPolicyUrl,onAccept:async e=>{e?.preventDefault(),await u(),r&&d(r,l.embeddedWallets)?(o({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),m({eventName:`embedded_wallet_creation_failure_logout`,payload:{error:e,screen:`AffirmativeConsentScreen`}}),i()},callAuthOnSuccessOnClose:!0}}),c(`EmbeddedWalletOnAccountCreateScreen`)):f()},onDecline:g})}},h=({termsAndConditionsUrl:e,privacyPolicyUrl:t,onAccept:n,onDecline:r,title:i=`One last step`,subtitle:a=`By signing up, you agree to our terms and privacy policy.`})=>(0,p.jsx)(u,{title:i,subtitle:a,icon:f,primaryCta:{label:`Accept`,onClick:n},secondaryCta:{label:`No thanks`,onClick:r},watermark:!0,children:(e||t)&&(0,p.jsxs)(g,{children:[e&&(0,p.jsxs)(l,{variant:`muted`,href:e,target:`_blank`,size:`lg`,style:{justifyContent:`space-between`},as:`a`,children:[`View Terms`,(0,p.jsx)(o,{width:16,height:16,strokeWidth:2.25})]}),t&&(0,p.jsxs)(l,{variant:`muted`,href:t,target:`_blank`,size:`lg`,style:{justifyContent:`space-between`},as:`a`,children:[`View Privacy Policy`,(0,p.jsx)(o,{width:16,height:16,strokeWidth:2.25})]})]})}),g=c.div`
2
- display: flex;
3
- flex-direction: column;
4
- gap: 12px;
5
- margin-top: var(--screen-space);
6
- `;export{m as AffirmativeConsentScreen,m as default,h as AffirmativeConsentScreenView};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-Bjp52BOI.js";import{D as e}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t}from"./jsx-runtime-CndCZlyt.js";import{t as n}from"./react-BfYA1q0G.js";import{t as r}from"./lock-DyN_c-ud.js";import{n as i}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{t as a}from"./ScreenLayout-OwaQQcxH-cfOTmyl0.js";import{t as o}from"./safe-url-D7SRPu33-CkMedGro.js";var s=t();n();var c=({title:e=`You don't have access to this app`,subtitle:t=`Have you been invited?`,ctaText:n=`Try another account`,ctaLink:i,onCtaClick:c})=>(0,s.jsx)(a,{title:e,subtitle:t,icon:r,iconVariant:`warning`,primaryCta:{label:n,onClick:()=>{let e=o(i);e?window.open(e,`_blank`,`noopener,noreferrer`):c?.()}},watermark:!0}),l={component:()=>{let{navigate:t}=i(),n=e(),r=n?.allowlistConfig.errorTitle||`You don't have access to this app`,a=n?.allowlistConfig.errorDetail||`Have you been invited?`,o=n?.allowlistConfig.errorCtaText||`Try another account`,l=n?.allowlistConfig.errorCtaLink;return(0,s.jsx)(c,{title:r,subtitle:a,ctaText:o,ctaLink:l??void 0,onCtaClick:()=>{t(`LandingScreen`)}})}};export{l as AllowlistRejectionScreen,l as default,c as AllowlistRejectionScreenView};