decocms 4.138.9 → 4.139.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-5dZO0VsC.js → AlertCircle-agH_xUKO.js} +1 -1
- package/dist/client/assets/{AreaChart-CKUICmds.js → AreaChart-tJ_946zl.js} +1 -1
- package/dist/client/assets/{ArrowUp-mUAoF_Um.js → ArrowUp-DgCiVZ7H.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-umvnbcf1.js → ArrowUpRight-BJkhBMxF.js} +1 -1
- package/dist/client/assets/{Check-CjZ2YvcO.js → Check-NzXohhXn.js} +1 -1
- package/dist/client/assets/{CheckCircle-BV1cC1-m.js → CheckCircle-KJukqbHC.js} +1 -1
- package/dist/client/assets/{ChevronDown-DQIwwY_i.js → ChevronDown-CjRKvEV_.js} +1 -1
- package/dist/client/assets/{ChevronRight-Bu8pellm.js → ChevronRight-oLwkS0C9.js} +1 -1
- package/dist/client/assets/{ChevronUp-C_YT2J9B.js → ChevronUp-BNofsXhV.js} +1 -1
- package/dist/client/assets/{Copy01-X8PNHEVS.js → Copy01-DF_RmFpk.js} +1 -1
- package/dist/client/assets/{DotsVertical-0QOEQW2z.js → DotsVertical-Dg9mD1TM.js} +1 -1
- package/dist/client/assets/{Eye-BxYWt6ZW.js → Eye-074CbS5x.js} +1 -1
- package/dist/client/assets/{FilterLines-csZUfNiZ.js → FilterLines-DOUrO8iA.js} +1 -1
- package/dist/client/assets/{HardDrive-BaNVeWcU.js → HardDrive-YAB0gbo7.js} +1 -1
- package/dist/client/assets/{Key01-DEPW9gc9.js → Key01-FT4P1ICh.js} +1 -1
- package/dist/client/assets/{LayoutLeft-ZV4gDMvx.js → LayoutLeft-CianKDZt.js} +1 -1
- package/dist/client/assets/{LinkExternal01-gT4UtIHJ.js → LinkExternal01-Ci7WHM9y.js} +1 -1
- package/dist/client/assets/{LogOut01-BVHQgZnf.js → LogOut01-Dfz2FFhB.js} +1 -1
- package/dist/client/assets/{Monitor01-BSbZzgzc.js → Monitor01-BOtRJQc6.js} +1 -1
- package/dist/client/assets/{Palette-Dqy0vo-r.js → Palette-C96wi9Uj.js} +1 -1
- package/dist/client/assets/{Play-Ca4rnNLC.js → Play-7H-8j7sN.js} +1 -1
- package/dist/client/assets/{Plus-CMY6WqTt.js → Plus-DdFOfZrY.js} +1 -1
- package/dist/client/assets/{SearchLg-BAV-JbH2.js → SearchLg-sTqvv3op.js} +1 -1
- package/dist/client/assets/{SearchMd-BgwZPQnc.js → SearchMd-Caczrxgn.js} +1 -1
- package/dist/client/assets/{Settings02-2tduvP6s.js → Settings02-CXgoZFIA.js} +1 -1
- package/dist/client/assets/{Shield01-B9nvaexi.js → Shield01-DnO2vYZc.js} +1 -1
- package/dist/client/assets/{Star01-BUCi8L18.js → Star01-Bx9OMgvR.js} +1 -1
- package/dist/client/assets/{Stars01-DZxCyBm1.js → Stars01-BPHpBr_r.js} +1 -1
- package/dist/client/assets/{Stars02-BuDaVkLi.js → Stars02-B0Ik0owV.js} +1 -1
- package/dist/client/assets/{Sun-CIh1Zd2-.js → Sun-DwMODaiS.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CDJGlgy0.js → SwitchHorizontal01-asOwc0DB.js} +1 -1
- package/dist/client/assets/{Tool01-BCIMb6oj.js → Tool01-DbmV2Gbe.js} +1 -1
- package/dist/client/assets/{Tool02-BHEBfH06.js → Tool02-OYuorXIk.js} +1 -1
- package/dist/client/assets/{Trash01-CDqZvSL2.js → Trash01-2ljMI36H.js} +1 -1
- package/dist/client/assets/{TrendUp01-C7H5-W-q.js → TrendUp01-BckBh0ap.js} +1 -1
- package/dist/client/assets/{Upload01-LgJCD5zt.js → Upload01-DOuY9hNB.js} +1 -1
- package/dist/client/assets/{User01-BQvcBnBV.js → User01-BCHQjc4I.js} +1 -1
- package/dist/client/assets/{Users01-BxmwwREM.js → Users01-BvOmEXO3.js} +1 -1
- package/dist/client/assets/{Users03-BM9rxxkX.js → Users03-uf_wbdge.js} +1 -1
- package/dist/client/assets/{X-DNX-19j7.js → X-DOmdDKx_.js} +1 -1
- package/dist/client/assets/{XCircle-DQ8Fi2Kb.js → XCircle-DIgqWeFB.js} +1 -1
- package/dist/client/assets/{XClose-59zLY4xu.js → XClose-Cr9iYJxD.js} +1 -1
- package/dist/client/assets/{Zap-q_wTQSIf.js → Zap-j-yMpSS3.js} +1 -1
- package/dist/client/assets/{ZapSquare-CH7shi4R.js → ZapSquare-cn5kuhNW.js} +1 -1
- package/dist/client/assets/{access-gate-z604n1sq.js → access-gate-0eUppXpZ.js} +1 -1
- package/dist/client/assets/{add-section-modal-DWvaYeFu.js → add-section-modal-A5IKb650.js} +1 -1
- package/dist/client/assets/{agent-icon-D1je81CZ.js → agent-icon-BdGIRyNa.js} +1 -1
- package/dist/client/assets/{agents-list-DcijbMld.js → agents-list-DyjpR2QU.js} +1 -1
- package/dist/client/assets/{ai-providers-BpPjrvI2.js → ai-providers-CdFdkZzR.js} +1 -1
- package/dist/client/assets/{alert-dialog-MgEKVWKl.js → alert-dialog-DEd6Kahy.js} +1 -1
- package/dist/client/assets/{alert-C7L0sVBV.js → alert-nTwu_6V1.js} +1 -1
- package/dist/client/assets/{app-editor-7cos_VPu.js → app-editor-gbs2Qt6T.js} +1 -1
- package/dist/client/assets/{auth-BKaTpxZw.js → auth-CT52vLHO.js} +1 -1
- package/dist/client/assets/{auth-catchall-B26xr6Ny.js → auth-catchall-BpoLz4SQ.js} +1 -1
- package/dist/client/assets/{auth-entry-DURpPK3w.js → auth-entry-BlF5RXu-.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B6wVgnRd.js → auth-split-layout-BrPMzbcX.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-C2GUeFbY.js → authenticate-and-persist-oauth-BBFbFe46.js} +1 -1
- package/dist/client/assets/{automation-list-row-DXlpz4N9.js → automation-list-row-CAvPcMa_.js} +1 -1
- package/dist/client/assets/{automation-runs-K_2C7hcx.js → automation-runs-CbNq635W.js} +1 -1
- package/dist/client/assets/{automations-DuLIvmnj.js → automations-Dovh7G9P.js} +1 -1
- package/dist/client/assets/{avatar-WvmlbIw_.js → avatar-DiFX_k5b.js} +1 -1
- package/dist/client/assets/{badge-EieIiNUW.js → badge-m4L18gdS.js} +1 -1
- package/dist/client/assets/{block-document-BoWidw9m.js → block-document-DHtG6n2T.js} +1 -1
- package/dist/client/assets/{brand-context-Na-Diaml.js → brand-context-DgjTbF-w.js} +1 -1
- package/dist/client/assets/{buckets-F9_eMkzE.js → buckets-DAMrxhpr.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BB2vy6Mo.js → bulk-category-panel-6O5IYnYl.js} +1 -1
- package/dist/client/assets/{calendar-BxUcC6fi.js → calendar-8tBQPJls.js} +1 -1
- package/dist/client/assets/{capability-load-error-BkHDz1Z7.js → capability-load-error-BLMGvFz-.js} +1 -1
- package/dist/client/assets/{card-Bnga6Rnb.js → card-DQxCQSI0.js} +1 -1
- package/dist/client/assets/{category-editor-nn9oijrG.js → category-editor-DCRr4BLn.js} +1 -1
- package/dist/client/assets/{chat-context-Co0T8k2S.js → chat-context-CrG6yz2N.js} +1 -1
- package/dist/client/assets/{checkbox-C8MNnjS1.js → checkbox-CC7beEPl.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DTmCJKa3.js → cli-auth-success-sEt9xuGR.js} +1 -1
- package/dist/client/assets/{collection-detail-D2i5_Ehy.js → collection-detail-6E8tTEYC.js} +1 -1
- package/dist/client/assets/{collection-display-button-DtVBISHY.js → collection-display-button-EITqm0kJ.js} +1 -1
- package/dist/client/assets/{collection-search-DZxH5pcH.js → collection-search-DDR63_RH.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CeWfYdYJ.js → collection-table-wrapper-Dd0WZYKy.js} +1 -1
- package/dist/client/assets/{collection-tabs-DQ05a0SD.js → collection-tabs-oKucjPoa.js} +1 -1
- package/dist/client/assets/{command-D1n3BjOC.js → command-lt6M6Jv0.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DqHGnFQw.js → commerce-onboarding-BTOjRD2p.js} +1 -1
- package/dist/client/assets/{companions-core-DWyHGoMs.js → companions-core-BTreXSMR.js} +1 -1
- package/dist/client/assets/{connect-OOyEMQ7n.js → connect-CT6gV-oq.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-CQAwz1q7.js → connect-desktop-dialog-BVhGJzzv.js} +1 -1
- package/dist/client/assets/{connection-Bfj6yjW5.js → connection-CXLPJdLz.js} +1 -1
- package/dist/client/assets/{connection-card-DpcxUwIn.js → connection-card-MKVBaYyL.js} +1 -1
- package/dist/client/assets/{connection-detail--MWcCyTp.js → connection-detail-DXk3Febd.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-C0kP97-J.js → connection-form-helpers-Cr_lYqtB.js} +1 -1
- package/dist/client/assets/{connections-DVeB9LLo.js → connections-YiHUoSQT.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BfcPcID3.js → decopilot-sse-pool-BNwAlroc.js} +1 -1
- package/dist/client/assets/{dialog-DULWawPh.js → dialog-TVPegtE-.js} +1 -1
- package/dist/client/assets/{domain-settings-D6GvlmoJ.js → domain-settings-CQ8IAta0.js} +1 -1
- package/dist/client/assets/{drawer-dlckSCHg.js → drawer-DGo4R-K1.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CfqyRLsU.js → dropdown-menu-CO4i66NS.js} +1 -1
- package/dist/client/assets/{empty-state-C_MHBMZb.js → empty-state-7_Knwzcf.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Cf27A7vT.js → extract-connection-data-DUNNwv-j.js} +1 -1
- package/dist/client/assets/{file-explorer-D1THYBVf.js → file-explorer-CggrVo8c.js} +1 -1
- package/dist/client/assets/{form-CsBrFFqy.js → form-ILVI3qWw.js} +1 -1
- package/dist/client/assets/{general-CmbE87LW.js → general-BqryWnE0.js} +1 -1
- package/dist/client/assets/{github-repo-picker-BvCfUK3X.js → github-repo-picker-xGmZg3eE.js} +1 -1
- package/dist/client/assets/{hooks-DO9Ds9ls.js → hooks-BIKJAmgC.js} +1 -1
- package/dist/client/assets/{index-mekBrtxV.js → index-0Un84yHS.js} +6 -6
- package/dist/client/assets/{index-BzjgAZiU.js → index-BnKPLeSJ.js} +1 -1
- package/dist/client/assets/{index-CjTv1voN.js → index-Bo9TKq1U.js} +1 -1
- package/dist/client/assets/{index-BMkpyx5D.js → index-BrNpwKKd.js} +1 -1
- package/dist/client/assets/{index-HyL0pVBb.js → index-C9a-nMMg.js} +1 -1
- package/dist/client/assets/{index-BFpR5Bog.js → index-Cu4ICyrq.js} +1 -1
- package/dist/client/assets/{index-ChDqqDir.js → index-DQ5YCZS4.js} +1 -1
- package/dist/client/assets/{index-DRwXb8sH.js → index-DWHfrQZ8.js} +3 -3
- package/dist/client/assets/{index-CVMEOnPq.js → index-D_52U8pw.js} +1 -1
- package/dist/client/assets/{index-Fjv09edY.js → index-X6eZhEJK.js} +1 -1
- package/dist/client/assets/{index-Dy5QDA5S.js → index-kdGr7Jnd.js} +3 -3
- package/dist/client/assets/{index-redirect-COewwOTO.js → index-redirect-DDCxgIgr.js} +1 -1
- package/dist/client/assets/{input-DveLDNob.js → input-8bfsCgR7.js} +1 -1
- package/dist/client/assets/{integration-icon-BIcv0kzN.js → integration-icon-C2bR-BTX.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-D0kltWuz.js → invite-member-dialog-Bbfj6kp-.js} +1 -1
- package/dist/client/assets/{label-CVVaONXK.js → label-qHU3xtVX.js} +1 -1
- package/dist/client/assets/{layout-D58fXXJ1.js → layout-B9DbFkFj.js} +1 -1
- package/dist/client/assets/{login-Cj_uEinG.js → login-BrYALH3U.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DXw4PP8J.js → mcp-oauth-Bm6eiVTe.js} +1 -1
- package/dist/client/assets/{members-qHP1LgJx.js → members-C4hhdQGU.js} +1 -1
- package/dist/client/assets/{monaco-editor-_ebJsdhe.js → monaco-editor-B5bJpSNq.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-D7yBGTPe.js → monitoring-stats-row-5bVvgY-r.js} +1 -1
- package/dist/client/assets/{multi-select-BUtPAw92.js → multi-select-B-ZZPHK-.js} +1 -1
- package/dist/client/assets/{oauth-callback-CVbsKc8Q.js → oauth-callback-CPrT-jpC.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-D4Io3VQe.js → oauth-callback-ai-provider-BLxHTMQQ.js} +1 -1
- package/dist/client/assets/{onboarding-BszyGn56.js → onboarding-BQxsSnlk.js} +1 -1
- package/dist/client/assets/{org-install-BzRWAuIe.js → org-install-ysc35L03.js} +1 -1
- package/dist/client/assets/{org-layout-DmO1GYBz.js → org-layout-cf4i4rse.js} +1 -1
- package/dist/client/assets/{organization-choice-VUoTntyI.js → organization-choice-C3rRp7kF.js} +1 -1
- package/dist/client/assets/{orgs-C2ylBk4d.js → orgs-BK6a_vnI.js} +1 -1
- package/dist/client/assets/{page-seo-form-mssN34iL.js → page-seo-form-BUi-cLLK.js} +1 -1
- package/dist/client/assets/{popover-DflT1PWi.js → popover-DDCmbFQa.js} +1 -1
- package/dist/client/assets/{post-editor-CL1lPARV.js → post-editor-CGlc8eLi.js} +1 -1
- package/dist/client/assets/{primitives-DNdFvgZT.js → primitives-Dy6mAMBR.js} +1 -1
- package/dist/client/assets/{profile-B3Rp74xJ.js → profile-jhFQ6j4m.js} +1 -1
- package/dist/client/assets/project-app-view-CLyiCbv6.js +1 -0
- package/dist/client/assets/record-editor-D0qwTIqn.js +1 -0
- package/dist/client/assets/{redirect-editor-Z_ajB4GB.js → redirect-editor-F_uiaeD2.js} +1 -1
- package/dist/client/assets/registry-CLihzhE4.js +2 -0
- package/dist/client/assets/{registry-layout-BB6nj7SJ.js → registry-layout-BRprIjbC.js} +1 -1
- package/dist/client/assets/{reports-eRbh1Kr4.js → reports-BvHFPDP6.js} +1 -1
- package/dist/client/assets/{require-capability-Bx_sx6OH.js → require-capability-B-Z3vyvj.js} +1 -1
- package/dist/client/assets/{required-auth-layout-Bj20XGyN.js → required-auth-layout-BVpbOo4l.js} +1 -1
- package/dist/client/assets/{reset-password-lfgBi5Jw.js → reset-password-LqqRxOjn.js} +1 -1
- package/dist/client/assets/{roles-TgMj4QKv.js → roles-BdqjVTjX.js} +1 -1
- package/dist/client/assets/{search-input-D5tsTyPx.js → search-input-DIQ4oDdC.js} +1 -1
- package/dist/client/assets/{secrets-6lhpxiFC.js → secrets-tN8eaPfn.js} +1 -1
- package/dist/client/assets/{sections-editor-CR7_jg5w.js → sections-editor-RrJpt4RP.js} +1 -1
- package/dist/client/assets/{select-C1VpFdd_.js → select-DMkrbtOJ.js} +1 -1
- package/dist/client/assets/{select-model-C9KGOr1b.js → select-model-DQuojyr6.js} +1 -1
- package/dist/client/assets/{self-tool-result-Bq5cTL0r.js → self-tool-result-cm-vuxOf.js} +1 -1
- package/dist/client/assets/{seo-editor-Bkh8TFmD.js → seo-editor-DCRc3P2V.js} +1 -1
- package/dist/client/assets/{settings-layout-B4Cuaykz.js → settings-layout-CZ5IkK_H.js} +1 -1
- package/dist/client/assets/{settings-section-UaQaDMHa.js → settings-section-CQ6ULbPB.js} +1 -1
- package/dist/client/assets/{shell-controls-Jm4NMHuC.js → shell-controls-CQlQW7QR.js} +1 -1
- package/dist/client/assets/{shell-layout-ZRMUfHxO.js → shell-layout-C33-Mnj8.js} +1 -1
- package/dist/client/assets/{sidebar-efvbbQAA.js → sidebar-8x2cD375.js} +1 -1
- package/dist/client/assets/{skeleton-BnxfR8Zf.js → skeleton-DrLDhLKy.js} +1 -1
- package/dist/client/assets/{sso-DNlwYGPm.js → sso-BLrN2u9K.js} +1 -1
- package/dist/client/assets/{store-ikncJ6Lj.js → store-Dyql9wjr.js} +1 -1
- package/dist/client/assets/store-registry-Bxh9RoRY.js +2 -0
- package/dist/client/assets/{studio-tools-DZuOp4Vx.js → studio-tools-CnuGNFsH.js} +1 -1
- package/dist/client/assets/{switch-Dq7fkcgW.js → switch-BX21sLJV.js} +1 -1
- package/dist/client/assets/{tab-id-Ck59Xu_k.js → tab-id-DIfiqpC_.js} +1 -1
- package/dist/client/assets/{table-DJuui-zO.js → table-DckyijD5.js} +1 -1
- package/dist/client/assets/{tabs-nIRFtnT3.js → tabs-B6y_7gOY.js} +1 -1
- package/dist/client/assets/{textarea-CS8987pI.js → textarea-CW9U0WLT.js} +1 -1
- package/dist/client/assets/{toggle-group-By6-T534.js → toggle-group-B84_EB4X.js} +1 -1
- package/dist/client/assets/{toolbar-ahp2cKbL.js → toolbar-BjtOGPBt.js} +1 -1
- package/dist/client/assets/{tooltip-CWg4_yU2.js → tooltip-DJGHFmJe.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CCac1T_D.js → use-ai-providers-d40f1qo5.js} +1 -1
- package/dist/client/assets/{use-api-keys-D5Sz7RSz.js → use-api-keys-BG7NGrFZ.js} +1 -1
- package/dist/client/assets/{use-automations-B3jf4DzO.js → use-automations-B9HZpeo_.js} +1 -1
- package/dist/client/assets/{use-autosave-RCfjdJkG.js → use-autosave-plpwFRPo.js} +1 -1
- package/dist/client/assets/{use-capability-CGLGHeWs.js → use-capability-BCsjT4rI.js} +1 -1
- package/dist/client/assets/{use-clock-tick-ZSXExXxb.js → use-clock-tick-DspbZ3CQ.js} +1 -1
- package/dist/client/assets/{use-connection-DT_WRqpg.js → use-connection-B_h3Eawk.js} +1 -1
- package/dist/client/assets/{use-copy-C67F5NIg.js → use-copy-BN-siUD1.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BdkqTuwS.js → use-create-virtual-mcp-DRjMkqCA.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DPGjDXys.js → use-debounced-autosave-BxwbJEPI.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B695j2av.js → use-debounced-value-yqEbjCg6.js} +1 -1
- package/dist/client/assets/{use-deco-credits-BWJIyFUv.js → use-deco-credits-n_FlAurl.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BpdGqTBO.js → use-decopilot-events-jItzx1wa.js} +1 -1
- package/dist/client/assets/{use-delete-connection-QD7sIVl8.js → use-delete-connection-CGDcqs9-.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-81oHaNZW.js → use-deployment-admin-fzh3Qls6.js} +1 -1
- package/dist/client/assets/{use-file-configs-Cd3LcqNP.js → use-file-configs-CRA3UDUW.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CUhwx6QV.js → use-infinite-scroll-CONt1PVd.js} +1 -1
- package/dist/client/assets/{use-join-requests-BW0gL3kN.js → use-join-requests-CQgFq15a.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CuVGHmap.js → use-mcp-auth-status-UmZ0JXjU.js} +1 -1
- package/dist/client/assets/{use-mcp-client-JNZaZZzb.js → use-mcp-client-B2I54Uu2.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DazhC8JQ.js → use-mcp-tools-BMzCCRor.js} +1 -1
- package/dist/client/assets/{use-members-z5ELc_cr.js → use-members-DTYcpUvM.js} +1 -1
- package/dist/client/assets/{use-mobile-DsOzZ7zR.js → use-mobile-My4yoTZE.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-UaaSGHr1.js → use-navigate-to-agent-CcAqerWI.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BkojDLXe.js → use-org-auth-client-4j3w6Ofk.js} +1 -1
- package/dist/client/assets/{use-org-sso-0K2C7bZX.js → use-org-sso-DrQrRAIW.js} +1 -1
- package/dist/client/assets/{use-organization-roles-C25BpFyl.js → use-organization-roles-CQHwdgdr.js} +1 -1
- package/dist/client/assets/{use-organization-settings-0dTJxNYS.js → use-organization-settings-sgp676Nc.js} +1 -1
- package/dist/client/assets/{use-registry-app-CJy8-t-E.js → use-registry-app-C03AKUty.js} +1 -1
- package/dist/client/assets/{use-registry-connections-XRf_85dg.js → use-registry-connections-Hoqbx5Fr.js} +1 -1
- package/dist/client/assets/{use-secrets-CeV4lfBK.js → use-secrets-BtwNjW0z.js} +1 -1
- package/dist/client/assets/{use-status-sounds-BV12xFuF.js → use-status-sounds-BHWl4rCZ.js} +1 -1
- package/dist/client/assets/{use-view-mode-BZ_NA5ss.js → use-view-mode-4G3Fk_jZ.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Cze6E7f2.js → use-virtual-mcp-DteGGZnw.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-C8caQdNr.js +1 -0
- package/dist/client/assets/{useQueries-PpUiT87K.js → useQueries-DomCJ38A.js} +1 -1
- package/dist/client/assets/{useRouterState-KimW94eL.js → useRouterState-zOGoQwnN.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Cpg7R9yD.js +1 -0
- package/dist/client/assets/{users-Dxf79oXk.js → users-DXbPA91t.js} +1 -1
- package/dist/client/assets/{variant-calendar-4sJuK0Q5.js → variant-calendar-ZZYVKJ-W.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CAhXtS1R.js → view-mode-toggle-DUtyuN7A.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +3 -3
- package/dist/server/server.js +3 -3
- package/package.json +3 -2
- package/dist/client/assets/project-app-view-C63ietuI.js +0 -1
- package/dist/client/assets/record-editor-D0RF4wZ1.js +0 -1
- package/dist/client/assets/registry-Cm46vyOz.js +0 -2
- package/dist/client/assets/store-registry-CiCf0FP5.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CjHtOTtV.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-pUp3c4G6.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -1139,7 +1139,7 @@ conversation.
|
|
|
1139
1139
|
</skills-usage>`;var X08=()=>{};function as6(Z){let X={};for(let G of Z.split(`
|
|
1140
1140
|
`)){let Y=G.match(/^([A-Za-z][\w-]*):\s*(.*)$/);if(Y?.[1]&&Y[2]!==void 0)X[Y[1].toLowerCase()]=Y[2].trim()}return X}function G08(Z){for(let X of Z.split(/\n\s*\n/)){let G=X.trim();if(!G||G.startsWith("#"))continue;return G.replace(/\n/g," ")}return null}function Y08(Z){let X=Z.match(/^---\n([\s\S]*?)\n---\n?/);if(!X||X[1]===void 0)return{name:null,description:G08(Z),body:Z};let G=as6(X[1]),Y=Z.slice(X[0].length);return{name:G.name||null,description:G.description||G08(Y),body:Y}}function Ze6(Z){let X=Z.lastIndexOf("/");return X===-1?Z:Z.slice(X+1)}async function Ol0(Z,X,G,Y){try{let Q=(await Z.listDir(X,G)).filter((W)=>W.kind==="dir");if(Q.length===0)return[];let $=await Z.filesExist(X,Q.map((W)=>`${W.path}/SKILL.md`)),J=[];for(let W of Q){if(Y.remaining<=0)break;if(!$.has(`${W.path}/SKILL.md`))continue;Y.remaining-=1;try{let K=await Z.read(X,`${W.path}/SKILL.md`),N=Y08(new TextDecoder().decode(K));J.push({dirPath:W.path,name:N.name??Ze6(W.path),description:N.description})}catch{}}return J}catch(Q){return console.warn(`[skill-catalog] scan failed (${X}:${G||"/"})`,Q),[]}}async function Xe6(Z,X){if(g90&&g90.expires>Date.now())return g90.entries;let G=Xc(Z),Y=[];for(let{set:Q}of N3()){let $=_F(Q),J=await Ol0(G,$,"",X);for(let W of J)Y.push({id:`${Q}/${W.dirPath}`,name:W.name,description:W.description,source:`public:${Q}`,sandboxPath:bE($,W.dirPath),volume:$,path:W.dirPath})}if(Y.length>0)g90={entries:Y,expires:Date.now()+es6};return Y}function Ge6(Z,X){let G=KQ(),Y=G?R$(G,X):new XW(X,Z.baseUrl);return new YW(Y,Z.storage.orgFsEntries,X)}async function Ye6(Z,X,G){let Y=Ge6(Z,X),[Q,$]=await Promise.all([Ol0(Y,y90,"",G),Ol0(Y,y90,"skills",G)]);return[...Q,...$].map((J)=>({id:`home/${J.dirPath}`,name:J.name,description:J.description,source:"home",sandboxPath:bE(y90,J.dirPath),volume:y90,path:J.dirPath}))}async function h90(Z,X){let G={remaining:ss6},[Y,Q]=await Promise.all([Xe6(Z,G),Ye6(Z,X,G)]);return[...Y,...Q].sort(($,J)=>$.source.localeCompare(J.source)||$.id.localeCompare(J.id))}var ss6=200,es6=300000,y90="home",g90=null;var Bl0=B(()=>{au();mB();Bb();j_();Db()});async function Q08(Z,X){let G=Z.organization?.id;if(!G)return null;try{let Y=await h90(Z,G);if(Y.length===0)return null;let Q=new Set((X.metadata?.knowledge??[]).filter((J)=>J.kind==="skill").map((J)=>bE(J.volume,J.path))),$=Y.filter((J)=>Q.has(J.sandboxPath)).map((J)=>J.id);return Z08(Y.map((J)=>({id:J.id,description:J.description,source:J.source})),$)}catch(Y){return console.warn("[skill-catalog] failed to render skills block",Y),null}}var $08=B(()=>{X08();Bl0();j_()});import{SpanStatusCode as J08}from"@opentelemetry/api";function Qe6(Z,X){if(Z.connection_type!=="VIRTUAL")return!1;if(!X||WW(X))return!1;return Z.id===X}async function W08(Z,X,G=!1){let Y=Z.id,Q=await X.storage.virtualMcps.findById(Y);if(!Q)throw Error(`Virtual MCP not found: ${Y}`);return YU(Q,X,"passthrough",G)}async function YU(Z,X,G,Y=!1,Q){let $=Z.connections.map((U)=>U.connection_id),W=(await X.tracer.startActiveSpan("studio.virtual_mcp.load_connections",{attributes:{"virtual_mcp.id":Z.id??"decopilot","virtual_mcp.connection_count":$.length}},async(U)=>{try{let F=await Promise.all($.map((H)=>X.storage.connections.findById(H)));return U.setStatus({code:J08.OK}),F}catch(F){throw U.setStatus({code:J08.ERROR,message:F.message}),U.recordException(F),F}finally{U.end()}})).filter((U)=>U!==null&&U.status==="active"&&!Qe6(U,Z.id));if(Q?.additionalConnections?.length)W.unshift(...Q.additionalConnections);if(Z.organization_id){let U=new Set(W.map((H)=>H.id)),{items:F}=await X.storage.connections.list(Z.organization_id,{slug:"mcp-github"});for(let H of F)if(H.status==="active"&&!U.has(H.id)&&ke1(H))W.push(H)}let K=Q?.includeSkillsCatalog?await Q08(X,Z)??void 0:void 0,N={connections:W,virtualMcp:Z,superUser:Y,mcpListCache:p9()??void 0,listTimeoutMs:Q?.listTimeoutMs,skillsBlock:K};return new _90(N,X)}function K08(Z,X,G=!1,Y){if(Z.connection_type==="VIRTUAL")throw Error(`Concrete MCP connection required, received Virtual MCP: ${Z.id}`);let Q=Z.description?.trim(),$=[`You are an ephemeral specialist for the "${Z.title}" MCP connection (ID: ${Z.id}).`,Q||void 0].filter((J)=>J!==void 0).join(`
|
|
1141
1141
|
|
|
1142
|
-
`);return new _90({connections:[Z],superUser:G,mcpListCache:p9()??void 0,listTimeoutMs:Y?.listTimeoutMs,instructions:$},X)}var A_=B(()=>{b6();BQ();Ew();se1();$08()});var Se1={};Q4(Se1,{clientFromConnection:()=>sZ});async function sZ(Z,X,G=!1){if(Z.connection_type==="VIRTUAL")return W08(Z,X,G);return me1(Z,X,G)}var Wm=B(()=>{ie1();A_()});async function Dl0(Z,X,G){let Y=new AbortController,Q,$=new Promise((W,K)=>{Q=setTimeout(()=>{Y.abort(),K(new N08(Z.id,G))},G)}),J=(async()=>{let W=await sZ(Z,X,!0);try{return(await W.listTools(void 0,{timeout:G,signal:Y.signal})).tools}finally{await W.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,$])}finally{if(Q)clearTimeout(Q)}}var N08;var U08=B(()=>{Wm();N08=class N08 extends Error{constructor(Z,X){super(`listTools timed out after ${X}ms for connection ${Z}`);this.name="ListToolsTimeoutError"}}});function u90(Z){return(X)=>{if(X instanceof S1&&X.code===y1.MethodNotFound)return Z;throw X}}var F08=B(()=>{n9()});function c90(Z,X,G){let Y=nH(Z,X,G,p9()??void 0),Q=AD(Y,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:$e6,toolCallTimeoutMs:ib});Q.server.setRequestHandler(uF,async()=>{return await Y.listResources().catch(u90({resources:[]}))}),Q.server.setRequestHandler(cF,async()=>{return await Y.listResourceTemplates().catch(u90({resourceTemplates:[]}))}),Q.server.setRequestHandler(lF,async()=>{return await Y.listPrompts().catch(u90({prompts:[]}))});let $=Q.close.bind(Q);return Q.close=async()=>{await $(),await Y.close().catch(()=>{})},Q}var $e6;var H08=B(()=>{SG();n9();Jm();BQ();F08();$e6={tools:{},resources:{},prompts:{}}});var Lw=B(()=>{Wm();U08();H08()});function pi(Z,X,G){if(X.some((Y)=>Y!=="*"&&Y.startsWith("SELF::"))&&Z.SELF===void 0)Z.SELF={value:`${G}_self`}}function ti(Z,X){let G=new Map;for(let Y of X){if(Y==="*")continue;let[Q,$]=x60(Y);if(!Je6.has($))continue;let J=hl(Q,Z);if(typeof J!=="object"||J===null||!("value"in J))continue;let W=J.value;if(typeof W!=="string")continue;G.set(`${W}:${$}`,{targetConnectionId:W,scope:$})}return[...G.values()]}async function ri(Z,X,G,Y){for(let $ of X){if($==="*")continue;let[J]=x60($),W=hl(J,Z);if(W===void 0||W===null)throw Error(`Scope references key "${J}" but it's not present in state`)}let Q=Lc1(Z,X);for(let $ of Q){if($.endsWith("_self"))continue;let J=await Y.storage.connections.findById($);if(!J||J.organization_id!==G)throw Error(`Referenced connection not found: ${$}`);try{await Y.access.check($)}catch(W){throw Error(`Access denied to referenced connection: ${$}. ${W.message}`)}}}var Je6;var El0=B(()=>{P_0();y60();Je6=new Set([v60,_60])});import{z as w08}from"zod";var We6,Ke6,Ll0;var O08=B(()=>{I5();X1();y8();BQ();Lw();El0();fl();FW();We6=w08.object({data:u00.describe("Data for the new connection (id is auto-generated if not provided)")}),Ke6=w08.object({item:CX.describe("The created connection entity")}),Ll0=s({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:We6,outputSchema:Ke6,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to create connection");let Q={...Z.data,organization_id:G.id,created_by:Y};if(Q.id){if((await X.storage.connections.findById(Q.id))?.organization_id===G.id)throw Error("Connection already exists in organization")}if(Q.connection_type==="VIRTUAL"){let F=Ib(Q.connection_url);if(!F)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let H=await X.storage.virtualMcps.findById(F);if(!H)throw Error(`Virtual MCP not found: ${F}`);if(H.organization_id!==G.id)throw Error("Virtual MCP does not belong to the current organization");Q.connection_url=qb(F)}if(Q.connection_type==="STDIO"&&!K1().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let $=await wH({id:`pending-${Date.now()}`,title:Q.title,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:Q.connection_token,connection_headers:Q.connection_headers}).catch(()=>null),J=$?.tools?.length?$.tools:null,W=$?.scopes?.length?$.scopes:Q.configuration_scopes??null,K=Q.configuration_state??null;if(K&&W?.length)pi(K,W,G.id),await ri(K,W,G.id,X);let N=await X.storage.connections.createNew({...Q,tools:null,configuration_state:K,configuration_scopes:W}),U=K&&W?.length?ti(K,W):[];if(U.length>0){let F;try{await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:N.id,createdBy:Y,grants:U});let{plaintextToken:H,record:w}=await X.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:G.id,subjectConnectionId:N.id});F=w.id,await(await sZ(N,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:K,scopes:W,firstRun:!0,vault:{baseUrl:X.baseUrl,org:G.slug??G.id,subjectConnectionId:N.id,token:H}}})}catch(H){if(F)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:N.id,tokenId:F});throw await X.storage.connections.delete(N.id),H}}if(J)p9()?.set("tools",N.id,J).catch(()=>{});return i1.capture({distinctId:Y,event:"connection_created",groups:{organization:G.id},properties:{connection_id:N.id,connection_type:N.connection_type,app_name:N.app_name??null,organization_id:G.id,tools_count:J?.length??0}}),{item:N}}})});import{z as v3}from"zod/v4";import{z as B08}from"zod/v4";import{z as l90}from"zod/v4";import{z as dW}from"zod/v4";import{z as He6}from"zod/v4";import{z as xE}from"zod/v4";import{z as mW}from"zod/v4";import{z as S7}from"zod/v4";import{z as D08}from"zod/v4";import{z as i90}from"zod/v4";import{z as ve6}from"zod/v4";import{z as E08}from"zod/v4";import{z as d90}from"zod/v4";import{z as me6}from"zod/v4";function oi(Z,X){if(Z===X)return!0;if(Z==null||X==null)return Z===X;if(typeof Z!==typeof X)return!1;if(Array.isArray(Z)&&Array.isArray(X)){if(Z.length!==X.length)return!1;return Z.every((G,Y)=>oi(G,X[Y]))}if(typeof Z==="object"&&typeof X==="object"){let G=Object.keys(Z),Y=Object.keys(X);if(G.length!==Y.length)return!1;return G.every((Q)=>Y.includes(Q)&&oi(Z[Q],X[Q]))}return!1}function fe6(){return(Z)=>{if(!Array.isArray(Z))return!0;let X=[];return Z.every((G)=>{if(X.some((Q)=>oi(G,Q)))return!1;return X.push(G),!0})}}function m90(Z,X){return Z.safeParse(X).success}function WX(Z){if(typeof Z==="boolean")return Z?v3.any():v3.never();let X={};for(let Q of te6)Q.apply(X,Z);let G=[];if(X.string!==!1)G.push(X.string||v3.string());if(X.number!==!1)G.push(X.number||v3.number());if(X.boolean!==!1)G.push(X.boolean||v3.boolean());if(X.null!==!1)G.push(X.null||v3.null());if(X.array!==!1)G.push(X.array||v3.array(v3.any()));if(X.tuple!==!1&&X.tuple!==void 0)G.push(X.tuple);if(X.object!==!1)if(X.object)G.push(X.object);else{let Q=v3.custom(($)=>{return typeof $==="object"&&$!==null&&!Array.isArray($)},"Must be an object, not an array");G.push(Q)}if(X.file!==!1&&X.file!==void 0)G.push(X.file);let Y;if(G.length===0)Y=v3.never();else if(G.length===1)Y=G[0];else if(!Object.keys(Z).some(($)=>$!=="$schema"&&$!=="title"&&$!=="description"))Y=v3.any();else Y=v3.union(G);for(let Q of re6)Y=Q.apply(Y,Z);return Y}var Ne6=class{apply(Z,X){if(!X.type)return;let G=Array.isArray(X.type)?X.type:[X.type],Y=new Set(G);if(!Y.has("string"))Z.string=!1;if(!Y.has("number")&&!Y.has("integer"))Z.number=!1;if(!Y.has("boolean"))Z.boolean=!1;if(!Y.has("null"))Z.null=!1;if(!Y.has("array"))Z.array=!1;if(!Y.has("object"))Z.object=!1;if(Y.has("integer")&&Z.number!==!1){let Q=Z.number||B08.number();if(Q instanceof B08.ZodNumber)Z.number=Q.int()}}},Ue6=class{apply(Z,X){if(X.const===void 0)return;let G=X.const;if(Z.string=!1,Z.number=!1,Z.boolean=!1,Z.null=!1,Z.array=!1,Z.object=!1,typeof G==="string")Z.string=l90.literal(G);else if(typeof G==="number")Z.number=l90.literal(G);else if(typeof G==="boolean")Z.boolean=l90.literal(G);else if(G===null)Z.null=l90.null();else if(Array.isArray(G))Z.array=void 0;else if(typeof G==="object")Z.object=void 0}},Fe6=class{apply(Z,X){if(!X.enum)return;if(X.enum.length===0){if(!X.type)Z.string=!1,Z.number=!1,Z.boolean=!1,Z.null=!1,Z.array=!1,Z.object=!1;return}let G={string:X.enum.filter((Y)=>typeof Y==="string"),number:X.enum.filter((Y)=>typeof Y==="number"),boolean:X.enum.filter((Y)=>typeof Y==="boolean"),null:X.enum.filter((Y)=>Y===null),array:X.enum.filter((Y)=>Array.isArray(Y)),object:X.enum.filter((Y)=>typeof Y==="object"&&Y!==null&&!Array.isArray(Y))};Z.string=this.createTypeSchema(G.string,"string"),Z.number=this.createTypeSchema(G.number,"number"),Z.boolean=this.createTypeSchema(G.boolean,"boolean"),Z.null=G.null.length>0?dW.null():!1,Z.array=G.array.length>0?void 0:!1,Z.object=G.object.length>0?void 0:!1}createTypeSchema(Z,X){if(Z.length===0)return!1;if(Z.length===1)return dW.literal(Z[0]);if(X==="string")return dW.enum(Z);if(X==="number"){let[G,Y,...Q]=Z;return dW.union([dW.literal(G),dW.literal(Y),...Q.map(($)=>dW.literal($))])}if(X==="boolean")return dW.union([dW.literal(!0),dW.literal(!1)]);return!1}},we6=class{apply(Z,X){let G=X;if(G.type==="string"&&G.format==="binary"&&G.contentEncoding==="binary"){let Y=He6.file();if(G.minLength!==void 0)Y=Y.min(G.minLength);if(G.maxLength!==void 0)Y=Y.max(G.maxLength);if(G.contentMediaType!==void 0)Y=Y.mime(G.contentMediaType);Z.file=Y,Z.string=!1}}},Oe6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.minLength!==void 0||G.maxLength!==void 0||G.pattern!==void 0)){if(Z.string===void 0)Z.string=xE.string()}}},Be6=class{apply(Z,X){let G=X;if(G.minLength===void 0)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString)Z.string=Y.refine((Q)=>{return Array.from(Q).length>=G.minLength},{message:`String must be at least ${G.minLength} characters long`})}}},De6=class{apply(Z,X){let G=X;if(G.maxLength===void 0)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString)Z.string=Y.refine((Q)=>{return Array.from(Q).length<=G.maxLength},{message:`String must be at most ${G.maxLength} characters long`})}}},Ee6=class{apply(Z,X){let G=X;if(!G.pattern)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString){let Q=new RegExp(G.pattern);Z.string=Y.regex(Q)}}}},Le6=class{apply(Z,X){let G=X;if(G.minimum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.min(G.minimum)}}},ze6=class{apply(Z,X){let G=X;if(G.maximum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.max(G.maximum)}}},je6=class{apply(Z,X){let G=X;if(G.exclusiveMinimum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)if(typeof G.exclusiveMinimum==="number")Z.number=Y.gt(G.exclusiveMinimum);else Z.number=!1}}},Ae6=class{apply(Z,X){let G=X;if(G.exclusiveMaximum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)if(typeof G.exclusiveMaximum==="number")Z.number=Y.lt(G.exclusiveMaximum);else Z.number=!1}}},Pe6=class{apply(Z,X){let G=X;if(G.multipleOf===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.refine((Q)=>{if(G.multipleOf===0)return!1;let $=Q/G.multipleOf,J=Math.round($),W=Math.min(Math.abs(Q)*Number.EPSILON*10,Math.abs(G.multipleOf)*Number.EPSILON*10);return Math.abs($-J)<=W/Math.abs(G.multipleOf)},{message:`Must be a multiple of ${G.multipleOf}`})}}},Te6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.minItems!==void 0||G.maxItems!==void 0||G.items!==void 0||G.prefixItems!==void 0)){if(Z.array===void 0)Z.array=S7.array(S7.any())}}},Re6=class{apply(Z,X){let G=X;if(G.minItems===void 0)return;if(Z.array!==!1)Z.array=(Z.array||S7.array(S7.any())).min(G.minItems)}},Ie6=class{apply(Z,X){let G=X;if(G.maxItems===void 0)return;if(Z.array!==!1)Z.array=(Z.array||S7.array(S7.any())).max(G.maxItems)}},qe6=class{apply(Z,X){let G=X;if(Z.array===!1)return;if(Array.isArray(G.items))Z.array=Z.array||S7.array(S7.any());else if(G.items&&typeof G.items!=="boolean"&&!G.prefixItems){let Y=WX(G.items),Q=S7.array(Y);if(Z.array&&Z.array instanceof S7.ZodArray){let $=Z.array._def;if($.checks)$.checks.forEach((J)=>{if(J._zod&&J._zod.def){let W=J._zod.def;if(W.check==="min_length"&&W.minimum!==void 0)Q=Q.min(W.minimum);else if(W.check==="max_length"&&W.maximum!==void 0)Q=Q.max(W.maximum)}})}Z.array=Q}else if(typeof G.items==="boolean"&&G.items===!1)if(!G.prefixItems)Z.array=S7.array(S7.any()).max(0);else Z.array=Z.array||S7.array(S7.any());else if(typeof G.items==="boolean"&&G.items===!0)Z.array=Z.array||S7.array(S7.any());else if(G.prefixItems)Z.array=Z.array||S7.array(S7.any())}},Me6=class{apply(Z,X){if(X.type!=="array")return;let G=X;if(!Array.isArray(G.items))return;if(Z.array===!1)return;let Y=G.items.map(($)=>WX($)),Q;if(Y.length===0)Q=D08.tuple([]);else Q=D08.tuple(Y);if(G.minItems!==void 0&&G.minItems>Y.length)Q=!1;if(G.maxItems!==void 0&&G.maxItems<Y.length)Q=!1;Z.tuple=Q,Z.array=!1}},ke6=class{apply(Z,X){let G=X;if(Z.object===!1)return;if(G.properties||G.required||G.additionalProperties!==void 0)Z.object=Z.object||i90.object({}).passthrough()}},Se6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.maxProperties!==void 0||G.minProperties!==void 0)){if(Z.object===void 0)Z.object=i90.object({}).passthrough()}}},Ve6=class{apply(Z,X){let G=X;if(G.maxProperties===void 0)return;if(Z.object!==!1){let Y=Z.object||i90.object({}).passthrough();Z.object=Y.refine((Q)=>Object.keys(Q).length<=G.maxProperties,{message:`Object must have at most ${G.maxProperties} properties`})}}},Ce6=class{apply(Z,X){let G=X;if(G.minProperties===void 0)return;if(Z.object!==!1){let Y=Z.object||i90.object({}).passthrough();Z.object=Y.refine((Q)=>Object.keys(Q).length>=G.minProperties,{message:`Object must have at least ${G.minProperties} properties`})}}},be6=class{apply(Z,X){if(!X.not)return Z;let G=WX(X.not);return Z.refine((Y)=>!m90(G,Y),{message:"Value must not match the 'not' schema"})}},xe6=class{apply(Z,X){if(X.uniqueItems!==!0)return Z;return Z.refine(fe6(),{message:"Array items must be unique"})}},_e6=class{apply(Z,X){if(!X.allOf||X.allOf.length===0)return Z;return X.allOf.map((Y)=>WX(Y)).reduce((Y,Q)=>ve6.intersection(Y,Q),Z)}},ye6=class{apply(Z,X){if(!X.anyOf||X.anyOf.length===0)return Z;let G=X.anyOf.length===1?WX(X.anyOf[0]):E08.union([WX(X.anyOf[0]),WX(X.anyOf[1]),...X.anyOf.slice(2).map((Y)=>WX(Y))]);return E08.intersection(Z,G)}},ge6=class{apply(Z,X){if(!X.oneOf||X.oneOf.length===0)return Z;let G=X.oneOf.map((Y)=>WX(Y));return Z.refine((Y)=>{let Q=0;for(let $ of G)if($.safeParse(Y).success){if(Q++,Q>1)return!1}return Q===1},{message:"Value must match exactly one of the oneOf schemas"})}},he6=class{apply(Z,X){let G=X;if(G.prefixItems&&Array.isArray(G.prefixItems)){let Q=G.prefixItems.map(($)=>WX($));return Z.refine(($)=>{if(!Array.isArray($))return!0;for(let J=0;J<Math.min($.length,Q.length);J++)if(!m90(Q[J],$[J]))return!1;if($.length>Q.length){if(typeof G.items==="boolean"&&G.items===!1)return!1;else if(G.items&&typeof G.items==="object"&&!Array.isArray(G.items)){let J=WX(G.items);for(let W=Q.length;W<$.length;W++)if(!m90(J,$[W]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return Z}},ue6=class{apply(Z,X){let G=X;if(!G.properties&&!G.required&&G.additionalProperties!==!1)return Z;if(Z instanceof d90.ZodObject||Z instanceof d90.ZodRecord){let Y={};if(G.properties){for(let[Q,$]of Object.entries(G.properties))if($!==void 0)Y[Q]=WX($)}if(G.required&&Array.isArray(G.required)){let Q=new Set(G.required);for(let $ of Object.keys(Y))if(!Q.has($))Y[$]=Y[$].optional()}else for(let Q of Object.keys(Y))Y[Q]=Y[Q].optional();if(G.additionalProperties===!1)return d90.object(Y);else return d90.object(Y).passthrough()}return Z.refine((Y)=>{if(typeof Y!=="object"||Y===null||Array.isArray(Y))return!0;if(G.properties){for(let[Q,$]of Object.entries(G.properties))if($!==void 0){if(Object.getOwnPropertyDescriptor(Y,Q)!==void 0){if(!WX($).safeParse(Y[Q]).success)return!1}}}if(G.required&&Array.isArray(G.required)){for(let Q of G.required)if(Object.getOwnPropertyDescriptor(Y,Q)===void 0)return!1}if(G.additionalProperties===!1&&G.properties){let Q=new Set(Object.keys(G.properties));for(let $ in Y)if(!Q.has($))return!1}return!0},{message:"Object constraints validation failed"})}},ce6=class{apply(Z,X){if(!X.enum||X.enum.length===0)return Z;let G=X.enum.filter((Y)=>Array.isArray(Y)||typeof Y==="object"&&Y!==null);if(G.length===0)return Z;return Z.refine((Y)=>{if(typeof Y!=="object"||Y===null)return!0;return G.some((Q)=>oi(Y,Q))},{message:"Value must match one of the enum values"})}},le6=class{apply(Z,X){if(X.const===void 0)return Z;let G=X.const;if(typeof G!=="object"||G===null)return Z;return Z.refine((Y)=>oi(Y,G),{message:"Value must equal the const value"})}},de6=class{apply(Z,X){if(X.description)Z=Z.describe(X.description);return Z}},ie6=class{apply(Z,X){var G;let Y=X;if(!((G=Y.required)==null?void 0:G.includes("__proto__"))||X.type!==void 0)return Z;return me6.any().refine((Q)=>this.validateRequired(Q,Y.required),{message:"Missing required properties"})}validateRequired(Z,X){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return!0;return X.every((G)=>Object.prototype.hasOwnProperty.call(Z,G))}},ne6=class{apply(Z,X){var G;let Y=X;if(Y.contains===void 0)return Z;let Q=WX(Y.contains),$=(G=Y.minContains)!=null?G:1,J=Y.maxContains;return Z.refine((W)=>{if(!Array.isArray(W))return!0;let K=0;for(let N of W)if(m90(Q,N))K++;if(K<$)return!1;if(J!==void 0&&K>J)return!1;return!0},{message:"Array must contain required items matching the schema"})}},pe6=class{apply(Z,X){let{default:G}=X;if(G===void 0)return Z;if(!Z.safeParse(G).success)return Z;return Z.default(G)}},te6,re6;var L08=B(()=>{te6=[new Ue6,new Fe6,new Ne6,new we6,new Oe6,new Te6,new Se6,new Be6,new De6,new Ee6,new Le6,new ze6,new je6,new Ae6,new Pe6,new Me6,new Re6,new Ie6,new qe6,new Ve6,new Ce6,new ke6],re6=[new ie6,new ce6,new le6,new _e6,new ye6,new ge6,new he6,new ue6,new ne6,new be6,new xe6,new pe6,new de6]});class zl0{constructor(Z){this._url=Z}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((Z,X)=>{this._socket=new WebSocket(this._url,oe6),this._socket.onerror=(G)=>{let Y="error"in G?G.error:Error(`WebSocket error: ${JSON.stringify(G)}`);X(Y),this.onerror?.(Y)},this._socket.onopen=()=>{Z()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(G)=>{let Y;try{Y=UQ.parse(JSON.parse(G.data))}catch(Q){this.onerror?.(Q);return}this.onmessage?.(Y)}})}async close(){this._socket?.close()}send(Z){return new Promise((X,G)=>{if(!this._socket){G(Error("Not connected"));return}this._socket?.send(JSON.stringify(Z)),X()})}}var oe6="mcp";var z08=B(()=>{n9()});function ae6(Z){let X=Z;if(!X||typeof X!=="object"||!("method"in X))return null;switch(X.method){case"initialize":{let G=X?.params?.protocolVersion;if(!G)return null;return{type:"emit",message:{result:{protocolVersion:G,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:X.jsonrpc??"2.0",id:X.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var n90;var jl0=B(()=>{Tx();n90=class n90 extends EW{constructor(Z,X){super(Z,X)}send(Z,X){let G=ae6(Z);if(G?.type==="emit")return this.onmessage?.(G.message),Promise.resolve();if(G?.type==="suppress")return Promise.resolve();return super.send(Z,X)}}});var j08,A08=async(Z,X,G)=>{let Y=se6(Z.connection,X,G);if(!Y)throw Error("Unknown MCP connection type");let Q=new j08({name:Z?.name??"MCP Client",version:"1.0.0"});return await Q.connect(Y),{client:Q}},se6=(Z,X,G)=>{if(Z.type==="Websocket")return new zl0(new URL(Z.url));if(Z.type!=="SSE"&&Z.type!=="HTTP")return null;let Q={...Z.token?{authorization:`Bearer ${Z.token}`}:{},...G??{},..."headers"in Z?Z.headers||{}:{}};if(Z.type==="SSE"){let $={requestInit:{headers:Q,signal:X}};if(Z.token)$.eventSourceInit={fetch:(J,W)=>{return fetch(J,{...W,headers:{...Q,Accept:"text/event-stream"},signal:X})}};return new hN(new URL(Z.url),$)}return new n90(new URL(Z.url),{requestInit:{headers:Q,signal:X,credentials:"include"}})};var P08=B(()=>{DW();Sl();z08();n9();SG();jl0();j08=class j08 extends kZ{constructor(Z,X){super(Z,{jsonSchemaValidator:D9,...X})}async listTools(Z,X){return await this.request({method:"tools/list",params:Z},wc,X)}}});function I08(Z){let X=(G)=>{if("connection"in Z)return A08({connection:Z.connection},void 0,G);return Z.client};return new Proxy({},{get(G,Y){if(Y==="toJSON")return null;if(typeof Y!=="string")throw Error("Name must be a string");if(Y==="listTools")return W;async function Q(K,N=Y){let U=Z?.debugId?.(),F=U?{"x-trace-debug-id":U}:void 0,{client:H}=await X(F),{structuredContent:w,isError:O,content:D}=await H.callTool({name:String(N),arguments:K});if(O){let L=D?.[0]?.text,z=typeof L==="string"?T08(L):null,j=z?.code&&typeof Z?.getErrorByStatusCode==="function"?Z.getErrorByStatusCode(z.code,z.message,z.traceId):null;if(j)throw j;throw Error(`Tool ${String(N)} returned an error: ${JSON.stringify(w??D)}`)}if(w!==void 0)return w;let E=D?.[0]?.text;return typeof E==="string"?T08(E):void 0}async function $(){let{client:K}=await X(),{tools:N}=await K.listTools();return N}async function J(){if(!("connection"in Z))return $();let K=Z.connection,N=JSON.stringify(K);try{if(!p90.has(N))p90.set(N,$());return await p90.get(N)}catch(U){console.error("Failed to list tools",U),p90.delete(N);return}}async function W(){return(await J()??[]).map((N)=>R08(N,Q))}return Q.asTool=async()=>{let N=(await J()??[]).find((U)=>U.name===Y);if(!N)throw Error(`Tool ${Y} not found`);return R08(N,Q)},Q}})}var T08=(Z)=>{try{return JSON.parse(Z)}catch{return Z}},p90,R08=(Z,X)=>{return{...Z,id:Z.name,inputSchema:Z.inputSchema?WX(Z.inputSchema):void 0,outputSchema:Z.outputSchema?WX(Z.outputSchema):void 0,execute:(G)=>{return X(G.context,Z.name)}}};var q08=B(()=>{L08();P08();p90=new Map});function vE(Z){return I08(Z)}var P_;var Al0=B(()=>{q08();P_=new Proxy({},{get(Z,X){if(X==="toJSON")return null;if(X==="forConnection")return(G)=>vE({connection:G});return global[X]}})});function t90(Z){return{isImplementedBy:(X)=>{for(let G of Z){let Y=typeof G.name==="string"?new RegExp(`^${G.name}$`):G.name,Q=X.find(($)=>Y.test($.name));if(!Q&&G.opt)continue;if(!Q)return!1}return!0}}}var iW=(Z)=>{return{...t90(Z),forClient:(X)=>{return vE({client:X})},forConnection:(X)=>{return vE({connection:X})}}};var _E=B(()=>{Al0()});import{z as C9}from"zod";var M08,r90,k08,o90,S08,ee6;var V08=B(()=>{_E();M08=C9.object({specversion:C9.literal("1.0").describe("CloudEvents specification version"),id:C9.string().describe("Unique identifier for this event (UUID recommended)"),source:C9.string().describe("Connection ID of the event publisher"),type:C9.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:C9.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:C9.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:C9.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:C9.string().url().optional().describe("URI to the schema for the data attribute"),data:C9.unknown().optional().describe("Event payload (any JSON value)")}),r90=C9.object({events:C9.array(M08).min(1).describe("Batch of CloudEvents to process")}),k08=C9.object({success:C9.boolean().optional().describe("Whether this event was processed successfully"),error:C9.string().optional().describe("Error message for this event"),retryAfter:C9.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),o90=C9.object({success:C9.boolean().optional().describe("Batch success - applies to events not in results"),error:C9.string().optional().describe("Batch error message - applies to events not in results"),processedCount:C9.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:C9.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:C9.record(C9.string(),k08).optional().describe("Per-event results keyed by event ID")}),S08=[{name:"ON_EVENTS",inputSchema:r90,outputSchema:o90}],ee6=iW(S08)});import{z as f9}from"zod";var C08,f08,b08,x08,v08,_08,a90,Pl0;var Tl0=B(()=>{_E();C08=f9.object({type:f9.literal("string"),enum:f9.array(f9.string()).optional(),description:f9.string().optional()}),f08=f9.object({type:f9.string(),description:f9.string(),paramsSchema:f9.record(f9.string(),C08)}),b08=f9.object({}),x08=f9.object({triggers:f9.array(f08)}),v08=f9.object({type:f9.string(),params:f9.record(f9.string(),f9.string()),enabled:f9.boolean(),callbackUrl:f9.url().optional(),callbackToken:f9.string().min(1).optional()}),_08=f9.object({success:f9.boolean()}),a90=[{name:"TRIGGER_LIST",inputSchema:b08,outputSchema:x08},{name:"TRIGGER_CONFIGURE",inputSchema:v08,outputSchema:_08}],Pl0=iW(a90)});import{z as j5}from"zod";var y08,g08,h08,ai,s90,e90,ZZ0,XZ0,Z04;var Rl0=B(()=>{_E();y08=j5.object({primary:j5.string().optional().describe("Primary brand color (hex)"),secondary:j5.string().optional().describe("Secondary brand color (hex)"),accent:j5.string().optional().describe("Accent / highlight color (hex)"),background:j5.string().optional().describe("Background color (hex)"),foreground:j5.string().optional().describe("Foreground / text color (hex)")}),g08=j5.object({heading:j5.string().optional().describe("Font family for headings"),body:j5.string().optional().describe("Font family for body text"),code:j5.string().optional().describe("Font family for code / monospace")}),h08=j5.object({logo:j5.string().optional().describe("Logo URL"),favicon:j5.string().optional().describe("Favicon URL"),ogImage:j5.string().optional().describe("Open Graph image URL")}),ai=j5.object({id:j5.string(),name:j5.string().describe("Brand / company name"),domain:j5.string().optional().describe("Company domain (e.g. example.com)"),colors:y08.optional().describe("Semantic color palette"),fonts:g08.optional().describe("Font families by role"),assets:h08.optional().describe("Visual identity assets"),overview:j5.string().optional().describe("Company overview / description"),tagline:j5.string().optional().describe("Brand tagline"),tone:j5.string().optional().describe("Tone of voice description"),metadata:j5.record(j5.string(),j5.unknown()).optional().describe("Extra design tokens and metadata")}),s90=j5.object({id:j5.string().optional().describe("Brand ID. Omit to get the default brand.")}),e90=j5.object({}),ZZ0=j5.object({items:j5.array(ai)}),XZ0=[{name:"BRAND_GET",inputSchema:s90,outputSchema:ai},{name:"BRAND_LIST",inputSchema:e90,outputSchema:ZZ0,opt:!0}],Z04=iW(XZ0)});var Il0=B(()=>{_E();V08();Tl0();zc();Rl0()});import{z as z6}from"zod";function QU(Z){return z6.object({items:z6.array(Z).describe("Array of collection items"),totalCount:z6.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:z6.boolean().optional().describe("Whether there are more items available")})}function ei(Z){return z6.object({item:Z.nullable().describe("The retrieved item, or null if not found")})}function Y04(Z){return z6.object({data:Z.partial().describe("Data for the new entity (id may be auto-generated)")})}function Q04(Z){return z6.object({item:Z.describe("The created entity with generated id")})}function $04(Z){return z6.object({id:z6.string().describe("ID of the entity to update"),data:Z.partial().describe("Partial entity data to update")})}function J04(Z){return z6.object({item:Z.describe("The updated entity")})}function Xn(Z){return z6.object({item:Z.describe("The deleted entity")})}function YZ0(Z,X,G){let Y=Z.toUpperCase(),Q=G?.readOnly??!1,$=[{name:`COLLECTION_${Y}_LIST`,inputSchema:UJ,outputSchema:QU(X)},{name:`COLLECTION_${Y}_GET`,inputSchema:si,outputSchema:ei(X)}];if(!Q)$.push({name:`COLLECTION_${Y}_CREATE`,inputSchema:Y04(X),outputSchema:Q04(X),opt:!0},{name:`COLLECTION_${Y}_UPDATE`,inputSchema:$04(X),outputSchema:J04(X),opt:!0},{name:`COLLECTION_${Y}_DELETE`,inputSchema:Zn,outputSchema:Xn(X),opt:!0});return $}var GZ0,X04,u08,G04,UJ,si,Zn;var _3=B(()=>{GZ0=z6.object({id:z6.string().describe("Unique identifier for the entity"),title:z6.string().describe("Human-readable title for the entity"),description:z6.string().nullish().describe("Description of the entity"),created_at:z6.string().datetime(),updated_at:z6.string().datetime(),created_by:z6.string().optional(),updated_by:z6.string().optional()}),X04=z6.object({field:z6.array(z6.string()),operator:z6.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:z6.unknown()}),u08=z6.lazy(()=>z6.union([X04,z6.object({operator:z6.enum(["and","or","not"]),conditions:z6.array(u08)})])),G04=z6.object({field:z6.array(z6.string()),direction:z6.enum(["asc","desc"]),nulls:z6.enum(["first","last"]).optional()}),UJ=z6.object({where:u08.optional().describe("Filter expression"),orderBy:z6.array(G04).optional().describe("Sort expressions"),limit:z6.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:z6.number().int().min(0).optional().describe("Number of items to skip")});si=z6.object({id:z6.string().describe("ID of the entity to retrieve")});Zn=z6.object({id:z6.string().describe("ID of the entity to delete")})});import{z as T_}from"zod";var W04,K04,c08;var l08=B(()=>{_3();W04=GZ0.extend({avatar:T_.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:T_.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:T_.string().describe("Virtual MCP ID to use for this assistant"),model:T_.object({id:T_.string().describe("Model ID"),connectionId:T_.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),K04=YZ0("assistant",W04),c08=[...K04]});import{z as I0}from"zod";var Gn,$U,m08,N04,U04,i08,F04,H04,w04,O04,B04,D04,n08,E04,L04,z04,j04,A04,P04,T04,R04,I04,q04,jJ9,M04,AJ9,d08,k04,S04,QZ0,PJ9;var p08=B(()=>{_E();_3();Gn=I0.lazy(()=>I0.union([I0.null(),I0.string(),I0.number(),I0.boolean(),I0.record(I0.string(),Gn),I0.array(Gn)])),$U=I0.record(I0.string(),I0.record(I0.string(),Gn)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),m08=I0.object({type:I0.literal("text"),text:I0.string().describe("The text content"),providerOptions:$U}),N04=I0.object({type:I0.literal("text"),text:I0.string().describe("The text content"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),U04=I0.string().describe("File data as URL string"),i08=I0.object({type:I0.literal("file"),filename:I0.string().optional().describe("Optional filename of the file"),data:U04,mediaType:I0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:$U}),F04=I0.object({type:I0.literal("file"),mediaType:I0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:I0.string().describe("Generated file data as base64 encoded string")}),H04=I0.object({type:I0.literal("reasoning"),text:I0.string().describe("The reasoning text"),providerOptions:$U}),w04=I0.object({type:I0.literal("reasoning"),text:I0.string().describe("The reasoning text"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),O04=I0.object({type:I0.literal("tool-call"),toolCallId:I0.string().describe("ID of the tool call, used to match with tool result"),toolName:I0.string().describe("Name of the tool being called"),input:I0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:I0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:$U}),B04=I0.object({type:I0.literal("tool-call"),toolCallId:I0.string().describe("ID of the tool call"),toolName:I0.string().describe("Name of the tool being called"),input:I0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:I0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),D04=I0.union([I0.object({type:I0.literal("text"),value:I0.string()}),I0.object({type:I0.literal("json"),value:Gn}),I0.object({type:I0.literal("error-text"),value:I0.string()}),I0.object({type:I0.literal("error-json"),value:Gn}),I0.object({type:I0.literal("content"),value:I0.array(I0.union([I0.object({type:I0.literal("text"),text:I0.string().describe("Text content")}),I0.object({type:I0.literal("media"),data:I0.string().describe("Base-64 encoded media data"),mediaType:I0.string().describe("IANA media type")})]))}),I0.object({type:I0.literal("execution-denied"),reason:I0.string().optional()}),I0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),n08=I0.object({type:I0.literal("tool-result"),toolCallId:I0.string().describe("ID of the tool call that this result is associated with"),toolName:I0.string().describe("Name of the tool that generated this result"),output:D04.describe("Result of the tool call"),result:I0.unknown().describe("Unknown result of the tool call"),providerOptions:$U}),E04=I0.object({type:I0.literal("tool-result"),toolCallId:I0.string().describe("ID of the tool call that this result is associated with"),toolName:I0.string().describe("Name of the tool that generated this result"),result:I0.any().describe("Result of the tool call (JSON-serializable)"),isError:I0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:I0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),L04=I0.union([I0.object({type:I0.literal("source"),sourceType:I0.literal("url"),id:I0.string().describe("The ID of the source"),url:I0.string().describe("The URL of the source"),title:I0.string().optional().describe("The title of the source"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),I0.object({type:I0.literal("source"),sourceType:I0.literal("document"),id:I0.string().describe("The ID of the source"),mediaType:I0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:I0.string().describe("The title of the document"),filename:I0.string().optional().describe("Optional filename of the document"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")})]),z04=I0.object({role:I0.literal("system"),content:I0.string().describe("System message content"),providerOptions:$U}),j04=I0.object({role:I0.literal("user"),content:I0.array(I0.union([m08,i08])).describe("User message content parts (text or file)"),providerOptions:$U}),A04=I0.object({role:I0.literal("assistant"),content:I0.array(I0.union([m08,i08,H04,O04,n08])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:$U}),P04=I0.object({role:I0.literal("tool"),content:I0.array(n08).describe("Tool message content (tool results)"),providerOptions:$U}),T04=I0.union([z04,j04,A04,P04]),R04=I0.array(T04).describe("A list of messages forming the prompt"),I04=I0.object({prompt:R04.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:I0.number().optional().describe("Maximum number of tokens to generate"),temperature:I0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:I0.number().optional().describe("Nucleus sampling parameter"),topK:I0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:I0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:I0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:I0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:I0.array(I0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:I0.union([I0.object({type:I0.literal("text")}),I0.object({type:I0.literal("json"),schema:I0.any().optional().describe("JSON schema that the generated output should conform to"),name:I0.string().optional().describe("Name of output that should be generated"),description:I0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:I0.array(I0.any()).optional().describe("The tools that are available for the model"),toolChoice:I0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:I0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:I0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:I0.any().optional().describe("Additional provider-specific options")}),q04=I0.object({content:I0.array(I0.union([N04,F04,w04,B04,E04,L04])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:I0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:I0.looseObject({inputTokens:I0.number().optional(),outputTokens:I0.number().optional(),totalTokens:I0.number().optional(),reasoningTokens:I0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata"),request:I0.object({body:I0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:I0.object({id:I0.string().optional().describe("ID for the generated response"),timestamp:I0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:I0.string().optional().describe("The ID of the response model that was used"),headers:I0.record(I0.string(),I0.string()).optional().describe("Response headers"),body:I0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:I0.array(I0.any()).describe("Warnings for the call, e.g. unsupported settings")}),jJ9=I0.object({stream:I0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:I0.object({body:I0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:I0.object({headers:I0.record(I0.string(),I0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),M04=I0.object({supportedUrls:I0.record(I0.string(),I0.array(I0.string())).describe("Supported URL patterns by media type for the provider")}),AJ9=I0.object({modelId:I0.string().describe("The ID of the model"),logo:I0.string().nullable(),description:I0.string().nullable(),capabilities:I0.array(I0.string()),limits:I0.object({contextWindow:I0.number(),maxOutputTokens:I0.number()}).nullable(),costs:I0.object({input:I0.number(),output:I0.number()}).nullable(),provider:I0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),d08=I0.object({modelId:I0.string().describe("The ID of the model"),callOptions:I04}),k04=GZ0.extend({logo:I0.string().nullable(),description:I0.string().nullable(),capabilities:I0.array(I0.string()),limits:I0.object({contextWindow:I0.number(),maxOutputTokens:I0.number()}).nullable(),costs:I0.object({input:I0.number(),output:I0.number()}).nullable(),provider:I0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),S04=YZ0("llm",k04,{readOnly:!0}),QZ0=[{name:"LLM_METADATA",inputSchema:I0.object({modelId:I0.string().describe("The ID of the model")}),outputSchema:M04},{name:"LLM_DO_STREAM",inputSchema:d08},{name:"LLM_DO_GENERATE",inputSchema:d08,outputSchema:q04},...S04],PJ9=iW(QZ0)});import{z as yE}from"zod";var V04,t08;var r08=B(()=>{V04=yE.object({scopes:yE.array(yE.string()).describe("List of scopes available"),stateSchema:yE.record(yE.string(),yE.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),t08=[{name:"MCP_CONFIGURATION",inputSchema:yE.object({}),outputSchema:V04}]});import{z as b9}from"zod";var C04,f04,o08;var a08=B(()=>{C04=b9.object({}).strict(),f04=b9.object({billing:b9.object({mode:b9.enum(["prepaid","postpaid"]),limitPeriod:b9.enum(["daily","weekly","monthly"]).nullable()}),limit:b9.object({total:b9.number().nullable(),remaining:b9.number().nullable(),reset:b9.string().nullable()}),usage:b9.object({total:b9.number(),daily:b9.number(),weekly:b9.number(),monthly:b9.number()}),alert:b9.object({enabled:b9.boolean(),threshold_usd:b9.number(),email:b9.string().nullable()}),connectionId:b9.string()}),o08=[{name:"GATEWAY_USAGE",inputSchema:C04,outputSchema:f04},{name:"GATEWAY_SET_LIMIT",inputSchema:b9.object({}),outputSchema:b9.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:b9.object({}),outputSchema:b9.object({}),opt:!0}]});function s08(Z,X){return Z||X===0}function e08(Z,X,G,Y,Q){let $=X?Q+1:Q,J=X?Z.slice(0,G):Z,W=Y+G<$;return{items:J,totalCount:$,hasMore:W}}function b04(Z,X){if(X.length===0)return;let[G,...Y]=X,Q=G==="slug"?XH(Z):Z[G];for(let $ of Y){if(Q===null||typeof Q!=="object")return;Q=Q[$]}return Q}function x04(Z){let G=Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${G}$`,"i")}function v04(Z,X,G){if(Z===void 0)return!0;switch(X){case"eq":return G===null?Z===null:Z===G;case"gt":return Z>G;case"gte":return Z>=G;case"lt":return Z<G;case"lte":return Z<=G;case"in":return Array.isArray(G)&&G.includes(Z);case"like":return typeof Z==="string"&&x04(String(G)).test(Z);case"contains":return String(Z).toLowerCase().includes(String(G).toLowerCase());default:return!0}}function Yn(Z,X){if(!X)return!0;if("conditions"in X){let{operator:Y,conditions:Q}=X;if(Q.length===0)return!0;switch(Y){case"and":return Q.every(($)=>Yn(Z,$));case"or":return Q.some(($)=>Yn(Z,$));case"not":return!Q.every(($)=>Yn(Z,$));default:return!0}}let G=b04(Z,X.field);return v04(G,X.operator,X.value)}var Z18=B(()=>{G80()});async function X18(Z,X,G){if(Z.length===0)return;let Y=0;async function Q(){while(Y<Z.length){let $=Y++;await G(Z[$])}}await Promise.all(Array.from({length:Math.min(X,Z.length)},()=>Q()))}import{z as zw}from"zod";var _04=8,y04,g04,h04,u04,ql0;var G18=B(()=>{Il0();l08();_3();p08();r08();zc();a08();b6();X1();tZ();BQ();Lw();Cb();FW();G80();Z18();y04=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:zw.object({})}],g04={LLM:QZ0,LLMS:QZ0,ASSISTANTS:c08,MCP:t08,OBJECT_STORAGE:sB,AI_GATEWAY_BILLING:o08,TRIGGER:a90,REGISTRY:y04,BRAND:XZ0},h04=UJ.extend({binding:zw.union([zw.array(zw.object({}).passthrough()),zw.object({}).passthrough(),zw.string()]).optional(),include_virtual:zw.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:zw.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),u04=QU(CX),ql0=s({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:h04,outputSchema:u04,handler:async(Z,X)=>{await X.access.check();let G=O0(X),Y=Z.binding?typeof Z.binding==="string"?(()=>{let F=g04[Z.binding.toUpperCase()];if(!F)throw Error(`Unknown binding: ${Z.binding}`);return F})():Z.binding:void 0,Q=Y?t90(Y):void 0,$=!!Q,J=Z.limit??100,W=Z.offset??0,{items:K,totalCount:N}=await X.storage.connections.list(G.id,{includeVirtual:Z.include_virtual??!1,slug:Z.slug,where:Z.where,orderBy:Z.orderBy,limit:$?void 0:J,offset:$?void 0:W});if(Q){let F=p9(),H=p4.SELF(G.id);await X18(K,_04,async(w)=>{if(w.tools!==null)return;let O=w.id===H?async()=>{let{listManagementTools:E}=await Promise.resolve().then(() => (gE(),$Z0));return E(X)}:()=>Dl0(w,X,Gb1),D=await LH("tools",w.id,O,F,(E)=>X.pendingRevalidations.push(E),EH);if(D!==null)w.tools=D})}let U=!1;if(C$()&&s08($,W)){let F=qZ(),H=p4.DEV_ASSETS(G.id);if(!K.some((w)=>w.id===H)){let w=Vb(G.id,F),O=!Z.slug||XH(w)===Z.slug,D=Yn(w,Z.where);if(O&&D)K.unshift(w),U=!0}}if($){let F=(await Promise.all(K.map(async(D)=>{if(!D.tools||D.tools.length===0)return null;return Q.isImplementedBy(D.tools.map((L)=>({name:L.name,inputSchema:L.inputSchema,outputSchema:L.outputSchema})))?D:null}))).filter((D)=>D!==null),H=F.length,w=F.slice(W,W+J),O=W+J<H;return{items:w,totalCount:H,hasMore:O}}return e08(K,U,J,W,N)}})});var c04,Ml0;var Y18=B(()=>{_3();b6();X1();tZ();BQ();Lw();Cb();FW();c04=ei(CX),Ml0=s({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:si,outputSchema:c04,handler:async(Z,X)=>{let G=O0(X);if(await X.access.check(),C$()&&Y10(Z.id,G.id))return{item:Vb(G.id,qZ())};let Y=await X.storage.connections.findById(Z.id);if(!Y||Y.organization_id!==G.id)return{item:null};if(Y.tools===null){let Q=p4.SELF(G.id),$=Y.id===Q?async()=>{let{listManagementTools:W}=await Promise.resolve().then(() => (gE(),$Z0));return W(X)}:async()=>{let W=await sZ(Y,X,!0);try{return(await W.listTools()).tools}finally{await W.close().catch(()=>{})}},J=await LH("tools",Y.id,$,p9(),(W)=>X.pendingRevalidations.push(W),EH);if(J!==null)Y.tools=J}return{item:Y}}})});import{z as kl0}from"zod";function m04(Z,X){return Z.length===X.length&&Z.every((G,Y)=>G===X[Y])}var l04,d04,Sl0;var Q18=B(()=>{Lw();NJ();X1();y8();BQ();$m();El0();fl();FW();l04=kl0.object({id:kl0.string().describe("ID of the connection to update"),data:c00.describe("Partial connection data to update")}),d04=kl0.object({item:CX.describe("The updated connection entity")});Sl0=s({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:l04,outputSchema:d04,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to update connection");let{id:Q,data:$}=Z,J=$.configuration_state!==void 0||$.configuration_scopes!==void 0,W=await X.storage.connections.findById(Q);if(!W||W.organization_id!==G.id)throw Error("Connection not found in organization");let K=$.connection_type??W.connection_type,N=$.connection_url??W.connection_url;if(K==="VIRTUAL"){let x=Ib(N);if(!x)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let _=await X.storage.virtualMcps.findById(x);if(!_)throw Error(`Virtual MCP not found: ${x}`);if(_.organization_id!==G.id)throw Error("Virtual MCP does not belong to the current organization");N=qb(x)}let U=$.configuration_state??W.configuration_state??{},F=$.configuration_scopes??W.configuration_scopes??[];if(J){if($.configuration_state!==void 0)U=$.configuration_state??{};else if(U===null||U===void 0)U={};if($.configuration_scopes!==void 0)F=$.configuration_scopes??[];if(F.length>0){let x=U;pi(x,F,G.id),await ri(x,F,G.id,X)}}if(K==="STDIO"&&!K1().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let H=$.connection_token??W.connection_token;if(!H)try{let _=await new V9(X.db,X.vault).get(Q);if(_?.accessToken)H=_.accessToken}catch{}let w=await wH({id:W.id,title:$.title??W.title,connection_type:K,connection_url:N,connection_token:H,connection_headers:$.connection_headers??W.connection_headers}).catch(()=>null),O=w?.tools?.length?w.tools:null,D=!1;if($.configuration_scopes===void 0&&w?.scopes?.length)D=!m04(F,w.scopes),F=w.scopes;if(pi(U,F,G.id),D&&F.length>0)await ri(U,F,G.id,X);let E=J||D,L=E?ti(U,F):[],z=E?ti(W.configuration_state??{},W.configuration_scopes??[]):[],j=W.configuration_state,A=j==null||Object.keys(j).length===0,P,q,S=async()=>{try{await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:Q,createdBy:Y,grants:z})}catch(x){console.error("Failed to restore credential grants after credential vault mutation failed",x)}},M={...$,connection_url:N,tools:null,configuration_state:U,configuration_scopes:F,updated_by:Y},C={...W,...M};if(E)try{if(await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:Q,createdBy:Y,grants:L}),L.length>0){if(!await X.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:G.id,subjectConnectionId:Q})){let{plaintextToken:_,record:X0}=await X.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:G.id,subjectConnectionId:Q});q=X0.id,P={baseUrl:X.baseUrl,org:G.slug??G.id,subjectConnectionId:Q,token:_}}}}catch(x){if(q)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q});throw await S(),x}if(E&&U&&F)try{await(await sZ(C,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:U,scopes:F,firstRun:A,...P?{vault:P}:{}}})}catch(x){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",x),q)throw await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q}),await S(),x}let d;try{d=await X.storage.connections.update(Q,M)}catch(x){if(E){if(q)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q});await S()}throw x}if(O)p9()?.set("tools",Q,O).catch(()=>{});return fv(Q),{item:d}}})});import{z as i04}from"zod";var n04,Vl0;var $18=B(()=>{_3();I5();X1();BQ();$m();FW();n04=Zn.extend({force:i04.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),Vl0=s({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:n04,outputSchema:Xn(CX),handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=await X.storage.connections.findById(Z.id);if(!Y)throw Error(`Connection not found: ${Z.id}`);if(Y.organization_id!==G.id)throw Error("Connection not found in organization");if(Y.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let $=await X.storage.virtualMcps.listByConnectionId(G.id,Z.id);if($.length>0)if(Z.force)await X.storage.virtualMcps.removeConnectionReferences(Z.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:$.map((K)=>K.title)}));await X.storage.connections.delete(Z.id);let J=await X.storage.organizationSettings.get(G.id);if(J?.registry_config){let{registries:K,blockedMcps:N}=J.registry_config;if(Z.id in K){let{[Z.id]:U,...F}=K;await X.storage.organizationSettings.upsert(G.id,{registry_config:{registries:F,blockedMcps:N}})}}p9()?.invalidate(Z.id).catch(()=>{}),fv(Z.id);let W=x1(X);if(W)i1.capture({distinctId:W,event:"connection_deleted",groups:{organization:G.id},properties:{connection_id:Y.id,connection_type:Y.connection_type,app_name:Y.app_name??null,organization_id:G.id,forced:Z.force??!1}});return{item:Y}}})});import{z as R_}from"zod";var Cl0;var J18=B(()=>{X1();Cl0=s({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:R_.object({id:R_.string()}),outputSchema:R_.object({id:R_.string(),healthy:R_.boolean(),latencyMs:R_.number()}),handler:async(Z,X)=>{let G=O0(X);await X.access.check();let Y=await X.storage.connections.findById(Z.id);if(!Y||Y.organization_id!==G.id)throw Error("Connection not found");let Q=await X.storage.connections.testConnection(Z.id);return{id:Z.id,...Q}}})});var W18=B(()=>{O08();G18();Y18();Q18();$18();J18()});import{sql as u4}from"kysely";import{z as nW}from"zod";function K18(Z){if(Z===null||Z===void 0)return"NULL";if(typeof Z==="number")return String(Z);if(typeof Z==="boolean")return Z?"TRUE":"FALSE";if(typeof Z==="string")return`'${Z.replace(/'/g,"''")}'`;if(Z instanceof Date)return`'${Z.toISOString()}'`;return`'${JSON.stringify(Z).replace(/'/g,"''")}'`}function r04(Z,X){let G=Z;for(let Q=X.length;Q>=1;Q--){let $=`$${Q}`;if(G.includes($))G=G.replaceAll($,K18(X[Q-1]))}let Y=[];for(let Q=0;Q<G.length;Q++)if(G[Q]==="?")Y.push(Q);for(let Q=Math.min(Y.length,X.length)-1;Q>=0;Q--){let $=Y[Q],J=K18(X[Q]);G=G.slice(0,$)+J+G.slice($+1)}return G}function N18(Z){return Z.replace(/-/g,"_")}function a04(Z){return`app_${N18(Z)}`}function s04(Z){return`app_role_${N18(Z)}`}function e04(Z){if(Z instanceof Error){let X=Z.message.toLowerCase(),G=Z.code;return G==="3F000"||G==="42704"||G==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function Z14(Z,X,G){if(await u4`CREATE SCHEMA IF NOT EXISTS ${u4.id(X)}`.execute(Z),!(await u4`
|
|
1142
|
+
`);return new _90({connections:[Z],superUser:G,mcpListCache:p9()??void 0,listTimeoutMs:Y?.listTimeoutMs,instructions:$},X)}var A_=B(()=>{b6();BQ();Ew();se1();$08()});var Se1={};Q4(Se1,{clientFromConnection:()=>sZ});async function sZ(Z,X,G=!1){if(Z.connection_type==="VIRTUAL")return W08(Z,X,G);return me1(Z,X,G)}var Wm=B(()=>{ie1();A_()});async function Dl0(Z,X,G){let Y=new AbortController,Q,$=new Promise((W,K)=>{Q=setTimeout(()=>{Y.abort(),K(new N08(Z.id,G))},G)}),J=(async()=>{let W=await sZ(Z,X,!0);try{return(await W.listTools(void 0,{timeout:G,signal:Y.signal})).tools}finally{await W.close().catch(()=>{})}})();J.catch(()=>{});try{return await Promise.race([J,$])}finally{if(Q)clearTimeout(Q)}}var N08;var U08=B(()=>{Wm();N08=class N08 extends Error{constructor(Z,X){super(`listTools timed out after ${X}ms for connection ${Z}`);this.name="ListToolsTimeoutError"}}});function u90(Z){return(X)=>{if(X instanceof S1&&X.code===y1.MethodNotFound)return Z;throw X}}var F08=B(()=>{n9()});function c90(Z,X,G){let Y=nH(Z,X,G,p9()??void 0),Q=AD(Y,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:$e6,toolCallTimeoutMs:ib});Q.server.setRequestHandler(uF,async()=>{return await Y.listResources().catch(u90({resources:[]}))}),Q.server.setRequestHandler(cF,async()=>{return await Y.listResourceTemplates().catch(u90({resourceTemplates:[]}))}),Q.server.setRequestHandler(lF,async()=>{return await Y.listPrompts().catch(u90({prompts:[]}))});let $=Q.close.bind(Q);return Q.close=async()=>{await $(),await Y.close().catch(()=>{})},Q}var $e6;var H08=B(()=>{SG();n9();Jm();BQ();F08();$e6={tools:{},resources:{},prompts:{}}});var Lw=B(()=>{Wm();U08();H08()});function pi(Z,X,G){if(X.some((Y)=>Y!=="*"&&Y.startsWith("SELF::"))&&Z.SELF===void 0)Z.SELF={value:`${G}_self`}}function ti(Z,X){let G=new Map;for(let Y of X){if(Y==="*")continue;let[Q,$]=x60(Y);if(!Je6.has($))continue;let J=hl(Q,Z);if(typeof J!=="object"||J===null||!("value"in J))continue;let W=J.value;if(typeof W!=="string")continue;G.set(`${W}:${$}`,{targetConnectionId:W,scope:$})}return[...G.values()]}async function ri(Z,X,G,Y){for(let $ of X){if($==="*")continue;let[J]=x60($),W=hl(J,Z);if(W===void 0||W===null)throw Error(`Scope references key "${J}" but it's not present in state`)}let Q=Lc1(Z,X);for(let $ of Q){if($.endsWith("_self"))continue;let J=await Y.storage.connections.findById($);if(!J||J.organization_id!==G)throw Error(`Referenced connection not found: ${$}`);try{await Y.access.check($)}catch(W){throw Error(`Access denied to referenced connection: ${$}. ${W.message}`)}}}var Je6;var El0=B(()=>{P_0();y60();Je6=new Set([v60,_60])});import{z as w08}from"zod";var We6,Ke6,Ll0;var O08=B(()=>{I5();X1();y8();BQ();Lw();El0();fl();FW();We6=w08.object({data:u00.describe("Data for the new connection (id is auto-generated if not provided)")}),Ke6=w08.object({item:CX.describe("The created connection entity")}),Ll0=s({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:We6,outputSchema:Ke6,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to create connection");let Q={...Z.data,organization_id:G.id,created_by:Y};if(Q.id){if((await X.storage.connections.findById(Q.id))?.organization_id===G.id)throw Error("Connection already exists in organization")}if(Q.connection_type==="VIRTUAL"){let F=Ib(Q.connection_url);if(!F)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let H=await X.storage.virtualMcps.findById(F);if(!H)throw Error(`Virtual MCP not found: ${F}`);if(H.organization_id!==G.id)throw Error("Virtual MCP does not belong to the current organization");Q.connection_url=qb(F)}if(Q.connection_type==="STDIO"&&!K1().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let $=await wH({id:`pending-${Date.now()}`,title:Q.title,connection_type:Q.connection_type,connection_url:Q.connection_url,connection_token:Q.connection_token,connection_headers:Q.connection_headers}).catch(()=>null),J=$?.tools?.length?$.tools:null,W=$?.scopes?.length?$.scopes:Q.configuration_scopes??null,K=Q.configuration_state??null;if(K&&W?.length)pi(K,W,G.id),await ri(K,W,G.id,X);let N=await X.storage.connections.createNew({...Q,tools:null,configuration_state:K,configuration_scopes:W}),U=K&&W?.length?ti(K,W):[];if(U.length>0){let F;try{await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:N.id,createdBy:Y,grants:U});let{plaintextToken:H,record:w}=await X.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:G.id,subjectConnectionId:N.id});F=w.id,await(await sZ(N,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:K,scopes:W,firstRun:!0,vault:{baseUrl:X.baseUrl,org:G.slug??G.id,subjectConnectionId:N.id,token:H}}})}catch(H){if(F)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:N.id,tokenId:F});throw await X.storage.connections.delete(N.id),H}}if(J)p9()?.set("tools",N.id,J).catch(()=>{});return i1.capture({distinctId:Y,event:"connection_created",groups:{organization:G.id},properties:{connection_id:N.id,connection_type:N.connection_type,app_name:N.app_name??null,organization_id:G.id,tools_count:J?.length??0}}),{item:N}}})});import{z as v3}from"zod/v4";import{z as B08}from"zod/v4";import{z as l90}from"zod/v4";import{z as dW}from"zod/v4";import{z as He6}from"zod/v4";import{z as xE}from"zod/v4";import{z as mW}from"zod/v4";import{z as S7}from"zod/v4";import{z as D08}from"zod/v4";import{z as i90}from"zod/v4";import{z as ve6}from"zod/v4";import{z as E08}from"zod/v4";import{z as d90}from"zod/v4";import{z as me6}from"zod/v4";function oi(Z,X){if(Z===X)return!0;if(Z==null||X==null)return Z===X;if(typeof Z!==typeof X)return!1;if(Array.isArray(Z)&&Array.isArray(X)){if(Z.length!==X.length)return!1;return Z.every((G,Y)=>oi(G,X[Y]))}if(typeof Z==="object"&&typeof X==="object"){let G=Object.keys(Z),Y=Object.keys(X);if(G.length!==Y.length)return!1;return G.every((Q)=>Y.includes(Q)&&oi(Z[Q],X[Q]))}return!1}function fe6(){return(Z)=>{if(!Array.isArray(Z))return!0;let X=[];return Z.every((G)=>{if(X.some((Q)=>oi(G,Q)))return!1;return X.push(G),!0})}}function m90(Z,X){return Z.safeParse(X).success}function WX(Z){if(typeof Z==="boolean")return Z?v3.any():v3.never();let X={};for(let Q of te6)Q.apply(X,Z);let G=[];if(X.string!==!1)G.push(X.string||v3.string());if(X.number!==!1)G.push(X.number||v3.number());if(X.boolean!==!1)G.push(X.boolean||v3.boolean());if(X.null!==!1)G.push(X.null||v3.null());if(X.array!==!1)G.push(X.array||v3.array(v3.any()));if(X.tuple!==!1&&X.tuple!==void 0)G.push(X.tuple);if(X.object!==!1)if(X.object)G.push(X.object);else{let Q=v3.custom(($)=>{return typeof $==="object"&&$!==null&&!Array.isArray($)},"Must be an object, not an array");G.push(Q)}if(X.file!==!1&&X.file!==void 0)G.push(X.file);let Y;if(G.length===0)Y=v3.never();else if(G.length===1)Y=G[0];else if(!Object.keys(Z).some(($)=>$!=="$schema"&&$!=="title"&&$!=="description"))Y=v3.any();else Y=v3.union(G);for(let Q of re6)Y=Q.apply(Y,Z);return Y}var Ne6=class{apply(Z,X){if(!X.type)return;let G=Array.isArray(X.type)?X.type:[X.type],Y=new Set(G);if(!Y.has("string"))Z.string=!1;if(!Y.has("number")&&!Y.has("integer"))Z.number=!1;if(!Y.has("boolean"))Z.boolean=!1;if(!Y.has("null"))Z.null=!1;if(!Y.has("array"))Z.array=!1;if(!Y.has("object"))Z.object=!1;if(Y.has("integer")&&Z.number!==!1){let Q=Z.number||B08.number();if(Q instanceof B08.ZodNumber)Z.number=Q.int()}}},Ue6=class{apply(Z,X){if(X.const===void 0)return;let G=X.const;if(Z.string=!1,Z.number=!1,Z.boolean=!1,Z.null=!1,Z.array=!1,Z.object=!1,typeof G==="string")Z.string=l90.literal(G);else if(typeof G==="number")Z.number=l90.literal(G);else if(typeof G==="boolean")Z.boolean=l90.literal(G);else if(G===null)Z.null=l90.null();else if(Array.isArray(G))Z.array=void 0;else if(typeof G==="object")Z.object=void 0}},Fe6=class{apply(Z,X){if(!X.enum)return;if(X.enum.length===0){if(!X.type)Z.string=!1,Z.number=!1,Z.boolean=!1,Z.null=!1,Z.array=!1,Z.object=!1;return}let G={string:X.enum.filter((Y)=>typeof Y==="string"),number:X.enum.filter((Y)=>typeof Y==="number"),boolean:X.enum.filter((Y)=>typeof Y==="boolean"),null:X.enum.filter((Y)=>Y===null),array:X.enum.filter((Y)=>Array.isArray(Y)),object:X.enum.filter((Y)=>typeof Y==="object"&&Y!==null&&!Array.isArray(Y))};Z.string=this.createTypeSchema(G.string,"string"),Z.number=this.createTypeSchema(G.number,"number"),Z.boolean=this.createTypeSchema(G.boolean,"boolean"),Z.null=G.null.length>0?dW.null():!1,Z.array=G.array.length>0?void 0:!1,Z.object=G.object.length>0?void 0:!1}createTypeSchema(Z,X){if(Z.length===0)return!1;if(Z.length===1)return dW.literal(Z[0]);if(X==="string")return dW.enum(Z);if(X==="number"){let[G,Y,...Q]=Z;return dW.union([dW.literal(G),dW.literal(Y),...Q.map(($)=>dW.literal($))])}if(X==="boolean")return dW.union([dW.literal(!0),dW.literal(!1)]);return!1}},we6=class{apply(Z,X){let G=X;if(G.type==="string"&&G.format==="binary"&&G.contentEncoding==="binary"){let Y=He6.file();if(G.minLength!==void 0)Y=Y.min(G.minLength);if(G.maxLength!==void 0)Y=Y.max(G.maxLength);if(G.contentMediaType!==void 0)Y=Y.mime(G.contentMediaType);Z.file=Y,Z.string=!1}}},Oe6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.minLength!==void 0||G.maxLength!==void 0||G.pattern!==void 0)){if(Z.string===void 0)Z.string=xE.string()}}},Be6=class{apply(Z,X){let G=X;if(G.minLength===void 0)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString)Z.string=Y.refine((Q)=>{return Array.from(Q).length>=G.minLength},{message:`String must be at least ${G.minLength} characters long`})}}},De6=class{apply(Z,X){let G=X;if(G.maxLength===void 0)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString)Z.string=Y.refine((Q)=>{return Array.from(Q).length<=G.maxLength},{message:`String must be at most ${G.maxLength} characters long`})}}},Ee6=class{apply(Z,X){let G=X;if(!G.pattern)return;if(Z.string!==!1){let Y=Z.string||xE.string();if(Y instanceof xE.ZodString){let Q=new RegExp(G.pattern);Z.string=Y.regex(Q)}}}},Le6=class{apply(Z,X){let G=X;if(G.minimum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.min(G.minimum)}}},ze6=class{apply(Z,X){let G=X;if(G.maximum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.max(G.maximum)}}},je6=class{apply(Z,X){let G=X;if(G.exclusiveMinimum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)if(typeof G.exclusiveMinimum==="number")Z.number=Y.gt(G.exclusiveMinimum);else Z.number=!1}}},Ae6=class{apply(Z,X){let G=X;if(G.exclusiveMaximum===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)if(typeof G.exclusiveMaximum==="number")Z.number=Y.lt(G.exclusiveMaximum);else Z.number=!1}}},Pe6=class{apply(Z,X){let G=X;if(G.multipleOf===void 0)return;if(Z.number!==!1){let Y=Z.number||mW.number();if(Y instanceof mW.ZodNumber)Z.number=Y.refine((Q)=>{if(G.multipleOf===0)return!1;let $=Q/G.multipleOf,J=Math.round($),W=Math.min(Math.abs(Q)*Number.EPSILON*10,Math.abs(G.multipleOf)*Number.EPSILON*10);return Math.abs($-J)<=W/Math.abs(G.multipleOf)},{message:`Must be a multiple of ${G.multipleOf}`})}}},Te6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.minItems!==void 0||G.maxItems!==void 0||G.items!==void 0||G.prefixItems!==void 0)){if(Z.array===void 0)Z.array=S7.array(S7.any())}}},Re6=class{apply(Z,X){let G=X;if(G.minItems===void 0)return;if(Z.array!==!1)Z.array=(Z.array||S7.array(S7.any())).min(G.minItems)}},Ie6=class{apply(Z,X){let G=X;if(G.maxItems===void 0)return;if(Z.array!==!1)Z.array=(Z.array||S7.array(S7.any())).max(G.maxItems)}},qe6=class{apply(Z,X){let G=X;if(Z.array===!1)return;if(Array.isArray(G.items))Z.array=Z.array||S7.array(S7.any());else if(G.items&&typeof G.items!=="boolean"&&!G.prefixItems){let Y=WX(G.items),Q=S7.array(Y);if(Z.array&&Z.array instanceof S7.ZodArray){let $=Z.array._def;if($.checks)$.checks.forEach((J)=>{if(J._zod&&J._zod.def){let W=J._zod.def;if(W.check==="min_length"&&W.minimum!==void 0)Q=Q.min(W.minimum);else if(W.check==="max_length"&&W.maximum!==void 0)Q=Q.max(W.maximum)}})}Z.array=Q}else if(typeof G.items==="boolean"&&G.items===!1)if(!G.prefixItems)Z.array=S7.array(S7.any()).max(0);else Z.array=Z.array||S7.array(S7.any());else if(typeof G.items==="boolean"&&G.items===!0)Z.array=Z.array||S7.array(S7.any());else if(G.prefixItems)Z.array=Z.array||S7.array(S7.any())}},Me6=class{apply(Z,X){if(X.type!=="array")return;let G=X;if(!Array.isArray(G.items))return;if(Z.array===!1)return;let Y=G.items.map(($)=>WX($)),Q;if(Y.length===0)Q=D08.tuple([]);else Q=D08.tuple(Y);if(G.minItems!==void 0&&G.minItems>Y.length)Q=!1;if(G.maxItems!==void 0&&G.maxItems<Y.length)Q=!1;Z.tuple=Q,Z.array=!1}},ke6=class{apply(Z,X){let G=X;if(Z.object===!1)return;if(G.properties||G.required||G.additionalProperties!==void 0)Z.object=Z.object||i90.object({}).passthrough()}},Se6=class{apply(Z,X){let G=X;if(X.type===void 0&&(G.maxProperties!==void 0||G.minProperties!==void 0)){if(Z.object===void 0)Z.object=i90.object({}).passthrough()}}},Ve6=class{apply(Z,X){let G=X;if(G.maxProperties===void 0)return;if(Z.object!==!1){let Y=Z.object||i90.object({}).passthrough();Z.object=Y.refine((Q)=>Object.keys(Q).length<=G.maxProperties,{message:`Object must have at most ${G.maxProperties} properties`})}}},Ce6=class{apply(Z,X){let G=X;if(G.minProperties===void 0)return;if(Z.object!==!1){let Y=Z.object||i90.object({}).passthrough();Z.object=Y.refine((Q)=>Object.keys(Q).length>=G.minProperties,{message:`Object must have at least ${G.minProperties} properties`})}}},be6=class{apply(Z,X){if(!X.not)return Z;let G=WX(X.not);return Z.refine((Y)=>!m90(G,Y),{message:"Value must not match the 'not' schema"})}},xe6=class{apply(Z,X){if(X.uniqueItems!==!0)return Z;return Z.refine(fe6(),{message:"Array items must be unique"})}},_e6=class{apply(Z,X){if(!X.allOf||X.allOf.length===0)return Z;return X.allOf.map((Y)=>WX(Y)).reduce((Y,Q)=>ve6.intersection(Y,Q),Z)}},ye6=class{apply(Z,X){if(!X.anyOf||X.anyOf.length===0)return Z;let G=X.anyOf.length===1?WX(X.anyOf[0]):E08.union([WX(X.anyOf[0]),WX(X.anyOf[1]),...X.anyOf.slice(2).map((Y)=>WX(Y))]);return E08.intersection(Z,G)}},ge6=class{apply(Z,X){if(!X.oneOf||X.oneOf.length===0)return Z;let G=X.oneOf.map((Y)=>WX(Y));return Z.refine((Y)=>{let Q=0;for(let $ of G)if($.safeParse(Y).success){if(Q++,Q>1)return!1}return Q===1},{message:"Value must match exactly one of the oneOf schemas"})}},he6=class{apply(Z,X){let G=X;if(G.prefixItems&&Array.isArray(G.prefixItems)){let Q=G.prefixItems.map(($)=>WX($));return Z.refine(($)=>{if(!Array.isArray($))return!0;for(let J=0;J<Math.min($.length,Q.length);J++)if(!m90(Q[J],$[J]))return!1;if($.length>Q.length){if(typeof G.items==="boolean"&&G.items===!1)return!1;else if(G.items&&typeof G.items==="object"&&!Array.isArray(G.items)){let J=WX(G.items);for(let W=Q.length;W<$.length;W++)if(!m90(J,$[W]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return Z}},ue6=class{apply(Z,X){let G=X;if(!G.properties&&!G.required&&G.additionalProperties!==!1)return Z;if(Z instanceof d90.ZodObject||Z instanceof d90.ZodRecord){let Y={};if(G.properties){for(let[Q,$]of Object.entries(G.properties))if($!==void 0)Y[Q]=WX($)}if(G.required&&Array.isArray(G.required)){let Q=new Set(G.required);for(let $ of Object.keys(Y))if(!Q.has($))Y[$]=Y[$].optional()}else for(let Q of Object.keys(Y))Y[Q]=Y[Q].optional();if(G.additionalProperties===!1)return d90.object(Y);else return d90.object(Y).passthrough()}return Z.refine((Y)=>{if(typeof Y!=="object"||Y===null||Array.isArray(Y))return!0;if(G.properties){for(let[Q,$]of Object.entries(G.properties))if($!==void 0){if(Object.getOwnPropertyDescriptor(Y,Q)!==void 0){if(!WX($).safeParse(Y[Q]).success)return!1}}}if(G.required&&Array.isArray(G.required)){for(let Q of G.required)if(Object.getOwnPropertyDescriptor(Y,Q)===void 0)return!1}if(G.additionalProperties===!1&&G.properties){let Q=new Set(Object.keys(G.properties));for(let $ in Y)if(!Q.has($))return!1}return!0},{message:"Object constraints validation failed"})}},ce6=class{apply(Z,X){if(!X.enum||X.enum.length===0)return Z;let G=X.enum.filter((Y)=>Array.isArray(Y)||typeof Y==="object"&&Y!==null);if(G.length===0)return Z;return Z.refine((Y)=>{if(typeof Y!=="object"||Y===null)return!0;return G.some((Q)=>oi(Y,Q))},{message:"Value must match one of the enum values"})}},le6=class{apply(Z,X){if(X.const===void 0)return Z;let G=X.const;if(typeof G!=="object"||G===null)return Z;return Z.refine((Y)=>oi(Y,G),{message:"Value must equal the const value"})}},de6=class{apply(Z,X){if(X.description)Z=Z.describe(X.description);return Z}},ie6=class{apply(Z,X){var G;let Y=X;if(!((G=Y.required)==null?void 0:G.includes("__proto__"))||X.type!==void 0)return Z;return me6.any().refine((Q)=>this.validateRequired(Q,Y.required),{message:"Missing required properties"})}validateRequired(Z,X){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return!0;return X.every((G)=>Object.prototype.hasOwnProperty.call(Z,G))}},ne6=class{apply(Z,X){var G;let Y=X;if(Y.contains===void 0)return Z;let Q=WX(Y.contains),$=(G=Y.minContains)!=null?G:1,J=Y.maxContains;return Z.refine((W)=>{if(!Array.isArray(W))return!0;let K=0;for(let N of W)if(m90(Q,N))K++;if(K<$)return!1;if(J!==void 0&&K>J)return!1;return!0},{message:"Array must contain required items matching the schema"})}},pe6=class{apply(Z,X){let{default:G}=X;if(G===void 0)return Z;if(!Z.safeParse(G).success)return Z;return Z.default(G)}},te6,re6;var L08=B(()=>{te6=[new Ue6,new Fe6,new Ne6,new we6,new Oe6,new Te6,new Se6,new Be6,new De6,new Ee6,new Le6,new ze6,new je6,new Ae6,new Pe6,new Me6,new Re6,new Ie6,new qe6,new Ve6,new Ce6,new ke6],re6=[new ie6,new ce6,new le6,new _e6,new ye6,new ge6,new he6,new ue6,new ne6,new be6,new xe6,new pe6,new de6]});class zl0{constructor(Z){this._url=Z}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((Z,X)=>{this._socket=new WebSocket(this._url,oe6),this._socket.onerror=(G)=>{let Y="error"in G?G.error:Error(`WebSocket error: ${JSON.stringify(G)}`);X(Y),this.onerror?.(Y)},this._socket.onopen=()=>{Z()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(G)=>{let Y;try{Y=UQ.parse(JSON.parse(G.data))}catch(Q){this.onerror?.(Q);return}this.onmessage?.(Y)}})}async close(){this._socket?.close()}send(Z){return new Promise((X,G)=>{if(!this._socket){G(Error("Not connected"));return}this._socket?.send(JSON.stringify(Z)),X()})}}var oe6="mcp";var z08=B(()=>{n9()});function ae6(Z){let X=Z;if(!X||typeof X!=="object"||!("method"in X))return null;switch(X.method){case"initialize":{let G=X?.params?.protocolVersion;if(!G)return null;return{type:"emit",message:{result:{protocolVersion:G,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:X.jsonrpc??"2.0",id:X.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var n90;var jl0=B(()=>{Tx();n90=class n90 extends EW{constructor(Z,X){super(Z,X)}send(Z,X){let G=ae6(Z);if(G?.type==="emit")return this.onmessage?.(G.message),Promise.resolve();if(G?.type==="suppress")return Promise.resolve();return super.send(Z,X)}}});var j08,A08=async(Z,X,G)=>{let Y=se6(Z.connection,X,G);if(!Y)throw Error("Unknown MCP connection type");let Q=new j08({name:Z?.name??"MCP Client",version:"1.0.0"});return await Q.connect(Y),{client:Q}},se6=(Z,X,G)=>{if(Z.type==="Websocket")return new zl0(new URL(Z.url));if(Z.type!=="SSE"&&Z.type!=="HTTP")return null;let Q={...Z.token?{authorization:`Bearer ${Z.token}`}:{},...G??{},..."headers"in Z?Z.headers||{}:{}};if(Z.type==="SSE"){let $={requestInit:{headers:Q,signal:X}};if(Z.token)$.eventSourceInit={fetch:(J,W)=>{return fetch(J,{...W,headers:{...Q,Accept:"text/event-stream"},signal:X})}};return new hN(new URL(Z.url),$)}return new n90(new URL(Z.url),{requestInit:{headers:Q,signal:X,credentials:"include"}})};var P08=B(()=>{DW();Sl();z08();n9();SG();jl0();j08=class j08 extends kZ{constructor(Z,X){super(Z,{jsonSchemaValidator:D9,...X})}async listTools(Z,X){return await this.request({method:"tools/list",params:Z},wc,X)}}});function I08(Z){let X=(G)=>{if("connection"in Z)return A08({connection:Z.connection},void 0,G);return Z.client};return new Proxy({},{get(G,Y){if(Y==="toJSON")return null;if(typeof Y!=="string")throw Error("Name must be a string");if(Y==="listTools")return W;async function Q(K,N=Y){let U=Z?.debugId?.(),F=U?{"x-trace-debug-id":U}:void 0,{client:H}=await X(F),{structuredContent:w,isError:O,content:D}=await H.callTool({name:String(N),arguments:K});if(O){let L=D?.[0]?.text,z=typeof L==="string"?T08(L):null,j=z?.code&&typeof Z?.getErrorByStatusCode==="function"?Z.getErrorByStatusCode(z.code,z.message,z.traceId):null;if(j)throw j;throw Error(`Tool ${String(N)} returned an error: ${JSON.stringify(w??D)}`)}if(w!==void 0)return w;let E=D?.[0]?.text;return typeof E==="string"?T08(E):void 0}async function $(){let{client:K}=await X(),{tools:N}=await K.listTools();return N}async function J(){if(!("connection"in Z))return $();let K=Z.connection,N=JSON.stringify(K);try{if(!p90.has(N))p90.set(N,$());return await p90.get(N)}catch(U){console.error("Failed to list tools",U),p90.delete(N);return}}async function W(){return(await J()??[]).map((N)=>R08(N,Q))}return Q.asTool=async()=>{let N=(await J()??[]).find((U)=>U.name===Y);if(!N)throw Error(`Tool ${Y} not found`);return R08(N,Q)},Q}})}var T08=(Z)=>{try{return JSON.parse(Z)}catch{return Z}},p90,R08=(Z,X)=>{return{...Z,id:Z.name,inputSchema:Z.inputSchema?WX(Z.inputSchema):void 0,outputSchema:Z.outputSchema?WX(Z.outputSchema):void 0,execute:(G)=>{return X(G.context,Z.name)}}};var q08=B(()=>{L08();P08();p90=new Map});function vE(Z){return I08(Z)}var P_;var Al0=B(()=>{q08();P_=new Proxy({},{get(Z,X){if(X==="toJSON")return null;if(X==="forConnection")return(G)=>vE({connection:G});return globalThis[X]}})});function t90(Z){return{isImplementedBy:(X)=>{for(let G of Z){let Y=typeof G.name==="string"?new RegExp(`^${G.name}$`):G.name,Q=X.find(($)=>Y.test($.name));if(!Q&&G.opt)continue;if(!Q)return!1}return!0}}}var iW=(Z)=>{return{...t90(Z),forClient:(X)=>{return vE({client:X})},forConnection:(X)=>{return vE({connection:X})}}};var _E=B(()=>{Al0()});import{z as C9}from"zod";var M08,r90,k08,o90,S08,ee6;var V08=B(()=>{_E();M08=C9.object({specversion:C9.literal("1.0").describe("CloudEvents specification version"),id:C9.string().describe("Unique identifier for this event (UUID recommended)"),source:C9.string().describe("Connection ID of the event publisher"),type:C9.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:C9.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:C9.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:C9.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:C9.string().url().optional().describe("URI to the schema for the data attribute"),data:C9.unknown().optional().describe("Event payload (any JSON value)")}),r90=C9.object({events:C9.array(M08).min(1).describe("Batch of CloudEvents to process")}),k08=C9.object({success:C9.boolean().optional().describe("Whether this event was processed successfully"),error:C9.string().optional().describe("Error message for this event"),retryAfter:C9.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),o90=C9.object({success:C9.boolean().optional().describe("Batch success - applies to events not in results"),error:C9.string().optional().describe("Batch error message - applies to events not in results"),processedCount:C9.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:C9.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:C9.record(C9.string(),k08).optional().describe("Per-event results keyed by event ID")}),S08=[{name:"ON_EVENTS",inputSchema:r90,outputSchema:o90}],ee6=iW(S08)});import{z as f9}from"zod";var C08,f08,b08,x08,v08,_08,a90,Pl0;var Tl0=B(()=>{_E();C08=f9.object({type:f9.literal("string"),enum:f9.array(f9.string()).optional(),description:f9.string().optional()}),f08=f9.object({type:f9.string(),description:f9.string(),paramsSchema:f9.record(f9.string(),C08)}),b08=f9.object({}),x08=f9.object({triggers:f9.array(f08)}),v08=f9.object({type:f9.string(),params:f9.record(f9.string(),f9.string()),enabled:f9.boolean(),callbackUrl:f9.url().optional(),callbackToken:f9.string().min(1).optional()}),_08=f9.object({success:f9.boolean()}),a90=[{name:"TRIGGER_LIST",inputSchema:b08,outputSchema:x08},{name:"TRIGGER_CONFIGURE",inputSchema:v08,outputSchema:_08}],Pl0=iW(a90)});import{z as j5}from"zod";var y08,g08,h08,ai,s90,e90,ZZ0,XZ0,Z04;var Rl0=B(()=>{_E();y08=j5.object({primary:j5.string().optional().describe("Primary brand color (hex)"),secondary:j5.string().optional().describe("Secondary brand color (hex)"),accent:j5.string().optional().describe("Accent / highlight color (hex)"),background:j5.string().optional().describe("Background color (hex)"),foreground:j5.string().optional().describe("Foreground / text color (hex)")}),g08=j5.object({heading:j5.string().optional().describe("Font family for headings"),body:j5.string().optional().describe("Font family for body text"),code:j5.string().optional().describe("Font family for code / monospace")}),h08=j5.object({logo:j5.string().optional().describe("Logo URL"),favicon:j5.string().optional().describe("Favicon URL"),ogImage:j5.string().optional().describe("Open Graph image URL")}),ai=j5.object({id:j5.string(),name:j5.string().describe("Brand / company name"),domain:j5.string().optional().describe("Company domain (e.g. example.com)"),colors:y08.optional().describe("Semantic color palette"),fonts:g08.optional().describe("Font families by role"),assets:h08.optional().describe("Visual identity assets"),overview:j5.string().optional().describe("Company overview / description"),tagline:j5.string().optional().describe("Brand tagline"),tone:j5.string().optional().describe("Tone of voice description"),metadata:j5.record(j5.string(),j5.unknown()).optional().describe("Extra design tokens and metadata")}),s90=j5.object({id:j5.string().optional().describe("Brand ID. Omit to get the default brand.")}),e90=j5.object({}),ZZ0=j5.object({items:j5.array(ai)}),XZ0=[{name:"BRAND_GET",inputSchema:s90,outputSchema:ai},{name:"BRAND_LIST",inputSchema:e90,outputSchema:ZZ0,opt:!0}],Z04=iW(XZ0)});var Il0=B(()=>{_E();V08();Tl0();zc();Rl0()});import{z as z6}from"zod";function QU(Z){return z6.object({items:z6.array(Z).describe("Array of collection items"),totalCount:z6.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:z6.boolean().optional().describe("Whether there are more items available")})}function ei(Z){return z6.object({item:Z.nullable().describe("The retrieved item, or null if not found")})}function Y04(Z){return z6.object({data:Z.partial().describe("Data for the new entity (id may be auto-generated)")})}function Q04(Z){return z6.object({item:Z.describe("The created entity with generated id")})}function $04(Z){return z6.object({id:z6.string().describe("ID of the entity to update"),data:Z.partial().describe("Partial entity data to update")})}function J04(Z){return z6.object({item:Z.describe("The updated entity")})}function Xn(Z){return z6.object({item:Z.describe("The deleted entity")})}function YZ0(Z,X,G){let Y=Z.toUpperCase(),Q=G?.readOnly??!1,$=[{name:`COLLECTION_${Y}_LIST`,inputSchema:UJ,outputSchema:QU(X)},{name:`COLLECTION_${Y}_GET`,inputSchema:si,outputSchema:ei(X)}];if(!Q)$.push({name:`COLLECTION_${Y}_CREATE`,inputSchema:Y04(X),outputSchema:Q04(X),opt:!0},{name:`COLLECTION_${Y}_UPDATE`,inputSchema:$04(X),outputSchema:J04(X),opt:!0},{name:`COLLECTION_${Y}_DELETE`,inputSchema:Zn,outputSchema:Xn(X),opt:!0});return $}var GZ0,X04,u08,G04,UJ,si,Zn;var _3=B(()=>{GZ0=z6.object({id:z6.string().describe("Unique identifier for the entity"),title:z6.string().describe("Human-readable title for the entity"),description:z6.string().nullish().describe("Description of the entity"),created_at:z6.string().datetime(),updated_at:z6.string().datetime(),created_by:z6.string().optional(),updated_by:z6.string().optional()}),X04=z6.object({field:z6.array(z6.string()),operator:z6.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:z6.unknown()}),u08=z6.lazy(()=>z6.union([X04,z6.object({operator:z6.enum(["and","or","not"]),conditions:z6.array(u08)})])),G04=z6.object({field:z6.array(z6.string()),direction:z6.enum(["asc","desc"]),nulls:z6.enum(["first","last"]).optional()}),UJ=z6.object({where:u08.optional().describe("Filter expression"),orderBy:z6.array(G04).optional().describe("Sort expressions"),limit:z6.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:z6.number().int().min(0).optional().describe("Number of items to skip")});si=z6.object({id:z6.string().describe("ID of the entity to retrieve")});Zn=z6.object({id:z6.string().describe("ID of the entity to delete")})});import{z as T_}from"zod";var W04,K04,c08;var l08=B(()=>{_3();W04=GZ0.extend({avatar:T_.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:T_.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:T_.string().describe("Virtual MCP ID to use for this assistant"),model:T_.object({id:T_.string().describe("Model ID"),connectionId:T_.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),K04=YZ0("assistant",W04),c08=[...K04]});import{z as I0}from"zod";var Gn,$U,m08,N04,U04,i08,F04,H04,w04,O04,B04,D04,n08,E04,L04,z04,j04,A04,P04,T04,R04,I04,q04,jJ9,M04,AJ9,d08,k04,S04,QZ0,PJ9;var p08=B(()=>{_E();_3();Gn=I0.lazy(()=>I0.union([I0.null(),I0.string(),I0.number(),I0.boolean(),I0.record(I0.string(),Gn),I0.array(Gn)])),$U=I0.record(I0.string(),I0.record(I0.string(),Gn)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),m08=I0.object({type:I0.literal("text"),text:I0.string().describe("The text content"),providerOptions:$U}),N04=I0.object({type:I0.literal("text"),text:I0.string().describe("The text content"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),U04=I0.string().describe("File data as URL string"),i08=I0.object({type:I0.literal("file"),filename:I0.string().optional().describe("Optional filename of the file"),data:U04,mediaType:I0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:$U}),F04=I0.object({type:I0.literal("file"),mediaType:I0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:I0.string().describe("Generated file data as base64 encoded string")}),H04=I0.object({type:I0.literal("reasoning"),text:I0.string().describe("The reasoning text"),providerOptions:$U}),w04=I0.object({type:I0.literal("reasoning"),text:I0.string().describe("The reasoning text"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),O04=I0.object({type:I0.literal("tool-call"),toolCallId:I0.string().describe("ID of the tool call, used to match with tool result"),toolName:I0.string().describe("Name of the tool being called"),input:I0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:I0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:$U}),B04=I0.object({type:I0.literal("tool-call"),toolCallId:I0.string().describe("ID of the tool call"),toolName:I0.string().describe("Name of the tool being called"),input:I0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:I0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),D04=I0.union([I0.object({type:I0.literal("text"),value:I0.string()}),I0.object({type:I0.literal("json"),value:Gn}),I0.object({type:I0.literal("error-text"),value:I0.string()}),I0.object({type:I0.literal("error-json"),value:Gn}),I0.object({type:I0.literal("content"),value:I0.array(I0.union([I0.object({type:I0.literal("text"),text:I0.string().describe("Text content")}),I0.object({type:I0.literal("media"),data:I0.string().describe("Base-64 encoded media data"),mediaType:I0.string().describe("IANA media type")})]))}),I0.object({type:I0.literal("execution-denied"),reason:I0.string().optional()}),I0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),n08=I0.object({type:I0.literal("tool-result"),toolCallId:I0.string().describe("ID of the tool call that this result is associated with"),toolName:I0.string().describe("Name of the tool that generated this result"),output:D04.describe("Result of the tool call"),result:I0.unknown().describe("Unknown result of the tool call"),providerOptions:$U}),E04=I0.object({type:I0.literal("tool-result"),toolCallId:I0.string().describe("ID of the tool call that this result is associated with"),toolName:I0.string().describe("Name of the tool that generated this result"),result:I0.any().describe("Result of the tool call (JSON-serializable)"),isError:I0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:I0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),L04=I0.union([I0.object({type:I0.literal("source"),sourceType:I0.literal("url"),id:I0.string().describe("The ID of the source"),url:I0.string().describe("The URL of the source"),title:I0.string().optional().describe("The title of the source"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")}),I0.object({type:I0.literal("source"),sourceType:I0.literal("document"),id:I0.string().describe("The ID of the source"),mediaType:I0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:I0.string().describe("The title of the document"),filename:I0.string().optional().describe("Optional filename of the document"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata")})]),z04=I0.object({role:I0.literal("system"),content:I0.string().describe("System message content"),providerOptions:$U}),j04=I0.object({role:I0.literal("user"),content:I0.array(I0.union([m08,i08])).describe("User message content parts (text or file)"),providerOptions:$U}),A04=I0.object({role:I0.literal("assistant"),content:I0.array(I0.union([m08,i08,H04,O04,n08])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:$U}),P04=I0.object({role:I0.literal("tool"),content:I0.array(n08).describe("Tool message content (tool results)"),providerOptions:$U}),T04=I0.union([z04,j04,A04,P04]),R04=I0.array(T04).describe("A list of messages forming the prompt"),I04=I0.object({prompt:R04.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:I0.number().optional().describe("Maximum number of tokens to generate"),temperature:I0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:I0.number().optional().describe("Nucleus sampling parameter"),topK:I0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:I0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:I0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:I0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:I0.array(I0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:I0.union([I0.object({type:I0.literal("text")}),I0.object({type:I0.literal("json"),schema:I0.any().optional().describe("JSON schema that the generated output should conform to"),name:I0.string().optional().describe("Name of output that should be generated"),description:I0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:I0.array(I0.any()).optional().describe("The tools that are available for the model"),toolChoice:I0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:I0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:I0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:I0.any().optional().describe("Additional provider-specific options")}),q04=I0.object({content:I0.array(I0.union([N04,F04,w04,B04,E04,L04])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:I0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:I0.looseObject({inputTokens:I0.number().optional(),outputTokens:I0.number().optional(),totalTokens:I0.number().optional(),reasoningTokens:I0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:I0.any().optional().describe("Additional provider-specific metadata"),request:I0.object({body:I0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:I0.object({id:I0.string().optional().describe("ID for the generated response"),timestamp:I0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:I0.string().optional().describe("The ID of the response model that was used"),headers:I0.record(I0.string(),I0.string()).optional().describe("Response headers"),body:I0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:I0.array(I0.any()).describe("Warnings for the call, e.g. unsupported settings")}),jJ9=I0.object({stream:I0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:I0.object({body:I0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:I0.object({headers:I0.record(I0.string(),I0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),M04=I0.object({supportedUrls:I0.record(I0.string(),I0.array(I0.string())).describe("Supported URL patterns by media type for the provider")}),AJ9=I0.object({modelId:I0.string().describe("The ID of the model"),logo:I0.string().nullable(),description:I0.string().nullable(),capabilities:I0.array(I0.string()),limits:I0.object({contextWindow:I0.number(),maxOutputTokens:I0.number()}).nullable(),costs:I0.object({input:I0.number(),output:I0.number()}).nullable(),provider:I0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),d08=I0.object({modelId:I0.string().describe("The ID of the model"),callOptions:I04}),k04=GZ0.extend({logo:I0.string().nullable(),description:I0.string().nullable(),capabilities:I0.array(I0.string()),limits:I0.object({contextWindow:I0.number(),maxOutputTokens:I0.number()}).nullable(),costs:I0.object({input:I0.number(),output:I0.number()}).nullable(),provider:I0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),S04=YZ0("llm",k04,{readOnly:!0}),QZ0=[{name:"LLM_METADATA",inputSchema:I0.object({modelId:I0.string().describe("The ID of the model")}),outputSchema:M04},{name:"LLM_DO_STREAM",inputSchema:d08},{name:"LLM_DO_GENERATE",inputSchema:d08,outputSchema:q04},...S04],PJ9=iW(QZ0)});import{z as yE}from"zod";var V04,t08;var r08=B(()=>{V04=yE.object({scopes:yE.array(yE.string()).describe("List of scopes available"),stateSchema:yE.record(yE.string(),yE.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),t08=[{name:"MCP_CONFIGURATION",inputSchema:yE.object({}),outputSchema:V04}]});import{z as b9}from"zod";var C04,f04,o08;var a08=B(()=>{C04=b9.object({}).strict(),f04=b9.object({billing:b9.object({mode:b9.enum(["prepaid","postpaid"]),limitPeriod:b9.enum(["daily","weekly","monthly"]).nullable()}),limit:b9.object({total:b9.number().nullable(),remaining:b9.number().nullable(),reset:b9.string().nullable()}),usage:b9.object({total:b9.number(),daily:b9.number(),weekly:b9.number(),monthly:b9.number()}),alert:b9.object({enabled:b9.boolean(),threshold_usd:b9.number(),email:b9.string().nullable()}),connectionId:b9.string()}),o08=[{name:"GATEWAY_USAGE",inputSchema:C04,outputSchema:f04},{name:"GATEWAY_SET_LIMIT",inputSchema:b9.object({}),outputSchema:b9.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:b9.object({}),outputSchema:b9.object({}),opt:!0}]});function s08(Z,X){return Z||X===0}function e08(Z,X,G,Y,Q){let $=X?Q+1:Q,J=X?Z.slice(0,G):Z,W=Y+G<$;return{items:J,totalCount:$,hasMore:W}}function b04(Z,X){if(X.length===0)return;let[G,...Y]=X,Q=G==="slug"?XH(Z):Z[G];for(let $ of Y){if(Q===null||typeof Q!=="object")return;Q=Q[$]}return Q}function x04(Z){let G=Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${G}$`,"i")}function v04(Z,X,G){if(Z===void 0)return!0;switch(X){case"eq":return G===null?Z===null:Z===G;case"gt":return Z>G;case"gte":return Z>=G;case"lt":return Z<G;case"lte":return Z<=G;case"in":return Array.isArray(G)&&G.includes(Z);case"like":return typeof Z==="string"&&x04(String(G)).test(Z);case"contains":return String(Z).toLowerCase().includes(String(G).toLowerCase());default:return!0}}function Yn(Z,X){if(!X)return!0;if("conditions"in X){let{operator:Y,conditions:Q}=X;if(Q.length===0)return!0;switch(Y){case"and":return Q.every(($)=>Yn(Z,$));case"or":return Q.some(($)=>Yn(Z,$));case"not":return!Q.every(($)=>Yn(Z,$));default:return!0}}let G=b04(Z,X.field);return v04(G,X.operator,X.value)}var Z18=B(()=>{G80()});async function X18(Z,X,G){if(Z.length===0)return;let Y=0;async function Q(){while(Y<Z.length){let $=Y++;await G(Z[$])}}await Promise.all(Array.from({length:Math.min(X,Z.length)},()=>Q()))}import{z as zw}from"zod";var _04=8,y04,g04,h04,u04,ql0;var G18=B(()=>{Il0();l08();_3();p08();r08();zc();a08();b6();X1();tZ();BQ();Lw();Cb();FW();G80();Z18();y04=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:zw.object({})}],g04={LLM:QZ0,LLMS:QZ0,ASSISTANTS:c08,MCP:t08,OBJECT_STORAGE:sB,AI_GATEWAY_BILLING:o08,TRIGGER:a90,REGISTRY:y04,BRAND:XZ0},h04=UJ.extend({binding:zw.union([zw.array(zw.object({}).passthrough()),zw.object({}).passthrough(),zw.string()]).optional(),include_virtual:zw.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:zw.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),u04=QU(CX),ql0=s({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:h04,outputSchema:u04,handler:async(Z,X)=>{await X.access.check();let G=O0(X),Y=Z.binding?typeof Z.binding==="string"?(()=>{let F=g04[Z.binding.toUpperCase()];if(!F)throw Error(`Unknown binding: ${Z.binding}`);return F})():Z.binding:void 0,Q=Y?t90(Y):void 0,$=!!Q,J=Z.limit??100,W=Z.offset??0,{items:K,totalCount:N}=await X.storage.connections.list(G.id,{includeVirtual:Z.include_virtual??!1,slug:Z.slug,where:Z.where,orderBy:Z.orderBy,limit:$?void 0:J,offset:$?void 0:W});if(Q){let F=p9(),H=p4.SELF(G.id);await X18(K,_04,async(w)=>{if(w.tools!==null)return;let O=w.id===H?async()=>{let{listManagementTools:E}=await Promise.resolve().then(() => (gE(),$Z0));return E(X)}:()=>Dl0(w,X,Gb1),D=await LH("tools",w.id,O,F,(E)=>X.pendingRevalidations.push(E),EH);if(D!==null)w.tools=D})}let U=!1;if(C$()&&s08($,W)){let F=qZ(),H=p4.DEV_ASSETS(G.id);if(!K.some((w)=>w.id===H)){let w=Vb(G.id,F),O=!Z.slug||XH(w)===Z.slug,D=Yn(w,Z.where);if(O&&D)K.unshift(w),U=!0}}if($){let F=(await Promise.all(K.map(async(D)=>{if(!D.tools||D.tools.length===0)return null;return Q.isImplementedBy(D.tools.map((L)=>({name:L.name,inputSchema:L.inputSchema,outputSchema:L.outputSchema})))?D:null}))).filter((D)=>D!==null),H=F.length,w=F.slice(W,W+J),O=W+J<H;return{items:w,totalCount:H,hasMore:O}}return e08(K,U,J,W,N)}})});var c04,Ml0;var Y18=B(()=>{_3();b6();X1();tZ();BQ();Lw();Cb();FW();c04=ei(CX),Ml0=s({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:si,outputSchema:c04,handler:async(Z,X)=>{let G=O0(X);if(await X.access.check(),C$()&&Y10(Z.id,G.id))return{item:Vb(G.id,qZ())};let Y=await X.storage.connections.findById(Z.id);if(!Y||Y.organization_id!==G.id)return{item:null};if(Y.tools===null){let Q=p4.SELF(G.id),$=Y.id===Q?async()=>{let{listManagementTools:W}=await Promise.resolve().then(() => (gE(),$Z0));return W(X)}:async()=>{let W=await sZ(Y,X,!0);try{return(await W.listTools()).tools}finally{await W.close().catch(()=>{})}},J=await LH("tools",Y.id,$,p9(),(W)=>X.pendingRevalidations.push(W),EH);if(J!==null)Y.tools=J}return{item:Y}}})});import{z as kl0}from"zod";function m04(Z,X){return Z.length===X.length&&Z.every((G,Y)=>G===X[Y])}var l04,d04,Sl0;var Q18=B(()=>{Lw();NJ();X1();y8();BQ();$m();El0();fl();FW();l04=kl0.object({id:kl0.string().describe("ID of the connection to update"),data:c00.describe("Partial connection data to update")}),d04=kl0.object({item:CX.describe("The updated connection entity")});Sl0=s({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:l04,outputSchema:d04,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to update connection");let{id:Q,data:$}=Z,J=$.configuration_state!==void 0||$.configuration_scopes!==void 0,W=await X.storage.connections.findById(Q);if(!W||W.organization_id!==G.id)throw Error("Connection not found in organization");let K=$.connection_type??W.connection_type,N=$.connection_url??W.connection_url;if(K==="VIRTUAL"){let x=Ib(N);if(!x)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let _=await X.storage.virtualMcps.findById(x);if(!_)throw Error(`Virtual MCP not found: ${x}`);if(_.organization_id!==G.id)throw Error("Virtual MCP does not belong to the current organization");N=qb(x)}let U=$.configuration_state??W.configuration_state??{},F=$.configuration_scopes??W.configuration_scopes??[];if(J){if($.configuration_state!==void 0)U=$.configuration_state??{};else if(U===null||U===void 0)U={};if($.configuration_scopes!==void 0)F=$.configuration_scopes??[];if(F.length>0){let x=U;pi(x,F,G.id),await ri(x,F,G.id,X)}}if(K==="STDIO"&&!K1().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let H=$.connection_token??W.connection_token;if(!H)try{let _=await new V9(X.db,X.vault).get(Q);if(_?.accessToken)H=_.accessToken}catch{}let w=await wH({id:W.id,title:$.title??W.title,connection_type:K,connection_url:N,connection_token:H,connection_headers:$.connection_headers??W.connection_headers}).catch(()=>null),O=w?.tools?.length?w.tools:null,D=!1;if($.configuration_scopes===void 0&&w?.scopes?.length)D=!m04(F,w.scopes),F=w.scopes;if(pi(U,F,G.id),D&&F.length>0)await ri(U,F,G.id,X);let E=J||D,L=E?ti(U,F):[],z=E?ti(W.configuration_state??{},W.configuration_scopes??[]):[],j=W.configuration_state,A=j==null||Object.keys(j).length===0,P,q,S=async()=>{try{await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:Q,createdBy:Y,grants:z})}catch(x){console.error("Failed to restore credential grants after credential vault mutation failed",x)}},M={...$,connection_url:N,tools:null,configuration_state:U,configuration_scopes:F,updated_by:Y},C={...W,...M};if(E)try{if(await X.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:G.id,subjectConnectionId:Q,createdBy:Y,grants:L}),L.length>0){if(!await X.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:G.id,subjectConnectionId:Q})){let{plaintextToken:_,record:X0}=await X.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:G.id,subjectConnectionId:Q});q=X0.id,P={baseUrl:X.baseUrl,org:G.slug??G.id,subjectConnectionId:Q,token:_}}}}catch(x){if(q)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q});throw await S(),x}if(E&&U&&F)try{await(await sZ(C,X,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:U,scopes:F,firstRun:A,...P?{vault:P}:{}}})}catch(x){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",x),q)throw await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q}),await S(),x}let d;try{d=await X.storage.connections.update(Q,M)}catch(x){if(E){if(q)await X.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:G.id,subjectConnectionId:Q,tokenId:q});await S()}throw x}if(O)p9()?.set("tools",Q,O).catch(()=>{});return fv(Q),{item:d}}})});import{z as i04}from"zod";var n04,Vl0;var $18=B(()=>{_3();I5();X1();BQ();$m();FW();n04=Zn.extend({force:i04.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),Vl0=s({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:n04,outputSchema:Xn(CX),handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=await X.storage.connections.findById(Z.id);if(!Y)throw Error(`Connection not found: ${Z.id}`);if(Y.organization_id!==G.id)throw Error("Connection not found in organization");if(Y.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let $=await X.storage.virtualMcps.listByConnectionId(G.id,Z.id);if($.length>0)if(Z.force)await X.storage.virtualMcps.removeConnectionReferences(Z.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:$.map((K)=>K.title)}));await X.storage.connections.delete(Z.id);let J=await X.storage.organizationSettings.get(G.id);if(J?.registry_config){let{registries:K,blockedMcps:N}=J.registry_config;if(Z.id in K){let{[Z.id]:U,...F}=K;await X.storage.organizationSettings.upsert(G.id,{registry_config:{registries:F,blockedMcps:N}})}}p9()?.invalidate(Z.id).catch(()=>{}),fv(Z.id);let W=x1(X);if(W)i1.capture({distinctId:W,event:"connection_deleted",groups:{organization:G.id},properties:{connection_id:Y.id,connection_type:Y.connection_type,app_name:Y.app_name??null,organization_id:G.id,forced:Z.force??!1}});return{item:Y}}})});import{z as R_}from"zod";var Cl0;var J18=B(()=>{X1();Cl0=s({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:R_.object({id:R_.string()}),outputSchema:R_.object({id:R_.string(),healthy:R_.boolean(),latencyMs:R_.number()}),handler:async(Z,X)=>{let G=O0(X);await X.access.check();let Y=await X.storage.connections.findById(Z.id);if(!Y||Y.organization_id!==G.id)throw Error("Connection not found");let Q=await X.storage.connections.testConnection(Z.id);return{id:Z.id,...Q}}})});var W18=B(()=>{O08();G18();Y18();Q18();$18();J18()});import{sql as u4}from"kysely";import{z as nW}from"zod";function K18(Z){if(Z===null||Z===void 0)return"NULL";if(typeof Z==="number")return String(Z);if(typeof Z==="boolean")return Z?"TRUE":"FALSE";if(typeof Z==="string")return`'${Z.replace(/'/g,"''")}'`;if(Z instanceof Date)return`'${Z.toISOString()}'`;return`'${JSON.stringify(Z).replace(/'/g,"''")}'`}function r04(Z,X){let G=Z;for(let Q=X.length;Q>=1;Q--){let $=`$${Q}`;if(G.includes($))G=G.replaceAll($,K18(X[Q-1]))}let Y=[];for(let Q=0;Q<G.length;Q++)if(G[Q]==="?")Y.push(Q);for(let Q=Math.min(Y.length,X.length)-1;Q>=0;Q--){let $=Y[Q],J=K18(X[Q]);G=G.slice(0,$)+J+G.slice($+1)}return G}function N18(Z){return Z.replace(/-/g,"_")}function a04(Z){return`app_${N18(Z)}`}function s04(Z){return`app_role_${N18(Z)}`}function e04(Z){if(Z instanceof Error){let X=Z.message.toLowerCase(),G=Z.code;return G==="3F000"||G==="42704"||G==="22023"||X.includes("schema")&&X.includes("does not exist")||X.includes("role")&&X.includes("does not exist")}return!1}async function Z14(Z,X,G){if(await u4`CREATE SCHEMA IF NOT EXISTS ${u4.id(X)}`.execute(Z),!(await u4`
|
|
1143
1143
|
SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${G}) as exists
|
|
1144
1144
|
`.execute(Z)).rows[0]?.exists)await u4`CREATE ROLE ${u4.id(G)} NOLOGIN`.execute(Z);await u4`GRANT ${u4.id(G)} TO CURRENT_USER`.execute(Z),await u4`GRANT USAGE, CREATE ON SCHEMA ${u4.id(X)} TO ${u4.id(G)}`.execute(Z),await u4`GRANT ALL ON ALL TABLES IN SCHEMA ${u4.id(X)} TO ${u4.id(G)}`.execute(Z),await u4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${u4.id(X)} TO ${u4.id(G)}`.execute(Z),await u4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${u4.id(X)} GRANT ALL ON TABLES TO ${u4.id(G)}`.execute(Z),await u4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${u4.id(X)} GRANT ALL ON SEQUENCES TO ${u4.id(G)}`.execute(Z),await u4`REVOKE ALL ON SCHEMA public FROM ${u4.id(G)}`.execute(Z)}async function X14(Z,X,G,Y){try{return await Z.transaction().execute(async(Q)=>{return await u4`SET LOCAL ROLE ${u4.id(G)}`.execute(Q),await u4`SET LOCAL search_path TO ${u4.id(X)}`.execute(Q),await u4.raw(Y).execute(Q)})}catch(Q){if(e04(Q))return await Z14(Z,X,G),await Z.transaction().execute(async($)=>{return await u4`SET LOCAL ROLE ${u4.id(G)}`.execute($),await u4`SET LOCAL search_path TO ${u4.id(X)}`.execute($),await u4.raw(Y).execute($)});throw Q}}var t04,o04,U18;var F18=B(()=>{X1();t04=nW.object({results:nW.array(nW.unknown()).optional(),success:nW.boolean().optional()});o04=nW.object({sql:nW.string().describe("The SQL query to run"),params:nW.array(nW.any()).describe("The parameters to pass to the SQL query").optional()});U18=s({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:o04,outputSchema:nW.object({result:nW.array(t04)}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=r04(Z.sql,Z.params||[]);if(!X.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":X.connectionId,"organization.id":X.organization?.id??null,"user.id":X.auth.user?.id??null});let Y=a04(X.connectionId),Q=s04(X.connectionId);return{result:[{results:(await X14(X.db,Y,Q,G)).rows,success:!0}]}}})});function JZ0(Z){let X=Z.access.getRole();if(!A3(X))throw new kW("Only organization owners and admins can change org-wide pin status")}var fl0=B(()=>{P3();ZE()});import{z as O18}from"zod";function Y14(){let Z=H18[Math.floor(Math.random()*H18.length)];return`icon://${w18[Math.floor(Math.random()*w18.length)]}?color=${Z}`}var H18,w18,Q14,$14,bl0;var B18=B(()=>{X1();BH();fl0();ni();H18=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],w18=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];Q14=O18.object({data:m00.describe("Data for the new virtual MCP")}),$14=O18.object({item:fX.describe("The created virtual MCP entity")}),bl0=s({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:Q14,outputSchema:$14,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to create virtual MCP");if(Z.data.pinned===!0)JZ0(X);let{prompts:Q,...$}=Z.data,J={...$,icon:$.icon??Y14()},W=await X.storage.virtualMcps.create(G.id,Y,J);if(Q?.length&&X.orgFs&&W.id)await b90(X.orgFs,W.id,Y,Q);return{item:W}}})});function J14(Z){let X=[],G=0;while(G<Z.length){let Y=Z[G];if(Y==="%")X.push(".*");else if(Y==="_")X.push(".");else if(/[.*+?^${}()|[\]\\]/.test(Y))X.push("\\"+Y);else X.push(Y);G++}return X.join("")}function jw(Z){return typeof Z==="string"||typeof Z==="number"}function xl0(Z,X){let G=X.split("."),Y=Z;for(let Q of G){if(Y==null||typeof Y!=="object")return;Y=Y[Q]}return Y}function W14(Z,X){return Z.connections.some((G)=>G.connection_id===X)}function WZ0(Z,X){if("conditions"in X){let{operator:W,conditions:K}=X;switch(W){case"and":return K.every((N)=>WZ0(Z,N));case"or":return K.some((N)=>WZ0(Z,N));case"not":return!K.every((N)=>WZ0(Z,N));default:return!0}}let{field:G,operator:Y,value:Q}=X,$=G.join(".");if($==="connection_id"){if(Y!=="eq"||typeof Q!=="string")return!1;return W14(Z,Q)}let J=xl0(Z,$);switch(Y){case"eq":return J===Q;case"gt":return jw(J)&&jw(Q)&&J>Q;case"gte":return jw(J)&&jw(Q)&&J>=Q;case"lt":return jw(J)&&jw(Q)&&J<Q;case"lte":return jw(J)&&jw(Q)&&J<=Q;case"in":return Array.isArray(Q)&&Q.includes(J);case"like":if(typeof J!=="string"||typeof Q!=="string")return!1;if(Q.length>100)return!1;let W=J14(Q);return new RegExp(`^${W}$`,"i").test(J);case"contains":if(typeof J!=="string"||typeof Q!=="string")return!1;return J.toLowerCase().includes(Q.toLowerCase());default:return!0}}function K14(Z,X){return[...Z].sort((G,Y)=>{for(let Q of X){let $=Q.field.join("."),J=xl0(G,$),W=xl0(Y,$),K=0;if(J==null&&W==null)continue;if(J==null)K=Q.nulls==="first"?-1:1;else if(W==null)K=Q.nulls==="first"?1:-1;else if(typeof J==="string"&&typeof W==="string")K=J.localeCompare(W);else if(typeof J==="number"&&typeof W==="number")K=J-W;else K=String(J).localeCompare(String(W));if(K!==0)return Q.direction==="desc"?-K:K}return 0})}var N14,U14,vl0;var D18=B(()=>{_3();X1();BH();N14=UJ,U14=QU(fX),vl0=s({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:N14,outputSchema:U14,handler:async(Z,X)=>{await X.access.check();let G=O0(X),Y=Z.where&&!("conditions"in Z.where)&&Z.where.field.join(".")==="connection_id"&&Z.where.operator==="eq"&&typeof Z.where.value==="string"?Z.where.value:void 0,Q=Z.where&&!("conditions"in Z.where)&&Z.where.field.join(".")==="pinned"&&Z.where.operator==="eq"&&typeof Z.where.value==="boolean"?Z.where.value:void 0,J=Y?await X.storage.virtualMcps.listByConnectionId(G.id,Y):await X.storage.virtualMcps.list(G.id,Q!==void 0?{pinnedOnly:Q}:void 0);if(Z.where)J=J.filter((H)=>WZ0(H,Z.where));if(Z.orderBy&&Z.orderBy.length>0)J=K14(J,Z.orderBy);let W=J.length,K=Z.offset??0,N=Z.limit??100,U=J.slice(K,K+N),F=K+N<W;return{items:U,totalCount:W,hasMore:F}}})});import{z as _l0}from"zod";var F14,H14,yl0;var E18=B(()=>{X1();BH();F14=_l0.object({id:_l0.string().describe("ID of the virtual MCP to retrieve")}),H14=_l0.object({item:fX.nullable().describe("The retrieved virtual MCP, or null if not found")}),yl0=s({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F14,outputSchema:H14,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=await X.storage.virtualMcps.findById(Z.id);if(Y&&Y.organization_id!==G.id)return{item:null};if(!Y)return{item:null};return{item:Y}}})});import{z as gl0}from"zod";var w14,O14,hl0;var L18=B(()=>{X1();ni();BH();fl0();w14=gl0.object({id:gl0.string().describe("ID of the virtual MCP to update"),data:i00.describe("Partial virtual MCP data to update")}),O14=gl0.object({item:fX.describe("The updated virtual MCP entity")}),hl0=s({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:w14,outputSchema:O14,handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let Y=x1(X);if(!Y)throw Error("User ID required to update virtual MCP");let Q=await X.storage.virtualMcps.findById(Z.id);if(!Q)throw Error(`Virtual MCP not found: ${Z.id}`);if(Q.organization_id!==G.id)throw Error(`Virtual MCP not found: ${Z.id}`);let{prompts:$,...J}=Z.data;if(J.metadata&&Q.metadata)J.metadata={...Q.metadata,...J.metadata};if(J.pinned!==void 0&&J.pinned!==Q.pinned)JZ0(X);let W=await X.storage.virtualMcps.update(Z.id,Y,J);if($!==void 0&&X.orgFs)await b90(X.orgFs,Z.id,Y,$);return{item:W}}})});function z18(Z){return WW(Z)!==null||r00(Z)!==null}var j18=B(()=>{b6()});import{z as ul0}from"zod";var B14,D14,cl0;var A18=B(()=>{Ew();NJ();X1();ni();BH();j18();B14=ul0.object({id:ul0.string().describe("ID of the virtual MCP to delete")}),D14=ul0.object({item:fX.describe("The deleted virtual MCP entity")}),cl0=s({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:B14,outputSchema:D14,handler:async(Z,X)=>{E0(X);let G=O0(X);if(await X.access.check(),z18(Z.id))throw Error(`Virtual MCP not found: ${Z.id}`);let Y=await X.storage.virtualMcps.findById(Z.id);if(!Y)throw Error(`Virtual MCP not found: ${Z.id}`);if(Y.organization_id!==G.id)throw Error(`Virtual MCP not found: ${Z.id}`);await X.storage.virtualMcps.delete(Z.id);try{if((await X.storage.organizationSettings.get(G.id))?.main_agent_id===Z.id)await X.storage.organizationSettings.upsert(G.id,{main_agent_id:null})}catch($){console.error("[VIRTUAL_MCP_DELETE] failed to clear main agent pointer",{id:Z.id,error:$.message})}if(X.orgFs)await wl0(X.orgFs,Z.id,x1(X)??"system");let Q=Y.metadata?.githubRepo?.connectionId;if(Q)try{let $=await X.storage.connections.findById(Q,G.id);if($&&x3($)){let W=await new V9(X.db,X.vault).get(Q);if(W?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${W.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await X.storage.connections.delete(Q)}}catch($){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:Q,error:$.message})}return{item:Y}}})});import{z as RY}from"zod";var E14,ll0;var P18=B(()=>{X1();E14=RY.object({id:RY.string(),virtualMcpId:RY.string(),pluginId:RY.string(),connectionId:RY.string().nullable(),settings:RY.record(RY.string(),RY.unknown()).nullable(),createdAt:RY.string(),updatedAt:RY.string()}),ll0=s({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RY.object({virtualMcpId:RY.string().describe("Virtual MCP ID"),pluginId:RY.string().describe("Plugin ID")}),outputSchema:RY.object({config:E14.nullable()}),handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let{virtualMcpId:Y,pluginId:Q}=Z,$=await X.storage.connections.findById(Y);if(!$||$.organization_id!==G.id)return{config:null};if($.connection_type!=="VIRTUAL")return{config:null};let J=await X.storage.virtualMcpPluginConfigs.get(Y,Q);if(!J)return{config:null};return{config:{id:J.id,virtualMcpId:J.virtualMcpId,pluginId:J.pluginId,connectionId:J.connectionId,settings:J.settings,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}})});import{z as V7}from"zod";var L14,dl0;var T18=B(()=>{X1();Cb();tZ();L14=V7.object({id:V7.string(),virtualMcpId:V7.string(),pluginId:V7.string(),connectionId:V7.string().nullable(),settings:V7.record(V7.string(),V7.unknown()).nullable(),createdAt:V7.string(),updatedAt:V7.string()}),dl0=s({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:V7.object({virtualMcpId:V7.string().describe("Virtual MCP ID"),pluginId:V7.string().describe("Plugin ID"),connectionId:V7.string().nullable().optional().describe("MCP connection to bind"),settings:V7.record(V7.string(),V7.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:V7.object({config:L14}),handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let{virtualMcpId:Y,pluginId:Q,connectionId:$,settings:J}=Z,W=x1(X),K=await X.storage.connections.findById(Y);if(!K)throw Error(`Connection not found: ${Y}`);if(K.organization_id!==G.id)throw Error(`Connection not found: ${Y}`);if(K.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${Y}`);let N=$?await X.storage.connections.findById($):null;if($&&N&&N.organization_id!==G.id)throw Error(`Connection not found: ${$}`);if($&&K.organization_id&&!N&&C$()&&Y10($,K.organization_id)){if(!W)throw Error("User ID required to create dev-assets connection");let F=Vb(K.organization_id,qZ());await X.storage.connections.create({...F,organization_id:K.organization_id,created_by:W})}else if($&&!N)throw Error(`Connection not found: ${$}`);let U=await X.storage.virtualMcpPluginConfigs.upsert(Y,Q,{connectionId:$,settings:J});return{config:{id:U.id,virtualMcpId:U.virtualMcpId,pluginId:U.pluginId,connectionId:U.connectionId,settings:U.settings,createdAt:U.createdAt instanceof Date?U.createdAt.toISOString():U.createdAt,updatedAt:U.updatedAt instanceof Date?U.updatedAt.toISOString():U.updatedAt}}}})});import{z as xG}from"zod";var z14,ml0;var R18=B(()=>{X1();BH();z14=xG.object({connectionId:xG.string(),toolName:xG.string(),label:xG.string(),icon:xG.string().nullable().optional()}),ml0=s({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:xG.object({virtualMcpId:xG.string().describe("Virtual MCP ID"),pinnedViews:xG.array(z14).describe("Pinned views to set for the virtual MCP sidebar"),layout:xG.object({defaultMainView:xG.object({type:xG.string(),id:xG.string().optional(),toolName:xG.string().optional()}).nullable().optional(),chatDefaultOpen:xG.boolean().nullable().optional()}).optional()}),outputSchema:xG.object({item:fX.nullable()}),handler:async(Z,X)=>{E0(X);let G=O0(X);await X.access.check();let{virtualMcpId:Y,pinnedViews:Q,layout:$}=Z,J=x1(X),W=await X.storage.virtualMcps.findById(Y);if(!W)throw Error(`Virtual MCP not found: ${Y}`);if(W.organization_id!==G.id)throw Error(`Virtual MCP not found: ${Y}`);let K=W.metadata?.ui??{},N={...K,pinnedViews:Q.length>0?Q:null,layout:$??K.layout??null};return{item:await X.storage.virtualMcps.update(Y,J??"system",{metadata:{...W.metadata,ui:N}})}}})});import{z as JU}from"zod";var j14,A14,il0;var I18=B(()=>{X1();j14=JU.object({ids:JU.array(JU.string()).describe("Virtual MCP ids to look up")}),A14=JU.object({items:JU.array(JU.object({id:JU.string(),last_used_at:JU.string().optional(),last_used_by:JU.string().optional()}))}),il0=s({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j14,outputSchema:A14,handler:async(Z,X)=>{E0(X),O0(X),await X.access.check();let G=await X.storage.threads.findLastUsedByVirtualMcpIds(Z.ids);return{items:Z.ids.map((Y)=>({id:Y,last_used_at:G.get(Y)?.last_used_at,last_used_by:G.get(Y)?.last_used_by}))}}})});var q18=B(()=>{B18();D18();E18();L18();A18();P18();T18();R18();I18()});import{z as K9}from"zod";var nl0;var M18=B(()=>{H9();X1();nl0=s({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:K9.object({id:K9.string().describe("Log ID to fetch")}),outputSchema:K9.object({log:K9.object({id:K9.string().optional(),organizationId:K9.string(),connectionId:K9.string(),toolName:K9.string(),input:K9.record(K9.string(),K9.unknown()),output:K9.record(K9.string(),K9.unknown()),isError:K9.boolean(),errorMessage:K9.string().nullish(),durationMs:K9.number(),timestamp:K9.string(),userId:K9.string().nullish(),requestId:K9.string(),userAgent:K9.string().nullish(),virtualMcpId:K9.string().nullish(),properties:K9.record(K9.string(),K9.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async(Z,X)=>{await X.access.check(),await sQ();let G=O0(X),Y=await X.storage.monitoring.getById(G.id,Z.id);if(!Y)return{log:null};return{log:{...Y,timestamp:Y.timestamp instanceof Date?Y.timestamp.toISOString():Y.timestamp}}}})});import{z as O6}from"zod";var T14,pl0;var k18=B(()=>{H9();X1();T14=O6.object({id:O6.string().optional().describe("Unique log identifier"),organizationId:O6.string().describe("Organization ID"),connectionId:O6.string().describe("Connection ID"),toolName:O6.string().describe("Name of the tool that was called"),isError:O6.boolean().describe("Whether the call resulted in an error"),errorMessage:O6.string().nullish().describe("Error message if applicable"),durationMs:O6.number().describe("Call duration in milliseconds"),timestamp:O6.string().describe("ISO 8601 timestamp of the call"),userId:O6.string().nullish().describe("User who triggered the call"),requestId:O6.string().describe("Unique request identifier"),userAgent:O6.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:O6.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:O6.record(O6.string(),O6.string()).nullish().describe("Custom key-value metadata attached to the log")}),pl0=s({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:O6.object({connectionId:O6.string().optional().describe("Filter by connection ID"),excludeConnectionIds:O6.array(O6.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:O6.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:O6.string().optional().describe("Filter by tool name"),isError:O6.boolean().optional().describe("Filter by error status"),startDate:O6.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:O6.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:O6.number().default(20).describe("Maximum number of results"),offset:O6.number().default(0).describe("Offset for pagination"),properties:O6.record(O6.string(),O6.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:O6.array(O6.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:O6.record(O6.string(),O6.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:O6.record(O6.string(),O6.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:O6.object({logs:O6.array(T14).describe("Array of monitoring logs"),total:O6.number().describe("Total number of logs matching filters"),offset:O6.number().describe("Current offset for pagination"),limit:O6.number().describe("Current limit for pagination")}),handler:async(Z,X)=>{await sQ();let G=O0(X),Q=Z.properties||Z.propertyKeys||Z.propertyPatterns||Z.propertyInValues?{properties:Z.properties,propertyKeys:Z.propertyKeys,propertyPatterns:Z.propertyPatterns,propertyInValues:Z.propertyInValues}:void 0,$={organizationId:G.id,connectionId:Z.connectionId,excludeConnectionIds:Z.excludeConnectionIds,virtualMcpId:Z.virtualMcpId,toolName:Z.toolName,isError:Z.isError,startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0,limit:Z.limit,offset:Z.offset,propertyFilters:Q},J=await X.storage.monitoring.query($);return{logs:J.logs.map(({input:W,output:K,...N})=>({...N,timestamp:N.timestamp instanceof Date?N.timestamp.toISOString():N.timestamp})),total:J.total,offset:Z.offset,limit:Z.limit}}})});import{z as U8}from"zod";var tl0;var S18=B(()=>{H9();X1();tl0=s({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:U8.object({startDate:U8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:U8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:U8.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:U8.array(U8.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:U8.array(U8.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:U8.array(U8.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:U8.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:U8.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:U8.array(U8.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:U8.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:U8.object({totalCalls:U8.number().describe("Total number of tool calls"),errorRate:U8.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:U8.number().describe("Average call duration in milliseconds"),errorRatePercent:U8.string().optional().describe("Error rate as a percentage string"),totalErrors:U8.number().optional().describe("Total number of errors"),p50DurationMs:U8.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:U8.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:U8.array(U8.object({connectionId:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avgDurationMs:U8.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:U8.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:U8.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:U8.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:U8.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:U8.array(U8.object({toolName:U8.string(),connectionId:U8.string().nullable(),calls:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:U8.array(U8.object({timestamp:U8.string(),toolName:U8.string(),calls:U8.number(),errors:U8.number(),avg:U8.number(),p95:U8.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:U8.array(U8.object({timestamp:U8.string(),calls:U8.number(),errors:U8.number(),errorRate:U8.number(),avg:U8.number(),p50:U8.number(),p95:U8.number(),inputTokens:U8.number().optional(),outputTokens:U8.number().optional(),totalTokens:U8.number().optional(),costUsd:U8.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async(Z,X)=>{let G=O0(X);if(await X.access.check(),await sQ(),Z.interval&&Z.llmUsage)return X.storage.monitoring.queryLlmUsageStats({organizationId:G.id,interval:Z.interval,connectionId:Z.connectionIds?.[0]??"decopilot",startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0,userIds:Z.userIds,topN:Z.topN});if(Z.interval){let Q=await X.storage.monitoring.queryMetricTimeseries({organizationId:G.id,interval:Z.interval,startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0,filters:{connectionIds:Z.connectionIds,excludeConnectionIds:Z.excludeConnectionIds,toolNames:Z.toolNames,status:Z.status}});if(!Z.topN)return Q;let $=await X.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:G.id,interval:Z.interval,startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0,topN:Z.topN,filters:{connectionIds:Z.connectionIds,excludeConnectionIds:Z.excludeConnectionIds,toolNames:Z.toolNames,status:Z.status}});return{...Q,topTools:$.topTools,topToolsTimeseries:$.timeseries}}let Y=await X.storage.monitoring.getStats({organizationId:G.id,startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0});return{...Y,errorRatePercent:(Y.errorRate*100).toFixed(2)}}})});import{z as vG}from"zod";var rl0;var V18=B(()=>{H9();X1();rl0=s({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:vG.object({threadIds:vG.array(vG.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:vG.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:vG.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:vG.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:vG.object({items:vG.array(vG.object({threadId:vG.string(),calls:vG.number(),inputTokens:vG.number(),outputTokens:vG.number(),totalTokens:vG.number(),costUsd:vG.number()}))}),handler:async(Z,X)=>{let G=O0(X);return await X.access.check(),await sQ(),{items:await X.storage.monitoring.queryThreadUsage({organizationId:G.id,connectionId:Z.connectionId??"decopilot",threadIds:Z.threadIds,startDate:Z.startDate?new Date(Z.startDate):void 0,endDate:Z.endDate?new Date(Z.endDate):void 0})}}})});var C18=B(()=>{M18();k18();S18();V18()});function KZ0(Z){return typeof Z==="string"&&I14.has(Z.trim().toLowerCase())}var I14;var ol0=B(()=>{I14=new Set([".well-known","_admin","api","auth","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reset-password"])});import{z as SQ}from"zod";var al0;var f18=B(()=>{X1();ol0();al0=s({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:SQ.object({slug:SQ.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine((Z)=>!KZ0(Z),"Slug is reserved by Studio"),name:SQ.string().min(1).max(255),description:SQ.string().optional()}),outputSchema:SQ.object({id:SQ.string(),name:SQ.string(),slug:SQ.string(),logo:SQ.string().nullable().optional(),metadata:SQ.any().optional(),createdAt:SQ.string().datetime().describe("ISO 8601 timestamp"),members:SQ.array(SQ.any()).optional()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=x1(X);if(!G)throw Error("User ID required to create organization");let Y=await X.boundAuth.organization.create({name:Z.name,slug:Z.slug,metadata:Z.description?{description:Z.description}:void 0,userId:G});if(!Y)throw Error("Failed to create organization");return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as FJ}from"zod";var sl0;var b18=B(()=>{X1();sl0=s({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:FJ.object({userId:FJ.string().optional()}),outputSchema:FJ.object({organizations:FJ.array(FJ.object({id:FJ.string(),name:FJ.string(),slug:FJ.string(),logo:FJ.string().nullable().optional(),metadata:FJ.any().optional(),createdAt:FJ.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=x1(X),Y=Z.userId||G;if(!Y)throw Error("User ID required to list organizations");return{organizations:(await X.boundAuth.organization.list(Y)).map(($)=>({...$,createdAt:$.createdAt instanceof Date?$.createdAt.toISOString():$.createdAt}))}}})});import{z as y3}from"zod";var el0;var x18=B(()=>{X1();el0=s({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y3.object({}),outputSchema:y3.object({id:y3.string(),name:y3.string(),slug:y3.string(),logo:y3.string().nullable().optional(),metadata:y3.any().optional(),createdAt:y3.string().datetime().describe("ISO 8601 timestamp"),members:y3.array(y3.any()).optional(),invitations:y3.array(y3.any()).optional()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.boundAuth.organization.get(G);if(!Y)throw Error("No active organization found");let Q=new Date,$=Y.invitations?.filter((J)=>new Date(J.expiresAt)>Q);return{...Y,invitations:$,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as HJ}from"zod";var Zd0;var v18=B(()=>{X1();Zd0=s({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:HJ.object({id:HJ.string(),name:HJ.string().min(1).max(255).optional(),description:HJ.string().optional()}),outputSchema:HJ.object({id:HJ.string(),name:HJ.string(),slug:HJ.string(),logo:HJ.string().nullable().optional(),metadata:HJ.any().optional(),createdAt:HJ.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Z,X)=>{E0(X),await X.access.check();let G={};if(Z.name)G.name=Z.name;if(Z.description)G.metadata={description:Z.description};let Y=await X.boundAuth.organization.update({organizationId:Z.id,data:G});if(!Y)throw Error("Failed to update organization");return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as Qn}from"zod";var Xd0;var _18=B(()=>{X1();Xd0=s({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Qn.object({id:Qn.string()}),outputSchema:Qn.object({success:Qn.boolean(),id:Qn.string()}),handler:async(Z,X)=>{return E0(X),await X.access.check(),await X.boundAuth.organization.update({organizationId:Z.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:Z.id}}})});import{z as k8}from"zod";var $n,Jn,WU,y18,pW,Wn,Kn,Nn,Un,Aw;var VQ=B(()=>{$n=k8.object({title:k8.string(),url:k8.string(),icon:k8.string()}),Jn=k8.object({registries:k8.record(k8.string(),k8.object({enabled:k8.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:k8.array(k8.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),WU=k8.object({keyId:k8.string(),modelId:k8.string(),title:k8.string().optional()}).nullable(),y18=k8.enum(["fast","smart","thinking","image","web_search","deep_research"]),pW=k8.enum(["fast","smart","thinking"]),Wn=k8.object({tiers:k8.object({fast:WU,smart:WU,thinking:WU,image:WU,web_search:WU,deep_research:WU})}),Kn=k8.object({tiers:k8.object({fast:WU.optional(),smart:WU.optional(),thinking:WU.optional()})}),Nn=k8.object({ids:k8.array(k8.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),Un=k8.object({demo_mode:k8.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:k8.boolean().optional().describe("Curated commerce (reports) look: hides agent navigation, the home Customize button, and the Settings/Automations tabs. Defaulted on for orgs created by commerce onboarding.")}),Aw=k8.object({id:k8.string().describe("Brand context ID"),name:k8.string().describe("Company name"),domain:k8.string().describe("Company domain (e.g. example.com)"),overview:k8.string().describe("Company overview / description"),logo:k8.string().nullable().optional().describe("Logo URL"),favicon:k8.string().nullable().optional().describe("Favicon URL"),ogImage:k8.string().nullable().optional().describe("OG image URL"),fonts:k8.object({heading:k8.string().optional().describe("Font family for headings"),body:k8.string().optional().describe("Font family for body text"),code:k8.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:k8.object({primary:k8.string().optional().describe("Primary brand color (hex)"),secondary:k8.string().optional().describe("Secondary brand color (hex)"),accent:k8.string().optional().describe("Accent / highlight color (hex)"),background:k8.string().optional().describe("Background color (hex)"),foreground:k8.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:k8.array(k8.record(k8.string(),k8.unknown())).nullable().optional().describe("Brand images"),metadata:k8.record(k8.string(),k8.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:k8.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:k8.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as KU}from"zod";var Gd0;var g18=B(()=>{X1();VQ();Gd0=s({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:KU.object({}),outputSchema:KU.object({organizationId:KU.string(),sidebar_items:KU.array($n).nullable().optional(),enabled_plugins:KU.array(KU.string()).nullable().optional(),registry_config:Jn.nullable().optional(),simple_mode:Wn.nullable().optional(),default_home_agents:Nn.nullable().optional(),flags:Un.nullable().optional(),main_agent_id:KU.string().nullable().optional(),createdAt:KU.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:KU.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.storage.organizationSettings.get(G);if(!Y)return{organizationId:G};return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}}})});import{z as IY}from"zod";var Yd0;var h18=B(()=>{X1();VQ();Yd0=s({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:IY.object({organizationId:IY.string(),sidebar_items:IY.array($n).optional(),enabled_plugins:IY.array(IY.string()).optional(),registry_config:Jn.optional(),simple_mode:Wn.optional(),default_home_agents:Nn.optional(),flags:Un.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value."),main_agent_id:IY.string().nullable().optional().describe("Virtual MCP id the org lands on instead of the Super Agent. Pass null to clear.")}),outputSchema:IY.object({organizationId:IY.string(),sidebar_items:IY.array($n).nullable().optional(),enabled_plugins:IY.array(IY.string()).nullable().optional(),registry_config:Jn.nullable().optional(),simple_mode:Wn.nullable().optional(),default_home_agents:Nn.nullable().optional(),flags:Un.nullable().optional(),main_agent_id:IY.string().nullable().optional(),createdAt:IY.string().datetime().describe("ISO 8601 timestamp"),updatedAt:IY.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Z,X)=>{if(E0(X),await X.access.check(),O0(X).id!==Z.organizationId)throw Error("Cannot update settings for a different organization");let Y=await X.storage.organizationSettings.upsert(Z.organizationId,{sidebar_items:Z.sidebar_items,enabled_plugins:Z.enabled_plugins,registry_config:Z.registry_config,simple_mode:Z.simple_mode,default_home_agents:Z.default_home_agents,flags:Z.flags,main_agent_id:Z.main_agent_id});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}}})});import{z as wJ}from"zod";var u18,Qd0,$d0;var c18=B(()=>{X1();VQ();u18=Aw.extend({organizationId:wJ.string(),archivedAt:wJ.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:wJ.string().describe("ISO 8601 timestamp"),updatedAt:wJ.string().describe("ISO 8601 timestamp")}),Qd0=s({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wJ.object({includeArchived:wJ.boolean().optional().describe("Include archived brands in the list")}),outputSchema:wJ.object({items:wJ.array(u18)}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");return{items:(await X.storage.brandContext.list(G,{includeArchived:Z.includeArchived})).map((Q)=>({...Q,archivedAt:Q.archivedAt instanceof Date?Q.archivedAt.toISOString():Q.archivedAt,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,updatedAt:Q.updatedAt instanceof Date?Q.updatedAt.toISOString():Q.updatedAt}))}}}),$d0=s({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:wJ.object({id:wJ.string().describe("Brand context ID")}),outputSchema:u18.extend({organizationId:wJ.string()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.storage.brandContext.get(Z.id,G);if(!Y)throw Error("Brand context not found");return{...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}}})});import{z as hE}from"zod";var l18,Jd0,Wd0,Kd0;var d18=B(()=>{X1();VQ();l18=Aw.extend({organizationId:hE.string(),createdAt:hE.string().describe("ISO 8601 timestamp"),updatedAt:hE.string().describe("ISO 8601 timestamp")}),Jd0=s({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Aw.omit({id:!0}),outputSchema:l18,handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.storage.brandContext.create(G,{name:Z.name,domain:Z.domain,overview:Z.overview,logo:Z.logo??null,favicon:Z.favicon??null,ogImage:Z.ogImage??null,fonts:Z.fonts??null,colors:Z.colors??null,images:Z.images??null,metadata:Z.metadata??null});return{...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}}}),Wd0=s({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Aw.partial().required({id:!0}),outputSchema:l18,handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if(!await X.storage.brandContext.get(Z.id,G))throw Error("Brand context not found");let{id:Q,...$}=Z;if($.isDefault===!0)await X.storage.brandContext.setDefault(Q,G);let J=await X.storage.brandContext.update(Q,G,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo!==void 0?$.logo??null:void 0,favicon:$.favicon!==void 0?$.favicon??null:void 0,ogImage:$.ogImage!==void 0?$.ogImage??null:void 0,fonts:$.fonts!==void 0?$.fonts??null:void 0,colors:$.colors!==void 0?$.colors??null:void 0,images:$.images!==void 0?$.images??null:void 0,metadata:$.metadata!==void 0?$.metadata??null:void 0,archivedAt:$.archivedAt!==void 0?$.archivedAt??null:void 0,isDefault:$.isDefault===!1?!1:void 0});return{...J,archivedAt:J.archivedAt instanceof Date?J.archivedAt.toISOString():J.archivedAt,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt,updatedAt:J.updatedAt instanceof Date?J.updatedAt.toISOString():J.updatedAt}}}),Kd0=s({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:hE.object({id:hE.string().describe("Brand context ID")}),outputSchema:hE.object({success:hE.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if(!await X.storage.brandContext.get(Z.id,G))throw Error("Brand context not found");return await X.storage.brandContext.update(Z.id,G,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function NZ0(Z,X,G){let Y=Z.trim();if(!Y.startsWith("http"))Y=`https://${Y}`;let Q=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${X}`},body:JSON.stringify({url:Y,formats:["branding"]})});if(!Q.ok){let H=await Q.text().catch(()=>"");throw Error(`Firecrawl API error: ${Q.status} ${H.slice(0,200)}`)}let $=await Q.json();if(!$.success||!$.data?.branding)return null;let J=$.data.branding,W=$.data.metadata??{},K=k14(J,W);return{name:W.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((H)=>H.trim()).filter(Boolean)?.slice().sort((H,w)=>H.length-w.length)[0]??W.ogSiteName??G??Z,domain:Z,overview:W.description??"",logo:K.logo,favicon:K.favicon,ogImage:K.ogImage,fonts:K.fonts,colors:K.colors,images:null,metadata:Object.keys(K.metadata).length>0?K.metadata:null}}function k14(Z,X){let G=Z.images??{},Y=Z.colors??{},Q={};for(let[U,F]of Object.entries(Y))if(typeof F==="string"&&F&&q14.has(U))Q[U]=F;let $={},W=(Z.typography??{}).fontFamilies??{};for(let[U,F]of Object.entries(W))if(typeof F==="string"&&F){let H=M14[U.toLowerCase()];if(H&&!$[H])$[H]=F}let K=Z.fonts;if(Array.isArray(K))for(let U of K){let F=U.family;if(typeof F==="string"&&F&&!$.body)$.body=F}let N={};for(let U of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if(Z[U]!==void 0)N[U]=Z[U];return{logo:G.logo??null,favicon:G.favicon??null,ogImage:G.ogImage??X.ogImage??null,fonts:Object.keys($).length>0?$:null,colors:Object.keys(Q).length>0?Q:null,metadata:N}}var q14,M14;var Nd0=B(()=>{q14=new Set(["primary","secondary","accent","background","foreground"]),M14={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as UZ0}from"zod";var S14,Ud0;var m18=B(()=>{X1();Nd0();VQ();S14=Aw.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:UZ0.boolean()}),Ud0=s({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:UZ0.object({domain:UZ0.string().describe("Website domain to extract brand from"),brandId:UZ0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:S14,modelSummary:(Z)=>Z.success?`Brand saved (id=${Z.id}, name=${Z.name}, domain=${Z.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=X.firecrawlApiKey;if(!Y)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Q=await NZ0(Z.domain,Y,Z.domain);if(!Q)throw Error("Firecrawl did not return branding data for this URL");let $={name:Q.name,domain:Q.domain,overview:Q.overview,logo:Q.logo,favicon:Q.favicon,ogImage:Q.ogImage,fonts:Q.fonts,colors:Q.colors,images:Q.images,metadata:Q.metadata},J=Z.brandId?await(async()=>{if(!await X.storage.brandContext.get(Z.brandId,G))throw Error("Brand context not found");return X.storage.brandContext.update(Z.brandId,G,$)})():await X.storage.brandContext.create(G,$);return{id:J.id,name:J.name,domain:J.domain,overview:J.overview,logo:J.logo,favicon:J.favicon,ogImage:J.ogImage,fonts:J.fonts,colors:J.colors,success:!0}}})});function i18(Z){let X=Z.metadata??{};return{id:Z.id,name:Z.name,domain:Z.domain||void 0,colors:Z.colors??void 0,fonts:Z.fonts??void 0,assets:Z.logo||Z.favicon||Z.ogImage?{logo:Z.logo??void 0,favicon:Z.favicon??void 0,ogImage:Z.ogImage??void 0}:void 0,overview:Z.overview||void 0,tagline:typeof X.tagline==="string"?X.tagline:void 0,tone:typeof X.tone==="string"?X.tone:void 0,metadata:(()=>{let G=Object.fromEntries(Object.entries(X).filter(([Y])=>Y!=="tagline"&&Y!=="tone"));return Object.keys(G).length>0?G:void 0})()}}var Fd0,Hd0;var n18=B(()=>{Rl0();X1();Fd0=s({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s90,outputSchema:ai,handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=Z.id?await X.storage.brandContext.get(Z.id,G):await X.storage.brandContext.getDefault(G);if(!Y)throw Error(Z.id?"Brand not found":"No default brand configured");return i18(Y)}}),Hd0=s({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:e90,outputSchema:ZZ0,handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");return{items:(await X.storage.brandContext.list(G)).map(i18)}}})});import{resolveTxt as V14}from"dns/promises";function wd0(Z){return`${C14}.${Z.toLowerCase()}`}function p18(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function t18(Z,X,G=V14){if(!X)return!1;try{return(await G(wd0(Z))).some((Q)=>Q.join("").trim()===X)}catch{return!1}}var C14="_deco-verify";var r18=()=>{};import{z as j9}from"zod";function Pw(Z){let X=Z.verificationStatus==="pending"&&Boolean(Z.verificationToken);return{id:Z.id,domain:Z.domain,joinMode:Z.joinMode,verificationStatus:Z.verificationStatus,verificationMethod:Z.verificationMethod,verifiedAt:Z.verifiedAt?new Date(Z.verifiedAt).toISOString():null,recordName:X?wd0(Z.domain):null,recordValue:X?Z.verificationToken:null}}function b14(Z){let X=Z.toLowerCase().trim();if(!f14.test(X))throw Error(`Invalid domain format: "${X}". Must be a valid domain like "acme.com"`);if(OJ.has(X))throw Error(`Cannot claim generic email domain "${X}". Only corporate domains are allowed.`);return X}var f14,Od0,FZ0,Bd0,Dd0,Ed0,Ld0,zd0;var o18=B(()=>{kQ();r18();X1();f14=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,Od0=j9.enum(["off","auto","request"]),FZ0=j9.object({id:j9.string(),domain:j9.string(),joinMode:Od0,verificationStatus:j9.enum(["pending","verified"]),verificationMethod:j9.enum(["email","dns"]).nullable(),verifiedAt:j9.string().nullable(),recordName:j9.string().nullable(),recordValue:j9.string().nullable()});Bd0=s({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j9.object({}),outputSchema:j9.object({domains:j9.array(FZ0)}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X);return{domains:(await X.storage.organizationDomains.listByOrganizationId(G.id)).map(Pw)}}}),Dd0=s({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j9.object({domain:j9.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:Od0.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:FZ0,handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=b14(Z.domain),$=X.auth.user?.email?.split("@")[1]?.toLowerCase(),J=Boolean(X.auth.user?.emailVerified)&&$===Y,W=await X.storage.organizationDomains.getByOrgAndDomain(G.id,Y);if(W){if(W.verificationStatus!=="verified"&&J){let N=await X.storage.organizationDomains.markVerified(W.id,"email");return Pw(N)}return Pw(W)}let K=J?await X.storage.organizationDomains.add(G.id,Y,{joinMode:Z.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await X.storage.organizationDomains.add(G.id,Y,{joinMode:"off",verificationStatus:"pending",verificationToken:p18()});return Pw(K)}}),Ed0=s({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j9.object({id:j9.string(),joinMode:Od0}),outputSchema:FZ0,handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationDomains.getById(Z.id);if(!Y||Y.organizationId!==G.id)throw Error("Domain not found");if(Z.joinMode!=="off"&&Y.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Q=await X.storage.organizationDomains.updateJoinMode(Z.id,Z.joinMode);return Pw(Q)}}),Ld0=s({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:j9.object({id:j9.string()}),outputSchema:j9.object({verified:j9.boolean(),domain:FZ0}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationDomains.getById(Z.id);if(!Y||Y.organizationId!==G.id)throw Error("Domain not found");if(Y.verificationStatus==="verified")return{verified:!0,domain:Pw(Y)};if(!Y.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await t18(Y.domain,Y.verificationToken))return{verified:!1,domain:Pw(Y)};let $=await X.storage.organizationDomains.markVerified(Z.id,"dns");return{verified:!0,domain:Pw($)}}}),zd0=s({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:j9.object({id:j9.string()}),outputSchema:j9.object({success:j9.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationDomains.getById(Z.id);if(!Y||Y.organizationId!==G.id)throw Error("Domain not found");return await X.storage.organizationDomains.removeById(Z.id),{success:!0}}})});function Tw(Z){return(Z instanceof Error?Z.message.toLowerCase():"").includes("already a member")}import{z as BZ}from"zod";var x14,jd0,Ad0,Pd0;var a18=B(()=>{X1();I5();x14=BZ.object({id:BZ.string(),userId:BZ.string(),status:BZ.enum(["pending","approved","denied"]),createdAt:BZ.string(),user:BZ.object({id:BZ.string(),name:BZ.string(),email:BZ.string(),image:BZ.string().nullable()}).nullable()}),jd0=s({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:BZ.object({}),outputSchema:BZ.object({requests:BZ.array(x14)}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X);return{requests:(await X.storage.organizationJoinRequests.listPendingWithUser(G.id)).map((Q)=>({id:Q.id,userId:Q.userId,status:Q.status,createdAt:new Date(Q.createdAt).toISOString(),user:Q.user}))}}}),Ad0=s({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:BZ.object({requestId:BZ.string()}),outputSchema:BZ.object({success:BZ.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationJoinRequests.getById(Z.requestId);if(!Y||Y.organizationId!==G.id)throw Error("Join request not found");if(Y.status!=="pending")throw Error("Join request has already been decided");let Q=x1(X);if(!await X.storage.organizationJoinRequests.decide(Y.id,"approved",Q??Y.userId))return{success:!0};try{await X.boundAuth.organization.addMember({organizationId:G.id,userId:Y.userId,role:["user"]})}catch(J){if(!Tw(J))throw J}if(Q)i1.capture({distinctId:Q,event:"organization_join_request_approved",groups:{organization:G.id},properties:{organization_id:G.id,user_id:Y.userId}});return{success:!0}}}),Pd0=s({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:BZ.object({requestId:BZ.string()}),outputSchema:BZ.object({success:BZ.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationJoinRequests.getById(Z.requestId);if(!Y||Y.organizationId!==G.id)throw Error("Join request not found");if(Y.status!=="pending")throw Error("Join request has already been decided");let Q=x1(X);if(await X.storage.organizationJoinRequests.decide(Y.id,"denied",Q??Y.userId)&&Q)i1.capture({distinctId:Q,event:"organization_join_request_denied",groups:{organization:G.id},properties:{organization_id:G.id,user_id:Y.userId}});return{success:!0}}})});import{z as qY}from"zod";var Td0;var s18=B(()=>{I5();X1();P3();Td0=s({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:qY.object({organizationId:qY.string().optional(),userId:qY.string(),role:qY.array(qY.string())}),outputSchema:qY.object({id:qY.string(),organizationId:qY.string(),userId:qY.string(),role:qY.union([qY.string(),qY.array(qY.string())]),createdAt:qY.string().datetime().describe("ISO 8601 timestamp")}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=Z.organizationId||X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if(G!==X.organization?.id)throw Error("Organization ID does not match authenticated organization");let Y=await X.db.selectFrom("member").select(["role"]).where("userId","=",x1(X)??"").where("organizationId","=",G).executeTakeFirst();if(!t40(Y?.role,Z.role))throw Error(`Insufficient privileges to assign role "${Z.role.join(",")}"`);let Q=await X.boundAuth.organization.addMember({organizationId:G,userId:Z.userId,role:Z.role});if(!Q)throw Error("Failed to add member");let $=x1(X);if($)i1.capture({distinctId:$,event:"organization_member_added",groups:{organization:G},properties:{organization_id:G,added_user_id:Z.userId,role:Z.role}});return{...Q,role:Q.role,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});import{z as I_}from"zod";var Rd0;var e18=B(()=>{I5();X1();Rd0=s({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:I_.object({organizationId:I_.string().optional(),memberIdOrEmail:I_.string()}),outputSchema:I_.object({success:I_.boolean(),memberIdOrEmail:I_.string()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=Z.organizationId||X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if(G!==X.organization?.id)throw Error("Organization ID does not match authenticated organization");await X.boundAuth.organization.removeMember({organizationId:G,memberIdOrEmail:Z.memberIdOrEmail});let Y=x1(X);if(Y)i1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:G},properties:{organization_id:G,member_id_or_email:Z.memberIdOrEmail}});return{success:!0,memberIdOrEmail:Z.memberIdOrEmail}}})});import{z as sX}from"zod";var Id0;var Z88=B(()=>{X1();Id0=s({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sX.object({limit:sX.number().optional(),offset:sX.number().optional()}),outputSchema:sX.object({members:sX.array(sX.object({id:sX.string(),organizationId:sX.string(),userId:sX.string(),role:sX.string(),createdAt:sX.string().datetime().describe("ISO 8601 timestamp"),user:sX.object({id:sX.string(),name:sX.string(),email:sX.string(),image:sX.string().optional()}).optional()}))}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.boundAuth.organization.listMembers({organizationId:G,limit:Z.limit,offset:Z.offset});return{members:(Array.isArray(Y)?Y:[]).map(($)=>({...$,createdAt:$.createdAt instanceof Date?$.createdAt.toISOString():$.createdAt}))}}})});import{z as C7}from"zod";var qd0;var X88=B(()=>{I5();X1();P3();qd0=s({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:C7.object({organizationId:C7.string().optional(),memberId:C7.string(),role:C7.array(C7.string())}),outputSchema:C7.object({id:C7.string(),organizationId:C7.string(),userId:C7.string(),role:C7.union([C7.string(),C7.array(C7.string())]),createdAt:C7.string().datetime().describe("ISO 8601 timestamp"),user:C7.object({email:C7.string(),name:C7.string(),image:C7.string().optional()})}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=Z.organizationId||X.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let Y=await X.db.selectFrom("member").select(["role"]).where("userId","=",x1(X)??"").where("organizationId","=",G).executeTakeFirst();if(!t40(Y?.role,Z.role))throw Error(`Insufficient privileges to assign role "${Z.role.join(",")}"`);let Q=await X.boundAuth.organization.updateMemberRole({organizationId:G,memberId:Z.memberId,role:Z.role});if(!Q)throw Error("Failed to update member role");X.invalidateMemberRole?.(Q.userId,G);let $=x1(X);if($)i1.capture({distinctId:$,event:"organization_member_role_updated",groups:{organization:G},properties:{organization_id:G,member_id:Z.memberId,target_user_id:Q.userId,new_role:Array.isArray(Z.role)?Z.role.join(","):Z.role}});return{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}}})});async function G88(){if(Fn&&Date.now()-Fn.fetchedAt<600000)return Fn.rate;try{let X=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),G=parseFloat(X.USDBRL?.bid??"");if(Number.isNaN(G)||G<=0)throw Error("Invalid rate");return Fn={rate:G,fetchedAt:Date.now()},G}catch{return Fn?.rate??5.5}}function Y88(Z,X,G){if(X==="brl")return Math.round(Z/G);return Z}var Fn=null;function Md0(Z,X="",G=new URLSearchParams){for(let[Y,Q]of Object.entries(Z)){if(Q===void 0||Q===null)continue;let $=X?`${X}[${Y}]`:Y;if(Array.isArray(Q))Q.forEach((J,W)=>{if(typeof J==="object"&&J!==null)Md0(J,`${$}[${W}]`,G);else G.append(`${$}[${W}]`,String(J))});else if(typeof Q==="object")Md0(Q,$,G);else G.append($,String(Q))}return G}async function Rw(Z,X){let G=K1().stripeSecretKey;if(!G)throw new MY(503,"billing is not configured");let Y=X?.params?Md0(X.params).toString():void 0,Q=await fetch(`${v14}${Z}`,{method:X?.method??(Y?"POST":"GET"),headers:{Authorization:`Bearer ${G}`,...Y&&{"Content-Type":"application/x-www-form-urlencoded"}},body:Y,signal:AbortSignal.timeout(_14)}),$=await Q.json().catch(()=>({}));if(!Q.ok){let J=$.error?.message??`HTTP ${Q.status}`;throw new MY(Q.status,J)}return $}async function Q88(Z){let X=K1().stripeSeatPriceId;if(!X)throw new MY(503,"billing is not configured");let G=await Rw("/checkout/sessions",{params:{mode:"subscription",line_items:[{price:X,quantity:Z.quantity}],success_url:Z.successUrl,cancel_url:Z.cancelUrl,metadata:{orgId:Z.organizationId},subscription_data:{metadata:{orgId:Z.organizationId}}}});if(!G.url)throw new MY(500,"checkout session lacks url");return{url:G.url}}async function kd0(Z){let G=(await Rw(`/subscriptions/${encodeURIComponent(Z)}`)).items?.data??[],Y=K1().stripeSeatPriceId,Q=Y?G.find(($)=>$.price?.id===Y):G.length===1?G[0]:void 0;if(!Q)throw new MY(500,"subscription has no seat item");return{itemId:Q.id,quantity:Q.quantity??0}}async function $88(Z){let{itemId:X}=await kd0(Z.subscriptionId),G=await Rw("/invoices/create_preview",{params:{subscription:Z.subscriptionId,subscription_details:{items:[{id:X,quantity:Z.quantity}],proration_behavior:"always_invoice"}}});return{amountDueCents:G.amount_due??0,currency:G.currency??"usd"}}function y14(Z,X){return Math.round(Z*(1+X/100))}async function J88(Z){let X=y14(Z.amountCents,Z.feePercent),G=Y88(Z.amountCents,Z.currency,await G88()),Y=Z.currency==="brl"?`Studio AI credits (R$ ${(Z.amountCents/100).toFixed(2)})`:`Studio AI credits ($${(Z.amountCents/100).toFixed(2)})`,Q=await Rw("/checkout/sessions",{params:{mode:"payment",...Z.customerId&&{customer:Z.customerId},line_items:[{quantity:1,price_data:{currency:Z.currency,unit_amount:X,product_data:{name:Y}}}],success_url:Z.successUrl,cancel_url:Z.cancelUrl,metadata:{kind:"topup",orgId:Z.organizationId,creditCents:G}}});if(!Q.url)throw new MY(500,"checkout session lacks url");return{url:Q.url}}async function W88(Z){let X=await Rw("/billing_portal/sessions",{params:{customer:Z.customerId,return_url:Z.returnUrl}});if(!X.url)throw new MY(500,"portal session lacks url");return{url:X.url}}async function K88(Z){let{itemId:X}=await kd0(Z.subscriptionId);await Rw(`/subscriptions/${encodeURIComponent(Z.subscriptionId)}`,{params:{items:[{id:X,quantity:Z.quantity}],proration_behavior:"always_invoice",payment_behavior:"pending_if_incomplete"}})}async function N88(Z){await Rw(`/subscriptions/${encodeURIComponent(Z)}`,{method:"DELETE"})}async function U88(Z){if(Z.targetQuantity<1)return!1;let{itemId:X,quantity:G}=await kd0(Z.subscriptionId);if(G===Z.targetQuantity)return!1;return await Rw(`/subscriptions/${encodeURIComponent(Z.subscriptionId)}`,{params:{items:[{id:X,quantity:Z.targetQuantity}],proration_behavior:"always_invoice",payment_behavior:"pending_if_incomplete"}}),!0}var v14="https://api.stripe.com/v1",MY,_14=15000;var q_=B(()=>{y8();MY=class MY extends Error{status;constructor(Z,X){super(`Stripe API ${Z}: ${X}`);this.status=Z;this.name="StripeApiError"}}});import{z as DZ}from"zod";var g14,Sd0,Vd0;var F88=B(()=>{q_();Sb();X1();Eb();g14=DZ.object({legacy:DZ.boolean(),billingMode:DZ.string(),status:DZ.string(),includedReportUrl:DZ.string().nullable()}),Sd0=s({name:"ORGANIZATION_SEATS_GET",description:"Get the organization's billing identity and which members hold paid seats.",annotations:{title:"Get Organization Seats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:DZ.object({}),outputSchema:DZ.object({billing:g14.nullable(),paidSeatUserIds:DZ.array(DZ.string())}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization context required");let[Y,Q]=await Promise.all([X.storage.organizationBilling.getBilling(G),X.storage.organizationBilling.listPaidSeatUserIds(G)]);return{billing:Y?{legacy:Y.legacy,billingMode:Y.billingMode,status:Y.status,includedReportUrl:Y.includedReportUrl}:null,paidSeatUserIds:Q}}}),Vd0=s({name:"ORGANIZATION_SEATS_SET",description:"Set members' seats (paid/free). Invoiced organizations apply directly; self-serve organizations with an active subscription also charge the prorated difference on the saved card (preview it with ORGANIZATION_SEATS_PREVIEW first).",annotations:{title:"Set Organization Seats",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:DZ.object({seats:DZ.array(DZ.object({userId:DZ.string().min(1),seat:DZ.enum(["paid","free"])})).min(1).max(200)}),outputSchema:DZ.object({applied:DZ.array(DZ.object({userId:DZ.string(),seat:DZ.enum(["paid","free"])})),paidSeatCount:DZ.number(),benefitsSyncQueued:DZ.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization context required");let Y=x1(X);if(!Y)throw Error("User ID required");let Q=await X.storage.organizationBilling.getBilling(G);if(!Q||Q.legacy)throw Error("This organization is on the legacy plan \u2014 seats do not apply.");let $=kb(Q)?Q.stripeSubscriptionId:null,J;try{J=await X.storage.organizationBilling.setSeats(G,Z.seats,Y,{markBenefitsPending:aB()})}catch(K){if(K instanceof P00)throw Error(K.message);throw K}if($)try{await K88({subscriptionId:$,quantity:J.paidSeatCount})}catch(K){let N=K instanceof MY?K.message:"Stripe update failed";throw Error(`Seats saved, but updating the subscription failed: ${N}. Apply again to retry the charge.`)}let W=!1;if(J.benefitsReferenceId)try{await TN(G,J.benefitsReferenceId,"apply"),W=!0}catch(K){console.error("Failed to enqueue benefit sync (sweep covers):",K)}return{applied:J.applied,paidSeatCount:J.paidSeatCount,benefitsSyncQueued:W}}})});import{z as NU}from"zod";var Cd0,fd0;var H88=B(()=>{q_();tZ();X1();Cd0=s({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's seat subscription: creates a Stripe Checkout session for the current paid-seat count and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:NU.object({}),outputSchema:NU.object({url:NU.string(),quantity:NU.number()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id,Y=X.organization?.slug;if(!G||!Y)throw Error("Organization context required");let[Q,$]=await Promise.all([X.storage.organizationBilling.getBilling(G),X.storage.organizationBilling.listPaidSeatUserIds(G)]);if(!Q||Q.legacy)throw Error("This organization is on the legacy plan \u2014 no subscription needed.");if(Q.billingMode!=="self_serve")throw Error("Contract-billed organizations do not use checkout.");if(Q.status==="active")throw Error("This organization already has an active subscription \u2014 seat changes apply directly.");if(Q.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let J=$.length;if(J<1)throw Error("Mark at least one member as a paid seat before subscribing.");let W=`${s7()}/${encodeURIComponent(Y)}/members`,{url:K}=await Q88({organizationId:G,quantity:J,successUrl:`${W}?checkout=success`,cancelUrl:`${W}?checkout=canceled`});return{url:K,quantity:J}}}),fd0=s({name:"ORGANIZATION_SEATS_PREVIEW",description:"Preview what the organization pays now for changing its paid-seat count (Stripe prorated invoice preview). Read-only \u2014 nothing is charged.",annotations:{title:"Preview Seat Change",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:NU.object({quantity:NU.number().int().min(1).max(1000)}),outputSchema:NU.object({amountDueCents:NU.number(),currency:NU.string()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=X.organization?.id;if(!G)throw Error("Organization context required");let Y=await X.storage.organizationBilling.getBilling(G);if(!kb(Y))throw Error("Seat previews need an active self-serve subscription.");return await $88({subscriptionId:Y.stripeSubscriptionId,quantity:Z.quantity})}})});import{z as Iw}from"zod";var bd0,xd0;var w88=B(()=>{q_();Sb();tZ();X1();MD();bd0=s({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:Iw.object({}),outputSchema:Iw.object({url:Iw.string()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X);if(!G.slug)throw Error("Organization context required");let Y=await X.storage.organizationBilling.getBilling(G.id);if(!Y?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");if(Y.legacy||Y.billingMode!=="self_serve")throw Error("This organization's billing is managed by deco \u2014 contact support.");try{return await W88({customerId:Y.stripeCustomerId,returnUrl:`${s7()}/${encodeURIComponent(G.slug)}/members`})}catch(Q){if(Q instanceof MY)throw Error(Q.message);throw Q}}}),xd0=s({name:"ORGANIZATION_INCLUDED_REPORT_SET",description:"Choose which site's weekly report re-run the organization's subscription includes (null clears it).",annotations:{title:"Set Included Report Site",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Iw.object({url:Iw.string().trim().min(1).max(255).nullable()}),outputSchema:Iw.object({includedReportUrl:Iw.string().nullable(),benefitsSyncQueued:Iw.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=await X.storage.organizationBilling.getBilling(G.id);if(!Y||Y.legacy)throw Error("This organization is on the legacy plan \u2014 included reports do not apply.");let Q=Z.url===null?null:k60(Z.url);if(Z.url!==null&&!Q)throw Error(`"${Z.url}" is not a valid site URL.`);let{updated:$,benefitsReferenceId:J}=await X.storage.organizationBilling.setIncludedReportUrl(G.id,Q,{markBenefitsPending:aB()});if(!$)throw Error("Organization billing row missing.");let W=!1;if(J)try{await TN(G.id,J,"apply"),W=!0}catch(K){console.error("Failed to enqueue benefit sync (sweep covers):",K)}return{includedReportUrl:Q,benefitsSyncQueued:W}}})});import{z as Hn}from"zod";function h14(Z){return`[CREDITS] Paid report runs need at least $${(O88/100).toFixed(2)} of AI credit balance \u2014 current balance is $${(Z/100).toFixed(2)}. Top up and try again.`}var O88=500,vd0;var B88=B(()=>{tC0();X1();lW();OH();MD();vd0=s({name:"ORGANIZATION_REPORT_RUN_PAID",description:"Trigger a paid report run for one of the organization's sites, billed against its AI credits (requires at least $5 of balance; the run's real cost plus markup is debited at completion).",annotations:{title:"Run Paid Report",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:Hn.object({url:Hn.string().trim().min(1).max(255).optional()}),outputSchema:Hn.object({url:Hn.string(),started:Hn.boolean()}),handler:async(Z,X)=>{E0(X),await X.access.check();let G=O0(X),Y=x1(X);if(!Y)throw Error("User ID required");if(!Lc())throw Error("Reports are not available on this deployment.");let Q;if(Z.url)Q=k60(Z.url);else Q=(await X.storage.organizationBilling.getBilling(G.id))?.includedReportUrl??null;if(!Q)throw Error(Z.url?`"${Z.url}" is not a valid site URL.`:"No site chosen \u2014 pass a url or set the included report site first.");let $=W7().deco;if(!$?.getCreditsBalance)throw Error("AI credit balance is not available on this deployment.");let J=await LW(Y,X.auth.user?.email),{balanceCents:W}=await $.getCreditsBalance(J,G.id);if(!(W>=O88))throw Error(h14(W??0));return await eM1({host:Q,organizationId:G.id}),{url:Q,started:!0}}})});var D88=B(()=>{f18();b18();x18();v18();_18();g18();h18();c18();d18();m18();n18();o18();a18();s18();e18();Z88();X88();F88();H88();w88();B88()});var CQ="super-agent",E88="task-board.item.updated",L88="task-board.item.deleted";import{z as L4}from"zod";var wn,uE,c14,z88,M_;var cE=B(()=>{wn=L4.enum(["triage","todo","in_progress","in_review","done"]),uE=L4.enum(["none","low","medium","high","urgent"]),c14=L4.object({threadId:L4.string(),virtualMcpId:L4.string().nullable(),status:L4.enum(["in_progress","requires_action","failed","completed","expired"]).nullable(),title:L4.string().nullable(),lastMessage:L4.string().nullable(),hasPreview:L4.boolean(),hasMessages:L4.boolean(),createdAt:L4.string()}),z88=L4.object({url:L4.string(),number:L4.number(),repoOwner:L4.string(),repoName:L4.string(),createdAt:L4.string(),title:L4.string().nullable(),body:L4.string().nullable(),state:L4.enum(["open","closed"]).nullable(),draft:L4.boolean().nullable(),merged:L4.boolean().nullable()}),M_=L4.object({id:L4.string(),organizationId:L4.string(),title:L4.string(),description:L4.string().nullable(),status:wn,priority:uE,assigneeId:L4.string().nullable(),assignedBy:L4.string().nullable(),dueDate:L4.string().datetime().nullable(),sortOrder:L4.number(),threads:L4.array(c14),createdBy:L4.string(),createdAt:L4.string().datetime(),updatedBy:L4.string(),updatedAt:L4.string().datetime()})});async function HZ0(Z,X,G){if(G===CQ)return;let{members:Y}=await Z.boundAuth.organization.listMembers({organizationId:X,filterField:"userId",filterValue:G});if(!Y.some((Q)=>Q.userId===G))throw Error("assigneeId is not a member of the organization")}var _d0=B(()=>{cE()});async function yd0(Z,X,G){let Y;try{return await Promise.race([Z.aiProviders.listModels(X,G),new Promise(($,J)=>{Y=setTimeout(()=>J(Error("listModels timeout")),l14)})])}finally{if(Y)clearTimeout(Y)}}function d14(Z,X){switch(Z){case"fast":return X.chat.fast;case"smart":return X.chat.smart;case"thinking":return X.chat.thinking;case"image":return X.image;case"web_search":return X.webSearch;case"deep_research":return X.deepResearch}}function gd0(Z,X,G){let Y=Z.find((Q)=>Q.modelId===X);return{title:Y?.title??G??X,providerId:Y?.providerId,capabilities:Y?.capabilities,limits:Y?.limits??null}}async function _G(Z,X,G){let Y=Z.organization?.id;if(!Y)throw Error("resolveTier called without an organization");let $=(await Z.storage.organizationSettings.get(Y))?.simple_mode?.tiers?.[X]??null,J=Z.auth?.user?.id,W=pW.safeParse(X),K=G?.applyUserPrefs&&W.success&&J?(await Z.storage.userModelPreferences.get(J,Y))?.tiers?.[W.data]??null:null,N=await Z.storage.aiProviderKeys.list({organizationId:Y});for(let O of[K,$])if(O&&N.some((D)=>D.id===O.keyId)){let D=await yd0(Z,O.keyId,Y).catch(()=>[]);return{credentialId:O.keyId,modelId:O.modelId,modelMeta:gd0(D,O.modelId,O.title)}}if(N.length===0)throw new k_(X);let U={};await Promise.all(N.map(async(O)=>{U[O.id]=await yd0(Z,O.id,Y).catch(()=>[])}));let F=N.map((O)=>({id:O.id,providerId:O.providerId,label:O.label,presetId:O.presetId,createdBy:O.createdBy,createdAt:O.createdAt})),H=cM1(F,U),w=d14(X,H);if(!w)throw new k_(X);return{credentialId:w.keyId,modelId:w.modelId,modelMeta:gd0(U[w.keyId]??[],w.modelId,w.title)}}async function j88(Z,X,G){let Y=Z.organization?.id;if(!Y)throw Error("resolveSpecificModel called without an organization");let Q=await yd0(Z,X,Y).catch(()=>[]);return{credentialId:X,modelId:G,modelMeta:gd0(Q,G)}}async function g3(Z,X){try{return await _G(Z,X)}catch(G){if(G instanceof k_)return null;return console.warn(`[resolveTier] tier "${X}" resolution failed:`,G),null}}var k_,l14=5000;var qw=B(()=>{VQ();b6();k_=class k_ extends Error{tier;constructor(Z){super(`No model available for tier "${Z}". Connect a provider or configure the tier in organization settings.`);this.tier=Z;this.name="TierUnavailableError"}}});function wZ0(Z){return Z.sandboxProviderKind==="agent-sandbox"&&Z.harnessId==="decopilot"}function A88(Z){return Z.harnessId==="decopilot"&&(Z.sandboxProviderKind==null||Z.sandboxProviderKind==="agent-sandbox")}function i14(Z){return{type:"data-run-status",id:"run-status",data:{stage:Z}}}function P88(Z){if(!Z||typeof Z!=="object")return!1;return Z.type==="data-run-status"}async function UU(Z,X,G){if(!Z)return;try{await Z.publishRawChunk(X,i14(G))}catch{}}var m14,On,AH9;var Bn=B(()=>{m14=["waiting-runner","starting-run","gathering-context","preparing-tools","starting-assistant","analyzing-scope"],On=["gathering-context","preparing-tools","starting-assistant","analyzing-scope"],AH9=new Set(m14)});function OZ0(){return crypto.randomUUID()}var ud0=f((RH9,I88)=>{var{defineProperty:hd0,getOwnPropertyDescriptor:n14,getOwnPropertyNames:p14}=Object,t14=Object.prototype.hasOwnProperty,r14=(Z,X)=>{for(var G in X)hd0(Z,G,{get:X[G],enumerable:!0})},o14=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of p14(X))if(!t14.call(Z,Q)&&Q!==G)hd0(Z,Q,{get:()=>X[Q],enumerable:!(Y=n14(X,Q))||Y.enumerable})}return Z},a14=(Z)=>o14(hd0({},"__esModule",{value:!0}),Z),T88={};r14(T88,{SYMBOL_FOR_REQ_CONTEXT:()=>R88,getContext:()=>s14});I88.exports=a14(T88);var R88=Symbol.for("@vercel/request-context");function s14(){return globalThis[R88]?.get?.()??{}}});var Dn=f((IH9,k88)=>{var{defineProperty:cd0,getOwnPropertyDescriptor:e14,getOwnPropertyNames:Z84}=Object,X84=Object.prototype.hasOwnProperty,G84=(Z,X)=>{for(var G in X)cd0(Z,G,{get:X[G],enumerable:!0})},Y84=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of Z84(X))if(!X84.call(Z,Q)&&Q!==G)cd0(Z,Q,{get:()=>X[Q],enumerable:!(Y=e14(X,Q))||Y.enumerable})}return Z},Q84=(Z)=>Y84(cd0({},"__esModule",{value:!0}),Z),q88={};G84(q88,{VercelOidcTokenError:()=>M88});k88.exports=Q84(q88);class M88 extends Error{constructor(Z,X){super(Z);this.name="VercelOidcTokenError",this.cause=X}toString(){if(this.cause)return`${this.name}: ${this.message}: ${this.cause}`;return`${this.name}: ${this.message}`}}});var f88=f((qH9,C88)=>{var{create:$84,defineProperty:BZ0,getOwnPropertyDescriptor:J84,getOwnPropertyNames:W84,getPrototypeOf:K84}=Object,N84=Object.prototype.hasOwnProperty,U84=(Z,X)=>{for(var G in X)BZ0(Z,G,{get:X[G],enumerable:!0})},S88=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of W84(X))if(!N84.call(Z,Q)&&Q!==G)BZ0(Z,Q,{get:()=>X[Q],enumerable:!(Y=J84(X,Q))||Y.enumerable})}return Z},dd0=(Z,X,G)=>(G=Z!=null?$84(K84(Z)):{},S88(X||!Z||!Z.__esModule?BZ0(G,"default",{value:Z,enumerable:!0}):G,Z)),F84=(Z)=>S88(BZ0({},"__esModule",{value:!0}),Z),V88={};U84(V88,{findRootDir:()=>O84,getUserDataDir:()=>B84});C88.exports=F84(V88);var En=dd0(c0("path")),H84=dd0(c0("fs")),ld0=dd0(c0("os")),w84=Dn();function O84(){try{let Z=process.cwd();while(Z!==En.default.dirname(Z)){let X=En.default.join(Z,".vercel");if(H84.default.existsSync(X))return Z;Z=En.default.dirname(Z)}}catch(Z){throw new w84.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function B84(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(ld0.default.platform()){case"darwin":return En.default.join(ld0.default.homedir(),"Library/Application Support");case"linux":return En.default.join(ld0.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}});var h88=f((MH9,g88)=>{var{create:D84,defineProperty:DZ0,getOwnPropertyDescriptor:E84,getOwnPropertyNames:L84,getPrototypeOf:z84}=Object,j84=Object.prototype.hasOwnProperty,A84=(Z,X)=>{for(var G in X)DZ0(Z,G,{get:X[G],enumerable:!0})},b88=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of L84(X))if(!j84.call(Z,Q)&&Q!==G)DZ0(Z,Q,{get:()=>X[Q],enumerable:!(Y=E84(X,Q))||Y.enumerable})}return Z},x88=(Z,X,G)=>(G=Z!=null?D84(z84(Z)):{},b88(X||!Z||!Z.__esModule?DZ0(G,"default",{value:Z,enumerable:!0}):G,Z)),P84=(Z)=>b88(DZ0({},"__esModule",{value:!0}),Z),v88={};A84(v88,{isValidAccessToken:()=>q84,readAuthConfig:()=>R84,writeAuthConfig:()=>I84});g88.exports=P84(v88);var Ln=x88(c0("fs")),_88=x88(c0("path")),T84=zn();function y88(){let Z=(0,T84.getVercelDataDir)();if(!Z)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return _88.join(Z,"auth.json")}function R84(){try{let Z=y88();if(!Ln.existsSync(Z))return null;let X=Ln.readFileSync(Z,"utf8");if(!X)return null;return JSON.parse(X)}catch(Z){return null}}function I84(Z){let X=y88(),G=_88.dirname(X);if(!Ln.existsSync(G))Ln.mkdirSync(G,{mode:504,recursive:!0});Ln.writeFileSync(X,JSON.stringify(Z,null,2),{mode:384})}function q84(Z,X=0){if(!Z.token)return!1;if(typeof Z.expiresAt!=="number")return!0;let G=Math.floor(Date.now()/1000),Y=X/1000;return Z.expiresAt>=G+Y}});var d88=f((kH9,l88)=>{var{defineProperty:nd0,getOwnPropertyDescriptor:M84,getOwnPropertyNames:k84}=Object,S84=Object.prototype.hasOwnProperty,V84=(Z,X)=>{for(var G in X)nd0(Z,G,{get:X[G],enumerable:!0})},C84=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of k84(X))if(!S84.call(Z,Q)&&Q!==G)nd0(Z,Q,{get:()=>X[Q],enumerable:!(Y=M84(X,Q))||Y.enumerable})}return Z},f84=(Z)=>C84(nd0({},"__esModule",{value:!0}),Z),u88={};V84(u88,{processTokenResponse:()=>y84,refreshTokenRequest:()=>_84});l88.exports=f84(u88);var md0=c0("os"),b84="https://vercel.com",x84="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",c88=`@vercel/oidc node-${process.version} ${(0,md0.platform)()} (${(0,md0.arch)()}) ${(0,md0.hostname)()}`,id0=null;async function v84(){if(id0)return id0;let Z=`${b84}/.well-known/openid-configuration`,X=await fetch(Z,{headers:{"user-agent":c88}});if(!X.ok)throw Error("Failed to discover OAuth endpoints");let G=await X.json();if(!G||typeof G.token_endpoint!=="string")throw Error("Invalid OAuth discovery response");let Y=G.token_endpoint;return id0=Y,Y}async function _84(Z){let X=await v84();return await fetch(X,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":c88},body:new URLSearchParams({client_id:x84,grant_type:"refresh_token",...Z})})}async function y84(Z){let X=await Z.json();if(!Z.ok){let G=typeof X==="object"&&X&&"error"in X?String(X.error):"Token refresh failed";return[Error(G)]}if(typeof X!=="object"||X===null)return[Error("Invalid token response")];if(typeof X.access_token!=="string")return[Error("Missing access_token in response")];if(X.token_type!=="Bearer")return[Error("Invalid token_type in response")];if(typeof X.expires_in!=="number")return[Error("Missing expires_in in response")];return[null,X]}});var td0=f((SH9,p88)=>{var{defineProperty:pd0,getOwnPropertyDescriptor:g84,getOwnPropertyNames:h84}=Object,u84=Object.prototype.hasOwnProperty,c84=(Z,X)=>{for(var G in X)pd0(Z,G,{get:X[G],enumerable:!0})},l84=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of h84(X))if(!u84.call(Z,Q)&&Q!==G)pd0(Z,Q,{get:()=>X[Q],enumerable:!(Y=g84(X,Q))||Y.enumerable})}return Z},d84=(Z)=>l84(pd0({},"__esModule",{value:!0}),Z),m88={};c84(m88,{AccessTokenMissingError:()=>i88,RefreshAccessTokenFailedError:()=>n88});p88.exports=d84(m88);class i88 extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login).");this.name="AccessTokenMissingError"}}class n88 extends Error{constructor(Z){super("Failed to refresh authentication token.",{cause:Z});this.name="RefreshAccessTokenFailedError"}}});var zn=f((VH9,s88)=>{var{create:m84,defineProperty:EZ0,getOwnPropertyDescriptor:i84,getOwnPropertyNames:n84,getPrototypeOf:p84}=Object,t84=Object.prototype.hasOwnProperty,r84=(Z,X)=>{for(var G in X)EZ0(Z,G,{get:X[G],enumerable:!0})},r88=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of n84(X))if(!t84.call(Z,Q)&&Q!==G)EZ0(Z,Q,{get:()=>X[Q],enumerable:!(Y=i84(X,Q))||Y.enumerable})}return Z},o88=(Z,X,G)=>(G=Z!=null?m84(p84(Z)):{},r88(X||!Z||!Z.__esModule?EZ0(G,"default",{value:Z,enumerable:!0}):G,Z)),o84=(Z)=>r88(EZ0({},"__esModule",{value:!0}),Z),a88={};r84(a88,{assertVercelOidcTokenResponse:()=>rd0,findProjectInfo:()=>Z64,getTokenPayload:()=>Y64,getVercelDataDir:()=>a84,getVercelOidcToken:()=>e84,getVercelToken:()=>s84,isExpired:()=>Q64,loadToken:()=>G64,saveToken:()=>X64});s88.exports=o84(a88);var jn=o88(c0("path")),lE=o88(c0("fs")),C_=Dn(),LZ0=f88(),S_=h88(),t88=d88(),V_=td0();function a84(){let X=(0,LZ0.getUserDataDir)();if(!X)return null;return jn.join(X,"com.vercel.cli")}async function s84(Z){let X=(0,S_.readAuthConfig)();if(!X?.token)throw new V_.AccessTokenMissingError;if((0,S_.isValidAccessToken)(X,Z?.expirationBufferMs))return X.token;if(!X.refreshToken)throw(0,S_.writeAuthConfig)({}),new V_.RefreshAccessTokenFailedError("No refresh token available");try{let G=await(0,t88.refreshTokenRequest)({refresh_token:X.refreshToken}),[Y,Q]=await(0,t88.processTokenResponse)(G);if(Y||!Q)throw(0,S_.writeAuthConfig)({}),new V_.RefreshAccessTokenFailedError(Y);let $={token:Q.access_token,expiresAt:Math.floor(Date.now()/1000)+Q.expires_in};if(Q.refresh_token)$.refreshToken=Q.refresh_token;return(0,S_.writeAuthConfig)($),$.token}catch(G){if((0,S_.writeAuthConfig)({}),G instanceof V_.AccessTokenMissingError||G instanceof V_.RefreshAccessTokenFailedError)throw G;throw new V_.RefreshAccessTokenFailedError(G)}}async function e84(Z,X,G){let Y=`https://api.vercel.com/v1/projects/${X}/token?source=vercel-oidc-refresh${G?`&teamId=${G}`:""}`,Q=await fetch(Y,{method:"POST",headers:{Authorization:`Bearer ${Z}`}});if(!Q.ok)throw new C_.VercelOidcTokenError(`Failed to refresh OIDC token: ${Q.statusText}`);let $=await Q.json();return rd0($),$}function rd0(Z){if(!Z||typeof Z!=="object")throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in Z)||typeof Z.token!=="string")throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function Z64(){let Z=(0,LZ0.findRootDir)();if(!Z)throw new C_.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let X=jn.join(Z,".vercel","project.json");if(!lE.existsSync(X))throw new C_.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let G=JSON.parse(lE.readFileSync(X,"utf8"));if(typeof G.projectId!=="string"&&typeof G.orgId!=="string")throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:G.projectId,teamId:G.orgId}}function X64(Z,X){let G=(0,LZ0.getUserDataDir)();if(!G)throw new C_.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let Y=jn.join(G,"com.vercel.token",`${X}.json`),Q=JSON.stringify(Z);lE.mkdirSync(jn.dirname(Y),{mode:504,recursive:!0}),lE.writeFileSync(Y,Q),lE.chmodSync(Y,432);return}function G64(Z){let X=(0,LZ0.getUserDataDir)();if(!X)throw new C_.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let G=jn.join(X,"com.vercel.token",`${Z}.json`);if(!lE.existsSync(G))return null;let Y=JSON.parse(lE.readFileSync(G,"utf8"));return rd0(Y),Y}function Y64(Z){let X=Z.split(".");if(X.length!==3)throw new C_.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let G=X[1].replace(/-/g,"+").replace(/_/g,"/"),Y=G.padEnd(G.length+(4-G.length%4)%4,"=");return JSON.parse(Buffer.from(Y,"base64").toString("utf8"))}function Q64(Z,X=0){return Z.exp*1000<Date.now()+X}});var G68=f((CH9,X68)=>{var{defineProperty:od0,getOwnPropertyDescriptor:$64,getOwnPropertyNames:J64}=Object,W64=Object.prototype.hasOwnProperty,K64=(Z,X)=>{for(var G in X)od0(Z,G,{get:X[G],enumerable:!0})},N64=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of J64(X))if(!W64.call(Z,Q)&&Q!==G)od0(Z,Q,{get:()=>X[Q],enumerable:!(Y=$64(X,Q))||Y.enumerable})}return Z},U64=(Z)=>N64(od0({},"__esModule",{value:!0}),Z),Z68={};K64(Z68,{refreshToken:()=>F64});X68.exports=U64(Z68);var e88=Dn(),Mw=zn();async function F64(Z){let X=Z?.project,G=Z?.team;if(!X&&!G){let Q=(0,Mw.findProjectInfo)();X=Q.projectId,G=Q.teamId}else if(!X||!G){let Q=(0,Mw.findProjectInfo)();X=X??Q.projectId,G=G??Q.teamId}if(!X)throw new e88.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let Y=(0,Mw.loadToken)(X);if(!Y||(0,Mw.isExpired)((0,Mw.getTokenPayload)(Y.token),Z?.expirationBufferMs)){let Q=await(0,Mw.getVercelToken)({expirationBufferMs:Z?.expirationBufferMs});if(Y=await(0,Mw.getVercelOidcToken)(Q,X,G),!Y)throw new e88.VercelOidcTokenError("Failed to refresh OIDC token");(0,Mw.saveToken)(Y,X)}process.env.VERCEL_OIDC_TOKEN=Y.token;return}});var $68=f((fH9,Q68)=>{var{defineProperty:sd0,getOwnPropertyDescriptor:H64,getOwnPropertyNames:w64}=Object,O64=Object.prototype.hasOwnProperty,B64=(Z,X)=>{for(var G in X)sd0(Z,G,{get:X[G],enumerable:!0})},D64=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of w64(X))if(!O64.call(Z,Q)&&Q!==G)sd0(Z,Q,{get:()=>X[Q],enumerable:!(Y=H64(X,Q))||Y.enumerable})}return Z},E64=(Z)=>D64(sd0({},"__esModule",{value:!0}),Z),Y68={};B64(Y68,{getVercelOidcToken:()=>j64,getVercelOidcTokenSync:()=>ad0});Q68.exports=E64(Y68);var L64=ud0(),z64=Dn();async function j64(Z){let X="",G;try{X=ad0()}catch(Y){G=Y}try{let[{getTokenPayload:Y,isExpired:Q},{refreshToken:$}]=await Promise.all([await Promise.resolve().then(() => k(zn())),await Promise.resolve().then(() => k(G68()))]);if(!X||Q(Y(X),Z?.expirationBufferMs))await $(Z),X=ad0()}catch(Y){let Q=G instanceof Error?G.message:"";if(Y instanceof Error)Q=`${Q}
|
|
1145
1145
|
${Y.message}`;if(Q)throw new z64.VercelOidcTokenError(Q);throw Y}return X}function ad0(){let Z=(0,L64.getContext)().headers?.["x-vercel-oidc-token"]??process.env.VERCEL_OIDC_TOKEN;if(!Z)throw Error("The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?");return Z}});var Zm0=f((bH9,N68)=>{var{defineProperty:ed0,getOwnPropertyDescriptor:A64,getOwnPropertyNames:P64}=Object,T64=Object.prototype.hasOwnProperty,R64=(Z,X)=>{for(var G in X)ed0(Z,G,{get:X[G],enumerable:!0})},I64=(Z,X,G,Y)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let Q of P64(X))if(!T64.call(Z,Q)&&Q!==G)ed0(Z,Q,{get:()=>X[Q],enumerable:!(Y=A64(X,Q))||Y.enumerable})}return Z},q64=(Z)=>I64(ed0({},"__esModule",{value:!0}),Z),K68={};R64(K68,{AccessTokenMissingError:()=>W68.AccessTokenMissingError,RefreshAccessTokenFailedError:()=>W68.RefreshAccessTokenFailedError,getContext:()=>M64.getContext,getVercelOidcToken:()=>J68.getVercelOidcToken,getVercelOidcTokenSync:()=>J68.getVercelOidcTokenSync,getVercelToken:()=>k64.getVercelToken});N68.exports=q64(K68);var J68=$68(),M64=ud0(),W68=td0(),k64=zn()});import{z as FU}from"zod/v4";import{z as A68}from"zod/v4";import{z as Gm0}from"zod/v4";import{z as LZ}from"zod/v4";import{z as K7}from"zod/v4";import{z as EZ}from"zod/v4";import{z as zZ0}from"zod/v4";import{z as N9}from"zod/v4";import{z as u5}from"zod/v4";import{z as p6}from"zod/v4";import{z as A9}from"zod/v4";import{z as G5}from"zod";import{z as s4}from"zod";async function g68({response:Z,statusCode:X,defaultMessage:G="Gateway request failed",cause:Y,authMethod:Q}){var $;let J=await r9({value:Z,schema:i64});if(!J.success){let F=typeof Z==="object"&&Z!==null&&"generationId"in Z?Z.generationId:void 0;return new m64({message:`Invalid error response format: ${G}`,statusCode:X,response:Z,validationError:J.error,cause:Y,generationId:F})}let W=J.value,K=W.error.type,N=W.error.message,U=($=W.generationId)!=null?$:void 0;switch(K){case"authentication_error":return jZ0.createContextualError({apiKeyProvided:Q==="api-key",oidcTokenProvided:Q==="oidc",statusCode:X,cause:Y,generationId:U});case"invalid_request_error":return new f64({message:N,statusCode:X,cause:Y,generationId:U});case"rate_limit_exceeded":return new x64({message:N,statusCode:X,cause:Y,generationId:U});case"model_not_found":{let F=await r9({value:W.error.param,schema:_64});return new y64({message:N,statusCode:X,modelId:F.success?F.value.modelId:void 0,cause:Y,generationId:U})}case"internal_server_error":return new k68({message:N,statusCode:X,cause:Y,generationId:U});case"failed_dependency":return new u64({message:N,statusCode:X,cause:Y,generationId:U});case"forbidden":return new l64({message:N,statusCode:X,cause:Y,generationId:U});default:return new k68({message:N,statusCode:X,cause:Y,generationId:U})}}function n64(Z){if(Z.data!==void 0)return Z.data;if(Z.responseBody!=null)try{return JSON.parse(Z.responseBody)}catch(X){return Z.responseBody}return{}}function d68(Z){if(!(Z instanceof Error))return!1;let X=Z.code;if(typeof X==="string")return["UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT"].includes(X);return!1}async function kY(Z,X){var G;if(zZ.isInstance(Z))return Z;if(d68(Z))return l68.createTimeoutError({originalMessage:Z instanceof Error?Z.message:"Unknown error",cause:Z});if(W6.isInstance(Z)){if(Z.cause&&d68(Z.cause))return l68.createTimeoutError({originalMessage:Z.message,cause:Z});return await g68({response:n64(Z),statusCode:(G=Z.statusCode)!=null?G:500,defaultMessage:"Gateway request failed",cause:Z,authMethod:X})}return await g68({response:{},statusCode:500,defaultMessage:Z instanceof Error?`Gateway request failed: ${Z.message}`:"Unknown Gateway error",cause:Z,authMethod:X})}async function tW(Z){let X=await r9({value:Z[X48],schema:t64});return X.success?X.value:void 0}function i68(Z){if(Z.type==="file"&&Z.data instanceof Uint8Array)return{...Z,data:DY(Z.data)};return Z}function H44(Z){if(Z.type==="file"&&Z.data instanceof Uint8Array)return{...Z,data:DY(Z.data)};return Z}async function S44(){var Z;return(Z=G48.getContext().headers)==null?void 0:Z["x-vercel-id"]}function Ym0(Z={}){var X,G;let Y=null,Q=null,$=(X=Z.metadataCacheRefreshMillis)!=null?X:300000,J=0,W=(G=eH(Z.baseURL))!=null?G:"https://ai-gateway.vercel.sh/v3/ai",K=async()=>{try{let z=await f44(Z);return a4({Authorization:`Bearer ${z.token}`,"ai-gateway-protocol-version":C44,[X48]:z.authMethod,...Z.headers},`ai-sdk/gateway/${V44}`)}catch(z){throw jZ0.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:z})}},N=()=>{let z=VW({settingValue:void 0,environmentVariableName:"VERCEL_DEPLOYMENT_ID"}),j=VW({settingValue:void 0,environmentVariableName:"VERCEL_ENV"}),A=VW({settingValue:void 0,environmentVariableName:"VERCEL_REGION"}),P=VW({settingValue:void 0,environmentVariableName:"VERCEL_PROJECT_ID"});return async()=>{let q=await S44();return{...z&&{"ai-o11y-deployment-id":z},...j&&{"ai-o11y-environment":j},...A&&{"ai-o11y-region":A},...q&&{"ai-o11y-request-id":q},...P&&{"ai-o11y-project-id":P}}}},U=(z)=>{return new G44(z,{provider:"gateway",baseURL:W,headers:K,fetch:Z.fetch,o11yHeaders:N()})},F=async()=>{var z,j,A;let P=(A=(j=(z=Z._internal)==null?void 0:z.currentDate)==null?void 0:j.call(z).getTime())!=null?A:Date.now();if(!Y||P-J>$)J=P,Y=new m68({baseURL:W,headers:K,fetch:Z.fetch}).getAvailableModels().then((q)=>{return Q=q,q}).catch(async(q)=>{throw await kY(q,await tW(await K()))});return Q?Promise.resolve(Q):Y},H=async()=>{return new m68({baseURL:W,headers:K,fetch:Z.fetch}).getCredits().catch(async(z)=>{throw await kY(z,await tW(await K()))})},w=async(z)=>{return new s64({baseURL:W,headers:K,fetch:Z.fetch}).getSpendReport(z).catch(async(j)=>{throw await kY(j,await tW(await K()))})},O=async(z)=>{return new Z44({baseURL:W,headers:K,fetch:Z.fetch}).getGenerationInfo(z).catch(async(j)=>{throw await kY(j,await tW(await K()))})},D=function(z){if(new.target)throw Error("The Gateway Provider model function cannot be called with the new keyword.");return U(z)};D.specificationVersion="v3",D.getAvailableModels=F,D.getCredits=H,D.getSpendReport=w,D.getGenerationInfo=O,D.imageModel=(z)=>{return new J44(z,{provider:"gateway",baseURL:W,headers:K,fetch:Z.fetch,o11yHeaders:N()})},D.languageModel=U;let E=(z)=>{return new Y44(z,{provider:"gateway",baseURL:W,headers:K,fetch:Z.fetch,o11yHeaders:N()})};D.embeddingModel=E,D.textEmbeddingModel=E,D.videoModel=(z)=>{return new F44(z,{provider:"gateway",baseURL:W,headers:K,fetch:Z.fetch,o11yHeaders:N()})};let L=(z)=>{return new E44(z,{provider:"gateway",baseURL:W,headers:K,fetch:Z.fetch,o11yHeaders:N()})};return D.rerankingModel=L,D.reranking=L,D.chat=D.languageModel,D.embedding=D.embeddingModel,D.image=D.imageModel,D.video=D.videoModel,D.tools=k44,D}async function f44(Z){let X=VW({settingValue:Z.apiKey,environmentVariableName:"AI_GATEWAY_API_KEY"});if(X)return{token:X,authMethod:"api-key"};return{token:await Y48.getVercelOidcToken(),authMethod:"oidc"}}var G48,Y48,S64="vercel.ai.gateway.error",Xm0,U68,F68,zZ,n68="GatewayAuthenticationError",V64,H68,w68,O68,jZ0,p68="GatewayInvalidRequestError",C64,B68,D68,E68,f64,t68="GatewayRateLimitError",b64,L68,z68,j68,x64,r68="GatewayModelNotFoundError",v64,P68,_64,T68,R68,y64,o68="GatewayInternalServerError",g64,I68,q68,M68,k68,a68="GatewayFailedDependencyError",h64,S68,V68,C68,u64,s68="GatewayForbiddenError",c64,f68,b68,x68,l64,e68="GatewayResponseError",d64,v68,_68,y68,m64,i64,Z48="GatewayTimeoutError",p64,h68,u68,c68,l68,X48="ai-gateway-auth-method",t64,r64,m68=class{constructor(Z){this.config=Z}async getAvailableModels(){try{let{value:Z}=await jQ({url:`${this.config.baseURL}/config`,headers:await _8(this.config.headers()),successfulResponseHandler:G6(o64),failedResponseHandler:z9({errorSchema:LZ.any(),errorToMessage:(X)=>X}),fetch:this.config.fetch});return Z}catch(Z){throw await kY(Z)}}async getCredits(){try{let Z=new URL(this.config.baseURL),{value:X}=await jQ({url:`${Z.origin}/v1/credits`,headers:await _8(this.config.headers()),successfulResponseHandler:G6(a64),failedResponseHandler:z9({errorSchema:LZ.any(),errorToMessage:(G)=>G}),fetch:this.config.fetch});return X}catch(Z){throw await kY(Z)}}},o64,a64,s64=class{constructor(Z){this.config=Z}async getSpendReport(Z){try{let X=new URL(this.config.baseURL),G=new URLSearchParams;if(G.set("start_date",Z.startDate),G.set("end_date",Z.endDate),Z.groupBy)G.set("group_by",Z.groupBy);if(Z.datePart)G.set("date_part",Z.datePart);if(Z.userId)G.set("user_id",Z.userId);if(Z.model)G.set("model",Z.model);if(Z.provider)G.set("provider",Z.provider);if(Z.credentialType)G.set("credential_type",Z.credentialType);if(Z.tags&&Z.tags.length>0)G.set("tags",Z.tags.join(","));let{value:Y}=await jQ({url:`${X.origin}/v1/report?${G.toString()}`,headers:await _8(this.config.headers()),successfulResponseHandler:G6(e64),failedResponseHandler:z9({errorSchema:K7.any(),errorToMessage:(Q)=>Q}),fetch:this.config.fetch});return Y}catch(X){throw await kY(X)}}},e64,Z44=class{constructor(Z){this.config=Z}async getGenerationInfo(Z){try{let X=new URL(this.config.baseURL),{value:G}=await jQ({url:`${X.origin}/v1/generation?id=${encodeURIComponent(Z.id)}`,headers:await _8(this.config.headers()),successfulResponseHandler:G6(X44),failedResponseHandler:z9({errorSchema:EZ.any(),errorToMessage:(Y)=>Y}),fetch:this.config.fetch});return G}catch(X){throw await kY(X)}}},X44,G44=class{constructor(Z,X){this.modelId=Z,this.config=X,this.specificationVersion="v3",this.supportedUrls={"*/*":[/.*/]}}get provider(){return this.config.provider}async getArgs(Z){let{abortSignal:X,...G}=Z;return{args:this.maybeEncodeFileParts(G),warnings:[]}}async doGenerate(Z){let{args:X,warnings:G}=await this.getArgs(Z),{abortSignal:Y}=Z,Q=await _8(this.config.headers());try{let{responseHeaders:$,value:J,rawValue:W}=await w6({url:this.getUrl(),headers:r8(Q,Z.headers,this.getModelConfigHeaders(this.modelId,!1),await _8(this.config.o11yHeaders)),body:X,successfulResponseHandler:G6(zZ0.any()),failedResponseHandler:z9({errorSchema:zZ0.any(),errorToMessage:(K)=>K}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{...J,request:{body:X},response:{headers:$,body:W},warnings:G}}catch($){throw await kY($,await tW(Q))}}async doStream(Z){let{args:X,warnings:G}=await this.getArgs(Z),{abortSignal:Y}=Z,Q=await _8(this.config.headers());try{let{value:$,responseHeaders:J}=await w6({url:this.getUrl(),headers:r8(Q,Z.headers,this.getModelConfigHeaders(this.modelId,!0),await _8(this.config.o11yHeaders)),body:X,successfulResponseHandler:lX(zZ0.any()),failedResponseHandler:z9({errorSchema:zZ0.any(),errorToMessage:(W)=>W}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{stream:$.pipeThrough(new TransformStream({start(W){if(G.length>0)W.enqueue({type:"stream-start",warnings:G})},transform(W,K){if(W.success){let N=W.value;if(N.type==="raw"&&!Z.includeRawChunks)return;if(N.type==="response-metadata"&&N.timestamp&&typeof N.timestamp==="string")N.timestamp=new Date(N.timestamp);K.enqueue(N)}else K.error(W.error)}})),request:{body:X},response:{headers:J}}}catch($){throw await kY($,await tW(Q))}}isFilePart(Z){return Z&&typeof Z==="object"&&"type"in Z&&Z.type==="file"}maybeEncodeFileParts(Z){for(let X of Z.prompt)for(let G of X.content)if(this.isFilePart(G)){let Y=G;if(Y.data instanceof Uint8Array){let Q=Uint8Array.from(Y.data),$=Buffer.from(Q).toString("base64");Y.data=new URL(`data:${Y.mediaType||"application/octet-stream"};base64,${$}`)}}return Z}getUrl(){return`${this.config.baseURL}/language-model`}getModelConfigHeaders(Z,X){return{"ai-language-model-specification-version":"3","ai-language-model-id":Z,"ai-language-model-streaming":String(X)}}},Y44=class{constructor(Z,X){this.modelId=Z,this.config=X,this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0}get provider(){return this.config.provider}async doEmbed({values:Z,headers:X,abortSignal:G,providerOptions:Y}){var Q,$;let J=await _8(this.config.headers());try{let{responseHeaders:W,value:K,rawValue:N}=await w6({url:this.getUrl(),headers:r8(J,X!=null?X:{},this.getModelConfigHeaders(),await _8(this.config.o11yHeaders)),body:{values:Z,...Y?{providerOptions:Y}:{}},successfulResponseHandler:G6($44),failedResponseHandler:z9({errorSchema:N9.any(),errorToMessage:(U)=>U}),...G&&{abortSignal:G},fetch:this.config.fetch});return{embeddings:K.embeddings,usage:(Q=K.usage)!=null?Q:void 0,providerMetadata:K.providerMetadata,response:{headers:W,body:N},warnings:($=K.warnings)!=null?$:[]}}catch(W){throw await kY(W,await tW(J))}}getUrl(){return`${this.config.baseURL}/embedding-model`}getModelConfigHeaders(){return{"ai-embedding-model-specification-version":"3","ai-model-id":this.modelId}}},Q44,$44,J44=class{constructor(Z,X){this.modelId=Z,this.config=X,this.specificationVersion="v3",this.maxImagesPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:Z,n:X,size:G,aspectRatio:Y,seed:Q,files:$,mask:J,providerOptions:W,headers:K,abortSignal:N}){var U,F,H,w;let O=await _8(this.config.headers());try{let{responseHeaders:D,value:E,rawValue:L}=await w6({url:this.getUrl(),headers:r8(O,K!=null?K:{},this.getModelConfigHeaders(),await _8(this.config.o11yHeaders)),body:{prompt:Z,n:X,...G&&{size:G},...Y&&{aspectRatio:Y},...Q&&{seed:Q},...W&&{providerOptions:W},...$&&{files:$.map((z)=>i68(z))},...J&&{mask:i68(J)}},successfulResponseHandler:G6(U44),failedResponseHandler:z9({errorSchema:u5.any(),errorToMessage:(z)=>z}),...N&&{abortSignal:N},fetch:this.config.fetch});return{images:E.images,warnings:(U=E.warnings)!=null?U:[],providerMetadata:E.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:D},...E.usage!=null&&{usage:{inputTokens:(F=E.usage.inputTokens)!=null?F:void 0,outputTokens:(H=E.usage.outputTokens)!=null?H:void 0,totalTokens:(w=E.usage.totalTokens)!=null?w:void 0}}}}catch(D){throw await kY(D,await tW(O))}}getUrl(){return`${this.config.baseURL}/image-model`}getModelConfigHeaders(){return{"ai-image-model-specification-version":"3","ai-model-id":this.modelId}}},W44,K44,N44,U44,F44=class{constructor(Z,X){this.modelId=Z,this.config=X,this.specificationVersion="v3",this.maxVideosPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:Z,n:X,aspectRatio:G,resolution:Y,duration:Q,fps:$,seed:J,image:W,providerOptions:K,headers:N,abortSignal:U}){var F;let H=await _8(this.config.headers());try{let{responseHeaders:w,value:O}=await w6({url:this.getUrl(),headers:r8(H,N!=null?N:{},this.getModelConfigHeaders(),await _8(this.config.o11yHeaders),{accept:"text/event-stream"}),body:{prompt:Z,n:X,...G&&{aspectRatio:G},...Y&&{resolution:Y},...Q&&{duration:Q},...$&&{fps:$},...J&&{seed:J},...K&&{providerOptions:K},...W&&{image:H44(W)}},successfulResponseHandler:async({response:D,url:E,requestBodyValues:L})=>{if(D.body==null)throw new W6({message:"SSE response body is empty",url:E,requestBodyValues:L,statusCode:D.status});let j=tN({stream:D.body,schema:D44}).getReader(),{done:A,value:P}=await j.read();if(j.releaseLock(),A||!P)throw new W6({message:"SSE stream ended without a data event",url:E,requestBodyValues:L,statusCode:D.status});if(!P.success)throw new W6({message:"Failed to parse video SSE event",cause:P.error,url:E,requestBodyValues:L,statusCode:D.status});let q=P.value;if(q.type==="error")throw new W6({message:q.message,statusCode:q.statusCode,url:E,requestBodyValues:L,responseHeaders:Object.fromEntries([...D.headers]),responseBody:JSON.stringify(q),data:{error:{message:q.message,type:q.errorType,param:q.param}}});return{value:{videos:q.videos,warnings:q.warnings,providerMetadata:q.providerMetadata},responseHeaders:Object.fromEntries([...D.headers])}},failedResponseHandler:z9({errorSchema:p6.any(),errorToMessage:(D)=>D}),...U&&{abortSignal:U},fetch:this.config.fetch});return{videos:O.videos,warnings:(F=O.warnings)!=null?F:[],providerMetadata:O.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:w}}}catch(w){throw await kY(w,await tW(H))}}getUrl(){return`${this.config.baseURL}/video-model`}getModelConfigHeaders(){return{"ai-video-model-specification-version":"3","ai-model-id":this.modelId}}},w44,O44,B44,D44,E44=class{constructor(Z,X){this.modelId=Z,this.config=X,this.specificationVersion="v3"}get provider(){return this.config.provider}async doRerank({documents:Z,query:X,topN:G,headers:Y,abortSignal:Q,providerOptions:$}){var J;let W=await _8(this.config.headers());try{let{responseHeaders:K,value:N,rawValue:U}=await w6({url:this.getUrl(),headers:r8(W,Y!=null?Y:{},this.getModelConfigHeaders(),await _8(this.config.o11yHeaders)),body:{documents:Z,query:X,...G!=null?{topN:G}:{},...$?{providerOptions:$}:{}},successfulResponseHandler:G6(z44),failedResponseHandler:z9({errorSchema:A9.any(),errorToMessage:(F)=>F}),...Q&&{abortSignal:Q},fetch:this.config.fetch});return{ranking:N.ranking,providerMetadata:N.providerMetadata,response:{headers:K,body:U},warnings:(J=N.warnings)!=null?J:[]}}catch(K){throw await kY(K,await tW(W))}}getUrl(){return`${this.config.baseURL}/reranking-model`}getModelConfigHeaders(){return{"ai-reranking-model-specification-version":"3","ai-model-id":this.modelId}}},L44,z44,j44,A44,P44,T44=(Z={})=>P44(Z),R44,I44,q44,M44=(Z={})=>q44(Z),k44,V44="3.0.133",C44="0.0.1",AZ0;var An=B(()=>{Z1();n1();Z1();Z1();Z1();Z1();Z1();Z1();Z1();Z1();Z1();n1();Z1();Z1();Z1();Z1();G48=k(Zm0(),1),Y48=k(Zm0(),1),Xm0=Symbol.for(S64),zZ=class Z extends(F68=Error,U68=Xm0,F68){constructor({message:X,statusCode:G=500,cause:Y,generationId:Q,isRetryable:$=G!=null&&(G===408||G===409||G===429||G>=500)}){super(Q?`${X} [${Q}]`:X);this[U68]=!0,this.statusCode=G,this.cause=Y,this.generationId=Q,this.isRetryable=$}static isInstance(X){return Z.hasMarker(X)}static hasMarker(X){return typeof X==="object"&&X!==null&&Xm0 in X&&X[Xm0]===!0}},V64=`vercel.ai.gateway.error.${n68}`,H68=Symbol.for(V64),jZ0=class Z extends(O68=zZ,w68=H68,O68){constructor({message:X="Authentication failed",statusCode:G=401,cause:Y,generationId:Q}={}){super({message:X,statusCode:G,cause:Y,generationId:Q});this[w68]=!0,this.name=n68,this.type="authentication_error"}static isInstance(X){return zZ.hasMarker(X)&&H68 in X}static createContextualError({apiKeyProvided:X,oidcTokenProvided:G,message:Y="Authentication failed",statusCode:Q=401,cause:$,generationId:J}){let W;if(X)W=`AI Gateway authentication failed: Invalid API key.
|
|
@@ -2746,7 +2746,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
|
|
|
2746
2746
|
|
|
2747
2747
|
When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
|
|
2748
2748
|
|
|
2749
|
-
Respond with the structured verdict and a short reason.`,Gb8;var Qb8=B(()=>{K4();qw();r61();I95=o61.object({requiresReview:o61.boolean().describe("true if the changes should go through pull-request review"),reason:o61.string().describe("One short sentence explaining the decision (max ~120 chars)")});Gb8={requiresReview:!1,reason:""}});function S95(Z){if(!Z||Z.includes(".."))return!1;return k95.test(Z)}function $b8(Z){let X=typeof Z.__resolveType==="string"?Z.__resolveType:null;if(!X||!S95(X))return null;let{__resolveType:G,...Y}=Z;return{resolveType:X,payload:Y}}function Jb8(Z,X){return`${Z.replace(/\/+$/,"")}/deco/invoke/${X}`}var k95;var Wb8=B(()=>{k95=/^[\w./@-]+$/});function a61(Z){let X;try{X=new URL(Z)}catch{return null}if(!X.hostname.endsWith(".localhost"))return null;let G=X.host;return X.hostname="127.0.0.1",{url:X.toString(),hostHeader:G}}function Kb8(Z,X){let G=Z?.githubRepo;if(!G?.owner||!G?.name)return null;if(!G.connectionId)return G;if(!X.includes(G.connectionId))return null;return G}async function Nb8(Z,X,G,Y){if(!Y.connectionId)throw new pg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Q=Z.organization?.id;if(!Q)throw new pg(oX);await m_({ctx:Z,connectionId:Y.connectionId,organizationId:Q,forceRefresh:!0,onLegacyMintError:(U)=>{let F=U instanceof Error?U.message:oX;throw new pg(F)}});let{cloneUrl:$,gitUserName:J,gitUserEmail:W}=await dw(Y.connectionId,Y.owner,Y.name,Z.db,Z.vault),K=Az0(Z),N=await X.proxyDaemonRequest(G,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:$},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!N.ok){let U=await N.text().catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${U}`)}}var pg;var Ub8=B(()=>{Dw();l61();un();pg=class pg extends Error{constructor(Z){super(Z);this.name="GitPushAuthError"}}});function C95(Z){let X=Z.startsWith("thread:")?Z.slice(7):Z;if(!X||X.length>255||X.includes("..")||X.startsWith("/")||X.endsWith("/")||X.endsWith(".lock")||!V95.test(X))throw Error(`Invalid branch name: ${Z}`)}function _C(Z){return AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(x95)])}function yC(Z){let{runner:X}=Z.get("vmClaim");if(!X)return Z.json({error:"No sandbox runner configured"},503);return X}function s61(Z,X){let Y=(Pz0.get(Z)??Promise.resolve()).catch(()=>{}).then(X),Q=Y.catch(()=>{});return Pz0.set(Z,Q),Q.finally(()=>{if(Pz0.get(Z)===Q)Pz0.delete(Z)}),Y}async function g7(Z,X,G){let Y=yC(Z);if(Y instanceof Response)return Y;let{claimName:Q,userId:$,projectRef:J}=Z.get("vmClaim"),W=G?.method??"POST",K=null,N=new Headers;if(G?.jsonBody!==void 0)K=G.jsonBody,N.set("content-type","application/json");else if(G?.forwardJsonBody)K=await Z.req.text(),N.set("content-type","application/json");let U=G?.signal,F={method:W,headers:N,body:K,...U?{signal:U}:{}},H=async()=>{let w=await Y.proxyDaemonRequest(Q,X,F);if(G?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Y.adoptLiveClaim?.({userId:$,projectRef:J},Q))w=await Y.proxyDaemonRequest(Q,X,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...rQ}})}}let O=await w.text(),D=G?.redactRepoDirUnlessDesktop&&Y.kind!=="user-desktop"?_95(O):O,E=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":E,...rQ}})};try{if(U){let w=H();return w.catch(()=>{}),await Promise.race([w,new Promise((D,E)=>{if(U.aborted)return E(U.reason);U.addEventListener("abort",()=>E(U.reason),{once:!0})})])}return await H()}catch(w){let O=w instanceof Error?w.message:String(w);return Z.json({error:`Daemon unreachable: ${O}`},502)}}function _95(Z){try{let X=JSON.parse(Z);if(X&&typeof X==="object"&&!Array.isArray(X)&&"repoDir"in X)return JSON.stringify({...X,repoDir:null})}catch{}return Z}async function Tz0(Z,X,G,Y="GET",Q){let $=await Z.proxyDaemonRequest(X,G,{method:Y,headers:new Headers,body:null});if($.status===404&&Q){try{await $.body?.cancel()}catch{}if(await Z.adoptLiveClaim?.(Q,X))$=await Z.proxyDaemonRequest(X,G,{method:Y,headers:new Headers,body:null})}if($.status===404){try{await $.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await $.text();if(!$.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${$.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${$.status})`)}return JSON.parse(J)}function y95(Z){return wb8.includes(Z)}var V95,Fb8=524288,f95=65536,b95=10485760,yO,x95=1e4,Hb8=2000,v95,Pz0,rQ,wb8,Ob8=()=>{let Z=new V1;return Z.use("/:virtualMcpId/:branch/*",v95),Z.post("/:virtualMcpId/:branch/write",yO,(X)=>g7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/unlink",yO,(X)=>g7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/mkdir",yO,(X)=>g7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/rename",yO,(X)=>g7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/read",yO,(X)=>g7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/glob",yO,(X)=>g7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/grep",yO,(X)=>g7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/exec/:script",(X)=>{let G=X.req.param("script");if(!G)return X.json({error:"missing script name"},400);return g7(X,`/_sandbox/exec/${encodeURIComponent(G)}`)}),Z.post("/:virtualMcpId/:branch/exec/:script/kill",(X)=>{let G=X.req.param("script");if(!G)return X.json({error:"missing script name"},400);return g7(X,`/_sandbox/exec/${encodeURIComponent(G)}/kill`)}),Z.get("/:virtualMcpId/:branch/config",(X)=>g7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),Z.put("/:virtualMcpId/:branch/config",yO,(X)=>g7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),Z.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let G=X.req.param("step");if(!G||!y95(G))return X.json({error:`step must be one of: ${wb8.join(", ")}`},400);if(G==="start"){let Y=X.get("vmClaim");if(Y.runner){let Q=O0(X.var.studioContext),$=ew0(Y.virtualMcpMetadata);try{await XO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:Q.id,userId:Y.userId,entries:$})}catch(J){let W=J instanceof Error?J.message:String(J);return X.json({error:`Failed to push env to daemon: ${W}`},502)}}}return g7(X,`/_sandbox/setup/${G}`,{signal:X.req.raw.signal,map404to410:!0})}),Z.get("/:virtualMcpId/:branch/events",(X)=>{let G=X.get("vmClaim");if(!G.runner)return tU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return of8(X,{ctx:X.var.studioContext,claimName:G.claimName,runner:G.runner,virtualMcpId:G.virtualMcpId,branch:G.branch,userId:G.userId,projectRef:G.projectRef,virtualMcpMetadata:G.virtualMcpMetadata})}),Z.get("/:virtualMcpId/:branch/git/status",(X)=>g7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hb8)])})),Z.post("/:virtualMcpId/:branch/git/status",(X)=>g7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hb8)])})),Z.post("/:virtualMcpId/:branch/git/diff",(X)=>g7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),Z.post("/:virtualMcpId/:branch/git/publish",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,virtualMcpMetadata:Q,connectionIds:$}=X.get("vmClaim"),J=X.var.studioContext;return s61(Y,async()=>{try{await d61(J,G,Y);let W=Kb8(Q,$);if(W)await Nb8(J,G,Y,W)}catch(W){if(W instanceof pg)return X.json({error:W.message},403,rQ);let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,rQ)}return g7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),Z.post("/:virtualMcpId/:branch/git/discard",(X)=>{let{claimName:G}=X.get("vmClaim");return s61(G,()=>g7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),Z.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q=X.var.studioContext;return s61(Y,async()=>{try{await d61(Q,G,Y)}catch($){let J=$ instanceof Error?$.message:String($);return X.json({error:J},502,rQ)}return g7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),Z.post("/:virtualMcpId/:branch/git/suggest-commit",y7({maxSize:Fb8,onError:(X)=>X.json({error:"Payload too large"},413,rQ)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:$}=X.get("vmClaim"),J=X.var.studioContext;try{let W=await X.req.json().catch(()=>({})),K=W.status,N=W.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,H]=n61(K)&&U?[K,N]:await Promise.all([Tz0(G,Y,"/_sandbox/git/status","GET",{userId:Q,projectRef:$}),Tz0(G,Y,"/_sandbox/git/diff","GET",{userId:Q,projectRef:$})]),w=await Xb8(J,F,H);return X.json(w,200,rQ)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,rQ);return X.json({error:K},502,rQ)}}),Z.post("/:virtualMcpId/:branch/git/judge-review",y7({maxSize:Fb8,onError:(X)=>X.json({error:"Payload too large"},413,rQ)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:$}=X.get("vmClaim"),J=X.var.studioContext;try{let W=await X.req.json().catch(()=>({})),K=W.status,N=W.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,H]=n61(K)&&U?[K,N]:await Promise.all([Tz0(G,Y,"/_sandbox/git/status","GET",{userId:Q,projectRef:$}),Tz0(G,Y,"/_sandbox/git/diff","GET",{userId:Q,projectRef:$})]),w=await Yb8(J,F,H,typeof W.language==="string"?W.language:void 0);return X.json(w,200,rQ)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,rQ);return X.json({error:K},502,rQ)}}),Z.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q=X.req.query("path");if(!Q||!Q.startsWith("/")||Q.startsWith("//")||Q.includes("..")||Q.includes("\\"))return X.json({error:"Path not allowed"},403);let $;try{$=await G.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!$)return X.json({error:"Preview not available"},502);let J=$.replace(/\/+$/,""),W=a61(`${J}${Q}`),K;try{K=await fetch(W?.url??`${J}${Q}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await K.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),Z.post("/:virtualMcpId/:branch/preview-invoke",y7({maxSize:f95,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q;try{Q=await G.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!Q)return X.json({error:"Preview not available"},502);let $;try{$=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!$||typeof $!=="object"||Array.isArray($))return X.json({error:"Invalid JSON body"},400);let J=$b8($);if(!J)return X.json({error:"Invalid or missing __resolveType"},400);let W=Jb8(Q,J.resolveType),K=a61(W),N;try{N=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let U;try{U=await N.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(U,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),Z};var Bb8=B(()=>{a6();MC();ng();tf8();d3();w11();Wy();rf8();af8();Ht0();Ky();r61();Qb8();Wb8();Ub8();V95=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;yO=y7({maxSize:b95,onError:(Z)=>Z.json({error:"Payload too large"},413)});v95=pf8(async(Z,X)=>{let G=Z.var.studioContext;try{E0(G)}catch{return Z.json({error:"Unauthorized"},401)}let Y=x1(G);if(!Y)return Z.json({error:"Unauthorized"},401);let Q;try{Q=O0(G)}catch{return Z.json({error:"Organization scope required"},403)}let $=Z.req.param("virtualMcpId"),J=Z.req.param("branch");if(!$||!J)return Z.json({error:"virtualMcpId and branch are required"},400);try{C95(J)}catch(H){let w=H instanceof Error?H.message:String(H);return Z.json({error:w},400)}let W=await G.storage.virtualMcps.findById($);if(!W||W.organization_id!==Q.id)return Z.json({error:"Virtual MCP not found"},404);let K=QL({orgId:Q.id,virtualMcpId:$,branch:J}),N=HL0({userId:Y,projectRef:K},J),U=W.metadata??null,F;try{F=(await TJ(G,{userId:Y,branch:J,virtualMcpMetadata:U})).provider}catch{F=null}if(!F)return Z.json({error:"No sandbox runner found"},404);return Z.set("vmClaim",{claimName:N,runner:F,virtualMcpId:$,branch:J,userId:Y,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((H)=>H.connection_id)??[]}),X()});Pz0=new Map;rQ={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};wb8=["clone","install","start"]});var Db8=(Z)=>{let X=new V1;if(X.use("*",qC),X.route("/",gL0()),X.route("/",xS8()),X.route("/",xf8()),X.route("/",ff8()),X.route("/",Lz0()),X.route("/tools",cf8()),X.route("/",gf8()),X.route("/",Df8({kvStorage:Z.kvStorage})),X.route("/",Of8()),X.route("/fs",Mf8({getConnection:Z.getNatsConnection})),X.route("/sandbox",Ob8()),X.route("/",Sf8()),X.route("/deco-sites",uL0()),X.route("/sso",KL0()),X.route("/",zz0({tokenStorage:Z.tokenStorage,automationEventDispatcher:Z.automationEventDispatcher})),X.route("/webhooks",MS8()),Z.mountDevAssets)X.route("/dev-assets",cL0({orgFromPath:!0}));return X.use("/mcp/:connectionId?",Z.mcpAuth),X.use("/mcp/:connectionId/ui-resource",Z.mcpAuth),X.use("/mcp/gateway/:virtualMcpId?",Z.mcpAuth),X.use("/mcp/virtual-mcp/:virtualMcpId?",Z.mcpAuth),X.use("/mcp/self",Z.mcpAuth),X.route("/",Ae1()),X.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",Z.betterAuthProtectedResourceHandler),X.get("/mcp/.well-known/oauth-protected-resource",Z.betterAuthProtectedResourceHandler),X.route("/mcp",uO0()),X.route("/mcp/self",Ez0()),X.route("/mcp",dO0()),X.all("/oauth-proxy/:connectionId/*",Z.oauthProxyHandler),X.get("/watch",Z.watchHandler),X};var Eb8=B(()=>{a6();N81();kS8();O81();lL0();Zr();W81();Bf8();Ef8();kf8();ci();W11();mO0();v61();Vf8();bf8();vf8();hf8();y61();lf8();g61();cO0();Bb8()});var g95,h95=(Z)=>{let X="";for(let G of Z)X+=String.fromCharCode(G);return btoa(X).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Mr=(Z)=>{if(Z.trim().length===0)throw TypeError("subject token value must not be empty");return h95(new TextEncoder().encode(Z))},Lb8=(Z)=>{let X=new URL(Z instanceof Request?Z.url:Z);if(X.protocol!=="tunnel:")throw TypeError(`expected tunnel: URL, got ${X.protocol}`);if(X.hostname.trim().length===0)throw TypeError("tunnel URL hostname must not be empty");return{url:X,hostname:X.hostname,pathWithSearch:`${X.pathname}${X.search}`}},zb8=(Z,X)=>{if(Z.trim().length===0)throw TypeError("hostname must not be empty");if(!g95.test(X))throw TypeError("invalid requestId: expected only A-Z, a-z, 0-9, '_' or '-'");let G=Mr(Z),Y=`tunnel.v1.host.${G}`,Q=`${Y}.req.${X}`;return{hostToken:G,request:`${Y}.request`,body:`${Q}.body`,reply:`${Q}.reply`,abort:`${Q}.abort`}};var Rz0=B(()=>{g95=/^[A-Za-z0-9_-]+$/});function hJ(Z){return`user-${Mr(Z)}.link`}var kr=B(()=>{Rz0()});import{z as gO}from"zod";function jb8(Z){let X=Mr(Z),G=`tunnel.v1.host.${X}`;return{subscribe:{allow:[`${G}.request`,`${G}.req.*.body`,`${G}.req.*.abort`,`_INBOX.${X}.>`]},publish:{allow:[`${G}.req.*.reply`,"decopilot.stream.*"]}}}function Ab8({publicUrl:Z,userId:X,ttlSeconds:G,credentials:Y,token:Q}){return{connection:{urls:Z.split(",").map(($)=>$.trim()).filter(Boolean),...Y?{credentials:Y}:{},...Q?{token:Q}:{}},expiresAt:new Date(Date.now()+G*1000).toISOString(),tunnelHostname:hJ(X)}}var oY7;var Pb8=B(()=>{Rz0();kr();oY7=gO.object({connection:gO.object({urls:gO.array(gO.string().min(1)).min(1),credentials:gO.string().optional(),token:gO.string().optional()}),expiresAt:gO.string().min(1),tunnelHostname:gO.string().min(1)})});class qz0{static encode(Z){if(typeof Z==="string")return btoa(Z);let X=Array.from(Z);return btoa(String.fromCharCode(...X))}static decode(Z,X=!1){let G=atob(Z);if(!X)return G;let Y=new Uint8Array(G.length);for(let Q=0;Q<G.length;Q++)Y[Q]=G.charCodeAt(Q);return Y}}class rU{static encode(Z){return rU.toB64URLEncoding(qz0.encode(Z))}static decode(Z,X=!1){return qz0.decode(rU.fromB64URLEncoding(Z),X)}static toB64URLEncoding(Z){return Z=Z.replace(/=/g,""),Z=Z.replace(/\+/g,"-"),Z.replace(/\//g,"_")}static fromB64URLEncoding(Z){return Z=Z.replace(/_/g,"/"),Z=Z.replace(/-/g,"+"),Z}}function c95(Z){Rb8=Z}function G$(){return Rb8}class Mz0{static encode(Z){let X=0,G=0,Y=new Uint8Array(Z),Q=new Uint8Array(Z.byteLength*2),$=0;for(let J=0;J<Y.byteLength;J++){G=G<<8|Y[J],X+=8;while(X>=5){let W=G>>>X-5&31;Q[$++]=e61.charAt(W).charCodeAt(0),X-=5}}if(X>0){let J=G<<5-X&31;Q[$++]=e61.charAt(J).charCodeAt(0)}return Q.slice(0,$)}static decode(Z){let X=0,G=0,Y=0,Q=new Uint8Array(Z),$=new Uint8Array(Q.byteLength*5/8|0);for(let J=0;J<Q.byteLength;J++){let W=String.fromCharCode(Q[J]),K=e61.indexOf(W);if(K===-1)throw Error("Illegal Base32 character: "+Q[J]);if(G=G<<5|K,X+=5,X>=8)$[Y++]=G>>>X-8&255,X-=8}return $.slice(0,Y)}}class Sr{static checksum(Z){let X=0;for(let G=0;G<Z.byteLength;G++){let Y=Z[G];X=X<<8&65535^l95[(X>>8^Y)&255]}return X}static validate(Z,X){return Sr.checksum(Z)==X}}function Ib8(){return d95(G4.User)}class uC{static isValidPublicPrefix(Z){return Z==G4.Server||Z==G4.Operator||Z==G4.Cluster||Z==G4.Account||Z==G4.User||Z==G4.Curve}static startsWithValidPrefix(Z){let X=Z[0];return X=="S"||X=="P"||X=="O"||X=="N"||X=="C"||X=="A"||X=="U"||X=="X"}static isValidPrefix(Z){return this.parsePrefix(Z)!==G4.Unknown}static parsePrefix(Z){switch(Z){case G4.Seed:return G4.Seed;case G4.Private:return G4.Private;case G4.Operator:return G4.Operator;case G4.Server:return G4.Server;case G4.Cluster:return G4.Cluster;case G4.Account:return G4.Account;case G4.User:return G4.User;case G4.Curve:return G4.Curve;default:return G4.Unknown}}}class O7{static encode(Z,X){if(!X||!(X instanceof Uint8Array))throw new l8(c8.SerializationError);if(!uC.isValidPrefix(Z))throw new l8(c8.InvalidPrefixByte);return O7._encode(!1,Z,X)}static encodeSeed(Z,X){if(!X)throw new l8(c8.ApiError);if(!uC.isValidPublicPrefix(Z))throw new l8(c8.InvalidPrefixByte);if(X.byteLength!==32)throw new l8(c8.InvalidSeedLen);return O7._encode(!0,Z,X)}static decode(Z,X){if(!uC.isValidPrefix(Z))throw new l8(c8.InvalidPrefixByte);let G=O7._decode(X);if(G[0]!==Z)throw new l8(c8.InvalidPrefixByte);return G.slice(1)}static decodeSeed(Z){let X=O7._decode(Z),G=O7._decodePrefix(X);if(G[0]!=G4.Seed)throw new l8(c8.InvalidSeed);if(!uC.isValidPublicPrefix(G[1]))throw new l8(c8.InvalidPrefixByte);return{buf:X.slice(2),prefix:G[1]}}static _encode(Z,X,G){let Y=Z?2:1,Q=G.byteLength,$=Y+Q+2,J=Y+Q,W=new Uint8Array($);if(Z){let U=O7._encodePrefix(G4.Seed,X);W.set(U)}else W[0]=X;W.set(G,Y);let K=Sr.checksum(W.slice(0,J));return new DataView(W.buffer).setUint16(J,K,!0),Mz0.encode(W)}static _decode(Z){if(Z.byteLength<4)throw new l8(c8.InvalidEncoding);let X;try{X=Mz0.decode(Z)}catch(J){throw new l8(c8.InvalidEncoding,J)}let G=X.byteLength-2,Q=new DataView(X.buffer).getUint16(G,!0),$=X.slice(0,G);if(!Sr.validate($,Q))throw new l8(c8.InvalidChecksum);return $}static _encodePrefix(Z,X){let G=Z|X>>5,Y=(X&31)<<3;return new Uint8Array([G,Y])}static _decodePrefix(Z){let X=Z[0]&248,G=(Z[0]&7)<<5|(Z[1]&248)>>3;return new Uint8Array([X,G])}}class X41{seed;constructor(Z){this.seed=Z}getRawSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=O7.decodeSeed(this.seed),X=G$().fromSeed(this.getRawSeed()),G=O7.encode(Z.prefix,X.publicKey);return new TextDecoder().decode(G)}getPrivateKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=G$().fromSeed(this.getRawSeed());return O7.encode(G4.Private,Z.secretKey)}sign(Z){if(!this.seed)throw new l8(c8.ClearedPair);let X=G$().fromSeed(this.getRawSeed());return G$().sign(Z,X.secretKey)}verify(Z,X){if(!this.seed)throw new l8(c8.ClearedPair);let G=G$().fromSeed(this.getRawSeed());return G$().verify(Z,X,G.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(Z,X,G){throw new l8(c8.InvalidNKeyOperation)}open(Z,X){throw new l8(c8.InvalidNKeyOperation)}}class G41{seed;constructor(Z){this.seed=Z}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.encode(G4.Private,this.seed)}getPublicKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=G$().scalarBaseMultiply(this.seed),X=O7.encode(G4.Curve,Z);return new TextDecoder().decode(X)}getSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.encodeSeed(G4.Curve,this.seed)}sign(){throw new l8(c8.InvalidCurveOperation)}verify(){throw new l8(c8.InvalidCurveOperation)}decodePubCurveKey(Z){try{let X=Mz0.decode(new TextEncoder().encode(Z));if(X.byteLength!==35)throw new l8(c8.InvalidCurveKey);if(X[0]!==G4.Curve)throw new l8(c8.InvalidPublicKey);let G=X.byteLength-2,Q=new DataView(X.buffer).getUint16(G,!0),$=X.slice(0,G);if(!Sr.validate($,Q))throw new l8(c8.InvalidChecksum);return $.slice(1)}catch(X){throw new l8(c8.InvalidRecipient,X)}}seal(Z,X,G){if(!this.seed)throw new l8(c8.ClearedPair);if(!G)G=G$().randomBytes(Tb8);let Y=this.decodePubCurveKey(X),Q=new Uint8Array(hC.length+24);Q.set(hC,0),Q.set(G,hC.length);let $=G$().seal(Z,G,Y,this.seed),J=new Uint8Array(Q.length+$.length);return J.set(Q),J.set($,Q.length),J}open(Z,X){if(!this.seed)throw new l8(c8.ClearedPair);if(Z.length<=24+hC.length)throw new l8(c8.InvalidEncrypted);for(let Q=0;Q<hC.length;Q++)if(Z[Q]!==hC[Q])throw new l8(c8.InvalidEncrypted);let G=this.decodePubCurveKey(X);Z=Z.slice(hC.length);let Y=Z.slice(0,24);return Z=Z.slice(Tb8),G$().open(Z,Y,G,this.seed)}}function d95(Z){let X=Z===G4.Curve?32:32,G=G$().randomBytes(X),Y=O7.encodeSeed(Z,new Uint8Array(G));return Z===G4.Curve?new G41(new Uint8Array(G)):new X41(Y)}class qb8{publicKey;constructor(Z){this.publicKey=Z}getPublicKey(){if(!this.publicKey)throw new l8(c8.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.PublicKeyOnly)}sign(Z){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.CannotSign)}verify(Z,X){if(!this.publicKey)throw new l8(c8.ClearedPair);let G=O7._decode(this.publicKey);return G$().verify(Z,X,G.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(Z,X,G){throw new l8(c8.InvalidNKeyOperation)}open(Z,X){throw new l8(c8.InvalidNKeyOperation)}}function Y41(Z){let X=new TextEncoder().encode(Z),G=O7._decode(X),Y=uC.parsePrefix(G[0]);if(uC.isValidPublicPrefix(Y))return new qb8(X);throw new l8(c8.InvalidPublicKey)}function m95(Z){let X=O7.decodeSeed(Z);if(X.prefix!==G4.Curve)throw new l8(c8.InvalidCurveSeed);if(X.buf.byteLength!==32)throw new l8(c8.InvalidSeedLen);return new G41(X.buf)}function Q41(Z){if(O7.decodeSeed(Z).prefix===G4.Curve)return m95(Z);return new X41(Z)}function i95(Z){if(Z instanceof Uint8Array)Z=new TextDecoder().decode(Z);if(Z.charAt(0)==="S")return Q41(new TextEncoder().encode(Z));return Y41(Z)}function Iz0(Z,X="",G=!1){let Y=typeof Z==="string"||Z instanceof Uint8Array?i95(Z):Z,Q=Y.getPublicKey(),$=[];if(!Array.isArray(X)){if(X!=="")$.push(X)}else $.push(...X);if(X.length>0&&$.indexOf(Q.charAt(0))===-1)throw Error(`unexpected type ${Q.charAt(0)} - wanted ${$}`);if(G)Y.getPrivateKey();return Y}function n95(Z={}){return Mb8({data:-1,payload:-1,subs:-1},Z)}function Mb8(Z,...X){for(let G=0;G<X.length;G++){let Y=X[G];Object.assign(Z,Y)}return Z}function p95(Z){let{exp:X,nbf:G,aud:Y}=Z;return Mb8({},{exp:X,nbf:G,aud:Y})}function t95(Z={}){if(!Z.algorithm)Z.algorithm=uJ.v2;return Z}async function kb8(Z,X,G,Y={},Q={}){G=Iz0(G,"A",!Q.signer);let $=G;if(Q.signer)$=Iz0(Q.signer,"A",!0);X=Iz0(X,"U");let J=p95(Q);if(J.name=Z,J.sub=X.getPublicKey(),J.nats=Q.scopedUser?Y:n95(Y),Q.signer)J.nats.issuer_account=G.getPublicKey();let W=t95(Q);return r95(W.algorithm,Z41.User,J),await s95(W.algorithm,J,$)}function r95(Z,X,G){if(G.aud=G.aud||"NATS",Z===uJ.v2)G.nats.type=X;else G.type=X}function Sb8(Z){let X=Z.split(".");if(X.length!==3)throw Error(`invalid jwt - ${X.length} chunks: ${Z}`);let G=JSON.parse(rU.decode(X[0]));if(G.typ!=="jwt"&&G.typ!=="JWT")throw Error(`not a nats jwt - typ ${G.type}`);if(G.alg!==uJ.v1&&G.alg!==uJ.v2)throw Error(`not a nats jwt - alg ${G.alg}`);let Y=JSON.parse(rU.decode(X[1])),Q=Iz0(Y.iss),$=rU.decode(X[2],!0),J=new TextEncoder,W=G.alg===uJ.v2?`${X[0]}.${X[1]}`:X[1];if(!Q.verify(J.encode(W),$))throw Error("sig verification failed");return Y}function o95(Z){for(let X=0;X<Z.length;X++)Z[X]=Math.floor(Math.random()*255)}function a95(){let Z=new Uint8Array(12);o95(Z);let X=Array.from(Z);return btoa(String.fromCharCode(...X))}async function s95(Z,X,G){X.iss=G.getPublicKey(),X.iat=Math.floor(Date.now()/1000);let Y=X;if(Z===uJ.v2)Y.nats.version=2;let Q=new TextEncoder,$=Q.encode(JSON.stringify(X));if(globalThis.crypto&&globalThis.crypto.subtle){let F=await globalThis.crypto.subtle.digest("SHA-512",$);X.jti=qz0.encode(new Uint8Array(F))}else X.jti=a95();let J={typ:"JWT",alg:Z},W=rU.encode(JSON.stringify(J)),K=rU.encode(JSON.stringify(X)),N=Z===uJ.v2?`${W}.${K}`:K,U=rU.encode(G.sign(Q.encode(N)));return`${W}.${K}.${U}`}function Vb8(Z,X){let G=new TextDecoder().decode(X.getSeed()),Y=`-----BEGIN NATS USER JWT-----
|
|
2749
|
+
Respond with the structured verdict and a short reason.`,Gb8;var Qb8=B(()=>{K4();qw();r61();I95=o61.object({requiresReview:o61.boolean().describe("true if the changes should go through pull-request review"),reason:o61.string().describe("One short sentence explaining the decision (max ~120 chars)")});Gb8={requiresReview:!1,reason:""}});function S95(Z){if(!Z||Z.includes(".."))return!1;return k95.test(Z)}function $b8(Z){let X=typeof Z.__resolveType==="string"?Z.__resolveType:null;if(!X||!S95(X))return null;let{__resolveType:G,...Y}=Z;return{resolveType:X,payload:Y}}function Jb8(Z,X){return`${Z.replace(/\/+$/,"")}/deco/invoke/${X}`}var k95;var Wb8=B(()=>{k95=/^[\w./@-]+$/});function a61(Z){let X;try{X=new URL(Z)}catch{return null}if(!X.hostname.endsWith(".localhost"))return null;let G=X.host;return X.hostname="127.0.0.1",{url:X.toString(),hostHeader:G}}function Kb8(Z,X){let G=Z?.githubRepo;if(!G?.owner||!G?.name)return null;if(!G.connectionId)return G;if(!X.includes(G.connectionId))return null;return G}async function Nb8(Z,X,G,Y){if(!Y.connectionId)throw new pg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Q=Z.organization?.id;if(!Q)throw new pg(oX);await m_({ctx:Z,connectionId:Y.connectionId,organizationId:Q,forceRefresh:!0,onLegacyMintError:(U)=>{let F=U instanceof Error?U.message:oX;throw new pg(F)}});let{cloneUrl:$,gitUserName:J,gitUserEmail:W}=await dw(Y.connectionId,Y.owner,Y.name,Z.db,Z.vault),K=Az0(Z),N=await X.proxyDaemonRequest(G,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:$},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!N.ok){let U=await N.text().catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${U}`)}}var pg;var Ub8=B(()=>{Dw();l61();un();pg=class pg extends Error{constructor(Z){super(Z);this.name="GitPushAuthError"}}});function C95(Z){let X=Z.startsWith("thread:")?Z.slice(7):Z;if(!X||X.length>255||X.includes("..")||X.startsWith("/")||X.endsWith("/")||X.endsWith(".lock")||!V95.test(X))throw Error(`Invalid branch name: ${Z}`)}function _C(Z){return AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(x95)])}function yC(Z){let{runner:X}=Z.get("vmClaim");if(!X)return Z.json({error:"No sandbox runner configured"},503);return X}function s61(Z,X){let Y=(Pz0.get(Z)??Promise.resolve()).catch(()=>{}).then(X),Q=Y.catch(()=>{});return Pz0.set(Z,Q),Q.finally(()=>{if(Pz0.get(Z)===Q)Pz0.delete(Z)}),Y}async function g7(Z,X,G){let Y=yC(Z);if(Y instanceof Response)return Y;let{claimName:Q,userId:$,projectRef:J}=Z.get("vmClaim"),W=G?.method??"POST",K=null,N=new Headers;if(G?.jsonBody!==void 0)K=G.jsonBody,N.set("content-type","application/json");else if(G?.forwardJsonBody)K=await Z.req.text(),N.set("content-type","application/json");let U=G?.signal,F={method:W,headers:N,body:K,...U?{signal:U}:{}},H=async()=>{let w=await Y.proxyDaemonRequest(Q,X,F);if(G?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Y.adoptLiveClaim?.({userId:$,projectRef:J},Q))w=await Y.proxyDaemonRequest(Q,X,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...rQ}})}}let O=await w.text(),D=G?.redactRepoDirUnlessDesktop&&Y.kind!=="user-desktop"?_95(O):O,E=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":E,...rQ}})};try{if(U){let w=H();return w.catch(()=>{}),await Promise.race([w,new Promise((D,E)=>{if(U.aborted)return E(U.reason);U.addEventListener("abort",()=>E(U.reason),{once:!0})})])}return await H()}catch(w){let O=w instanceof Error?w.message:String(w);return Z.json({error:`Daemon unreachable: ${O}`},502)}}function _95(Z){try{let X=JSON.parse(Z);if(X&&typeof X==="object"&&!Array.isArray(X)&&"repoDir"in X)return JSON.stringify({...X,repoDir:null})}catch{}return Z}async function Tz0(Z,X,G,Y="GET",Q){let $=await Z.proxyDaemonRequest(X,G,{method:Y,headers:new Headers,body:null});if($.status===404&&Q){try{await $.body?.cancel()}catch{}if(await Z.adoptLiveClaim?.(Q,X))$=await Z.proxyDaemonRequest(X,G,{method:Y,headers:new Headers,body:null})}if($.status===404){try{await $.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await $.text();if(!$.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${$.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${$.status})`)}return JSON.parse(J)}function y95(Z){return wb8.includes(Z)}var V95,Fb8=524288,f95=65536,b95=10485760,yO,x95=1e4,Hb8=2000,v95,Pz0,rQ,wb8,Ob8=()=>{let Z=new V1;return Z.use("/:virtualMcpId/:branch/*",v95),Z.post("/:virtualMcpId/:branch/write",yO,(X)=>g7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/unlink",yO,(X)=>g7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/mkdir",yO,(X)=>g7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/rename",yO,(X)=>g7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/read",yO,(X)=>g7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/glob",yO,(X)=>g7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/grep",yO,(X)=>g7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:_C(X)})),Z.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let G=X.req.param("script");if(!G)return X.json({error:"missing script name"},400);return g7(X,`/_sandbox/exec/${encodeURIComponent(G)}`)}),Z.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let G=X.req.param("script");if(!G)return X.json({error:"missing script name"},400);return g7(X,`/_sandbox/exec/${encodeURIComponent(G)}/kill`)}),Z.get("/:virtualMcpId/:branch/config",(X)=>g7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),Z.put("/:virtualMcpId/:branch/config",yO,(X)=>g7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),Z.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let G=X.req.param("step");if(!G||!y95(G))return X.json({error:`step must be one of: ${wb8.join(", ")}`},400);if(G==="start"){let Y=X.get("vmClaim");if(Y.runner){let Q=O0(X.var.studioContext),$=ew0(Y.virtualMcpMetadata);try{await XO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:Q.id,userId:Y.userId,entries:$})}catch(J){let W=J instanceof Error?J.message:String(J);return X.json({error:`Failed to push env to daemon: ${W}`},502)}}}return g7(X,`/_sandbox/setup/${G}`,{signal:X.req.raw.signal,map404to410:!0})}),Z.get("/:virtualMcpId/:branch/events",(X)=>{let G=X.get("vmClaim");if(!G.runner)return tU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return of8(X,{ctx:X.var.studioContext,claimName:G.claimName,runner:G.runner,virtualMcpId:G.virtualMcpId,branch:G.branch,userId:G.userId,projectRef:G.projectRef,virtualMcpMetadata:G.virtualMcpMetadata})}),Z.get("/:virtualMcpId/:branch/git/status",(X)=>g7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hb8)])})),Z.post("/:virtualMcpId/:branch/git/status",(X)=>g7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hb8)])})),Z.post("/:virtualMcpId/:branch/git/diff",(X)=>g7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),Z.post("/:virtualMcpId/:branch/git/publish",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,virtualMcpMetadata:Q,connectionIds:$}=X.get("vmClaim"),J=X.var.studioContext;return s61(Y,async()=>{try{await d61(J,G,Y);let W=Kb8(Q,$);if(W)await Nb8(J,G,Y,W)}catch(W){if(W instanceof pg)return X.json({error:W.message},403,rQ);let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,rQ)}return g7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),Z.post("/:virtualMcpId/:branch/git/discard",(X)=>{let{claimName:G}=X.get("vmClaim");return s61(G,()=>g7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),Z.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q=X.var.studioContext;return s61(Y,async()=>{try{await d61(Q,G,Y)}catch($){let J=$ instanceof Error?$.message:String($);return X.json({error:J},502,rQ)}return g7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),Z.post("/:virtualMcpId/:branch/git/suggest-commit",y7({maxSize:Fb8,onError:(X)=>X.json({error:"Payload too large"},413,rQ)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:$}=X.get("vmClaim"),J=X.var.studioContext;try{let W=await X.req.json().catch(()=>({})),K=W.status,N=W.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,H]=n61(K)&&U?[K,N]:await Promise.all([Tz0(G,Y,"/_sandbox/git/status","GET",{userId:Q,projectRef:$}),Tz0(G,Y,"/_sandbox/git/diff","GET",{userId:Q,projectRef:$})]),w=await Xb8(J,F,H);return X.json(w,200,rQ)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,rQ);return X.json({error:K},502,rQ)}}),Z.post("/:virtualMcpId/:branch/git/judge-review",y7({maxSize:Fb8,onError:(X)=>X.json({error:"Payload too large"},413,rQ)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:$}=X.get("vmClaim"),J=X.var.studioContext;try{let W=await X.req.json().catch(()=>({})),K=W.status,N=W.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,H]=n61(K)&&U?[K,N]:await Promise.all([Tz0(G,Y,"/_sandbox/git/status","GET",{userId:Q,projectRef:$}),Tz0(G,Y,"/_sandbox/git/diff","GET",{userId:Q,projectRef:$})]),w=await Yb8(J,F,H,typeof W.language==="string"?W.language:void 0);return X.json(w,200,rQ)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,rQ);return X.json({error:K},502,rQ)}}),Z.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q=X.req.query("path");if(!Q||!Q.startsWith("/")||Q.startsWith("//")||Q.includes("..")||Q.includes("\\"))return X.json({error:"Path not allowed"},403);let $;try{$=await G.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!$)return X.json({error:"Preview not available"},502);let J=$.replace(/\/+$/,""),W=a61(`${J}${Q}`),K;try{K=await fetch(W?.url??`${J}${Q}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await K.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),Z.post("/:virtualMcpId/:branch/preview-invoke",y7({maxSize:f95,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let G=yC(X);if(G instanceof Response)return G;let{claimName:Y}=X.get("vmClaim"),Q;try{Q=await G.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!Q)return X.json({error:"Preview not available"},502);let $;try{$=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!$||typeof $!=="object"||Array.isArray($))return X.json({error:"Invalid JSON body"},400);let J=$b8($);if(!J)return X.json({error:"Invalid or missing __resolveType"},400);let W=Jb8(Q,J.resolveType),K=a61(W),N;try{N=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let U;try{U=await N.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(U,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),Z};var Bb8=B(()=>{a6();MC();ng();tf8();d3();w11();Wy();rf8();af8();Ht0();Ky();r61();Qb8();Wb8();Ub8();V95=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;yO=y7({maxSize:b95,onError:(Z)=>Z.json({error:"Payload too large"},413)});v95=pf8(async(Z,X)=>{let G=Z.var.studioContext;try{E0(G)}catch{return Z.json({error:"Unauthorized"},401)}let Y=x1(G);if(!Y)return Z.json({error:"Unauthorized"},401);let Q;try{Q=O0(G)}catch{return Z.json({error:"Organization scope required"},403)}let $=Z.req.param("virtualMcpId"),J=Z.req.param("branch");if(!$||!J)return Z.json({error:"virtualMcpId and branch are required"},400);try{C95(J)}catch(H){let w=H instanceof Error?H.message:String(H);return Z.json({error:w},400)}let W=await G.storage.virtualMcps.findById($);if(!W||W.organization_id!==Q.id)return Z.json({error:"Virtual MCP not found"},404);let K=QL({orgId:Q.id,virtualMcpId:$,branch:J}),N=HL0({userId:Y,projectRef:K},J),U=W.metadata??null,F;try{F=(await TJ(G,{userId:Y,branch:J,virtualMcpMetadata:U})).provider}catch{F=null}if(!F)return Z.json({error:"No sandbox runner found"},404);return Z.set("vmClaim",{claimName:N,runner:F,virtualMcpId:$,branch:J,userId:Y,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((H)=>H.connection_id)??[]}),X()});Pz0=new Map;rQ={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};wb8=["clone","install","start"]});var Db8=(Z)=>{let X=new V1;if(X.use("*",qC),X.route("/",gL0()),X.route("/",xS8()),X.route("/",xf8()),X.route("/",ff8()),X.route("/",Lz0()),X.route("/tools",cf8()),X.route("/",gf8()),X.route("/",Df8({kvStorage:Z.kvStorage})),X.route("/",Of8()),X.route("/fs",Mf8({getConnection:Z.getNatsConnection})),X.route("/sandbox",Ob8()),X.route("/",Sf8()),X.route("/deco-sites",uL0()),X.route("/sso",KL0()),X.route("/",zz0({tokenStorage:Z.tokenStorage,automationEventDispatcher:Z.automationEventDispatcher})),X.route("/webhooks",MS8()),Z.mountDevAssets)X.route("/dev-assets",cL0({orgFromPath:!0}));return X.use("/mcp/:connectionId?",Z.mcpAuth),X.use("/mcp/:connectionId/ui-resource",Z.mcpAuth),X.use("/mcp/gateway/:virtualMcpId?",Z.mcpAuth),X.use("/mcp/virtual-mcp/:virtualMcpId?",Z.mcpAuth),X.use("/mcp/self",Z.mcpAuth),X.route("/",Ae1()),X.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",Z.betterAuthProtectedResourceHandler),X.get("/mcp/.well-known/oauth-protected-resource",Z.betterAuthProtectedResourceHandler),X.route("/mcp",uO0()),X.route("/mcp/self",Ez0()),X.route("/mcp",dO0()),X.all("/oauth-proxy/:connectionId/*",Z.oauthProxyHandler),X.get("/watch",Z.watchHandler),X};var Eb8=B(()=>{a6();N81();kS8();O81();lL0();Zr();W81();Bf8();Ef8();kf8();ci();W11();mO0();v61();Vf8();bf8();vf8();hf8();y61();lf8();g61();cO0();Bb8()});var g95,h95=(Z)=>{let X="";for(let G of Z)X+=String.fromCharCode(G);return btoa(X).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Mr=(Z)=>{if(Z.trim().length===0)throw TypeError("subject token value must not be empty");return h95(new TextEncoder().encode(Z))},Lb8=(Z)=>{let X=new URL(Z instanceof Request?Z.url:Z);if(X.protocol!=="tunnel:")throw TypeError(`expected tunnel: URL, got ${X.protocol}`);if(X.hostname.trim().length===0)throw TypeError("tunnel URL hostname must not be empty");return{url:X,hostname:X.hostname,pathWithSearch:`${X.pathname}${X.search}`}},zb8=(Z,X)=>{if(Z.trim().length===0)throw TypeError("hostname must not be empty");if(!g95.test(X))throw TypeError("invalid requestId: expected only A-Z, a-z, 0-9, '_' or '-'");let G=Mr(Z),Y=`tunnel.v1.host.${G}`,Q=`${Y}.req.${X}`;return{hostToken:G,request:`${Y}.request`,body:`${Q}.body`,reply:`${Q}.reply`,abort:`${Q}.abort`}};var Rz0=B(()=>{g95=/^[A-Za-z0-9_-]+$/});function hJ(Z){return`user-${Mr(Z)}.link`}var kr=B(()=>{Rz0()});import{z as gO}from"zod";function jb8(Z){let X=Mr(Z),G=`tunnel.v1.host.${X}`;return{subscribe:{allow:[`${G}.request`,`${G}.req.*.body`,`${G}.req.*.abort`,`_INBOX.${X}.>`]},publish:{allow:[`${G}.req.*.reply`,"decopilot.stream.*"]}}}function Ab8({publicUrl:Z,userId:X,ttlSeconds:G,credentials:Y,token:Q}){return{connection:{urls:Z.split(",").map(($)=>$.trim()).filter(Boolean),...Y?{credentials:Y}:{},...Q?{token:Q}:{}},expiresAt:new Date(Date.now()+G*1000).toISOString(),tunnelHostname:hJ(X)}}var oY7;var Pb8=B(()=>{Rz0();kr();oY7=gO.object({connection:gO.object({urls:gO.array(gO.string().min(1)).min(1),credentials:gO.string().optional(),token:gO.string().optional()}),expiresAt:gO.string().min(1),tunnelHostname:gO.string().min(1)})});class qz0{static encode(Z){if(typeof Z==="string")return btoa(Z);let X=Array.from(Z);return btoa(String.fromCharCode(...X))}static decode(Z,X=!1){let G=atob(Z);if(!X)return G;let Y=new Uint8Array(G.length);for(let Q=0;Q<G.length;Q++)Y[Q]=G.charCodeAt(Q);return Y}}class rU{static encode(Z){return rU.toB64URLEncoding(qz0.encode(Z))}static decode(Z,X=!1){return qz0.decode(rU.fromB64URLEncoding(Z),X)}static toB64URLEncoding(Z){return Z=Z.replace(/=/g,""),Z=Z.replace(/\+/g,"-"),Z.replace(/\//g,"_")}static fromB64URLEncoding(Z){return Z=Z.replace(/_/g,"/"),Z=Z.replace(/-/g,"+"),Z}}function c95(Z){Rb8=Z}function G$(){return Rb8}class Mz0{static encode(Z){let X=0,G=0,Y=new Uint8Array(Z),Q=new Uint8Array(Z.byteLength*2),$=0;for(let J=0;J<Y.byteLength;J++){G=G<<8|Y[J],X+=8;while(X>=5){let W=G>>>X-5&31;Q[$++]=e61.charAt(W).charCodeAt(0),X-=5}}if(X>0){let J=G<<5-X&31;Q[$++]=e61.charAt(J).charCodeAt(0)}return Q.slice(0,$)}static decode(Z){let X=0,G=0,Y=0,Q=new Uint8Array(Z),$=new Uint8Array(Q.byteLength*5/8|0);for(let J=0;J<Q.byteLength;J++){let W=String.fromCharCode(Q[J]),K=e61.indexOf(W);if(K===-1)throw Error("Illegal Base32 character: "+Q[J]);if(G=G<<5|K,X+=5,X>=8)$[Y++]=G>>>X-8&255,X-=8}return $.slice(0,Y)}}class Sr{static checksum(Z){let X=0;for(let G=0;G<Z.byteLength;G++){let Y=Z[G];X=X<<8&65535^l95[(X>>8^Y)&255]}return X}static validate(Z,X){return Sr.checksum(Z)==X}}function Ib8(){return d95(G4.User)}class uC{static isValidPublicPrefix(Z){return Z==G4.Server||Z==G4.Operator||Z==G4.Cluster||Z==G4.Account||Z==G4.User||Z==G4.Curve}static startsWithValidPrefix(Z){let X=Z[0];return X=="S"||X=="P"||X=="O"||X=="N"||X=="C"||X=="A"||X=="U"||X=="X"}static isValidPrefix(Z){return this.parsePrefix(Z)!==G4.Unknown}static parsePrefix(Z){switch(Z){case G4.Seed:return G4.Seed;case G4.Private:return G4.Private;case G4.Operator:return G4.Operator;case G4.Server:return G4.Server;case G4.Cluster:return G4.Cluster;case G4.Account:return G4.Account;case G4.User:return G4.User;case G4.Curve:return G4.Curve;default:return G4.Unknown}}}class O7{static encode(Z,X){if(!X||!(X instanceof Uint8Array))throw new l8(c8.SerializationError);if(!uC.isValidPrefix(Z))throw new l8(c8.InvalidPrefixByte);return O7._encode(!1,Z,X)}static encodeSeed(Z,X){if(!X)throw new l8(c8.ApiError);if(!uC.isValidPublicPrefix(Z))throw new l8(c8.InvalidPrefixByte);if(X.byteLength!==32)throw new l8(c8.InvalidSeedLen);return O7._encode(!0,Z,X)}static decode(Z,X){if(!uC.isValidPrefix(Z))throw new l8(c8.InvalidPrefixByte);let G=O7._decode(X);if(G[0]!==Z)throw new l8(c8.InvalidPrefixByte);return G.slice(1)}static decodeSeed(Z){let X=O7._decode(Z),G=O7._decodePrefix(X);if(G[0]!=G4.Seed)throw new l8(c8.InvalidSeed);if(!uC.isValidPublicPrefix(G[1]))throw new l8(c8.InvalidPrefixByte);return{buf:X.slice(2),prefix:G[1]}}static _encode(Z,X,G){let Y=Z?2:1,Q=G.byteLength,$=Y+Q+2,J=Y+Q,W=new Uint8Array($);if(Z){let U=O7._encodePrefix(G4.Seed,X);W.set(U)}else W[0]=X;W.set(G,Y);let K=Sr.checksum(W.slice(0,J));return new DataView(W.buffer).setUint16(J,K,!0),Mz0.encode(W)}static _decode(Z){if(Z.byteLength<4)throw new l8(c8.InvalidEncoding);let X;try{X=Mz0.decode(Z)}catch(J){throw new l8(c8.InvalidEncoding,J)}let G=X.byteLength-2,Q=new DataView(X.buffer).getUint16(G,!0),$=X.slice(0,G);if(!Sr.validate($,Q))throw new l8(c8.InvalidChecksum);return $}static _encodePrefix(Z,X){let G=Z|X>>5,Y=(X&31)<<3;return new Uint8Array([G,Y])}static _decodePrefix(Z){let X=Z[0]&248,G=(Z[0]&7)<<5|(Z[1]&248)>>3;return new Uint8Array([X,G])}}class X41{seed;constructor(Z){this.seed=Z}getRawSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=O7.decodeSeed(this.seed),X=G$().fromSeed(this.getRawSeed()),G=O7.encode(Z.prefix,X.publicKey);return new TextDecoder().decode(G)}getPrivateKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=G$().fromSeed(this.getRawSeed());return O7.encode(G4.Private,Z.secretKey)}sign(Z){if(!this.seed)throw new l8(c8.ClearedPair);let X=G$().fromSeed(this.getRawSeed());return G$().sign(Z,X.secretKey)}verify(Z,X){if(!this.seed)throw new l8(c8.ClearedPair);let G=G$().fromSeed(this.getRawSeed());return G$().verify(Z,X,G.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(Z,X,G){throw new l8(c8.InvalidNKeyOperation)}open(Z,X){throw new l8(c8.InvalidNKeyOperation)}}class G41{seed;constructor(Z){this.seed=Z}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.encode(G4.Private,this.seed)}getPublicKey(){if(!this.seed)throw new l8(c8.ClearedPair);let Z=G$().scalarBaseMultiply(this.seed),X=O7.encode(G4.Curve,Z);return new TextDecoder().decode(X)}getSeed(){if(!this.seed)throw new l8(c8.ClearedPair);return O7.encodeSeed(G4.Curve,this.seed)}sign(){throw new l8(c8.InvalidCurveOperation)}verify(){throw new l8(c8.InvalidCurveOperation)}decodePubCurveKey(Z){try{let X=Mz0.decode(new TextEncoder().encode(Z));if(X.byteLength!==35)throw new l8(c8.InvalidCurveKey);if(X[0]!==G4.Curve)throw new l8(c8.InvalidPublicKey);let G=X.byteLength-2,Q=new DataView(X.buffer).getUint16(G,!0),$=X.slice(0,G);if(!Sr.validate($,Q))throw new l8(c8.InvalidChecksum);return $.slice(1)}catch(X){throw new l8(c8.InvalidRecipient,X)}}seal(Z,X,G){if(!this.seed)throw new l8(c8.ClearedPair);if(!G)G=G$().randomBytes(Tb8);let Y=this.decodePubCurveKey(X),Q=new Uint8Array(hC.length+24);Q.set(hC,0),Q.set(G,hC.length);let $=G$().seal(Z,G,Y,this.seed),J=new Uint8Array(Q.length+$.length);return J.set(Q),J.set($,Q.length),J}open(Z,X){if(!this.seed)throw new l8(c8.ClearedPair);if(Z.length<=24+hC.length)throw new l8(c8.InvalidEncrypted);for(let Q=0;Q<hC.length;Q++)if(Z[Q]!==hC[Q])throw new l8(c8.InvalidEncrypted);let G=this.decodePubCurveKey(X);Z=Z.slice(hC.length);let Y=Z.slice(0,24);return Z=Z.slice(Tb8),G$().open(Z,Y,G,this.seed)}}function d95(Z){let X=Z===G4.Curve?32:32,G=G$().randomBytes(X),Y=O7.encodeSeed(Z,new Uint8Array(G));return Z===G4.Curve?new G41(new Uint8Array(G)):new X41(Y)}class qb8{publicKey;constructor(Z){this.publicKey=Z}getPublicKey(){if(!this.publicKey)throw new l8(c8.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.PublicKeyOnly)}sign(Z){if(!this.publicKey)throw new l8(c8.ClearedPair);throw new l8(c8.CannotSign)}verify(Z,X){if(!this.publicKey)throw new l8(c8.ClearedPair);let G=O7._decode(this.publicKey);return G$().verify(Z,X,G.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(Z,X,G){throw new l8(c8.InvalidNKeyOperation)}open(Z,X){throw new l8(c8.InvalidNKeyOperation)}}function Y41(Z){let X=new TextEncoder().encode(Z),G=O7._decode(X),Y=uC.parsePrefix(G[0]);if(uC.isValidPublicPrefix(Y))return new qb8(X);throw new l8(c8.InvalidPublicKey)}function m95(Z){let X=O7.decodeSeed(Z);if(X.prefix!==G4.Curve)throw new l8(c8.InvalidCurveSeed);if(X.buf.byteLength!==32)throw new l8(c8.InvalidSeedLen);return new G41(X.buf)}function Q41(Z){if(O7.decodeSeed(Z).prefix===G4.Curve)return m95(Z);return new X41(Z)}function i95(Z){if(Z instanceof Uint8Array)Z=new TextDecoder().decode(Z);if(Z.charAt(0)==="S")return Q41(new TextEncoder().encode(Z));return Y41(Z)}function Iz0(Z,X="",G=!1){let Y=typeof Z==="string"||Z instanceof Uint8Array?i95(Z):Z,Q=Y.getPublicKey(),$=[];if(!Array.isArray(X)){if(X!=="")$.push(X)}else $.push(...X);if(X.length>0&&$.indexOf(Q.charAt(0))===-1)throw Error(`unexpected type ${Q.charAt(0)} - wanted ${$}`);if(G)Y.getPrivateKey();return Y}function n95(Z={}){return Mb8({data:-1,payload:-1,subs:-1},Z)}function Mb8(Z,...X){for(let G=0;G<X.length;G++){let Y=X[G];Object.assign(Z,Y)}return Z}function p95(Z){let{exp:X,nbf:G,aud:Y}=Z;return Mb8({},{exp:X,nbf:G,aud:Y})}function t95(Z={}){if(!Z.algorithm)Z.algorithm=uJ.v2;return Z}async function kb8(Z,X,G,Y={},Q={}){G=Iz0(G,"A",!Q.signer);let $=G;if(Q.signer)$=Iz0(Q.signer,"A",!0);X=Iz0(X,"U");let J=p95(Q);if(J.name=Z,J.sub=X.getPublicKey(),J.nats=Q.scopedUser?Y:n95(Y),Q.signer)J.nats.issuer_account=G.getPublicKey();let W=t95(Q);return r95(W.algorithm,Z41.User,J),await s95(W.algorithm,J,$)}function r95(Z,X,G){if(G.aud=G.aud||"NATS",Z===uJ.v2)G.nats.type=X;else G.type=X}function Sb8(Z){let X=Z.split(".");if(X.length!==3)throw Error(`invalid jwt - ${X.length} chunks: ${Z}`);let G=JSON.parse(rU.decode(X[0]));if(G.typ!=="jwt"&&G.typ!=="JWT")throw Error(`not a nats jwt - typ ${G.type}`);if(G.alg!==uJ.v1&&G.alg!==uJ.v2)throw Error(`not a nats jwt - alg ${G.alg}`);let Y=JSON.parse(rU.decode(X[1])),Q=Iz0(Y.iss),$=rU.decode(X[2],!0),J=new TextEncoder,W=G.alg===uJ.v2?`${X[0]}.${X[1]}`:X[1];if(!Q.verify(J.encode(W),$))throw Error("sig verification failed");return Y}function o95(Z){for(let X=0;X<Z.length;X++)Z[X]=Math.floor(Math.random()*255)}function a95(){let Z=new Uint8Array(12);o95(Z);let X=Array.from(Z);return btoa(String.fromCharCode(...X))}async function s95(Z,X,G){X.iss=G.getPublicKey(),X.iat=Math.floor(Date.now()/1000);let Y=X;if(Z===uJ.v2)Y.nats.version=2;let Q=new TextEncoder,$=Q.encode(JSON.stringify(X));if(globalThis.crypto&&globalThis.crypto.subtle){let F=await globalThis.crypto.subtle.digest("SHA-512",$);X.jti=qz0.encode(new Uint8Array(F))}else X.jti=a95();let J={typ:"JWT",alg:Z},W=rU.encode(JSON.stringify(J)),K=rU.encode(JSON.stringify(X)),N=Z===uJ.v2?`${W}.${K}`:K,U=rU.encode(G.sign(Q.encode(N)));return`${W}.${K}.${U}`}function Vb8(Z,X){let G=new TextDecoder().decode(X.getSeed()),Y=`-----BEGIN NATS USER JWT-----
|
|
2750
2750
|
${Z}
|
|
2751
2751
|
------END NATS USER JWT------
|
|
2752
2752
|
|
|
@@ -2757,7 +2757,7 @@ NKEYs are sensitive and should be treated as secrets.
|
|
|
2757
2757
|
-----BEGIN USER NKEY SEED-----
|
|
2758
2758
|
${G}
|
|
2759
2759
|
------END USER NKEY SEED------
|
|
2760
|
-
`;return new TextEncoder().encode(Y)}var Z41,gC,u95,Rb8,e61="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",l95,l8,c8,G4,Tb8=24,hC,uJ;var Cb8=B(()=>{(function(Z){Z.Operator="operator",Z.Account="account",Z.User="user",Z.Activation="activation",Z.AuthorizationResponse="authorization_response"})(Z41||(Z41={}));(function(Z){var X=function(h,m){this.hi=h|0,this.lo=m|0},G=function(h){var m,u=new Float64Array(16);if(h)for(m=0;m<h.length;m++)u[m]=h[m];return u},Y=function(){throw Error("no PRNG")},Q=new Uint8Array(16),$=new Uint8Array(32);$[0]=9;var J=G(),W=G([1]),K=G([56129,1]),N=G([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),U=G([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),F=G([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),H=G([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),w=G([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function O(h,m){return h<<m|h>>>32-m}function D(h,m){var u=h[m+3]&255;return u=u<<8|h[m+2]&255,u=u<<8|h[m+1]&255,u<<8|h[m+0]&255}function E(h,m){var u=h[m]<<24|h[m+1]<<16|h[m+2]<<8|h[m+3],o=h[m+4]<<24|h[m+5]<<16|h[m+6]<<8|h[m+7];return new X(u,o)}function L(h,m,u){var o;for(o=0;o<4;o++)h[m+o]=u&255,u>>>=8}function z(h,m,u){h[m]=u.hi>>24&255,h[m+1]=u.hi>>16&255,h[m+2]=u.hi>>8&255,h[m+3]=u.hi&255,h[m+4]=u.lo>>24&255,h[m+5]=u.lo>>16&255,h[m+6]=u.lo>>8&255,h[m+7]=u.lo&255}function j(h,m,u,o,Y0){var W0,b0=0;for(W0=0;W0<Y0;W0++)b0|=h[m+W0]^u[o+W0];return(1&b0-1>>>8)-1}function A(h,m,u,o){return j(h,m,u,o,16)}function P(h,m,u,o){return j(h,m,u,o,32)}function q(h,m,u,o,Y0){var W0=new Uint32Array(16),b0=new Uint32Array(16),m0=new Uint32Array(16),P0=new Uint32Array(4),S0,A0,y0;for(S0=0;S0<4;S0++)b0[5*S0]=D(o,4*S0),b0[1+S0]=D(u,4*S0),b0[6+S0]=D(m,4*S0),b0[11+S0]=D(u,16+4*S0);for(S0=0;S0<16;S0++)m0[S0]=b0[S0];for(S0=0;S0<20;S0++){for(A0=0;A0<4;A0++){for(y0=0;y0<4;y0++)P0[y0]=b0[(5*A0+4*y0)%16];P0[1]^=O(P0[0]+P0[3]|0,7),P0[2]^=O(P0[1]+P0[0]|0,9),P0[3]^=O(P0[2]+P0[1]|0,13),P0[0]^=O(P0[3]+P0[2]|0,18);for(y0=0;y0<4;y0++)W0[4*A0+(A0+y0)%4]=P0[y0]}for(y0=0;y0<16;y0++)b0[y0]=W0[y0]}if(Y0){for(S0=0;S0<16;S0++)b0[S0]=b0[S0]+m0[S0]|0;for(S0=0;S0<4;S0++)b0[5*S0]=b0[5*S0]-D(o,4*S0)|0,b0[6+S0]=b0[6+S0]-D(m,4*S0)|0;for(S0=0;S0<4;S0++)L(h,4*S0,b0[5*S0]),L(h,16+4*S0,b0[6+S0])}else for(S0=0;S0<16;S0++)L(h,4*S0,b0[S0]+m0[S0]|0)}function S(h,m,u,o){return q(h,m,u,o,!1),0}function M(h,m,u,o){return q(h,m,u,o,!0),0}var C=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function d(h,m,u,o,Y0,W0,b0){var m0=new Uint8Array(16),P0=new Uint8Array(64),S0,A0;if(!Y0)return 0;for(A0=0;A0<16;A0++)m0[A0]=0;for(A0=0;A0<8;A0++)m0[A0]=W0[A0];while(Y0>=64){S(P0,m0,b0,C);for(A0=0;A0<64;A0++)h[m+A0]=(u?u[o+A0]:0)^P0[A0];S0=1;for(A0=8;A0<16;A0++)S0=S0+(m0[A0]&255)|0,m0[A0]=S0&255,S0>>>=8;if(Y0-=64,m+=64,u)o+=64}if(Y0>0){S(P0,m0,b0,C);for(A0=0;A0<Y0;A0++)h[m+A0]=(u?u[o+A0]:0)^P0[A0]}return 0}function x(h,m,u,o,Y0){return d(h,m,null,0,u,o,Y0)}function _(h,m,u,o,Y0){var W0=new Uint8Array(32);return M(W0,o,Y0,C),x(h,m,u,o.subarray(16),W0)}function X0(h,m,u,o,Y0,W0,b0){var m0=new Uint8Array(32);return M(m0,W0,b0,C),d(h,m,u,o,Y0,W0.subarray(16),m0)}function n(h,m){var u,o=0;for(u=0;u<17;u++)o=o+(h[u]+m[u]|0)|0,h[u]=o&255,o>>>=8}var U0=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function D0(h,m,u,o,Y0,W0){var b0,m0,P0,S0,A0=new Uint32Array(17),y0=new Uint32Array(17),a0=new Uint32Array(17),G1=new Uint32Array(17),U1=new Uint32Array(17);for(P0=0;P0<17;P0++)y0[P0]=a0[P0]=0;for(P0=0;P0<16;P0++)y0[P0]=W0[P0];y0[3]&=15,y0[4]&=252,y0[7]&=15,y0[8]&=252,y0[11]&=15,y0[12]&=252,y0[15]&=15;while(Y0>0){for(P0=0;P0<17;P0++)G1[P0]=0;for(P0=0;P0<16&&P0<Y0;++P0)G1[P0]=u[o+P0];G1[P0]=1,o+=P0,Y0-=P0,n(a0,G1);for(m0=0;m0<17;m0++){A0[m0]=0;for(P0=0;P0<17;P0++)A0[m0]=A0[m0]+a0[P0]*(P0<=m0?y0[m0-P0]:320*y0[m0+17-P0]|0)|0|0}for(m0=0;m0<17;m0++)a0[m0]=A0[m0];S0=0;for(P0=0;P0<16;P0++)S0=S0+a0[P0]|0,a0[P0]=S0&255,S0>>>=8;S0=S0+a0[16]|0,a0[16]=S0&3,S0=5*(S0>>>2)|0;for(P0=0;P0<16;P0++)S0=S0+a0[P0]|0,a0[P0]=S0&255,S0>>>=8;S0=S0+a0[16]|0,a0[16]=S0}for(P0=0;P0<17;P0++)U1[P0]=a0[P0];n(a0,U0),b0=-(a0[16]>>>7)|0;for(P0=0;P0<17;P0++)a0[P0]^=b0&(U1[P0]^a0[P0]);for(P0=0;P0<16;P0++)G1[P0]=W0[P0+16];G1[16]=0,n(a0,G1);for(P0=0;P0<16;P0++)h[m+P0]=a0[P0];return 0}function J0(h,m,u,o,Y0,W0){var b0=new Uint8Array(16);return D0(b0,0,u,o,Y0,W0),A(h,m,b0,0)}function Q0(h,m,u,o,Y0){var W0;if(u<32)return-1;X0(h,0,m,0,u,o,Y0),D0(h,16,h,32,u-32,h);for(W0=0;W0<16;W0++)h[W0]=0;return 0}function a(h,m,u,o,Y0){var W0,b0=new Uint8Array(32);if(u<32)return-1;if(_(b0,0,32,o,Y0),J0(m,16,m,32,u-32,b0)!==0)return-1;X0(h,0,m,0,u,o,Y0);for(W0=0;W0<32;W0++)h[W0]=0;return 0}function T0(h,m){var u;for(u=0;u<16;u++)h[u]=m[u]|0}function N0(h){var m,u;for(u=0;u<16;u++)h[u]+=65536,m=Math.floor(h[u]/65536),h[(u+1)*(u<15?1:0)]+=m-1+37*(m-1)*(u===15?1:0),h[u]-=m*65536}function v0(h,m,u){var o,Y0=~(u-1);for(var W0=0;W0<16;W0++)o=Y0&(h[W0]^m[W0]),h[W0]^=o,m[W0]^=o}function i0(h,m){var u,o,Y0,W0=G(),b0=G();for(u=0;u<16;u++)b0[u]=m[u];N0(b0),N0(b0),N0(b0);for(o=0;o<2;o++){W0[0]=b0[0]-65517;for(u=1;u<15;u++)W0[u]=b0[u]-65535-(W0[u-1]>>16&1),W0[u-1]&=65535;W0[15]=b0[15]-32767-(W0[14]>>16&1),Y0=W0[15]>>16&1,W0[14]&=65535,v0(b0,W0,1-Y0)}for(u=0;u<16;u++)h[2*u]=b0[u]&255,h[2*u+1]=b0[u]>>8}function n0(h,m){var u=new Uint8Array(32),o=new Uint8Array(32);return i0(u,h),i0(o,m),P(u,0,o,0)}function l0(h){var m=new Uint8Array(32);return i0(m,h),m[0]&1}function F0(h,m){var u;for(u=0;u<16;u++)h[u]=m[2*u]+(m[2*u+1]<<8);h[15]&=32767}function C0(h,m,u){var o;for(o=0;o<16;o++)h[o]=m[o]+u[o]|0}function R0(h,m,u){var o;for(o=0;o<16;o++)h[o]=m[o]-u[o]|0}function B0(h,m,u){var o,Y0,W0=new Float64Array(31);for(o=0;o<31;o++)W0[o]=0;for(o=0;o<16;o++)for(Y0=0;Y0<16;Y0++)W0[o+Y0]+=m[o]*u[Y0];for(o=0;o<15;o++)W0[o]+=38*W0[o+16];for(o=0;o<16;o++)h[o]=W0[o];N0(h),N0(h)}function $0(h,m){B0(h,m,m)}function G0(h,m){var u=G(),o;for(o=0;o<16;o++)u[o]=m[o];for(o=253;o>=0;o--)if($0(u,u),o!==2&&o!==4)B0(u,u,m);for(o=0;o<16;o++)h[o]=u[o]}function V0(h,m){var u=G(),o;for(o=0;o<16;o++)u[o]=m[o];for(o=250;o>=0;o--)if($0(u,u),o!==1)B0(u,u,m);for(o=0;o<16;o++)h[o]=u[o]}function p(h,m,u){var o=new Uint8Array(32),Y0=new Float64Array(80),W0,b0,m0=G(),P0=G(),S0=G(),A0=G(),y0=G(),a0=G();for(b0=0;b0<31;b0++)o[b0]=m[b0];o[31]=m[31]&127|64,o[0]&=248,F0(Y0,u);for(b0=0;b0<16;b0++)P0[b0]=Y0[b0],A0[b0]=m0[b0]=S0[b0]=0;m0[0]=A0[0]=1;for(b0=254;b0>=0;--b0)W0=o[b0>>>3]>>>(b0&7)&1,v0(m0,P0,W0),v0(S0,A0,W0),C0(y0,m0,S0),R0(m0,m0,S0),C0(S0,P0,A0),R0(P0,P0,A0),$0(A0,y0),$0(a0,m0),B0(m0,S0,m0),B0(S0,P0,y0),C0(y0,m0,S0),R0(m0,m0,S0),$0(P0,m0),R0(S0,A0,a0),B0(m0,S0,K),C0(m0,m0,A0),B0(S0,S0,m0),B0(m0,A0,a0),B0(A0,P0,Y0),$0(P0,y0),v0(m0,P0,W0),v0(S0,A0,W0);for(b0=0;b0<16;b0++)Y0[b0+16]=m0[b0],Y0[b0+32]=S0[b0],Y0[b0+48]=P0[b0],Y0[b0+64]=A0[b0];var G1=Y0.subarray(32),U1=Y0.subarray(16);return G0(G1,G1),B0(U1,U1,G1),i0(h,U1),0}function Z0(h,m){return p(h,m,$)}function r0(h,m){return Y(m,32),Z0(h,m)}function q0(h,m,u){var o=new Uint8Array(32);return p(o,u,m),M(h,Q,o,C)}var M0=Q0,g=a;function H0(h,m,u,o,Y0,W0){var b0=new Uint8Array(32);return q0(b0,Y0,W0),M0(h,m,u,o,b0)}function x0(h,m,u,o,Y0,W0){var b0=new Uint8Array(32);return q0(b0,Y0,W0),g(h,m,u,o,b0)}function e0(){var h=0,m=0,u=0,o=0,Y0=65535,W0,b0,m0;for(m0=0;m0<arguments.length;m0++)W0=arguments[m0].lo,b0=arguments[m0].hi,h+=W0&Y0,m+=W0>>>16,u+=b0&Y0,o+=b0>>>16;return m+=h>>>16,u+=m>>>16,o+=u>>>16,new X(u&Y0|o<<16,h&Y0|m<<16)}function u0(h,m){return new X(h.hi>>>m,h.lo>>>m|h.hi<<32-m)}function T1(){var h=0,m=0,u;for(u=0;u<arguments.length;u++)h^=arguments[u].lo,m^=arguments[u].hi;return new X(m,h)}function e1(h,m){var u,o,Y0=32-m;if(m<32)u=h.hi>>>m|h.lo<<Y0,o=h.lo>>>m|h.hi<<Y0;else if(m<64)u=h.lo>>>m|h.hi<<Y0,o=h.hi>>>m|h.lo<<Y0;return new X(u,o)}function z4(h,m,u){var o=h.hi&m.hi^~h.hi&u.hi,Y0=h.lo&m.lo^~h.lo&u.lo;return new X(o,Y0)}function $5(h,m,u){var o=h.hi&m.hi^h.hi&u.hi^m.hi&u.hi,Y0=h.lo&m.lo^h.lo&u.lo^m.lo&u.lo;return new X(o,Y0)}function u9(h){return T1(e1(h,28),e1(h,34),e1(h,39))}function e(h){return T1(e1(h,14),e1(h,18),e1(h,41))}function N1(h){return T1(e1(h,1),e1(h,8),u0(h,7))}function a8(h){return T1(e1(h,19),e1(h,61),u0(h,6))}var s8=[new X(1116352408,3609767458),new X(1899447441,602891725),new X(3049323471,3964484399),new X(3921009573,2173295548),new X(961987163,4081628472),new X(1508970993,3053834265),new X(2453635748,2937671579),new X(2870763221,3664609560),new X(3624381080,2734883394),new X(310598401,1164996542),new X(607225278,1323610764),new X(1426881987,3590304994),new X(1925078388,4068182383),new X(2162078206,991336113),new X(2614888103,633803317),new X(3248222580,3479774868),new X(3835390401,2666613458),new X(4022224774,944711139),new X(264347078,2341262773),new X(604807628,2007800933),new X(770255983,1495990901),new X(1249150122,1856431235),new X(1555081692,3175218132),new X(1996064986,2198950837),new X(2554220882,3999719339),new X(2821834349,766784016),new X(2952996808,2566594879),new X(3210313671,3203337956),new X(3336571891,1034457026),new X(3584528711,2466948901),new X(113926993,3758326383),new X(338241895,168717936),new X(666307205,1188179964),new X(773529912,1546045734),new X(1294757372,1522805485),new X(1396182291,2643833823),new X(1695183700,2343527390),new X(1986661051,1014477480),new X(2177026350,1206759142),new X(2456956037,344077627),new X(2730485921,1290863460),new X(2820302411,3158454273),new X(3259730800,3505952657),new X(3345764771,106217008),new X(3516065817,3606008344),new X(3600352804,1432725776),new X(4094571909,1467031594),new X(275423344,851169720),new X(430227734,3100823752),new X(506948616,1363258195),new X(659060556,3750685593),new X(883997877,3785050280),new X(958139571,3318307427),new X(1322822218,3812723403),new X(1537002063,2003034995),new X(1747873779,3602036899),new X(1955562222,1575990012),new X(2024104815,1125592928),new X(2227730452,2716904306),new X(2361852424,442776044),new X(2428436474,593698344),new X(2756734187,3733110249),new X(3204031479,2999351573),new X(3329325298,3815920427),new X(3391569614,3928383900),new X(3515267271,566280711),new X(3940187606,3454069534),new X(4118630271,4000239992),new X(116418474,1914138554),new X(174292421,2731055270),new X(289380356,3203993006),new X(460393269,320620315),new X(685471733,587496836),new X(852142971,1086792851),new X(1017036298,365543100),new X(1126000580,2618297676),new X(1288033470,3409855158),new X(1501505948,4234509866),new X(1607167915,987167468),new X(1816402316,1246189591)];function AZ(h,m,u){var o=[],Y0=[],W0=[],b0=[],m0,P0,S0;for(P0=0;P0<8;P0++)o[P0]=W0[P0]=E(h,8*P0);var A0=0;while(u>=128){for(P0=0;P0<16;P0++)b0[P0]=E(m,8*P0+A0);for(P0=0;P0<80;P0++){for(S0=0;S0<8;S0++)Y0[S0]=W0[S0];m0=e0(W0[7],e(W0[4]),z4(W0[4],W0[5],W0[6]),s8[P0],b0[P0%16]),Y0[7]=e0(m0,u9(W0[0]),$5(W0[0],W0[1],W0[2])),Y0[3]=e0(Y0[3],m0);for(S0=0;S0<8;S0++)W0[(S0+1)%8]=Y0[S0];if(P0%16===15)for(S0=0;S0<16;S0++)b0[S0]=e0(b0[S0],b0[(S0+9)%16],N1(b0[(S0+1)%16]),a8(b0[(S0+14)%16]))}for(P0=0;P0<8;P0++)W0[P0]=e0(W0[P0],o[P0]),o[P0]=W0[P0];A0+=128,u-=128}for(P0=0;P0<8;P0++)z(h,8*P0,o[P0]);return u}var nG=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function q6(h,m,u){var o=new Uint8Array(64),Y0=new Uint8Array(256),W0,b0=u;for(W0=0;W0<64;W0++)o[W0]=nG[W0];AZ(o,m,u),u%=128;for(W0=0;W0<256;W0++)Y0[W0]=0;for(W0=0;W0<u;W0++)Y0[W0]=m[b0-u+W0];Y0[u]=128,u=256-128*(u<112?1:0),Y0[u-9]=0,z(Y0,u-8,new X(b0/536870912|0,b0<<3)),AZ(o,Y0,u);for(W0=0;W0<64;W0++)h[W0]=o[W0];return 0}function f4(h,m){var u=G(),o=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G(),S0=G(),A0=G();R0(u,h[1],h[0]),R0(A0,m[1],m[0]),B0(u,u,A0),C0(o,h[0],h[1]),C0(A0,m[0],m[1]),B0(o,o,A0),B0(Y0,h[3],m[3]),B0(Y0,Y0,U),B0(W0,h[2],m[2]),C0(W0,W0,W0),R0(b0,o,u),R0(m0,W0,Y0),C0(P0,W0,Y0),C0(S0,o,u),B0(h[0],b0,m0),B0(h[1],S0,P0),B0(h[2],P0,m0),B0(h[3],b0,S0)}function Z9(h,m,u){var o;for(o=0;o<4;o++)v0(h[o],m[o],u)}function T9(h,m){var u=G(),o=G(),Y0=G();G0(Y0,m[2]),B0(u,m[0],Y0),B0(o,m[1],Y0),i0(h,o),h[31]^=l0(u)<<7}function $Z(h,m,u){var o,Y0;T0(h[0],J),T0(h[1],W),T0(h[2],W),T0(h[3],J);for(Y0=255;Y0>=0;--Y0)o=u[Y0/8|0]>>(Y0&7)&1,Z9(h,m,o),f4(m,h),f4(h,h),Z9(h,m,o)}function PZ(h,m){var u=[G(),G(),G(),G()];T0(u[0],F),T0(u[1],H),T0(u[2],W),B0(u[3],F,H),$Z(h,u,m)}function _1(h,m,u){var o=new Uint8Array(64),Y0=[G(),G(),G(),G()],W0;if(!u)Y(m,32);q6(o,m,32),o[0]&=248,o[31]&=127,o[31]|=64,PZ(Y0,o),T9(h,Y0);for(W0=0;W0<32;W0++)m[W0+32]=h[W0];return 0}var M6=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function k6(h,m){var u,o,Y0,W0;for(o=63;o>=32;--o){u=0;for(Y0=o-32,W0=o-12;Y0<W0;++Y0)m[Y0]+=u-16*m[o]*M6[Y0-(o-32)],u=Math.floor((m[Y0]+128)/256),m[Y0]-=u*256;m[Y0]+=u,m[o]=0}u=0;for(Y0=0;Y0<32;Y0++)m[Y0]+=u-(m[31]>>4)*M6[Y0],u=m[Y0]>>8,m[Y0]&=255;for(Y0=0;Y0<32;Y0++)m[Y0]-=u*M6[Y0];for(o=0;o<32;o++)m[o+1]+=m[o]>>8,h[o]=m[o]&255}function Y4(h){var m=new Float64Array(64),u;for(u=0;u<64;u++)m[u]=h[u];for(u=0;u<64;u++)h[u]=0;k6(h,m)}function x8(h,m,u,o){var Y0=new Uint8Array(64),W0=new Uint8Array(64),b0=new Uint8Array(64),m0,P0,S0=new Float64Array(64),A0=[G(),G(),G(),G()];q6(Y0,o,32),Y0[0]&=248,Y0[31]&=127,Y0[31]|=64;var y0=u+64;for(m0=0;m0<u;m0++)h[64+m0]=m[m0];for(m0=0;m0<32;m0++)h[32+m0]=Y0[32+m0];q6(b0,h.subarray(32),u+32),Y4(b0),PZ(A0,b0),T9(h,A0);for(m0=32;m0<64;m0++)h[m0]=o[m0];q6(W0,h,u+64),Y4(W0);for(m0=0;m0<64;m0++)S0[m0]=0;for(m0=0;m0<32;m0++)S0[m0]=b0[m0];for(m0=0;m0<32;m0++)for(P0=0;P0<32;P0++)S0[m0+P0]+=W0[m0]*Y0[P0];return k6(h.subarray(32),S0),y0}function F6(h,m){var u=G(),o=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G();if(T0(h[2],W),F0(h[1],m),$0(Y0,h[1]),B0(W0,Y0,N),R0(Y0,Y0,h[2]),C0(W0,h[2],W0),$0(b0,W0),$0(m0,b0),B0(P0,m0,b0),B0(u,P0,Y0),B0(u,u,W0),V0(u,u),B0(u,u,Y0),B0(u,u,W0),B0(u,u,W0),B0(h[0],u,W0),$0(o,h[0]),B0(o,o,W0),n0(o,Y0))B0(h[0],h[0],w);if($0(o,h[0]),B0(o,o,W0),n0(o,Y0))return-1;if(l0(h[0])===m[31]>>7)R0(h[0],J,h[0]);return B0(h[3],h[0],h[1]),0}function PX(h,m,u,o){var Y0,W0=new Uint8Array(32),b0=new Uint8Array(64),m0=[G(),G(),G(),G()],P0=[G(),G(),G(),G()];if(u<64)return-1;if(F6(P0,o))return-1;for(Y0=0;Y0<u;Y0++)h[Y0]=m[Y0];for(Y0=0;Y0<32;Y0++)h[Y0+32]=o[Y0];if(q6(b0,h,u),Y4(b0),$Z(m0,P0,b0),PZ(P0,m.subarray(32)),f4(m0,P0),T9(W0,m0),u-=64,P(m,0,W0,0)){for(Y0=0;Y0<u;Y0++)h[Y0]=0;return-1}for(Y0=0;Y0<u;Y0++)h[Y0]=m[Y0+64];return u}var V8=32,i4=24,e4=32,r6=16,X9=32,V=32,l=32,c=32,R=32,r=i4,_0=e4,d0=r6,W1=64,H1=32,g1=64,b1=32,$6=64;Z.lowlevel={crypto_core_hsalsa20:M,crypto_stream_xor:X0,crypto_stream:_,crypto_stream_salsa20_xor:d,crypto_stream_salsa20:x,crypto_onetimeauth:D0,crypto_onetimeauth_verify:J0,crypto_verify_16:A,crypto_verify_32:P,crypto_secretbox:Q0,crypto_secretbox_open:a,crypto_scalarmult:p,crypto_scalarmult_base:Z0,crypto_box_beforenm:q0,crypto_box_afternm:M0,crypto_box:H0,crypto_box_open:x0,crypto_box_keypair:r0,crypto_hash:q6,crypto_sign:x8,crypto_sign_keypair:_1,crypto_sign_open:PX,crypto_secretbox_KEYBYTES:V8,crypto_secretbox_NONCEBYTES:i4,crypto_secretbox_ZEROBYTES:e4,crypto_secretbox_BOXZEROBYTES:r6,crypto_scalarmult_BYTES:X9,crypto_scalarmult_SCALARBYTES:V,crypto_box_PUBLICKEYBYTES:l,crypto_box_SECRETKEYBYTES:c,crypto_box_BEFORENMBYTES:R,crypto_box_NONCEBYTES:r,crypto_box_ZEROBYTES:_0,crypto_box_BOXZEROBYTES:d0,crypto_sign_BYTES:W1,crypto_sign_PUBLICKEYBYTES:H1,crypto_sign_SECRETKEYBYTES:g1,crypto_sign_SEEDBYTES:b1,crypto_hash_BYTES:$6,gf:G,D:N,L:M6,pack25519:i0,unpack25519:F0,M:B0,A:C0,S:$0,Z:R0,pow2523:V0,add:f4,set25519:T0,modL:k6,scalarmult:$Z,scalarbase:PZ};function c1(h,m){if(h.length!==V8)throw Error("bad key size");if(m.length!==i4)throw Error("bad nonce size")}function z8(h,m){if(h.length!==l)throw Error("bad public key size");if(m.length!==c)throw Error("bad secret key size")}function Q8(){for(var h=0;h<arguments.length;h++)if(!(arguments[h]instanceof Uint8Array))throw TypeError("unexpected type, use Uint8Array")}function g8(h){for(var m=0;m<h.length;m++)h[m]=0}Z.randomBytes=function(h){var m=new Uint8Array(h);return Y(m,h),m},Z.secretbox=function(h,m,u){Q8(h,m,u),c1(u,m);var o=new Uint8Array(e4+h.length),Y0=new Uint8Array(o.length);for(var W0=0;W0<h.length;W0++)o[W0+e4]=h[W0];return Q0(Y0,o,o.length,m,u),Y0.subarray(r6)},Z.secretbox.open=function(h,m,u){Q8(h,m,u),c1(u,m);var o=new Uint8Array(r6+h.length),Y0=new Uint8Array(o.length);for(var W0=0;W0<h.length;W0++)o[W0+r6]=h[W0];if(o.length<32)return null;if(a(Y0,o,o.length,m,u)!==0)return null;return Y0.subarray(e4)},Z.secretbox.keyLength=V8,Z.secretbox.nonceLength=i4,Z.secretbox.overheadLength=r6,Z.scalarMult=function(h,m){if(Q8(h,m),h.length!==V)throw Error("bad n size");if(m.length!==X9)throw Error("bad p size");var u=new Uint8Array(X9);return p(u,h,m),u},Z.scalarMult.base=function(h){if(Q8(h),h.length!==V)throw Error("bad n size");var m=new Uint8Array(X9);return Z0(m,h),m},Z.scalarMult.scalarLength=V,Z.scalarMult.groupElementLength=X9,Z.box=function(h,m,u,o){var Y0=Z.box.before(u,o);return Z.secretbox(h,m,Y0)},Z.box.before=function(h,m){Q8(h,m),z8(h,m);var u=new Uint8Array(R);return q0(u,h,m),u},Z.box.after=Z.secretbox,Z.box.open=function(h,m,u,o){var Y0=Z.box.before(u,o);return Z.secretbox.open(h,m,Y0)},Z.box.open.after=Z.secretbox.open,Z.box.keyPair=function(){var h=new Uint8Array(l),m=new Uint8Array(c);return r0(h,m),{publicKey:h,secretKey:m}},Z.box.keyPair.fromSecretKey=function(h){if(Q8(h),h.length!==c)throw Error("bad secret key size");var m=new Uint8Array(l);return Z0(m,h),{publicKey:m,secretKey:new Uint8Array(h)}},Z.box.publicKeyLength=l,Z.box.secretKeyLength=c,Z.box.sharedKeyLength=R,Z.box.nonceLength=r,Z.box.overheadLength=Z.secretbox.overheadLength,Z.sign=function(h,m){if(Q8(h,m),m.length!==g1)throw Error("bad secret key size");var u=new Uint8Array(W1+h.length);return x8(u,h,h.length,m),u},Z.sign.open=function(h,m){if(Q8(h,m),m.length!==H1)throw Error("bad public key size");var u=new Uint8Array(h.length),o=PX(u,h,h.length,m);if(o<0)return null;var Y0=new Uint8Array(o);for(var W0=0;W0<Y0.length;W0++)Y0[W0]=u[W0];return Y0},Z.sign.detached=function(h,m){var u=Z.sign(h,m),o=new Uint8Array(W1);for(var Y0=0;Y0<o.length;Y0++)o[Y0]=u[Y0];return o},Z.sign.detached.verify=function(h,m,u){if(Q8(h,m,u),m.length!==W1)throw Error("bad signature size");if(u.length!==H1)throw Error("bad public key size");var o=new Uint8Array(W1+h.length),Y0=new Uint8Array(W1+h.length),W0;for(W0=0;W0<W1;W0++)o[W0]=m[W0];for(W0=0;W0<h.length;W0++)o[W0+W1]=h[W0];return PX(Y0,o,o.length,u)>=0},Z.sign.keyPair=function(){var h=new Uint8Array(H1),m=new Uint8Array(g1);return _1(h,m),{publicKey:h,secretKey:m}},Z.sign.keyPair.fromSecretKey=function(h){if(Q8(h),h.length!==g1)throw Error("bad secret key size");var m=new Uint8Array(H1);for(var u=0;u<m.length;u++)m[u]=h[32+u];return{publicKey:m,secretKey:new Uint8Array(h)}},Z.sign.keyPair.fromSeed=function(h){if(Q8(h),h.length!==b1)throw Error("bad seed size");var m=new Uint8Array(H1),u=new Uint8Array(g1);for(var o=0;o<32;o++)u[o]=h[o];return _1(m,u,!0),{publicKey:m,secretKey:u}},Z.sign.publicKeyLength=H1,Z.sign.secretKeyLength=g1,Z.sign.seedLength=b1,Z.sign.signatureLength=W1,Z.hash=function(h){Q8(h);var m=new Uint8Array($6);return q6(m,h,h.length),m},Z.hash.hashLength=$6,Z.verify=function(h,m){if(Q8(h,m),h.length===0||m.length===0)return!1;if(h.length!==m.length)return!1;return j(h,0,m,0,h.length)===0?!0:!1},Z.setPRNG=function(h){Y=h},function(){var h=typeof globalThis<"u"?globalThis.crypto||globalThis.msCrypto:null;if(h&&h.getRandomValues){var m=65536;Z.setPRNG(function(u,o){var Y0,W0=new Uint8Array(o);for(Y0=0;Y0<o;Y0+=m)h.getRandomValues(W0.subarray(Y0,Y0+Math.min(o-Y0,m)));for(Y0=0;Y0<o;Y0++)u[Y0]=W0[Y0];g8(W0)})}else if(h=c0("crypto"),h&&h.randomBytes)Z.setPRNG(function(u,o){var Y0,W0=h.randomBytes(o);for(Y0=0;Y0<o;Y0++)u[Y0]=W0[Y0];g8(W0)})}()})(typeof tg<"u"&&sY7?sY7:globalThis.nacl=globalThis.nacl||{});gC=typeof tg<"u"&&sY7?sY7:globalThis.nacl,u95={fromSeed:gC.sign.keyPair.fromSeed,sign:gC.sign.detached,verify:gC.sign.detached.verify,randomBytes:gC.randomBytes,scalarBaseMultiply:gC.scalarMult.base,seal:gC.box,open:gC.box.open};l95=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);l8=class l8 extends Error{name;code;chainedError;constructor(Z,X){super(Z);this.name="NKeysError",this.code=Z,this.chainedError=X}};(function(Z){Z.InvalidPrefixByte="nkeys: invalid prefix byte",Z.InvalidKey="nkeys: invalid key",Z.InvalidPublicKey="nkeys: invalid public key",Z.InvalidSeedLen="nkeys: invalid seed length",Z.InvalidSeed="nkeys: invalid seed",Z.InvalidCurveSeed="nkeys: invalid curve seed",Z.InvalidCurveKey="nkeys: not a valid curve key",Z.InvalidCurveOperation="nkeys: curve key is not valid for sign/verify",Z.InvalidNKeyOperation="keys: only curve key can seal/open",Z.InvalidEncoding="nkeys: invalid encoded key",Z.InvalidRecipient="nkeys: not a valid recipient public curve key",Z.InvalidEncrypted="nkeys: encrypted input is not valid",Z.CannotSign="nkeys: cannot sign, no private key available",Z.PublicKeyOnly="nkeys: no seed or private key available",Z.InvalidChecksum="nkeys: invalid checksum",Z.SerializationError="nkeys: serialization error",Z.ApiError="nkeys: api error",Z.ClearedPair="nkeys: pair is cleared"})(c8||(c8={}));(function(Z){Z[Z.Unknown=-1]="Unknown",Z[Z.Seed=144]="Seed",Z[Z.Private=120]="Private",Z[Z.Operator=112]="Operator",Z[Z.Server=104]="Server",Z[Z.Cluster=16]="Cluster",Z[Z.Account=0]="Account",Z[Z.User=160]="User",Z[Z.Curve=184]="Curve"})(G4||(G4={}));hC=[120,107,118,49];c95(u95);(function(Z){Z.v1="ed25519",Z.v2="ed25519-nkey"})(uJ||(uJ={}))});function $41(Z){try{Z?.clear?.()}catch{}}async function fb8({accountJwt:Z,accountSigningKey:X,expiresAt:G,permissions:Y,userId:Q,allowedConnectionTypes:$=["WEBSOCKET"]}){let J=Sb8(Z),W=Y41(J.sub),K=Q41(new TextEncoder().encode(X)),N=Ib8();try{let U=await kb8(Q,N,W,{pub:{allow:Y.publish.allow},sub:{allow:Y.subscribe.allow},allowed_connection_types:$},{algorithm:uJ.v2,exp:Math.floor(G.getTime()/1000),signer:K});return new TextDecoder().decode(Vb8(U,N))}finally{$41(N),$41(K),$41(W)}}var bb8=B(()=>{Cb8()});function e95(Z){return/^wss?:\/\//i.test(Z.trim())?["WEBSOCKET"]:["STANDARD","WEBSOCKET"]}function xb8(){let Z=new V1;return Z.post("/links/session",async(X)=>{let Y=X.get("studioContext").auth?.user?.id;if(!Y)return X.json({error:"Unauthorized"},401);let Q=K1();if(!Q.natsTunnelPublicEnabled)return X.json(J41(),503);if(!Q.natsPublicUrl)return X.json(J41(),503);if(!Q.natsAccountJwt||!Q.natsAccountSigningKey){if(!Q.localMode)return X.json(J41(),503)}let $=hJ(Y),J;if(Q.natsAccountJwt&&Q.natsAccountSigningKey){let W=new Date(Date.now()+Q.natsTunnelSessionTtlSeconds*1000);J=await fb8({accountJwt:Q.natsAccountJwt,accountSigningKey:Q.natsAccountSigningKey,expiresAt:W,permissions:jb8($),userId:Y,allowedConnectionTypes:e95(Q.natsPublicUrl)})}return X.json(Ab8({publicUrl:Q.natsPublicUrl,userId:Y,ttlSeconds:Q.natsTunnelSessionTtlSeconds,credentials:J}))}),Z}var J41=()=>({error:"link session unavailable"});var vb8=B(()=>{a6();y8();Pb8();bb8()});function XZ5(Z){return Z.filter((X)=>X.vendors?.alias).map((X)=>({name:X.name,title:X.title,description:X.description,logo:X.logo,category:X.category,vendor:{alias:X.vendors.alias,url:X.vendors.url}}))}async function GZ5(Z,X){let G=await fetch(`${Z}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:X,Authorization:`Bearer ${X}`,Accept:"application/json"},signal:AbortSignal.timeout(ZZ5)});if(!G.ok){let Y=await G.text().catch(()=>G.statusText);throw console.error(`[deco-apps] Supabase error (${G.status}): ${Y.slice(0,200)}`),Error(`External service error (${G.status})`)}return await G.json()}var ZZ5=1e4,YZ5=async(Z,X)=>{if(!Z.get("studioContext").auth.user?.id)return Z.json({error:"Unauthorized"},401);return X()},_b8=()=>{let Z=new V1;return Z.use("*",YZ5),Z.get("/",async(X)=>{let G=K1(),Y=G.decoSupabaseUrl,Q=G.decoSupabaseServiceKey;if(!Y||!Q)return X.json({apps:[]});try{let $=await GZ5(Y,Q);return X.json({apps:XZ5($)})}catch($){return console.error("[deco-apps] GET error:",$),X.json({error:"Failed to fetch apps"},502)}}),Z};var yb8=B(()=>{a6();y8()});import{z as h1}from"zod";function fK(Z,X="invalid_request_error",G=null,Y=null){return{error:{message:Z,type:X,param:G,code:Y}}}function wZ5(Z){if(!Z)return null;let X=Z.indexOf(":");if(X===-1)return{credentialId:null,modelId:Z};let G=Z.substring(0,X),Y=Z.substring(X+1);if(!G||!Y)return null;return{credentialId:G,modelId:Y}}function OZ5(Z,X,G){try{return JSON.parse(Z)}catch{throw new ub8(`Invalid JSON in tool call arguments for function '${G}' (tool_call_id: ${X}): ${Z}`)}}function BZ5(Z){let X={};for(let G of Z)if(G.role==="assistant"&&G.tool_calls)for(let Y of G.tool_calls)X[Y.id]=Y.function.name;return Z.map((G)=>{switch(G.role){case"system":return{role:"system",content:G.content};case"user":if(typeof G.content==="string")return{role:"user",content:G.content};return{role:"user",content:G.content.map((Q)=>{if(Q.type==="text")return{type:"text",text:Q.text};return{type:"image",image:Q.image_url.url}})};case"assistant":if(G.tool_calls&&G.tool_calls.length>0)return{role:"assistant",content:G.tool_calls.map((Q)=>({type:"tool-call",toolCallId:Q.id,toolName:Q.function.name,input:OZ5(Q.function.arguments,Q.id,Q.function.name)}))};return{role:"assistant",content:G.content??""};case"tool":let Y=X[G.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:G.tool_call_id,toolName:Y,output:{type:"text",value:G.content}}]}}})}function DZ5(Z){let X=Z.map((G)=>{let Y=G.function.parameters?AQ(G.function.parameters):AQ({type:"object",properties:{}});return[G.function.name,v8({description:G.function.description,inputSchema:Y})]});return Object.fromEntries(X)}function EZ5(Z){if(!Z)return;return{openai:{response_format:Z}}}function LZ5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function gb8(Z,X,G,Y,Q,$){let J={model:Z,messages:X,tools:G,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:$};return Q?{...J,providerOptions:Q}:J}function hb8(Z){if(Z==="tool-calls")return"tool_calls";if(Z==="length")return"length";return"stop"}var QZ5=256,$Z5,JZ5,WZ5,KZ5,NZ5,UZ5,FZ5,HZ5,ub8,cb8,lb8;var db8=B(()=>{K4();a6();ng();$Z5=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),JZ5=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),WZ5=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(JZ5).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),KZ5=h1.object({type:h1.literal("text")}),NZ5=h1.object({type:h1.literal("json_object")}),UZ5=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),FZ5=h1.union([KZ5,NZ5,UZ5]),HZ5=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(WZ5),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array($Z5).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:FZ5.optional(),user:h1.string().optional()});ub8=class ub8 extends Error{constructor(Z){super(Z);this.name="MessageConversionError"}};cb8=new V1;cb8.post("/:org/v1/chat/completions",async(Z)=>{let X=Z.get("studioContext"),G=Z.req.param("org");try{if(!X.auth.apiKey?.id)return Z.json(fK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!X.organization)return Z.json(fK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((X.organization.slug??X.organization.id)!==G)return Z.json(fK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await Z.req.json(),Q=HZ5.safeParse(Y);if(!Q.success){let E=Q.error.issues[0]??{message:"Invalid request",path:[]};return Z.json(fK(`Invalid request: ${E.message}`,"invalid_request_error",E.path.length>0?E.path.join("."):null),400)}let $=Q.data,J=wZ5($.model);if(!J)return Z.json(fK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=await X.storage.aiProviderKeys.list({organizationId:X.organization.id});if(E.length===0)return Z.json(fK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E[0].id}let N;try{N=await X.aiProviders.activate(W,X.organization.id)}catch{return Z.json(fK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let U=N.aiSdk.languageModel(K),F=BZ5($.messages),H=$.tools?DZ5($.tools):void 0,w=EZ5($.response_format),O=LZ5(),D=Math.floor(Date.now()/1000);if($.stream)return tU(Z,async(E)=>{let L=gb8(U,F,H,$,w,Z.req.raw.signal);try{let z=u3(L),j=!1,A=0,P="",q=async()=>{if(P.length===0)return;let S=P;P="",await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=QZ5)await q()}else if(S.type==="tool-call"){await q();let M=A++;await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await q(),await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{},finish_reason:hb8(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await q(),await E.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await E.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let E=gb8(U,F,H,$,w,Z.req.raw.signal),L=await Cw(E),z={role:"assistant",content:L.text||null};if(L.toolCalls&&L.toolCalls.length>0)z.tool_calls=L.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return Z.json({id:O,object:"chat.completion",created:D,model:$.model,choices:[{index:0,message:z,finish_reason:hb8(L.finishReason)}],usage:{prompt_tokens:L.usage?.inputTokens??0,completion_tokens:L.usage?.outputTokens??0,total_tokens:L.usage?.totalTokens??0}})}}catch(Y){let Q=Y;if(Q.name==="AbortError")return Z.json(fK("Request aborted","invalid_request_error"),400);if(Q.name==="MessageConversionError")return Z.json(fK(Q.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Q.message,Q.stack),Z.json(fK(Q.message,"server_error"),500)}});lb8=cb8});var ib8;var mb8=B(()=>{ib8={name:"decocms",version:"4.138.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function AZ5(){let Z=process.env.POSTHOG_KEY;if(!Z)return null;return{key:Z,host:process.env.POSTHOG_HOST??jZ5}}var nb8,jZ5="https://ph.studio.decocms.com",pb8;var tb8=B(()=>{a6();Df0();JO();tZ();y8();G11();mb8();nb8=new V1;nb8.get("/",(Z)=>{let X={version:ib8.version,theme:ek1(),...GD().logo&&{logo:GD().logo},...n3()&&{internalUrl:G10()},...K1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!K1().firecrawlApiKey,auth:Wq8(),posthog:AZ5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!n3()&&K1().sandboxProviderKind==="agent-sandbox"}};return Z.header("Cache-Control","no-store"),Z.json({success:!0,config:X})});pb8=nb8});function rg(Z){let X=(Z??"").trim().toLowerCase();return X=X.replace(/^https?:\/\//,""),X=X.replace(/^www\./,""),X=X.split(/[/?#]/)[0]??"",X.replace(/\/+$/,"")}function W41(Z){return(rg(Z).split(".")[0]||Z).replace(/[-_]/g," ").split(" ").filter(Boolean).map((G)=>G.charAt(0).toUpperCase()+G.slice(1)).join(" ")}function K41(Z,X=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(rg(Z))}&sz=${X}`}function rb8(Z,X){let G=Z.trim();if(G.length<=X)return G;let Y=G.slice(0,X-1),Q=Y.lastIndexOf(" ");return`${(Q>X*0.6?Y.slice(0,Q):Y).trimEnd()}\u2026`}function ob8(Z){let{brand:X,domain:G,score:Y,verdict:Q}=Z,$=typeof Y==="number"?`${X} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${X} commerce report \xB7 decocms`,J=`See the full ${X} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Q?.trim()?rb8(`${Q.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):rb8(`How does ${G} really perform? ${J}`,200);return{title:$,description:W}}import{z as $1}from"zod";var cC,PZ5,TZ5,RZ5,IZ5,ab8;var sb8=B(()=>{cC=$1.enum(["good","bad","neutral"]),PZ5=$1.preprocess((Z)=>{if(Array.isArray(Z))return{kind:"text",value:Z.find((G)=>G!==null&&typeof G!=="object")??""};return Z!==null&&typeof Z==="object"?Z:{kind:"text",value:Z}},$1.object({kind:$1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:$1.coerce.string().optional(),tone:cC.optional(),muted:$1.boolean().optional(),delta:$1.coerce.string().optional(),deltaDir:$1.enum(["up","down","neutral"]).optional(),points:$1.array($1.coerce.number()).optional(),label:$1.coerce.string().optional()}).transform((Z)=>{if(Z.kind==="badge"&&Z.label==null)Z.label=Z.value??"";if(Z.kind==="score"){let X=Number(Z.value);if(Number.isNaN(X))return{...Z,kind:"text"}}return Z})),TZ5=$1.preprocess((Z)=>{let X=Z;if(X&&typeof X==="object"&&!Array.isArray(X)&&Array.isArray(X.cells))X=X.cells;if(Array.isArray(X)&&X.length===1&&Array.isArray(X[0]))X=X[0];if(Array.isArray(X))return X;if(X&&typeof X==="object")return Object.values(X);return X},$1.array(PZ5)),RZ5={key:$1.coerce.string(),title:$1.coerce.string(),eyebrow:$1.coerce.string().optional(),headline:$1.coerce.string(),annotation:$1.coerce.string().optional(),methodology:$1.coerce.string().optional(),sources:$1.array($1.object({name:$1.coerce.string(),logoUrl:$1.coerce.string()})).optional()},IZ5=$1.discriminatedUnion("template",[$1.object({template:$1.literal("cover"),score:$1.object({value:$1.coerce.number(),max:$1.coerce.number().optional(),grade:$1.coerce.string().optional(),label:$1.coerce.string().optional()}).optional(),brandImage:$1.coerce.string().optional(),screenshot:$1.coerce.string().optional(),mobileScreenshot:$1.coerce.string().optional()}),$1.object({template:$1.literal("cta"),ctaUrl:$1.coerce.string().optional(),ctaLabel:$1.coerce.string().optional(),bullets:$1.array($1.coerce.string()).optional()}),$1.object({template:$1.literal("series"),points:$1.array($1.coerce.number()).min(2),xLabels:$1.array($1.coerce.string()).min(1),unit:$1.coerce.string().optional(),callout:$1.object({index:$1.coerce.number(),value:$1.coerce.string(),tone:cC.optional()})}),$1.object({template:$1.literal("threshold"),value:$1.coerce.string().default(""),metricLabel:$1.coerce.string().optional(),ratio:$1.coerce.number(),thresholdRatio:$1.coerce.number().optional(),thresholdLabel:$1.coerce.string().default(""),tone:cC.optional()}),$1.object({template:$1.literal("stats"),stats:$1.array($1.object({value:$1.coerce.string(),label:$1.coerce.string(),tone:cC.optional()})).min(1)}),$1.object({template:$1.literal("bars"),items:$1.array($1.object({value:$1.coerce.string(),label:$1.coerce.string(),ratio:$1.coerce.number(),tone:cC.optional()})).min(1)}),$1.object({template:$1.literal("gauges"),gauges:$1.array($1.object({label:$1.coerce.string(),value:$1.coerce.string(),status:$1.enum(["good","warn","bad"]).catch("warn"),caption:$1.coerce.string().optional(),ratio:$1.coerce.number().optional()})).min(1)}),$1.object({template:$1.literal("checklist"),checks:$1.array($1.object({label:$1.coerce.string(),status:$1.enum(["pass","fail","warn"]).catch("fail"),value:$1.coerce.string().optional()})).min(1)}),$1.object({template:$1.literal("table"),columns:$1.array($1.object({label:$1.coerce.string(),align:$1.enum(["left","right"]).optional()})).min(1),rows:$1.array(TZ5).min(1),highlightRow:$1.coerce.number().optional()}),$1.object({template:$1.literal("products"),products:$1.array($1.object({name:$1.coerce.string(),price:$1.coerce.string().optional(),image:$1.coerce.string().optional(),url:$1.coerce.string().optional()})).min(1)}),$1.object({template:$1.literal("list"),entries:$1.array($1.object({label:$1.coerce.string(),severity:$1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:$1.coerce.number().optional()}),$1.object({template:$1.literal("keywords"),volumeLabel:$1.coerce.string().optional(),keywords:$1.array($1.object({term:$1.coerce.string(),volume:$1.coerce.string(),position:$1.coerce.number().catch(0)})).min(1)}),$1.object({template:$1.literal("competitor"),metricLabel:$1.coerce.string().optional(),competitors:$1.array($1.object({name:$1.coerce.string(),value:$1.coerce.string(),tone:cC.optional(),isYou:$1.boolean().optional()})).min(1)}),$1.object({template:$1.literal("scorecard"),rivalLabel:$1.coerce.string().optional(),dimensions:$1.array($1.object({label:$1.coerce.string(),you:$1.coerce.string(),rival:$1.coerce.string().optional(),rivalName:$1.coerce.string().optional(),tone:cC.optional()})).min(1)})]),ab8=$1.object({...RZ5,template:IZ5})});function kz0(Z){let X=[],G=[...Z.sections].sort((Y,Q)=>Y.position-Q.position).map((Y)=>{let Q=ab8.safeParse(Y.props);if(Q.success)return Q.data;let $=Q.error.issues[0];return X.push({section_type:Y.section_type,position:Y.position,reason:$?`${$.path.join(".")||"(root)"}: ${$.message}`:"contract violation"}),null}).filter((Y)=>Y!==null);return{deck:{meta:{...Z.meta,scores:Z.summary?.scores},slides:G},drops:X}}var N41=B(()=>{sb8()});function U41(Z){return Buffer.from(Z,"base64")}var eb8;var Zx8=B(()=>{eb8=[{name:"Inter",data:U41("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"),weight:400,style:"normal"},{name:"Inter",data:U41("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"),weight:600,style:"normal"},{name:"Inter",data:U41("d09GRgABAAAAAHpYAA8AAAABCZQAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAAI8AAADQKTIpVUdQT1MAAAHoAAAZbQAAV/As979mR1NVQgAAG1gAABGDAAAq6hQX4jNPUy8yAAAs3AAAAFcAAABgdG/yzlNUQVQAAC00AAAASgAAAFpX00BdY21hcAAALYAAAAHqAAACtqzmgtBnYXNwAAAvbAAAAAgAAAAIAAAAEGdseWYAAC90AAA7PAAAYjwfmOWOaGVhZAAAarAAAAA0AAAANjJlWqFoaGVhAABq5AAAACAAAAAkFiATgmhtdHgAAGsEAAADGQAACAzZOdlCbG9jYQAAbiAAAAPMAAAECPMUC41tYXhwAABx7AAAABsAAAAgAh4A9m5hbWUAAHIIAAABJAAAAlA0FF+HcG9zdAAAcywAAAcpAAAQUksrMPx42iXGAQbCAACF4fevCswCIFFQRylQZ1tBmTrBNCTADMCqAZAgnaAMgyg9erzPLxQo0n+Zu+/HQisd7FFXe9PdPvS2H30FAYFt07EhoY3o2SEjO2Zip8zsnIWNWdo1G5uQ2C07m5LaPZnNyW1BYUsqtXjyEtTU7oZGLaFA0sAPhbqUnDhzoaYRguoHfCMjtwB42oSVA5hcWRCF6+rNfKO1bds2Y9u2emcVrb09MdaKbdu2bduY7KkTO/9Xf5+uurc6mtdiRCRJckpj8W++nTWvPF3m49pV5f4KtctVkfurlopVl+vFC34dOSIOLxY+9p53T86McFalXO3q8ix9b7VStavIrdWqVKuCLYIT4ZQNEW/IMcuxDejfdnNSLClrNEXySxpOXYp+EspEbeRRuKKkSHBt5Ga5Vi5HNrZedAPsomQxZkRYD8+J7tBPM+PMeDPBTDTb+YlGEnG/ZGgD3y4pJik0DT+Hb8PnCnJdlJIeaobKoSwoDgqG3CBreJu8Gp5HJuHJ8HC4N9webgxXg0tDUvAhyWeSfX4H3if5TX6NX4Za4GehpvhxqBF+kO8DRvhuvoP/F/6dtEQ6BfYbh7L+R6SvfUPUJz6Gqg4q+tKkqM/vc+LdKYSr/fuoN/3L4Fm8Pu4f9Hf7W/31/kr4bpDmE731ie6Q2wO26StqA2qVW+LmuRluEhgDhrkBoJfr4tqRv10v8Ktr7jLc9+5LVx985GpH2V1VV96VJIXxDh04r9MCfH3Xve7ejZ52L7qn3dN4HeMedffrZ5A7kTTf7K51l7sUF6HEHkDtAlvsOrvCLrJzyDS7Dkywo1BDbD/bAwyxnWwb+6dtbZvan1F/gm/t57au/dx/YtNtTVvZf23Loorbgja3zWrftq/a5+2T9mF7r73d3mhv94n2ajF2s79BTGjsXhRjMsIMuD79G53Bfn36N3pV1A+eR+8Oq+A5attUz9vm9Fd0DzoWboTfie5Q++Jw1SgZrhLWq7UP36DmNDcyrNmVwxRGB+a0Au+WZ66PDTA3NNA+8g1qnZo3E+5Sh4rovIYzMPvjkWFu+JIeiA7MHOPOD7gtxm31OK2vHdcGGeaeqxNaqMMMer2am6/Rk8g30HfClyXE1XrSpuMkjJMw93SPLkUuz08sxyn/1PANav6uLgvXwjH0YXYOaMc1QQfGLZj97NyTDR0YG9R3qDntiN8zzN/JloQG8KaEYnScbqHmdCc6sGZ/t2a4hZrTw7y7hXe3HstxuoWaZzrRf6ADM7dAhpnjmsMoze4q7FG3gK/GNs1xNaep7Kehj8xOP3RgzeYmZJg75yPDPPMzp7fqZnM77mpuQcfVPH8IGdaM/cVofhantel6/NPVxVQdp1uoOS2udpejA7MTV4cXtQMXU7N/ABnm3YPYqTmuxtTKlagMEWksPSQuvWSydJOpMlcmyHxZIjNlmRxAOiyZsstYY2WP8SbIXpNiUmS/STOXyAGTYRrJIdPCtJRM0xqI+dX8ZozpCJzpbLrgziAQmSEgwWwxW02iRCLyLOpx1IOou1G3oq4XY+7k/5l6tFWbEfQc+mq1RCe/dczuk987rqaL4LKSIpvsrnOyBawDK87JiWcfmXAORpEhpB/pcYJOF6UN6k/SmjQFP1+AaeTbE3wO6p5BOql5DiqDsqT4WeDpTLKSt88JntzkyWM8THiDlD0n91o+6cnV5FKSdBZeMZkn2Gf22X6nY3YotrXZZNaYZWaB1f8VC0T0W8D+Bk9T25gMgd8WgXOrXSnm8vTXavMX8xvM16jdrswKmtWuDftXqW1xtSzKLIDOtezUo9Mz86JTg7kcHaNb0W/Rbeit9M4jh/XZxbyF7kT/Q3dTh1FqdxWdSvfjtBQ9X21uZj7EaRI7t7BTl/6Jbkwf+J/5eoCRIwzDOP6fvdq2bVthbYa9OKkbXZzUthXVtm3btu023Kfpl+zkMJPbL3eL3xqjV5kBAuQnQB6gAAXJTVEakZcm9KU2A5hGV2YxmzHMZT7jWMQOJpreX2F6/5Dp/dOm9y+a3n9jevzd/87lAw6QDcepCjg4ziUCoe6jAFmABEqZm0OCM8QZ6gzDcc4H3xOgAAlF/hTJQz4gkH88WaBQowI9qE09POk0vvQNl34DaBXJ6AyAbuFD07GgJCJGW7FXFTu1CYNWYkGjiSmtAVA7NSUZddMpktFidXTfX09RHYYu4dJBLQYdBG0AUH0lBn/rutoBaLBGJ/vnQdAiLcXQSAwl6jmAOugNBiWIOrUGWdWzOrhLpoTmaTqApmt68K9X7rUSzBb7gJL03rfGzatGQ/AJaaiT++5uZteZ1pjto4OEQb8xtCWcTlW1UMy0zXu/NTrcnHnRTd3VaAC98TwC97tQ5DWOdOlx8L39FLCfSvpNhOggEedbkbvxh16TIdodT1HRbS123//w3l480ikttq9mXSIZ3bOuDwv6kF4GtQ9PWq0dkewv/SYuqU8Y51FuzjU6eTS12H32jLlGY0EFiYbmRIBN9nWGFLSMeNQIQ5WDT/Ck6ZGcVRqFlwKkNcJ3ypd1K9jWQL9prIMgQjHRYlx6BpriVfVyI6iXhNQgLFqNoS+go3jQZ4/rt2L+3WytABmiZ0SQvhBPAlTk6T8m7AFIkiwI4/j3r+7pqZ61be8Za9u2NVjbNgdr23Zoz3fhONu2Gb59l5Ghixf5kOX6dZesyN/zISKlBGmKKaYOdVSMetRTcRrQQCVoTGOVpBltVYrO9FEl+tFPdRjAANVlKMNUjxGMVAPGMFaNmECemjCdWXqcOSxUc5awSm1Zy2Z1YRtF6s1e9moQ+zmswRzlqEZwnOMaySlOaRRnOKPRXOKyxnCVqxrHHe5oPPd4ShN4k3c0iS/4WjmKNNCPpLH+tVJP960UJyJSWRIkVJUkST1IBhmqRYqUyhMT29Q0aTUhiyzV9yOEZjRTRHNaCFrSUkla0UrQmtaWb0MbQVvaWr4znVWGLnRRZbrRTSXpQQ+re9HL6t70VoqhDNUDDGOYEoxghOoykpGCMYxRkrGMFUxggvUnMlHFmMQkpZnMFGWRTbZlcsixTC55ipnOTGUyiznKYC5zBfOYp4rMZ755LGCB9Rey0PpLWKKIpSwTLGe5kqxghWAlKy2/yiQwibXWX8d6wQY2KMlGNgo2scnym9kizGm72e9gh5Lkk6+aFFCgFIUUqjRFpljCFauY4n7V4AAH9BAHOag6HOKQGnHYdMtxhCOqxjGOqbYbV+AkJ1XOpZtymtNq4NKlXLq6SzfkXd4XfMCHiqz0deP6blzHjUu6cSU3TrhxYzeu4MZVXLeB61agGMVUyX/Xsf+uY/9dx+6NS0dujOtGrlvRdWvQla4q7cZl6E5365u09XvSU6Xdu4x7F6cPfRT7PyP2f0bsv4BG//sFZLp95OqRq5dw9SxXL+bqJVw9y9XTrp4y9VlKMsfsk65ezdWru3o1V6/u6rh35NK4Ma4buSsuWspFIxet7aLFXbS8i5Zy0YSL1nLRpi6a4aL1XLSy/1+buGVVV2zo/9fKrljWFWu6Yl3/v5bjHd4RfM3XQuhhJSWV1eePFepF3dV1a89qt5d862/WSi1WtoZbwdYHCTKJSTOMEfh3Rbayl0Nc4Rq3fRsJroT3uCFxO3yjJIfCQG6EV7gXzvFUOCc4pFaKbPyejd8TnFApYTLdlCQz/EWx8C0dw3e8El5QxIhwlEXhtuA5SQmmh5eYYTEzvGSKCckybzDDYqbFtvAP2y2Kwj+KiCRiSaizH2l1jnOQ3WxkurU9ad3iVxpTl7jZ+WbnsZZIv+uyTupks/Mtfn18u/X2a6dWC1XXZ0T40VOMDnSiNyOYyCTsF0M2OcxlMVsxWfJNs5AiE7lue51kYljLpLCIbGtzwiLBofCVIk7Ynp7xPe0QnmKrTSlDFM6QCPXIsDYV8sm0NrbIsihm0TvcYEQYz0Rrsy222Xq3WxRYv8javeGMkqTDNEZYTAxtbK42wkY3lNJntoYONtfgIBbZtFU23mpTsOxa39NLtqf5ZFubE/KVYER4yrJPWeYpxTZaa6PuTLbMFM92Jz+8SaFt/Y5tOWX7+zPFLDrYmgfbmhbZHFvv2++CXMvk+fbOCPLtuPF+hq3xINkWi2wtW/xMPPUf9+YAJEsShOH/bNs2w3G2bc97Z9vusyZ46kPg7Omz6mw+nG3bvvkW3ZHRFTv9tntrlt+ia1A5FV3MP3M0VZdSvfx/S1+t6S13YkpNvMiVmlRaorbo2lpfaynP/EqZTeU4ow/K7nrFSi5O0qySxLsSczK6hc75psQZ3f8/4/IWGpMzveqLnudIvi6vLEmszKFqCbFdPXiZ1yfkq5Pwo9UrAXXiijrKfJVOnbu18NZvVg5u5FErXyQZpisyJlOxRVJOUeF3q2+kdRnf/fnz81yqW3TpsIxiY5wmI+Zj3za1VAPm4Hyr+aFL72Z/X/H21W4ONZXbNG7NKWkyvjNVY2p1sRw/8zMO8yc0mfmWM5AqyUt1Xw0e0RxZb3+nHPwqH/n1ArlUbYW3+qrcUVOfoa4QTlYXmyuUBRmjGSQSLcln6TPZfLxHU0m5Z5ykBbJHM6VXIokadS2phbJxMEZlWE3d8LikyXg3i3Aswnf5eA2JzbTJilQE7pCoEdmKLt4t7ZdaL7Agt3MjoyRWJLF4y8yczBus0soSka0aJ0ksgpPBgn7khvXt3T8WtY3R1HmUjVmBA9hfImJ/zSxxsYSzCIczrezRbP1/sKskMS3ry2C0DBxHN38nLoiZ7E+teBSzP/tPOOaAy2nNphMQqxB+tPolFHFOZk9vHTa4llckiXF+q8IhzvcPq2BWif2exfVPXJWP5cHPVvqyeH8LJ2i1Wq9dEWfeDIiUBGv9/l3mD1l8osT+sVuBtcr7D4lsvONy8dg9NAPO9m7X4243aLSyVjjCP1E3PS3ySiuljjrnqw/41riGWL3CM9lJzBt9JDQkYr4snvNc1NKawT0kJLKVi1fTfkqvodi+vL/aBM9ZcVp58Enp2RgAz1gPiqMlNmd9jmsZ097D1HL/jq/L+qzC1lLz93z0nCitxTXsYvXVfKbXfeEanKwcrkMH7RM+M6vf4DG/V3i89TjglbBxwCuFe3P16HcD14Y4uOWG4Uh4y856U0m8IYvu2flvGqUsJWl8Fk9an4hbPGsGEUnvOQK2l8zHfzJ4lFckXBW/1axVvQef2Rz8VwZxqZ7aPzut+9aqtuByHmQMB0ucn6/FLRIRv8lnxqx1y0mMYRWJRYjy1vzPpy7xeL5+3iKP9ZuKoyrrKGfwEw1qEud4EewLJKIeK9H89myDBqtIzMkqeWsyeMm7B1bfEFfmTtHbS3zhZ3+Uy19sfuC14EdV5YzME5T2U54HJZ1s79ncnmkoo1OZN7RV6Vhpw/+MYqhpkMENbP4l18uDk3AaMIqULEmT+Z6Mr2T1jLOyv9rNGlba3+L5A9D3xBKLFGYIrt/+8cDTvJVa5gOchCs/OkkkpuXovLXqY52IZ6g3v9J01EmkzuuRqgRtyfqj5uWcV6KZKIAwXbk94EJnEvsH+NyWVcsqXoShEs1XFE5gjCU8W5L3WT0sIzzgmwWL8bs93zvzaETS3rnQH/CqBgQiDT6LyMAV+Y+8pBFIa7WOeFBaYCXWb/7u+Sr2DiJc5o31Mxw94XxdVtIIgmckfufQ3Hc/vuZHGfyiXuDQ4R1fsMzf9fuuUDKn2g71gZyNxKmHIHFNJdXyQf98EApjVI4Z/WvwnjJxB8/2DB1YFIVReJ/YGtu2rX5sT7/GrsbTjlHGtqqkS+rYtlnFOvcGaz/81e1e9z2W4cAIMMYEw6qlHBlTCejChDVTGPengmyd5iQbNGfZrLkYzyquxrOKr5zTlsgFbanxrLLMeFZZYTyrrDKeVdYYzypbjWeVncazyn7jWeWY2qu/esp/7bykaReMT5WLxqfqWb3aTRz4igO+ONs/c4UA5uPEAtYirGOD7o1sQdjKNuaznR3Wye3WvYe9CPu0deznjFVlV3DiKtcQa+ScuMEthNvcxV+/rvt484BHuPOYpyzhGa9YwWveEMBb3uPFBz6xkM98x5Uf/EL4TRAOBGvrCSEMB8KJRIgiGl9iiGUlcSTgS6K2kiRS8CWVNBaTTgZCJlk4kk0uDuSRr7tAc6CQYt0llOFJuSZUUIUL1dTiZlXnSepp0d1KOx500MNyeuljKf0M4sEQIyxiVBPGNAerQI9aBbrFKtBdVoEesP7zkPWfu63x3WUV6CmrQI/JWlnLGlkv6/W5UTayZs41H8DPql+fKbLt6sCKGACj8J+7bskg1911Zt3dnnCoCXfvA2sDLQBphHCA1XgD39sJLWic6tdShAZUv5YuNE4XGtGFztKFdulCe3ShXbrQHl1oly60RxdaNBfNRZXNZXPZn1fNVZXpQrfoQs/RhS5TBlvq0DhlsKURjdOItmhE6zSiDRrRFo1onUa0QiNaogzOUgZbGtFpGtEZGtFpGtEZGtGAMthSisYpgy29aEAZbKlGA8pgSzsapwy2FKQBZbClI+3QkcbpSBfoSIt0pCEdacc8Mc/VpCadox1dpwhdo+u1dL3BHxtaUky3+bU+oAk5DSHkLELSiiuhfiVV1pAqfoZoyeMkhZAUNoY1pwXFtahlZbyQ6+rXDT+HcFI/4uT8KSfDOKnhpIKT5BEnBe/E97J64LU0vZYXMnrttRi0FNGSQ0sMLSNoaaBlBC0Nr+Wtf7/TByVwEvNOPskgJIeQUYRYhJw9IqQPIbsI6UPIGELKCCkhZAwh57BhsLGNjVlsrGCjio0lbKyiYg8VS7TRK7TRXdroLm10FxvuiA2HjSw23BEbDhtZbCxjYwMb89hYwMY8NhawMY+NBWxM0Ux3aaa7NNNdbOxjo4qNDjYcNrLYcNjIYmMGGxE2JrExg40IGz1stOmnW/TTLYQ4hKwhZB0hawhZPyLEISSLEHdEiDsixCEkixB3IOSWHELmEJJFyBZCphCyiJA5hEwjpEpvvYmQHfPFfJOjmQ7MD/NLjnIaLeo/aFKNfhdyD1ByLFEAhm93D2Lbtm3bduYxTmYna8e2bXMV27Zt2076/afO24mTc8/X6a4utaqi2tnqfxfXsfw4qn0d9lXGA1usb1ONS8YRY587dhCR38RClW8y4a+27Y0yhk3tEZxToX9QcU4/oC/WZ+rt9TZaOtElifquRc1tsdWsFl/NZwmluFSUxOobTMd3FyoZZBCRX8bJeCmgvqNCfEVRUkRWyzopp76RSmISVTW7Zpdq6t2orp5mDc1X85Wa6unU0gZqA6W21GcU4X/sIymSITlSICVSITXSIC3SIT0yICMyIRuyIwdyIg/yoiAKoQiKohiKowRKohRKowzKohzKowIqogmaojlaoCVGYCRGYS7mYT4W0KOFWIKlWIYwhCMCK8izEquwGmuwFuuwHhuwEZuwGVuwFdtwGEdwDMdxAmfwHrr4mMvFF/FENyPFgAVW2GBHDMRELMRGHMRFPMSHLm1NhzjA+GpOFSc84DIHS3d4wgveMBjxRM7hPGJw3VVlIZZgKZYhDOGIgB79f7YlLnlFFmIR6YuxhP2lWIblqpxIOCJgivB2iMSiVENZiCVYimUIQzgiEIkoWFS91OMuG+O3ZQ364c6v7kNnccAi/cwJMsisLkNMP1lqrhJNCzHXs3WxNeSROVMemzM5cnB00Zwo78zl6iiZBJMjBKHmei2HOV0rhuIoidJogTZwwR8BCEIv9EZf9McAnMJpnDGni0Yfs7L14Ym5RxYtlhpZetqLuSOHPZM9iZ2wvbPdse0j5Tdh22DbwDbUloSSPw3rM+sOYp07lhLD3dFRhUNFE2st9dMBC6jIZc2ggp8LqEL/NiwvVDxyx4tvwmWcMmYanY02KrLpe/RN1gzaGUZfFfZiWrj6s0UitUYxE2GVwnzhNvW7i7h8x80YN9pKL0aMmUQ1Ne9Xl2VETTXX15I1RF3ZTNSTHbKTUekMc3pDucIM3kLN3e3lPeFkZUd58WB1R0VxqZGtu5q5PNX45qPGN181H/lpA3hi/mruCFQ/lyeUJ+bHm+GPAAQiCF+8MWqdRRh9T8Q2MZIgM7IgKyqhMqqgKqqhOmqgJmqhNuqgLuqhPhqgIRqhMZqhrTlUHPiD/T/xF/7GP/gX7dAeHdARndAZXdAV3XjfnfBAJPcsCrfYv407eIKneIbneIGXeIXX0N09SB49AlFnJ3HCAy50hye84A0fcvvCz6wm/ghAIIIQjBCEoofZU3qiF+JSa5g44QEfc474wo+v1h8BCEQQghGCUBhfPhfqaEtZB25x7jbu4Ame4hme4wVe4hVeg1KmjzjQjTqc8IAfx/4IQCCCEIwQhCKb+750o/dOeMBF293hCS94w4874o8ABCIIwQhBKG7R2m3cwV3cw308wEM8wVM8w3O8wEu8wmvGr5GM3aMwGmNoL73obA1YYIUNdsRATMRCbMRBXMRDfBSG+6q4M054oAfpPdFLrVqayEof1hahvSlaB3Q282td0NXMr74NRl/2O2k+ahWQg6Mv1wRpHO0SnVp8qMVHvWETxQFNe/T/bNSI3D6iMQI05HwkqVHQ1Qy2DDpzSENqu05uRntK9JSYso8+sQJK60xKF3SFi/760LdAcw51ThR7dC7Olv7urEHKHFKGqiOdfJznGcVmrgmTnZwjRWMtyDdthGnkokxPdb0xvsv9bY5UKscQTKSdHdiJC9ydi7iEy7iCq7iG67iBm7hHXt4IeYO3eEcL5dGE1rpy75yqNQctDZX4P2qJFsJoIX90TT8tbagzXcDdErvWgjwuriGEPAM+vdQGcY2DMUKtVwth78sU23f5B/MrZ9z32UfdZ2ZNde9VO/RAvSVsw/4Dt6Z+/QAAAHjabJYFcFzHFkRPz5slvZW+IjNqzczMJMuMIcN+YzjSWuUSBBSRIczMn5mZmTHMzMzM48nzQlWqa+69272a7n0wJQSUsZ7bMDW1q49ifN3OxhwVDEVLFh2VcRoff0wSEIYAS4w4CSx4JZFXPE9y9866Rpp3765vIHdcbk89J52wd+duVtbt2V1HTa6pfi/zG1xjZqOrTAbEaF9H+Rr3NQDKSVJGmgoqqaI7PelNX/ozkAwg722iZRnMEIYzgjGjvjbqksEPDb5hcOvg7GAG/aT6guq26m3V46uT1eMHPufWv9z6hlv73drm1nS30tXjBzzi1m8G/WTAdQMuSK8M7wh/FV6T+shU6Dyl2YQAkcRQxxSlVa4KfU6VOkJV6qbu6qF+6q9qZTRAAzVIgzVMwzVEQzVCI9VTvdRbfdRXozRaYzRW4zReEzRRkzRFUzVN0zVDMzVLszVHkzVX8zQfQ5mMQlCNVrh5ldZTqU3aRE9llaWXTtGp9Fa99tBXTTrIAJf2fCbov/ofkyjNbBTIKqa4EkoqpTKFcn+veuW0RzVaquVaoVotcz6rtU7rtUZrtUlZNalZLTpNp+sMnalWneVc2tSuDnWqS/u0Xwd0UOd7V4OUdtkpcl/LUO3zu7od/c4blNXntU3blfvMnR7VY3pcT+hJPaWn9Yye1XN6Xi/oRQwJXnJANVqJtElbSape9aTVpLMod9nOo6du00P0Ig4sTfwicUOiK3FSYm1iaiIefy3+QPwv8W/FL4ifFt8VXxmfGK+KfRR7JnZL7Gex8bEq+5F9wT5g/2V/Zr9gz7HN9ji73s62g20yeCN4KPhb8IPgmqAtOCFYHUw0b5n7zJ/MN8wFJmc2mtkmY6xL/C/9SNeoVds0VQOV5BXu4098g0sIMKmrUlchfoGxV/gJRhIQ2NZUW6oN8QWnuLlI2ZU6LnUc4iDyHc+LRkQOY1emVudZY6eyDbEJN6WmF/H9qUUsRKmBBTaVTCURo5HveFb0RXRHydciToiXMBgFCkHl6kGKgETsDwXQhezfIL9PPPalw+A4ZL9RpMViBz8Fy5G9oEixsbpDYDyye4v4IHZU7Ch6Irslzwppjc8xswCf4xclOfoehs9xXXEOd789fI624hz2iUPwOY4rzmH/Y//jc6wuybEOl8P+oACf477iHPayw/A5flOSo/lT+BxfKMmRPQSf42BJjhpb43PkSnKsIkBUIVNIbYhrlTaAstpOQjnlCNWmg6R1vs6nhx7Vi/QkINAbesNsRGZ0fs476h7dY6YjU4HxU0H5nX5n+iO9gVyPeIy+ZizSAwT6mp8LygV6DulP0VTgG3Ub0reQbsuz0m+QriDQNoffFPFfQWrFqNZNBfYipBPwPeJA2khMGyOcUaLMxGqmx44SPkOgjMPyErYMozJNLuZ4C2lgnhH/QDyB4QmlgYAYt0X4GXJVvOd5y688bkKuisc8G/AVh3OQq+I/njNcQiNyVfzCM2IXog3xtejzVYgcFOXYj8gSMNxhIXiuAbEcQxVjAYP0X90aaUchx4pKr1i6+AHwIx5iAo+4zFk+cGjBEPcnMP4ETvgTOPQncNqfwD38CdwTQxJDJ/C+QwcfqgedWqAlXKejdTQ36wpdwRf0G/2eL+olvcxXCUjopAKicw6fMK61isAWn9fzxDRdHixGzI1Yq4wc/C8aHnGB0krTG1HlGSEt87UW58xLBZQ6c0ceJc78JkKJM1/zKHHmModS5xW+LvfOjUXIIW7KO2/J4yjE/rzz4ghzEXV557EewxHH5J17O1QhFuedazAEGL0KetPhFYOR++Q4vkAronvJubIU/8R5XrQVKVu9sjxSjitStnhlfKSsLFI2E+BZcwViYl4xqleOABCTMfSne5G2VKsRKW3SZm3R1ui/iNPVhZDqsYBIIrWR1FylOYa11DCbkf5ZTBPX8xi1+9ocMc955jnPCKsH8tP9fgp4iLv4F1V8hy9xDRexnzNo4AS2+f1rmc90xjNchrf0BIE6HHxXi+8tbvLd4QXPt0e92fcWtUe9WS9i1eG/EU15riXPRd/z+3rOTxHnEHEOzcQYScbf/bSe8b/0Xoya9WyU49nI/z68PwlmMpGRDKY/Pan0V+opf03u9tfoSX9V7tKd0e95MMr9UN5RJNXkpjZ16Dbdrkf1WOHO0Oa7v/J6FKOsr5uKvtEVdavbvBIHLOuZTIYKAsAwl6mAgGERs56VETM0YnpTiRjvWbePsgipLVIz9M2fc5JRD/D6Jl+bCnmOGE6y4qaKTEWm/B/lDeUN4R/oKcIvhFeFF4Rd4WlhLjwu3BKuD2vDueHkcGQ4MOweloV8QhA8AAFixAAA7Fyc2m/btm3btm3btm3btm3btnb9nT/xW37Bj/ke3+QrfJ5P8VE+wLt5G2/kNbycF/FcnsGTeRyP5H842xd7ZQ/smp2xQ7bD1tkSm2UTbJj1sU7WwupZFStlBSybpbFEFsP+s18s6Ad9pnf0kp7QfbpFV+kCnaZjdJD20HbaRGtpBS2meTSTptB4GkX/UpVv8kYeyQ05J0dkl2yQZTJHJskI6SddpJU0kGpSRgpJDkknSSSWRJDfBPkTv+B7fIVP8QHexmt4Ec/gcTyEe3EHbsZ1uBKX4HychVNxAo7G/7DzT/SOntAtukDHaA9tohU0j6bQKBpA3agNNaIaVI6KUC7KQMkoDkWiP4jxC77CB3gNz+Ah3IHrcAnOwgk4DPtgJ2yB9bAKlsICmA3TYCKMgf/hLxjgAzyDO3AJTsA+2AKrYAFMgzEwCHpAO2gCtaACFIM8kAlSQSKIBZHgL3AI4VN4FR6FW+FSOBUOhV1hU1gVFoVZYVIYFQaFXqFTaPVDTFlMSUxRwHa9F5MTsG1vxKTFpMQkxSTCxMfEAWCxDkwAhkIYiNY/pYpx+HaRtuEQ7k0g5Jy4rxPrym23vnqloHCwsTCtYlE42FiYdmJRONhYmLZjUTjYWJi2YlE42FiYNmNRONhYmPF8f73/vTzQsZEkSRADQTmRBrz+Yvy07ZVzwTgTaqrqVNSzY8eOHTt2bNmyZcuWLXvssccee+yxYcOGDRs27O+umqo6FfVn931TU1Wnop4dO3bs2LFjy5YtW7Zs2WOPPfbYY48NGzZs2LBhf5/VVNWpqD/b77OaqjoV9ezYsWPHjh1btmzZsmXLHnvssccee2zYsGHDhg37+6ymqk5F/dnz+aupqlNRz44dO3bs2LFly5YtW7bssccee+yxx4YNGzZs2LC/z2qq6tQ/63N8js/xOT7H5/gcn+NzfI7P8Tk+x+f4HJ/jc3yOz/k+q6mqU3nFhg0bNmzYsO9zfI7P8Tk+x+dP/qemqk7lFfs+fzVVdSqvnvX5q6mqU3n1rM9fTVWdyis2bNiwYcPmWZ+/muqrZ33+6n+eywHadhgKomfm27Zt27ad9Nu2bdu2bdu2bdt6zspNtafdtY+StFiFBZiGMRiEHmiHJqiLyiiJ/MiK1EiI6AgrfvJN3sgjuSHn5IjsMnXePJkm42SY9JNu0k6amdq7Kq4L4ZmhxnX7B2XoxpWhhmepLZWhgmepLRVuuPeAL2lfclY7q53VzipnlbPKWnPnu6RdstZkm5zVzipnlbPKWnOtXdK+5Kx2VjurnVXOKmcVlGQKVTNU+VBFQ+UO/l9PHipuqMihyD/8xBe8xys8xQPcxjVcxBkcxyHsxQ5sRsWqLM2CzM60TMyYDI8A/MANXMAJHMAObEBKycR//MJXfMBrPMND3MF1XMJZnMBh7MNObEGP1VmWhZmT6ZmUsRmRgl/4gGe4g0s4gX3YYu6lAeiBDmiBBqiN8pKffvzGN3zEGzzHI9zFDVzGOZzEEezHLmzFBqzJ8izK3MzI5IzLyCT+4BNe4B6u4BQOYBvWYBFmYJyp4jugGRSqojQKIzcyIzUSIzYiI7T4SR/phlemir8tRC/Jz0HswXZswrqszJLMz6xMzYSMzrDwwze8wSPcwDkcwS5swDLMwSSMQD90QSs0QE2UR1HkRkYkR1xEBuWPfJIXck+uyCk5JLtkk6ySRTJLJskoGWS2/tJs/ZYQvfDK1DCDDRtaNrD0LLWlCuZtM72XobZUwXxt//AHB/E4xzYAAyAMBMWWNgLGyKwZJyms7668aNGgRkaKtg4tGtTISNHUoUWDGhkp6jq0aFAjI0WuQ4sGNTJSpDq0aFAjI/16s3oiI32NWgOQLEkUzKzpmW/btm3btm3btm3btr0827a+jb6Mid6+jtmIi4qNqs6Xme9V1Y6qOzhqx/bOqJ0zahsctWV7Z9QuOPrXWWc+wuzZazdGcTLonOhk1ykmdOUDrerQ2R+ni5MNBBntZiA5aGUFFM8CA3Id9wMuDkDfC8RnRW/jUqkyebjvIB6TelpPMTN4mLvt0U/uxvLipfPwJiMOLsc0JhcrjYfVFgGsddof4qTycErC75z8homRwsNIDgvN1XYrnuy/cXMPPhS322xFk3iiH8AgJfoqlkireYAX3PdozWEks7GDPMTDPMKjPMbjPMGTPMtzvMDzPMNTPO1xnQxCc0YC7eA6x48mL2pBbLmn5xP+wycwAJIiFa9zJ+dyIJuzLLMyLu7hC4ThJLZjKaZiKLqjJeqiIgqCrgbEk6PRH6BeOIT7QCEIjtwxS4iiGnvjftDF0JWXgwDoZuk6FC8O6GEKCcHVWnnZwmLjxwNDKITGqokPhlQJj12nXQ2pVCR2LdkyeO3X8wtkTdaCjdq40TML5BiOE0dc50mBvEjG9dzAjdzEzdzCrdzG7dzBPdzL/dzH3dzJXTCw5Av5xpdjQjkmdnkVRAou54r/8V9tEMAeu0GvY8rbyDuhvBPLO6nrhDq5c0L9NwyHaiZlQsVx1omfQcCJx4dBbrGMrTsjJiCmrgDLjaGMMH9MhkBVlPC/8P/m/8b/kT/KP9k/0N/en9pvWfesb6zLwTPS7FZSK+Bb75trP63Q0T77TGo+MjfNeXPU7DYDTXt9J0nIZ/yFH/Fk8DtBS1ZnUTzCD7iOs5iMgdBJPZ7BMApPYRiGOCiJwjF3CHAfhhF4DMNIW2n4EA/FfgDDcNzVPaZ7UhIW/ta1FdTGx5/i/ib0D7F+l0558YuiP8vbm/dH5fpBjO9Vw1fifSmvb+X1jcvrc+GfiS8EH2v8kZhC8IGQ951q33FG0SHnHqUaIqWKUA03leWWKgmT5o5qiJnxdbGvCb0qxhWxVQEuKXrRVdN5IedcyGkhp4QEdK8vK9IjJRLjiOo5rEr2y3Wf6jko7gHlJCwcda3CbjF2uZAd0m8POeMtct2sPJuk2Sj2Wrmsl2adk2e1GISFlc5KLnVlWiTt4pCZ5irHbLHniTdLORaoghnSzHHt7zQxp4b0Gi/9ZCknyXei2BOkHyffsU6Foz3/oyPFHSF0uFjDXHmHKDpY3gnREx3REg1RE5VRFsWd3RmorAPE7aVqekrRQ67d5NpVrv3hY4SN9bP7SBvta/d3bbyP+jD0Vh+hSju71rKjxh1c/yfthLR15tXKGTXXKBEGu+5iVkV516o1U71N5VBP9dZQpTVVdR3pa6veJqo3DI3Vh6OR6r6LhsH6G6iPQH2obte6VpN7VblUkWNl1yuhoqIVXPMpJ6SsCyktpJSQuKhoXxdFfuREZt3xLK5oMc2kqOZQRP75NZNCUhVU9gKqLeiKvIrnca1tLqlzShEPtT17mxLZ5JtVmbJIl1GKDHJKJ11aZcocXK1M6vUqQWrnVZLS2aFkruyJ5ZUkllkmVNYE4scT06eslmoKSOVX7vjOf04JGCTSk5WpkEbPTuZDSZRBeVRCddRCS7RBe3RCFwzCUIzCGEzBdCzEEizHKqzBNuzEHuzFSZzBBVzGDdzG23gPH+JTfIGf8Cv+wj944vo8HgnL5h/DcUMEHLQz2qMy8sIPIHWwEZbiahoZ+BjGSJB3eRfkQz4UaulzmzhqNx9O2M3ici6HgQFAxY/iBJe/AcUzKZAAeNotxbENQFAUQNHreS8UKhPYwRwaotVKTGEIleYbRMQCv9Fb5UM4zUGtlRUDK9UD87d4NnHPWMybjtADA7+6qRoWCFeyhxzSUyaIHIB2dgAF2Q34yxCWAHjaBcGxAUFBFACwvDvQANQmUAIdo2gAAMBshvuJEGoyejIG0vly/8WU93rziBDbx/IQc0lFR18gxUwDIYhR+iNLUixAUACXqAfDAAB42nWMA4BbQRRFz52f2nY7SW3btm3btm3btm3bdpvatu3uPvMABnCA0DjoW3aZaUAOsuAHF5CYtHRiAZ+UVMXNBrPLnDMXHDkuJ4AT3RobwAayoW1EG9V6bCyb3KazOewCt8c91D3cE/Ljp0+fALAkIR1TWPSFUsys/0HBcRz/vyihbHgb+RslmU37H0XAMQD41Brg44eP9z/ehm/13CsHr+y+sutKLriS50raK7mupLqS5kpJb0lvA28hb8HLtc0TBGQDKnGTj6BJmgIAmvC7BtAYfBUdVBZVVzE+aLMyq5pyKKf6qY3qqYzqq4QaqrFaqrVaKZvyYQhOSMIQDg/RiUVckpOC1KQjI9koQSlKU46KVKYhTWhJazorl0ort/qqj7bSjcEMYySjmcJUZjCb5axgNevZxHYOc5RjnOQsF7jJHR7ymNfKo5LKq446pKx8FCrOJ5XSSG3TQA1Rc/XWAO3UYHXQaI3RFi5rhJpot0ZpqFpoozZok7LjB7/4w4WDf4IQivBEICKRSEBCEhFPD8lELnKThxxkVztyUoWqVKM6bXjHGXrTnR70pyf9GMBwxjKO8YxhPgtYyFzes5nd7GEvO9mh9uzCyxWucpGnDOUJxTlkUFXt1R7t1z490QtV+dLX/gyjoqVOAAAAAQAB//8AD3jarbwHQFRH9zd8Z+7dXYqKdNRYlqV3WGDpvUgTCyAgUi0giDQFA4q99xqNLdhLTLPFqCnG2Ess0SSaXsQkRkmzsMN3ZvbuZTUk/+d5vlddd+c3c+fUmTlzZnY5EzSQFPKPFFEcz3XnzDlrTsk5c75cABfKJXIcUporkbUyQKUJUFqreXOluUIVoEbwrrJWB6itVQHOtNbakZZoE2tzqKeYWCOi/CPtYPw6MUJRN2+S927dQlFR773XwaGo96LgH5Q6uPemkfemRUVNQ1HT3kNRy5aR96pIodFXj7ioqOboKDQNWkMbRJ/ipkVNg7ZfbZkWtSUqqhANKIz6KgoKUYXwj+Mw8M/JzsiucgrOguPUSImUvJJHzk7wV66QKxS+SIuWYRPyaq321wnY19Pdo2//fr3dXN1lV594oVyyAyfNWbijvH5y+c55czo6dP0plmIn6JvjFOghNwXVSfhsCT/PPTLA10r4WeTQJX4Gfdcl/htSGeBtEq5FszlOwkdK+DkU3NneaKWEP+aadTgJofqQ8Db0yePkLuj+gT5BdTr9Kd4H/Zlxlkx/1kpz6cUjcxXyxTNlJto03Kydjg+1OxDvFbgkhdyQXdWS1Y/JIi0qJptwOL6m9WRUoDfGbXcdt/yLqE7C10r4GcEJqPPcXI4T2oG6JdeXcwb65ko/GxtrK7lcYd0P03eVo9IvMMDfyUmlDFD7BdKPKtVcnL7t8/EJk9MyVo+s+3Y3OYaM5jSFV6WRBw+jS0Nry/+SXS3ZV5U9c5iFGZ+zuXLS0fKnpZmRRZqPvYeHDRlDtTqXhFC6wE9PUUvjHydziMvv+Fm2SvYD5wjasnfAAf4WDmq/fthW6cWr7OVyaysbG7VfBNYoe/C8xUfk9MFDKOTD5s/3VJiT8ybBmZVRda8VFe+vjRo/PNgUBXQr2faN1QGU1fYbGn4gcd6pqREFsaq6O5teuV2lii0MLz2xJovSJHmMZhDHISojlVAD/vtv1DF17UCqKRVe3Ozj4uKT12dD88b/k53qEZVC/tiaKSSvvm9Mn5buybn/xp27Sj5QGDI4bwhojGmGWdBC9Od25j9gQVkZWNAE5hNOqQQDChbWVlhAorVAGLxS+zs2/wrF7t9P3iExF5adLC55f+kl2dW3yFt3W8mbbyHFmE927rihtwztD+hYi5YppZZhnlIJdEyZl0heOpf/XpuKp2mn4UPUI196TOZroRfWmnFrqxuV3A5U1wV+Bo3pEv+N226AL5Xwhx3EAB8p4ee4o5240S09jjH3Tlc4+kuPkxAqlYS3oeGPk7vg5w803IDubAk/z01GdaJ2RoB2jA21M5e/rh2Ji7SbqWYKH2s/5EQP3wTe5tS1h/ekLhaoCdQoA5TUjHyfj8mpN46AW039dHd5T3KuZ/CQ0oja14uLXm+oWO/mjMkxXLGDfGH1Nhr+E3B/KGnO4QmBmWH9a2+TD+/UDUqKH3H36Ifkx7XUtow2k0olah/mUAkfKeHnUKpeKlmtZHPp71zki+cjP3JJWw+S7cC5T7xwo3a23ntqmT6dRH3eYvpkPSmWSvhDrllPAR0BCjy8Q8/oCLlM1wXZ1Y6Ojlc5Dq9iz7jqniFbKbcdrwO+htpSxB+R7Qz/ifZFpRPxsx3JepvhTAP8DGfK2i8G/IAB/ltHEsNPAd6kmC3h5zv6MbwD8BiqJRE/11HA+i8Eup8a9PNHRzvDG0kIOkV1IeJtHU/YSIrr+FlwApnNmQcEUDtTmweA/FYC1twlfyDfspycUuRFHln99vXwvPLKygrB5umv3/wm2mQJe5rZhAdfCdQgJYJ/CmoZQaHwGBeHxqOJ2ms4nKwl2cADKSP7u5kmLB6G9mkb29/Csz4jWaJVljDO/UV/OKkfFZSGhLehA9IcEAq0ZYw2Hf1sdbr61F0/5kNZbxpRzwp9b/QpCW9DYfre5PehNy/Wm6WNja2NLZPGkjqZfyAdBXIFTLUQUHhhiCesbGFNAhmvt5k5W1mZm1taOZvdR5+Qi7wMI2RqauvtZvYX6Xhq5uZtZ2KCsIwH98zweSk7a8jgzOz1PngfOOoJ3xW7s5wc3dxzdiz00sbgE17zd+Q4OfXtn7l3pVobA/wyvpgcITo58Fa9HJRfCW/Dq/RyyFaAHH2ZHIjJAcuHExgUik40EgLIhnKegW46JDtbWmAsN0JBZC/J8B7s3kcp8HIFsNojZN4wVy8n5/x9Yfg8sLovbXl2QGx4cMkrau0wTrTXCuaZ4TrPRCaoTsLXSvgZ9FeX+FkUKNkXOJbwNnQXJMFsHrgAc5MZ199gdhIXFF5cT/QrIW99ipw6fBiFnvoIhRw+TD76qO7VwsJX62r3Fxbul1bdA2T3b21kzwFkVn1n8yt3qmvubNl8uwZ4YLTY6I4RZ4SXUJ2Ez5bw88iSRiqAvy+7IO8JWnbh1JQ7UKvCma7TOiZB6RpbBSiaLX5IZNPWRsbYhsaIcrxREApXlYW65zG+Wak02GMEcK99jI2zaoB5HwVKrnsV3hTavzKtcjGeP3p15JC9TJpczM8fsypy8D6dTJfx9xoqUKX5ZSrdBDMz7QsaSYa1kgxnUSSq6wI/g7ku8d9QhAE+UsLPoYxO3GilhD/m1neJdyBrA/yWhLc/g1+TcNJ1e4xRRpf9/KXHSQj1GwlvQw8fJ3ch1x/oIdhSYLYEXLSl5n+zpqWlkv8fLCpbiGwu/w9mlY1GGnKWo6MERDkM492CjnilfpR0hkRIihXVvPI6ef/1N1DUJ8IybaoYwtttnv7OmNFvT91+CKV/+z1KPySGTcL50hs7tt0o5XRRnfA10OjG2RhG5SqluTmN61hYNxfH77k/pfnhPvLb7fzJoaEv5n8uuzr925Wrvm4mvfCd6Jo11ZF01mB9MStkiLMDxCxstM9io92Kc31+tEN0a6l0lvNKOiEbDnq1n+bZcT8iJOMm+bax8QGSjXfo5aMf/7Vqz2engL0VKeTBOl9stdA9tLJzIjAVI1gbtgPqrZe1J906IiVS6cQNMJS3wdgIhZP95Ntfb+c3hIVNplI3fEY+uxEkCNp3sJX2Z95UPTo5dWygOAPaMNmHi7LPkGZAoCnhbWgRm8szO+4Jd0EnfkwjTs7KfljPgDOd0mFVUgN/tspOldja9uPBNgLe/Rb5a5WAXOWDZgwdOjkuvGbotuOfLNe2bP9zASafGs2vSasMjqmMmJvf8mLsPEJsKm9tShnt550VrI73s3T1OtUy91xV9dmZucUeg/w0SZ5mSuuBZcvy556tBH4ZX0yOXFGO+aiO4iSE8ivhbaiZyZEC/Hdju3LOMoC5pXmK8D4JJpeEG1rtU3fhBvWMFNBCN6aFkeLT83QrWsdPskx42lqnBRaZsLiUBSlU1l+OkJ/WId+0hSPzF6Yhv/XkJ+v5v2/lT7cPHT43LW3ucH5/e/DW3+cDDdYX47xAnAttUV0X+Bl0q0v8N2RjgC+V8IdclQE+W8LPcz8Z4CMl/Bzy6MSNVkr4Y67GAL8l4Y/+AX/yD3g794sBfl3Cn+rpkhCqUwlvQ2cfJ3ch7x/oLI2MpbxKD5hjkNJSDI4gNkI4VPsnGnYfEin9+vdxc/0BDSEYogffeVvLGyaXt8zDl594cc9kTMaLmnlimKGQcBaj6ygavQAUXRhFw3js2QJS8vrsDo/eJ1Uo7VVrlbnAC4KFk+0hFH7Q1smSh2JPR6tX0SAygWz7aICNQiGXWalOAZ+qvI/LbKG/so/z8B1WsrGysmEliHmeNK9yd3dxWTFXK2cyUJ6Ydqp03oMHo7ou8DO8uQG+VMIfot16malsEt7GYyYzjSQOgsz9ae4FKW075dQoERVUlBREVWNb0gsVb/UK7SU3Uih6hXntQLmkH+5B1lx2VVuZdu9mau3v9gl+gm89Saz2NzMz6+Ffk/hE69uuRUGR2S5WdrZWLjmR5AyVi9FlfE4UvXmiZPVdwE9PsIH5s2Y3xznaW2h0u3O/Hj16dO/r+Dsapf0a+/AtxCchfoCj04D4eHSlPV97RW/7XUw/9eLouonqJHyphD/kJhjgIyX8HHKXcMN+ziIbyYeATwlvQ+cfJ3fR/g90xqCf2RJ+nrvH5AVrCF+BvL1A/wGIRfwquYrufRH1LwBgYa3FeUGx1tZubqNHkV7CeO1rofF2dt7epaXok8N85qB0OzuMtUfajw4d8sILGCG6F2H9Mj6aRflXozqKkxBKT8Lb0HQW+cbB/OooVHDOXDCd8+hMD3meCBygX/wUjhGwEtD9B2Rae2ANnQsDevCwPaFrADoybndRfP3aYUX1Gpf0oJCswO7kl75zTk/J3TM3nXxn0ie3GSeWh3UPjInqpcnw8ki1SVk9YeTUVBcjE3NHB5lPjEoV4uBZPG+ge+7y0Vqzl/3Tva4FFYZONunZzYQ3cgj1cg/tB9wzLuUq4H6GKFUQx/0Nl6PfJnWifST04RWGkhAqKUVFDSjBcn/v42z933um9nTtpChrlfBz3CIDTl6V8N+5Wwa4udT7eVigeIrKn4LWo7g0LrtT72r1s1oXhyRTv7XSxla3FGlkPbDKXjc+e2BLcTlmixRSAkw7UMjRmZrXSoYufrP4pKuhXWozB/l27x65tbjyxNLBWp7vN2BiWkBWhDmysZ11ZX7lwegBvcx7udfN+2lfSqmmIDlxXBiSo8+wRe+KQWmVL9jYpKypLJiX6ZLnHau3nL0y3NRUrUlYfH1ZxvDQmOh+oe7Wo1/KiAjqM6CPrWtQP/SXS4JnfBxYFXUP9IxOGhjuzfQCGmB6XCSOu6scp8flKgk/g6fCO+amdfwivA3jxYZz0unLWcUWdzXVkw3dp8mdn9un4bYRU9Ote5BPkYexddrUgqZLjQ2X7gwq12jGpadVBAVXWEaM8HwLJuYrHvlRkPp/9yjpmP0w66Xi4jVZw1aPGb02A/iZRkIoXeBnqeg1dXTcAJ7/PD/m/xE/xuT6v/Gj3auo+2eGaB5tCHjUWKFClylmuVrmILay53K1sh48rtv9x+zZf+wu2TUjoydpNXYKTHQfPF6jGT/YfWCQkxGy7ZkxY7fNcsTv24/45f6FC7L8PeJ9e2etH12yPruPeqCnOmfhKH9Kk+RTms9niv+NumGmGP2myxT3nlrU+H/xkxEWp0sU59NE8aZuIQP/nb3eFvI4liqm3sN0w7xnhThP5DPvGQLes1CylqQ1WPQg7BYntuetZTftckPTpaaCqYMsTZAH+dTMKn0qSq0I0lSkpZcHasotZyN09F16TpTvgX2eeL3lOSLiYcba0WNWD8taU1z8Uhblh4RQusDPatF70qj3MD7rQZ8vcM4SP10Nc4PxjCfvfTR7VtvWyhPLhujG7aCArPCeqGefOWfJNPSZ3KJPWdqg8S9Y2yxC+I1XkbCCjcjMsJgYGJHqvIWp+K0gr6hEGH56TdWzOXKtbo6824mqGMpWPfD6rvAzKL1L/DduSScua5Xwc9w2HU5CqNwS3oaiHyd30c8fKNqgf3OJy/MldARYcRzfR27H2UHBmg47OAEUNyi2CqYua2t8/x65cepUwbbSxIl9Ai3V/eKChfzv2+fyk7/Pqt+Ubmv0jcwkOjSV2oIkCEvYeAqA/uhIdmR7nwDqFSp7g72POoDuAeT8855SvejKjF4I9wgtHlg709YqtXHE1EuNUy435U9Lt+qOnBf+vi6tPCioHNxGo6kgCYlN6QP7hzqVTbjkmREwqe3t42RaZIHHsad7154ZhfenLh1Vsmpo5qrC4qWDQAOMO6aZV0TNF3KcHpe1Svg57gC8gzdynNDEPJ1DbEIK1DDmrWlmkbGM9sEM5OQWl7MEUgPkWnlBZIkGz9VOhonwYEFI6ujjM7XBeGXpJE0pJ85/TcyDt4kWy6YW69hE6SiWSvhDsorFGdVA9x25A+C7mMXaHohcoX1CPsfr8qfTkIeQ/7SFg35aOA7PZ364S+znJY7iRwGvlptL+PkOS4Z/RXuSqyT8bEckxSkFnCzhsPqx1jMA3W3Q+jdd647fAdfIWiX8XEcG6yUTer9k0MsfDylaTULQCUkmJyoTy2r/xnx3Iq0V8lmthHOo4xLJZzJ34zhL5jcqVQB1q2bkOeqdGeEuqeGgg7Jpm5N/jo4CKrS9qLk3n9Wc8DLLhzDNqcWEN1WhOapEI+Chw2QzOZMlu9r+BdpPemvnodOFZB3lmz3LYsEDYl6aQ3WiTaFPCW9DIcCxaCWDMwlwFP2ZBK3j50CdE3eYPVOOZuLBer0zGgyXaNSAVt5hNA6LWnmgpyG/KEzg3Jg8YngjxTmGfmr4aRqy6War8puXMjk51N7OOejlzLGvjCTXx6YEDfMkXxSlBWT6CvmfRnhGR6SGV8f4xMfm7n5R2wO/XZDnmx2qHYzfH1rkMzJWm0e1wjhgNn5HjDCWcaKnU84kvA1P13MsNAoV0oiy7XpE9RHck+mQKiDXpSEl5P84LvL5EcX6Y559QjenNXaiKoqK43ws1xV+ltup55ZyJeEwLqWVZS1wK2aypZWu64ikbtefs2f/uUsXJQyuCAysGDy4PDCwXIoJlhPt/n1Eu/znnJeLYNHNXl9S9HIOpc/osHF7Urd+/NmJmkvoeZgOeECvAk+LWNbT7/mcZ6BhzlPi0RlB0RlBE8YqMNpobTW+rKaPdSzlt9HCorpsYl/bGB3blmSOSbeApaje2DhwS3mgTVK3Ho150x3cpjMZBnbrNi1vtqPHDEmSYXEkw8TY8xTabazwAJkGdfKuEnmnmt7IdYVDTNEl/pthe1mrhJ/j3pTWPrCMhLeh9MfJXfTzB0qHd4FpDXBRa4H/k95oqvi/090smiX+7xXIm7EkMU+lUawH//PgQrkEyQOlMd7lVobtZCTnFH3TIPSR3LQxwts7fHKXIdDMvU1Rvj5hjTov3kKdGDcaREWSRw909Fc7Jj0fGyU4BPg5JD3j5ei0GC7po32QisWPlpDqNgjzVbrg3/K5sTUNOfeQovzpLPK/ZxDrk3w5d8wgzGehP572/O6D0mW+cVn0ve26eBbwhXp+kNKcRSpM01Kkgp7jR1hIrptACJvXGdaaIWftPYOIluTjTAhiDeLaY+3TDCNa3WzI9xXGszs7VA+6qMvcSZqo7bv1X55vG2hllWofVwlL3MnScTIZ+V1hFFqWoJ0lriR9mUxXxRXjLTY+6kgI7VnC2zra2Pw7CMaHD8jqLu6zHKnrgGjP5qVljAMQ1NZWd2KAw+ZemWWJbG0q87JKEpPeb9ky6eqSWR80WJE/zYuGJo+KTj/bsmna1zZpK0t9Bg2K9vMIMnNRbp5S8XJG0pwR3sFJEf5uIT1dlKsbKrfnAXeMC8b1DdESwA/FSQjlTsLbUD/pxPg3yKe7Uz0xJhlbCmv6JsUCdB8l3S4C9s3nTv1u3bL7S2vHrNzTcHPRyVWjJs2smpgemO5RWVTUICRNf7tkxFuzarf362lyacP0I0V/jsvKGf9zwHD/YZUT8p5+Q2Pjjgf4nKyUs9XFxiwvoLGVUy8NoHEyLFp478feGvOInu5+JZ673ly/ngZj32svBaiNha/Num1bh1O/RyaEzedWJIT2BtJ9qpOOm8Kiv48pFYWjhD8kp5EJ9Y6ONqEJYh4bZitd/lxKnyvpKMeobn8B8qjIjyrWIE/yHe+eMqIHrJD4tHY8rJBlyXju05bWishUoM56Y2vMbd0agzgJNZfQ800gKhsp7UDZno5PKWsvMqC21k8ycpY3ATd11xSFReQHIndnT4+pKxJdLGz6u+RlFbjYWdCRqS1PG+unHpOGV7d/4eb8U7JLWIC9m0rl1kulPd/Jg4ryIK4Vu7iu8DOotEv8N25nJy5rlfBz3DFpdQc9SngbKga9/72fP1AuvCO61guvCvld5MzRO2QUijxm39vYxMSkl/1RFEpKhHztsfET3D083CeMx3EsDtf1wLT6g06roxhKQmi/DJX2azp68v1Az+k5eoYfn00iozJyCIUW9eprZW5h3b/PGGQ1qld/a0tzyz69i1AkOUAuN1k4mAvwx8LBAkQnJRNm5Iwqzp5ZjTaSkuoZOSUl2TNq0ManLei16I1DLeHP0E1RhO36GTfMT1rF3O5drhNXSfhZtLRL/AwezInSUqkkvA2HMWndQDcvgrR99LlyUUaWKe+88OmGSsl+FDfax9nE1NTUya8MRZCdIPeJJl9nU1MTEyefJhyBB7w+PMPOztYuc/jr2tvaj65mZdrCn8ysq5QDRolJcl/n8deZdUmW8IaOvqXG1obm6J81Mpv9G+Idw/KD5UYkj9rbRmFkbNzH4UOwt6P9uE1VYaWk7hvjnj0igsKEIu2xykpHJyenSmr+frmzBpoDbUaF0X6go/0LJ6EqiooenclJuKxVws9xu7mu2p/lVul1S2VguHSHpIv2f6AEg37MJW7Ol1JNNIB++oImTFnWPICly62V1g0YFjJ+uvYR7nMI7zdqO60tMWqjvbD2rPdHIve+HMNJCO2H4VIumMM0Ryu8w86eerFdm63++BmyDIjm9tiKOgP5f/Hmn83Nf775BbkAn3NrNZraXNlV8guqvzh9xsVJ5AJ/hQxGwYWhYSVhuvzTXbCrA+fEcgw0ZGOhg8ILdyYXqB/JaHSnoZZ1NFy/6aWTt3f4eU1eMvPBjk33Z9VenJ1QmfFCT6+s4HhyyeZyQbl9y7q+LyAjcmrwhNCACVlDKzWaSllTppvvNHLwo4Pk9+UIzX24efUvC5wjHcYWRgZtWFgW7tniNtzcYs6Tc4OX5A9fnj10yaEVGRwPJ64a4a78Zc5HjOACaBzmrGQHROZsyaVeB/eyAYDzYDafspNgOgisId/A+AaUNweELck2uGLx+Nm6I+JoV588OB1uHtXYMHNMIzsgjlMnJ7Kz4enlyzwcw+LCg539G5z7a4JjNH3PHjTy1NDz4l495WiBLTssDvI0PnzYyCsYjox9HYzJInPxvFjjpTiI3paZ2dKT5V7mZsgPZci629BDZZvu1Apg3bFgXTdqBWWAmL/UC8OSmBj4BhGkBKa1oRAB00sgfdlYMr0+NixDn8FUdYc/DlL2Mjyu3qmfBv7022saKqYuk0JM9+6RW/QWE5jdZVhbzMu66xOYlrI9aCNeZ2rnThObHnYc4voBp3ViFgdieKS2VtK/LFdJ/6oRyn7wAIWRN74kN5EruUmukfdRJHn/KTkAeZyjOEHr+caEN8hV5AVv+Bq7fwl9npLd5Tzp2PELdHaml+idngmf5La2QMXWhlpSSTNgSpq9zR+WI3TbsNLIuOmHVc0XZ1uRH3uMykwucMdyNI9MVfDJIQKPvu3bG9lu20LS0+5/0LLp28aiA40eecXBFclvfPB+WkFvjPq8EBS0dhPwEQJ3Y0wgMtLQkaCkl1uUCmlDoAtVHMAKKo0aXE0Db+BRDiy154XZdkAhpCUSB4zRujRyUWHstm5MdNmQPrXpZ6uPk9vDnK2vhs7A+HjoGmuXYcjheN2ZoTV9M8ZFj1nnZqzgL290cHa0b+llM36MvY/Vw5jYg3uHFLWoHJwcNxYP23s4PvY3G19V2XjbXpx4K0zxT7fC/raXfvMY+XPJEmRy7BgyXbKY/HE8rzk2tjlvxLSYmGlWB1Fm20O4pHqY7HnYRvYe1DZ8t3XbDw2Tv9+29bsGap2RQPAX3b0F9s0Hmbkj/oVcNiF7URJNwgin2pDdj7RlJdhxPXDVn82BEVhiQtkZZsJqBP7ShHvGjfQNK42NLw0it2f/vH7TzzOjd677Gk+6jX6NKR8bFlvoH1SatPzmxOqPpg9rObvoC9OnlEIJ3NOk92P8WRRneBdECldFmgplBBZJivfmBbyy5elyjNR8bE1CclVUbNPwBQuSKiMDi6KjK2IQ+Qwvblu77ofml5sqVqeuIB1WEz6aHjTMS50XHpEf8K06Jywky9c7I6T5w8qqE3VTdtmZ9shfMXLqR9XUHqOBn+7sxrcZvd2BIB3G0r8acxWyHo0noOajR8nn8m6kGhk/5G+1e/5J/kLGf+KZ2vndmI5Brg00h9WFXOBYjpbg/Dzb0TBRYN+57teFAnLjo8dFptTGxE5Mi220J/cT+Tnaeicjl42Fo/dOTVj42Kr6o+aQHN/YhvT0xrgATx++RzuZG5gwcOaB8jV3Z+v8SLgB+rTn1DrK1JGeu0+jlhRpkKXRnbHifdXXdxZnbPpi/spvFvYg1y3rs4vnxpnYV68YMutyw6JHO5Pr4mLqkjX5ic4xE61SdyO7i8eQy5WK2pON6SPqbqyMzvdt/GzR2nuz2xInp6Y0JLolF2qSJidxutsyQp7O69RsOTVHb+AKrZdgrl0hXDBp7+CeenEczyS4xXzOm4tkY4HtvDQB0g7M0AWeHxqWz5Xx+p2ErMxcPqJ+1Zx7a1b/NHdNXc7y4auIdmdaTVRMbXJybUxkXWpUSXBQSXR0SVDQKKvKEw0jN5aZGfc68mLtwdLSg7UvHullbFa2cWTDicpvNCVRMaNDQ0bHRhUH4Q3+eaFhuX5+uWGhef5M9/dA9/ck3bOVjFrdMLtPl3k6qGluPwI/w2rTym8XmCEvi0k5xXPjQefLh876uH7Rk+3VV3cWZ278YqqmIMElti4laWJcbK1N3UeNg/Mn3lwZla9uAo3/NBen7SZ3Lx4nN6+Mx3+4JxUGDWxISpycAkag/pwHWr0MWv3PcnVrjpFp07XHjpHmZu3x3EmhoZNyc+tDQ+thbsl6qJ9bHpI9B7XV3+599bvq6u9e3fttNbXyG2DlLeJt9gDd3EKv672B5rHpBSWiwL/4S3R+eer4F0RH06H9PuBLjgQLDsoFwOcZVpa103I01N+D/uRIfoeWa6D+dVZWWNHyCCh/zNobaWl5MbTfxOqNY2g5B+qvsnqTp7r296D9PSibsvbBZCI6zn3NKVBRx8qnZoCM7fgFfYDioUX5u5y+LLhzTlBm2eiOd/EPFOd2Av4950wR7qiuht8i9nkTnnDW9clqrrNndpJW/K7cE/qOI7TvIihPZuX4flR7fcV6dyjYQ8DGbmGqzOmyFMAO7a1h4y5GP+y6Mz2Mx++W7m2M8XIZ2X9AnotXTOPe0hczVL6+2dm+vqqMF0lr34xXZu+vUnvIUU+5h1/Va7NahvX7dnTFZ5oyVxc7GzsXtzLNp+VjOUS54Xmg7kpnPFiSxeiLXbOmSYMAllCzsqUnmXLKRw9cREn5ZGf7UFKlexpjvTxrhUl5sY17SOs3Y8s/1ZS5MRquZZrPKkZ/229Yy6zXqvz8EGlDo6v2z34loy9o4RNJKwlKvVaSWTmR2WxnRyLUL2Ray6f1UJ4MZao1Wu6rq8dy1JcT63melfux8ie6eta//vlkWob+oYxi0C/8j/gO2CmbO8hxFMFV/I98oYjMhGde4iyFlcIqeGZiGyeWV7DyJLZL38r9IMzj34Ny/Ze0vJobKqwRMqDc8AUtb0DXhGWY+uVkVp7PxQvbhCIov6ir56yEZcIKKDfSMvQfDPSaodzE+qtHtcJbfDCUp7D6x3iR4MP8fEGOrv1uYaXMDTie2NHGrRGRFQyZ1HGeIVtRkzBPGA5IfceX3FrG5V3g8idAGjq+YMgGPE5YxpcBMpkhlNPPgdNHgLyob8PtFZbJXAFppAij9RFQ7w5IE/S8hPKL5cDvRUCmQJuVgLzMfQ8S/gIcL/yO02VvZcNl33EeXDCXLOZwmMMxf3smvrCk/q9mbm/JMju8Qn/8D+15CKFZTksfO8eu/6ohMSo8XS6DI8ZDk+v35ftmh+c87dHN8WmYv6npl+TD3EElZXtMwyMDC6OGDurV6+7g/n59B8Z6xDj4uiObqmO1ufNCNBq5YuDWwvK9JQWbi+JfLPWMIl/07ptXteDT9J5mpGN0eL8BuM7IMyc0KMPToZsZnhlgpQ61Vw+0j3DzLQrAdM7d3fELpvdDeRZD8EqetwfBQC4q1iUbFGuzcFBJyaD0khJ0i3/SLifW+Smp+fmpKfnsabIcdxMmiU9DusPw6bdtINvYIj5NltOnhRX0SeiBPZ0OtxB6wbynpDE4Ygto16FUDxjShj2jOZ6ZEbF5vkPVPlkannyFZ342Y9ntKQ1jg1McZg8aNWpQenExOmfXvGK4o8eYJP9UN7eh4cuO5xcemDptT7h9fN5AO6KSxMAwlhsEd6Fa5IOaUzIdsKSU1kV2DcyScQAIAPh3z6zwuBG+w/x8MzU8GoBn3Zq59A7wEZIMfIDgwAteBXxkOQEf6rRn+FDF5ifaoTsSHwi02Yo/gDmlJ+jS38JCo5RjiB8sLCAowrthUUW2A0s13mOGktbmmbhgBxqDkhteJq+RA2tmkr/I1WPX0EnoJRZ6GSH2EmhhEeCPMazxFnQRVcQOG+2lGTsQ2aTWxcyaSlpPIG9kNH0NSkVDXm4gh8i67d+Q8I/pLH8IetkEvSh0+X0VhJaH0N3Tp0mrIu67J7O+o23GQJt0sQ1kUlWwlo45fRq1ktbvZE3fPTpG2yyC+XrEf7ta8CMqD89K9HUrtrcvdvNNnHW4cka2k786P1/t75Q9479YLYBD3v+/Wy3GzMh2DPDLz/cLcMyeUXloVqKfT4NsSnHirEP/6WpBoyySoTgpO80lcTlUbgcWyrC9Eg1mmEOBFuRyg+sUcEah1ieH/enOTpBT49sIum1gD8w/f4Dh9ANZ92T6lN/R2LufopzfpnmVbKyKrhtkYtRn46T5742uPDW9eHFf00seXpHJAzJ2te96gzw8MrLgHWR5cOiaJtd03w0nlg2rCNBUDEotD1KXkYypbajg61uoCHELpt8lp49MudUyQpUSnDJy6terV37dnKAZox3pEzRk54wVv+4bWXKMPNy7n/x2ON/OwfyKnVdf/HLMjILCSYFxDekZs2i2ejesYB+wFS6OrXCxUB7ByvGsfAjKm1g5gZXHQDmdlRNZeRGskLr2A/X1vD8rJ9EyvLwVJ+UtWIFgZuY+5zDLsveGuawPjR+VcNSnsoTtMnupeSW81AoVeyGoxG+Gk1vh34Zfcr7gc9HpAnxCrvDfRaeLPgCFk+HIxYfcQhPJQjTxG6T6ln2C17fkzjdkIR6OVEBxbsdd2RrhAefGhTxzHtkTvMxZA+lIw1NJW+rktgqDsz3Jlrxp84Tk8NkL5ittfXz6OK1YsDIoekLzlAlxISuXvOTYxwchH9sBS5fMjkqdMGXS+7W170+q/6Cm5gMrn/4+M5fM9QupQSY10UErlqxwfcHbu5/7miVrAiNrZs+uCfJZuGSueoDPsYlnGqecrqs7PaXxzEQOcS90DOA5uR272YCUiOfIANKOvpLbPTaSP4L6+2QANlG8qb/5gE3Id4o3/6w0XgEy3yB30ddsxVCwnKCStriBupHf2WuTNll+T5uG3+KepSMDOqidDEAC+uor+aPHRmx2gKjGD99hdKyVAbyfNhffefCAQ1D+ReA6awSuneusMTKoMeIe6Wu2IwvekV9B1yJk/+z6jL7PXpGVtSI7Z3lW1nJkof+UAyhHfQ1iKT++ENNYimOxFIerBI4hOZ2IkQ7JFZHtaDfvKLgCMgKQtZQDfgx2ZbrhLMHfth+5kA1IhXbV83VKfns28jgiVkLtOX4M+onVslW4tT9S9hNrgRLU8pvpTh0Vs/xsMTrAUXw74B0ML2R4IfpEwn9leBHDi9ApMc87kX+f+5pF/deemrGal56a6WpQO/cNILSmJ3A0kV+JjnfyOzEAWTbyK3Gk9n3oidbyPzMKpYxCKfZmFOqhn6fiXuUqUEAswuBRPN1tyQzX8KykUaOS4GVZkpRUQl/wNLRVjEDxdB/DcXTXgvex3stl2ax31pfgjmk9w8EqP1CcO4d5mQI7M/yOroY/qeMH27B9DuOH1VjonsG2mOcrsa4XN+A0h1vGuwpRnIzjHBF1V3SPTEDLUSSZhBYsQ7fQLeJCXFieAFr21rXUsJYpaAE0ikDLyQSpIdCAHgUttHNC1YzfanSDyZEC+K8Mr2F4DcWh3x0Qsb8irNKtqMgcWSPzHfxTbQo+iG7+hT4iX5IfepAfyde07UVoe0bXFkFT2lw40y7Dh7TJ/FN0k4Sh/qhXD9QbKUkIjbZOQfS/B6J/Xv9dIASvU/z37X347/Gpp0+Jsr2d9nsYdgVHhAxqL0eaXjXXfY8dB5FmNJ2gGWTqUDT/AZpP6h+Qemh/HHYNb+Kr0kh9s90U0xtSiNsL+4ePhCLWE0LOCIGubBESupN9ZN9RlMH+Qxlvk1fRsHg0jLz6NhSHHSN7UeYx8ioB0/PccdhzvCmsYBFmHx0F5NTpRby88zOljJ4MHD16YMLo0QmJY8YkJkL4daGtTTsQjUqKHzUqPmkU74QYnJg4hurkbdjBHIAdjCmLX/WyWqsCqG7eRs0ETSUzCJnOP8Wr7yGug7vX0aHd9vAh1dM6VCvc4IPZKRRLG4s5W2e1DV3YxdsathuFtGWF8U2D3UOcAmJQq5C+LD+pOcU7wNE/DqPV848VBCU6Og8dDh/Co10dBo0Aze2AXdErMjcM+ySOY7uii4CcYcgkETmFmoQ9wnBA6uncA8hh7iuw27eANACyFJDjsE96ky8DZLLYZi/3OVjkESAvishx2Ce9KXMFpFFE3oZ90gFZd0CaAFkCyDosB0kvAjIFkJUg+03UVyjke1D/R8xH+BJtHT8f9UXoATEDELy8F3+ZoxbklHRmv9zu++OPgMfzXvwW2WvMB5EaqXgVH4/UfyD1j+91f4/3wtO1zeggSYGWW/Ai/qbu++3IUuHs6Kix5dW8xpYuoZbotuX9IoRIR9F9y/cs7hd0dBTct8CL0Aubd02ZsmczeoF8t3nPlCm7NpPvdD79vbBP+IX25Wgpo33JoC9HW5kMspw4zIJ8MZGeFkxCSoufzNGASeQ9FDWRfGn+PSr56PzGjefPoBKy6TT9dIps4gSuCOUKP8t+gP4GcN5ckC629dd9MQTCO7q8G6zuGmcVzcvCUmRFIwCkv+mAdzRc25Kbu+Vaw2Td++T6k7V1H9RPOllXd/JOxogFSOGXoe5tpxpLjuT08/Tsm4tyR2y59uDalhHi27q6D+5/UKd7ZPvBg9jOdVCNi4PVZdTTzd3NgWp/V0erfJesFSIiNfttIf3xmkpij92IUOtiUn2oGqgPVTHNXkZgFpGy9Gs/jC0mHKsZtXt8t+vdxkQFFwbDv6iCbtdMx20fVXNsAlqzmdy7Xl9/Hdls3oxs6Cdyb3PleyuHDl35XqX4ju/WHq3KXl0QPDCoICSYvuWvzZrwjrbmucdYV79ID4rvHOaG8keF99ktUCuQiTeHDQWst/DGK+k2BLTNNzTN3Dh3zqZZjVq/FnS2hT+KAsh5bEdeRqO1d5E/uYD2VFaSLDoL1PJWfIjsNs07/j1ycH42AYpulbQUFrYUF79SWPhKsXu8q2uCm1sC/M9bFbYUsbqSopbCc8g13o3WxtNaoBGEF/ODZPc5FefXSUP8XhFNtjuL3yoC9lViyjsATtwYUVScNTetYH1OeoF7cnxCVo9bthWbihPmVkR9adR/ukPIcN8eMckvxA9Jx4uDqoblVagVRt1f6C34BQW6KAeWaZTx5cnacxNDk7e6xHtkG/cwFYz9vb18gacY4GkP8NSl3M+HqOjPOR+OG/fhnDkny8tPzoke7uGeHR2d7eGRjReP/2D6jJMVFSdnTP9g/JGo6oEDq6KjqpIGVkcBjUR8F/kpQsQMAcyvhvv4wbcqvBPifXwSEvBd3q79Ll8R5+0VH+ftE8shLh0wmdyIWZgaWLxbZQ2fGVfI6eZF4161GbWLb6LY0NA04Thx5+1mRqaumqN9gr6OTRrE0V44TogTvz0JT0obLpiyhhzI2vpNbe03W5FWuKuNevHG3DnXGp94cWz/dk3wgrPBCG6weAdeI96ygo+O4im1hnUlXbJnWrKV9cO6fJDunbehSQ32nWEA5dAAR0w9Wm2pNcsdnjbcKcadPB44LjiiciDKG/Hte29fHfDEMjU9ZYhroheSJ47RRFYmoLh0VeVJM7sYf16wDfK93yvaTyb0Cfcg14atK/NKHBIV7hLsZlbRd0R9TMIoyDOtGLXj3Te2eCanxIa5h7uZl/fJrY6KHxMqCMrCCUHlW7LxBVMLjZcyPNB8jKm5xtshOsCC6mkC34SD5UdYNEH1pAjQ4OBWk5tX5EfaP8STp55qoq2K+CY+Sf4B9wKLT/QpLWuVaNAemJ2z1aBRboG9B4eGJ31xavO+U5Zhk8cOQSv5pu2I6+flaucd4O05ZemialXSkHxNkNFh6LeQr+FLoV9PUdtqUdvi+Zo4RlR/vzeGvhy9vxzdR0MjotKHxJWXh6bEh4alo69Kdowp25xTmd1QO/oNviZmUpq9m4+zi3q2n7OTu6syrSY6ekJiTLbCqFtBSnJ1JIdIFcfxkbpoV4nUUBa4y+2c7KrOH+I6/sJ/8DSGtX02inUWmWPDdOP2Awe3bTvw1vboyMjo6KhI488uXLh95/yFz3ZNm9o8c9bUqfRCOfOo23yYoabR7fPGR3byYaDpVYsOT6Gt6IHIfqDYW/d9yMDnNC2eaA5HDgEe0Z6eQR/snLF0m3JcZQiKWIKs/Aa6+Ph7e9TNmj/WKWfm2AiTbTRmBRk+gR49QIJ/0XEEflbFaOHQ5SPwZSHOwycyJjw72zta7e4Zjz5AWYuG5cwYODyhKP+osbo43rKvn4tr0IogVydPpwEJZSHRlVGxuabG3QoGVcwHDaaCPA9AanZWqQlAanpWCYEWnFXy1qkotqO4+H2F6WtVm7Gn9ubWqqqtKIpcYKeUZR1/4lvwpL2Yf5X4ZtMmPaNUqA02euuHL0w/jaNc/BMSQ2xDrPZ7oydkq62iR35oyvjwwUtNIsdFO7jGBQcnWvbUoJe2X1D6xTQMypiRLFr5Nmion+5uJRvmhqulOAMZ2p0NarRBM7k0Km9zUdbsIcYXTIPtE1KNezUkxo8LfX2FJjFeYx9kj4VEY+XwlmlLTpbEVcfZ9582ISwxpi51xo6XU4I0Kapge3UGlTUYtLRY5xtq8TpPFUoi03AGOYhXGL+yU1vO8YzPL4HP/sCnhmnlX04fn3FRS0N3XV64NsszxT0oJX1eVsaCwWmBrine2WsLNFFxav+4aI1HWKinV0iocWRZtE9mqLFJ97KIyNEhoaMjIsq6mxiFZvpGl0UuD/X2CQvz8Q5FozTuboEB7m5BTI+/gx6TIDbyNPQ1cGKDlJcmUJwh/ehnPU/TM0GF502DHLyj7I16vxgfXx6atjA/sHF8XN7GAkeNPeITgwMT47rF18Xbq0LHJ4cnxU1MyZibjlC/rG2zlp0ahd5wCLX3H5yq0dAYsoZrwAfwO2wHwn4XUW1N3Q7FXLnScuVKw43116+vvwHtKlAC3o/u6fcweL/2BLq3bRvIUs8dw6/j6md3TfU4WHsaB6Mrr7xCfm5p4WgPHW+io/wbbJWj0qlp9k7nORUu8Z4HImPsgnwPpKSjNcNPH42dR76ZGDNvd/XEv+iznvBso+5ZWzqnYmc1043CU62xi4k64BXnkpY2qG733KiJqN+82KMfZU/8q4H9OsNDtAEJf9tZW4QOHhwaMniwWXpIaHp6aEg6nWHJh2gNd0CfmShMeLASkAekJ/2OKV6M/5B9jhVoPf1FLUAG4zXotuwqIC+LSCJeg/ezNhtEJAWe+oQhG0UkFdo8YE9tEpEyvAjfYshmioi0brOntohIMDy1mLV5xaDNl6xNi4QsgKe+BGSriNTwPfAB2RBAtolIBX8b7xeaAdkuIvX8UPy6TAHIDn0bnIiOyhMA2SkinoA0MmQXRahWcRHawNdRraKutIqLJLVSvaJRaA2fYahXQJhe6Uwv/wDWFGedFuF9HR7N9vsbBIhqxBYzu2yxiV+pyxRAobfsc6jZKLVo17UQ3OFdxh3t+EExBk6LzWE+8OUiuVgxlpOmAv0kII58cMv/q16G1Ah1jFuenLq8FP5PWV4W6+sdH6NWC6PKlqekrhhbvkwC/fyefsjWSt40d032oNzVufAP3nIO52oGBY4s8B+kyW13MKjKWZNzeEQgVOUHDAocsZEusTQbI/xMv6+m/6Ya9wqUY1j5LC0jE+ER/1DeB8oPWX2s8Dtfzup/Y+WdMszny82hfJ6Vt8jc8beyViifY+USYQ+eJ38Vyr+z8s8kH4/lPKD8J2gRSfTFbNdu+rUP4WfdL/0giRseCpBJRhMuIZuFYjXS05Jmj2+1x2WtJ05wSOLKVrdDZAus7j4N23TJ5XiJd2qo2q6/Em/jq/N8kkPUve378y24Tob7u/YPdG9eAG9+3lMXUp5nkBB0vqOS3Tvn2E3ccx2H5S2yIhqPyRCyVcjF30qgP5agtNf/4JitLb9Z644/2X4vYHm8qYlCEdTgyze0z/NtCDJSePpqxjq2JuEb+Ma21sA6fyMFwiZmv5qZIqx0ds90usvp6BgflRX+Z3RubG/tpCNf9rjqOTrXt/4LnQNWdbISzkhHB0HviG/RuuBb20mceet9W3QsFd/CN7eS2F9JnPgEcFbCdRc5o+EAu7QnPtYhr3m0PS1dkfN4KdE92nE3Lf0ugWcRB9q7JWrPWSP+zJyc/eqEn/6325ydNUjgt7c6jtX4elKJ/Nrn8Q1+DUFyubFJwrLAe9vxJ0nb7jplujvZY2QKAplgpDDyrwts3aZ1F6kYP2C6+3cqij6GVB5XyZd1Umndjm/8A5WtWg9GBTS3R9ScM4K+kQaZX9uBjt+3Mb9HYnfgm6nb0LFf0fGtWlexPcjO9AZcQXuNM/xHhcXbSft2ISY97ekxPq8DxEvdSu6mp93t6HwS5OniSUWvHeTxUkVOetqj7fKaDiBp+CSz1V140ocL+JsXPasJ9IyaDN1rgnYE3r7tSKd7CWM6lXRkG96uHbHtSKcSn67vdL0jdngb3rbtiOR6ehXCc9o8bd62w5J2JZ88LHLdPfD/LdeKff/G9aOM/99cY+6cZCVLnZ1sFZR5aidHhS3YjFrr6S2yXTdKBDdqr0cT0tJlj9LTwG5kq26wUNulpaWnp+n6BE38S58m+dvJoxX6PhVV4D23/nBNSzeO6LpPql1YAetk99mOEiGFs8GvJKrM/fX6VCjOsQnqbuBEtTHVQ88HPU0RUjq5Zzne5XvhG1r37a2ByxNMTBVGdIjW8EtAwwqqwzFOrTorfgd0rlI6xlhja/DbjHDqqreoRiOv07ppPSgdqm9kCnRA4UpnN6CD32aTG9CJN6F2rPfjl7TX+NVTWzE67KSGs4IZ+V0sR1e5fF0Z5qcTUL4mls1hhnsfytf1Zain5Ru0jDh4/hZ7/hN9GexIn7+pK8Pze1j7W/oytKflT/VlaE/Ln4n9x0N5MZQ/50bqymBDWr6tK0vt7+j5gXpa/oLL5zDNvsgOsfwJ/Y079tMCXf2yME2b46+0v7/3Xhe/L4zCyUk88wKe+fzPDJNZF6jOFnKcEMnuoWoE3bcPzmgfcVha89mu2zAWUxp85kdEZGdHwIso2Ifhw4VHWWFhmZlh4Zn6dw5xM4QH6Lzc4W9RnVNcYWFcXFGR8CA3Kio3JzoqFxpI0YURFJSwWYVl3RkNJE+R8gekJE+WCL8rkAu5pdjDYSmygPOJrrJoBhuuSalTkpOnpKY2JSc3pfolJKh9ExKEPQkTExPrEhLqEhMnJixI8POLj/fzSwAeRkF8cRt46A69qjSBbJsOvcoVaOKbaXKF6ZYtGYUO5v2En+eZmq7zSMhw5pAU1VjSvYp+d69RW4u/O/Kz7mdHHGtl+l8UUSr73PHI1v1eCIchkjHH3ypGsd0Oi2U0ENPSeOZMU9sR2eUTJ+bTM16O48E2X/APoSW1TZ9/tg6Nif9uocjGtiPCF2CdLMMXepF2LvXd///qm/L3977Ru9rjf+8bR2/Z8l9wzast/95z2OGHTf/MNTdYZs5rFIWGJ1WO/9A/1ShGz/dP9VvJXJZ2Lb5Tq+wUWvl84Jrx3HUciUDP/xhLkgNNDw8LrbqAcn5/l/6+PlMXogmMb/BfuTGep2j7T/x3SFNCQtOQIY0JCY1D/GNi/OElN46eEB8/ISqK/h89K8rXN4q+QAtLgeuJigLgWsV5/xPf/D9o6B9lMRKVJWntb3KNGRwUnJ4eHDRY/y5psP+/adAS7PWPVEO1x5+ngwPBoxA3h/8J3ZAHcyYw4lhaw5beI5rjn+m3ysGX/+nDxJUzvAZHrhpzCtruw35oriyH43WZPzT3c1lO+6e8c9cjD3yQ+sm1ww+ndI68/w8onh+BeNpjYGRgYGBhcHrUKXkqnt/mKwMzBwMIPCprnwCl5/7c/DdYZBXHc6BaZgYmkCgAdeIN2njaY2BkYGA/8E+IgUG05Ofmrz9FVnEwoAImZgClWAbHeNqt0gPQHEsUhuF3GjtbUeHatm37/ow9sW0b17Zt27YR20Yh5ubb3ZnYSVU9dc6ZaXf7K4Mb3bvgV3DWzkqfvoEv4JaceUTr/aJa3Phd8D63pAKihF/JLQlzBZJ5S96VeXF9l/wkGdX1pZd7i2v9d9yScEM3CDtvkDpoK04m2lPpY4n8GdySlbpA+VXKE5dRdb3qFOSM45bdsvFdFG3Jz+acnDHKt6eU9gn3EtfujPDGDXxZ+ifcR1RMqM5xP+6YPYN9fQUqJtwq+udlnjan0EH6m1Myz8vnMjmuB8pi5VXjNl1U/53lXqR/ItvWPpqP0jEson9Cc2xpNhV3VjiLihvtv6K9mv6xzq4XxQl/NbeYheybl/lv4/l8Kh+36k+OSKT+2pL2d3LOf8q35yG6J3wtBro/qJh9g7m7upfD/aFEvicX+yZEthN1fRna+pNp5FvQxK1UfTaRe4UCf57anS2nUkfekwFST66SjlJb7pKa2dwcz0XSbCMX2SN5RRrIYXEcGcetfvenBlfn8WjsBXlInpTb4viodJMVO9nuCa0FwdenovmQ17JcT0qkgXW8JtfIx9LUfsud0jR9FNH2/vmz2D91ILfYQzjUrGCh+ZgR2dx+zZ0OSIv9g5c2r03v2Mf87lpKJV5yV8m+dDclcjZdXAO97zfpJq+ltQbFvK/z33RvNaXA30hNKfBteVn+kp/kE/lK3ojjZ/LYTrYZZf8BO4PrXA+e9Y3UrpAGYSmv+iOoZN+ik/2YC+08rg5+5wb7vs7wd7mTyLxOO/s2DezP1A/eWdveXsS15jRKzQq1O4gCexaF9lBa2CP1/ScussdwrT1Sjqejzq21PYFuwSxay2nmGG6R+ntjjLA8pakfKQ3rUJA+ks/NfF6T59yqoIzWe43zvGIH8ayZRyMzl/nAa/KcPCuvmGIGBjNAcCheDQDh8/xe5nN+369zPobPB5T5PGC/zgFxLvxeAX5PYnh5bDf6pvZlX/cMdwBAUAYYKNdII2ks8+VZtzQo41aJovZV6uAV1EbxHnnF1GSoOZ03Udt1BdbeaAAAAHjaDMEDAOggFADAlhZWr33btm3btm3btm3btm3bts07hFCL/yegOWgF2oIOoDPoBnqCPqA/nvLSe7m94t5gb7x3EsfBKXAFXAd3xv3xaDwdL8br8W58HF/G9/Frgkk+UopUI+1JbzKcTCULyVqykxwlF8ld8pJ8pYQmoMVoJVqPtqU96VB6kd6lL1k8loplY4VYOTaETWBz2CeOeMCj8UQ8Hc/Fi/FKvB5vxbvxQfyhH9nP6Rf1R/rb/cP+eRFbJBeZRTFRSfQQQ8QEMUesEFvEAXFG3BBPxAfxRyoZRWaVBWVZOV0uluvlbnlcMRWqzCq/Kq2qq8aqveqthqvNar86rePpVDqrLqDL6Oq6sW6ve+thgQwiB/GD2kHzYElwz2Qy+UwvM8wcN5fMPfPKfLPUOhvLJrVl7Gy73G62t+1z+xkQGIgOiSE95IJiUAnqQhvoARNgNuyEo3AR7sNr+O6YK+IquDpuiBvvZrvlbrN77j65v2GFsE7YIvzXFDxAMQ4DAAA9W1sxJGuTZkXSNe3Ztm3btm3btm3btm3bfLz/O/n6+Ub5pvk++uv4Z/iX+B8KiQS/oAh1hZZCV2GjcEN4InwQgWiIacUmYgexjzhCnCIuENeIZ8Ub4hPJlbJLhaXyUm1pgjRbOifdlJ5KH+W4cko5JEflHHIRuYLcR74UyB+YEtgXTBSsHhwbXBS8HCKh/KHeoROhO+Gc4eHh3eHL4dvhx+HX4c/h3yAxSA0CAAELZAB5QSlQCdQCM8FVcBc8BW/BVxgXJoU+GIIatGF6mB3mh8VheVgd1ofNYXvYHQ6AI+EkOBsugWvhNrgfnoAX/o0UjDSI9I8cVpIrXCmr1Fc6KhuUN2o7tZvaTx2mjlOnqfPU5eoDlAeVQbVQBzQAjUWz0HJ0BJ1F19B99AJ9w0lxEEexh3Pgorgcrotb4k54BJ6Bl+CNeB8+ju/gD1ocLYWmadm0Ulojrb02UTug3SOpSZBgwkh6koMUJKVIZVKHtCU9yTiyhdyJZozOiR6OftXz6x31cfpG/YxR1KhhDDGOGleMX6bPzGZ2NSeZx60Ulmq1tjZYR6yL1lOamBKalRamZWhVWo82px1oTzqIjqZT6Fy6jK6nO+hBeoo+pO9ZAiYxgw1lY9lUNpctZWvZVraXHWVX2GP2wQZ29L9V7BH2Qnu//SlGY3ljtWLdY5ectE51Z6Cz1XnpfHR+8oQ8JZd4hOvc4Rl5Tl6Ql+QV+WA+/u+t/Ax/5PrdmFvCreuOdne4z7yAV8hr523xHnrf0yZNq/wB6rssmnjaY2BkYGBiZmhh4GEoYGAH8RAAxAcAGJwBFwB42myQA24FQBRFT20zKMLatoLaiNNv238L5Uq6iC6i6+nNZOrm6TwMgUZeKKOkvAZ4Lmm1XEJtSbXlUqpLsFzGMG+Wy2nn1XIF89xbrlQ9b7lR9W0Ml5RQz7zlua89SxbpptfyEtV0Wt7UfK3lLRGcEyOCgyh7pBXDBHAxxSxx5SfGq2I6/VyIi3i4wSPy4VdXJomTYpkJSUzsIYpXFCVtd1SFlPy4qkl87JmeRzzGNjFNubk2eYqAWdnPrKYnJVOs4FM1rdl5I7Ms4FLHKfnaqR+704+V51xwJFv590wbv/V2zAsKIvtC+pk2e82LLlXxKH4/9VQ+RlCZy0xvkVH0m5emlA/+/iP7Gr/mnIzzvmRwHOiDVAPpYiArE266JgAlMlHeeNpswQOMGAAAwMB2tm3btm3btm3btm3zbRuxscyxppi7IwcA/AkkiP/IkROQWszgCY+JJZqZ5jCnuczNMfOYl9rmow6z+E1d81OPeGYTQ5wFLGghC1vEotSngcUsTkNLWJJGJFmKZBJItLRlLGs5GtPE8lagqRWtRDMrW4XmzLGq1axOC+bylOOkk0KqNaxpLWtbx7rWs74NbMgzWtqIVrS2sU1oY1Ob0dbmtCOLDDKZZwtb2srWtrGt7WxvB9rb0U50sLNd7Go3OtqdTnzhoz3saS9724fO9rUfvZjPQhbZnwUOcCBLWMw1BzmY3g7hO31Yyh/6OpR+rGQ5y1jhMIc7wpH0Z4CjHM1AxziWQWSz1nGsZhVrHO8EJzrJyQxmiFOcylCnOd0ZDHOmsxjOOmc7x7mMYBObuc4G1rPRec53gQt5zkgXMYrRLnYJY1zqMvYz1uWuYBzbXekqtrKFba52jWsZ7zrXM8ENbnSTm5noFibxga9udZvb3eFOJrvL3XzjM3nZxRl2u4eSlKI0ZShLOcpTgYpUcq/73O8BD3rIwx7xqMc87glPesrTnvGs5zzvBS96ycte8arXvO4Nb3rL297xrve87wMf+sjHPvGpz3zuC1/6yte+8a3vfE9+cnGTGtygIIXoQjemMI2afvCjAQYaZLAh5CGQEkzlE10pxgtestdQwww3gje8pQC5ecVrIokw0iiKUpyHVDaaKoQTRDD3eUBVqlONIvzgJ+84yXRjjDXOeBNMNMlkU7hFD7pT2FQOcJBD7OQyV0wznX3sMcNMswj4RxBcGyAQAEAAu3TsxXwwHu7u7vqJuoamlraOrp6+gaGRsYmpmbmFpZW1ja2dvYOjk7OLq5u7Ry655pZSKimnmkaaaaWbnqeXt4+CILgwQBgGAADWZri7uzv8/xFHTJI0JDGLuSAiUVJWUVVT19DU0tbR1dM3MDQyNjE1M7ewtLIOfxtbO3sHRydnF1c3dw9PL28fXz9FmdW15SoOBDeCsyf+hg8m8+i0OefdN2w0Y50B5CVM+vqLWgUWvk9VHdxd6paYWZqrLD4UIjfrnFvL7U7icreygLby72xztYsPdcWU33KBG3OH35O9dIG+wnUIXAE3qt5XyLMtYGv7wJ3xbcXThJnf6uU3IRDlHAtoGz9o6hwfiNO4tvETwtQ8hNs3f9YOb9sr4AbxFlHGs4A2VGyAu/HPZRqXR02C5xq/6ebK+F0zfRu4Mf5Ux/yztwUPGADXKj0IgTj+zgX68G+AO+PvxyJ+Zsbf1HT4d8JZwUpeqngYAtU27GZ8/1K+cn/lAn1gaPyniY8gfrUEOmasq981NtPvigfcmkxf5joCroFbrAf59hLY2oHB1bB4705EwPUEuDgcshNOFuAmLIHOF2kiKiPV9HU5X2HdjpHrtyWCOzBFr+8W+NVYfLR9zyh0c22U+vYdICpEgVHTwaihtW7OqzfaeUDoDLbAr4Yv7V6NF7XvF61NGAG3mIVjvOlb9oABMDLe9S07X+zqQpjvrBCL6sEQOZNQvUhrUB0LJm3zQdQFIX+meMlfZbxkzyyXhPHHYyUTck4FBgeRZXFDhidWcJEoVypk8lSRQ1zKzEnJMt6GJqe4YHnKHiqZR0aBypN9M2rWhshoQzNpPbEKwTnMNnx9LoqeN1pluK5RXksiTy/pVm8E3x18vcTh8e10pMnMwBAwU1aWDY4eCxZXrKDZ/V/HqYyd0rqUjoznRMZZnVb8lL7Jigl/5gkNTKa1KdO4PHD1XOQP4rKpycsnmUad0HaOdq09VT1hUcUupErDuuokwDGDDpjXnZhubJqitkgnC45BeYoPkozoJawsWbi/pfnFiq4uR3/90dxn/RXOL/ZnxgrH2AhxlidxeQTPznxfpylT+V+eCp6xcSLqfcqIj84XeNhNeaKPeHSe77Ab7ug8p2lvrGNtprP+QOcX05z2RmnwRV5nhZETDOTbLetTOZCvV5IRvV+iQ3rgSS4ySpOE0iRBmqRD+dDB+DPy5GOnPHruitKDV4k5R0E6KjEclSiNgqi2YmlqKyZ7jE8F/Yq+H0RJeXdAIqRcEiiXlJQTI+XESLkkUE6UlBMl5cRIOTFSDkrKiWrKpakpJxvKiUM5VaXvbGPvh/RBloy+0Y7lDmmn0jNIRLVnqXgx8Rgk2pZlAyPgehgXhXiRIsgTfOXNpPGDyB9XMmLDHY4okeTB5c+lpaVOKSXZp3pWpDrsRXWEJ5i0eZpzZZKzPg1VULzks06aegvQR8ZtX6SeEOKOd3L1oE/G3YVwct701Os/isiYdefQYwEZ1/qJ9PCKjC9+aNaBiW+xrBAYAG3ganoU4ineC321NmUttxv3rv2r3V2DRXq4b53qTz+8Xaq6J0hVKW0I3ildHCrZWCMoWdSHOwpcZN+Qs9eLZNrrNR3bCpb0b9RIafab+AeMTwTqAAAA"),weight:700,style:"normal"}]});import qZ5 from"satori";import{Resvg as MZ5}from"@resvg/resvg-js";async function SZ5(Z){try{let X=await fetch(Z,{signal:AbortSignal.timeout(1500)});if(!X.ok)return null;let G=X.headers.get("content-type")||"image/png";if(!G.startsWith("image/"))return null;let Y=Buffer.from(await X.arrayBuffer()).toString("base64");return`data:${G};base64,${Y}`}catch{return null}}async function Yx8(Z){let X=Z.faviconUrl?await SZ5(Z.faviconUrl):null,G=X?AX("div",{width:84,height:84,flexShrink:0,borderRadius:20,backgroundColor:Gx8,display:"flex",alignItems:"center",justifyContent:"center"},AX("img",{},null,{src:X,width:56,height:56})):AX("div",{width:84,height:84,flexShrink:0,borderRadius:20,backgroundColor:Sz0,color:H41,fontSize:44,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center"},(Z.initial||Z.domain.charAt(0)||"?").toUpperCase()),Y=AX("div",{width:F41,height:Xx8,display:"flex",flexDirection:"column",justifyContent:"space-between",padding:"72px 80px",backgroundColor:H41,color:Gx8,fontFamily:"Inter"},[AX("div",{display:"flex",alignItems:"center",gap:22},[G,AX("div",{display:"flex",flexDirection:"column"},[AX("div",{fontSize:24,color:Sz0,fontWeight:600,marginBottom:4},"Commerce report"),AX("div",{fontSize:46,fontWeight:600,letterSpacing:"-0.02em"},Z.domain)])]),AX("div",{display:"flex",alignItems:"flex-end",gap:28},[AX("div",{fontSize:220,fontWeight:700,color:Sz0,lineHeight:0.82,letterSpacing:"-0.05em"},String(Math.round(Z.score))),AX("div",{fontSize:60,fontWeight:400,color:"rgba(244,251,230,0.55)",paddingBottom:30},"/100"),AX("div",{fontSize:30,fontWeight:400,color:"rgba(244,251,230,0.82)",paddingBottom:40},"Commerce health score")]),AX("div",{display:"flex",alignItems:"center",gap:14},[AX("div",{width:44,height:44,borderRadius:11,backgroundColor:Sz0,display:"flex",alignItems:"center",justifyContent:"center"},AX("svg",{},AX("path",{},null,{d:kZ5,fill:H41}),{width:30,height:30,viewBox:"0 0 200 200"})),AX("div",{fontSize:26,fontWeight:700},"decocms")])]),Q=await qZ5(Y,{width:F41,height:Xx8,fonts:eb8}),$=new MZ5(Q,{fitTo:{mode:"width",value:F41}}).render().asPng();return Uint8Array.from($)}var F41=1200,Xx8=630,H41="#07401a",Sz0="#d0ec1a",Gx8="#f4fbe6",kZ5="M79.8641 145.438C97.4676 145.438 107.196 137.562 118.777 113.01C125.263 99.5758 130.358 86.1415 136.381 73.1705L143.793 75.4867C145.646 75.95 147.035 75.0235 146.109 73.1705L136.844 55.1037C136.381 53.714 134.528 53.714 133.601 54.1772L111.365 62.5157C109.512 62.979 109.512 64.832 111.365 65.2952L117.851 67.6115C112.292 79.656 105.806 98.186 100.247 109.767C94.2249 122.738 91.4454 131.54 80.7906 131.54C70.1359 131.54 68.7461 123.665 73.3786 112.084C78.4744 98.6493 86.8129 94.9433 96.0779 97.7228C98.8574 94.0168 100.71 88.4578 101.637 83.362C98.8574 82.4355 95.6146 82.4355 92.8351 82.4355C77.5479 82.4355 62.2606 90.3108 55.7751 106.988C48.8263 128.761 56.2383 145.438 79.8641 145.438Z",AX=(Z,X,G,Y={})=>({type:Z,props:{...Y,style:X,children:G}});var Qx8=B(()=>{Zx8()});import{join as $x8}from"path";async function Jx8(Z){try{let X=await fetch(`${V$({})}/api/v2/public/diagnostics/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(VZ5)});if(!X.ok)return null;let G=await X.json(),{deck:Y}=kz0(G);if(!Y.slides.length)return null;let Q=Y.slides.find((W)=>W.template.template==="cover"),$=Q?.template,J=$&&$.template==="cover"?$:void 0;return{brand:Y.meta.brand?.trim()||W41(Z),score:Y.meta.scores?.cover??J?.score?.value,verdict:Q?.annotation?.trim()||Q?.headline?.trim()||void 0}}catch{return null}}function oQ(Z){return Z.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function CZ5(Z,X){let G=rg(Z),Y=X?.brand?.trim()||W41(G),Q=K41(G,128),J=`${(K1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(G)}`,{title:W,description:K}=ob8({brand:Y,domain:G,score:X?.score,verdict:X?.verdict}),N=`${J}/og.png`,U=`${Y} commerce report by decocms`;return[`<title>${oQ(W)}</title>`,`<meta name="description" content="${oQ(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${oQ(W)}" />`,`<meta property="og:description" content="${oQ(K)}" />`,`<meta property="og:url" content="${oQ(J)}" />`,`<meta property="og:image" content="${oQ(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${oQ(U)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${oQ(W)}" />`,`<meta name="twitter:description" content="${oQ(K)}" />`,`<meta name="twitter:image" content="${oQ(N)}" />`,`<meta name="twitter:image:alt" content="${oQ(U)}" />`,`<link rel="canonical" href="${oQ(J)}" />`,`<link rel="icon" href="${oQ(Q)}" sizes="any" />`].join(`
|
|
2760
|
+
`;return new TextEncoder().encode(Y)}var Z41,gC,u95,Rb8,e61="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",l95,l8,c8,G4,Tb8=24,hC,uJ;var Cb8=B(()=>{(function(Z){Z.Operator="operator",Z.Account="account",Z.User="user",Z.Activation="activation",Z.AuthorizationResponse="authorization_response"})(Z41||(Z41={}));(function(Z){var X=function(h,m){this.hi=h|0,this.lo=m|0},G=function(h){var m,u=new Float64Array(16);if(h)for(m=0;m<h.length;m++)u[m]=h[m];return u},Y=function(){throw Error("no PRNG")},Q=new Uint8Array(16),$=new Uint8Array(32);$[0]=9;var J=G(),W=G([1]),K=G([56129,1]),N=G([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),U=G([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),F=G([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),H=G([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),w=G([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function O(h,m){return h<<m|h>>>32-m}function D(h,m){var u=h[m+3]&255;return u=u<<8|h[m+2]&255,u=u<<8|h[m+1]&255,u<<8|h[m+0]&255}function E(h,m){var u=h[m]<<24|h[m+1]<<16|h[m+2]<<8|h[m+3],o=h[m+4]<<24|h[m+5]<<16|h[m+6]<<8|h[m+7];return new X(u,o)}function L(h,m,u){var o;for(o=0;o<4;o++)h[m+o]=u&255,u>>>=8}function z(h,m,u){h[m]=u.hi>>24&255,h[m+1]=u.hi>>16&255,h[m+2]=u.hi>>8&255,h[m+3]=u.hi&255,h[m+4]=u.lo>>24&255,h[m+5]=u.lo>>16&255,h[m+6]=u.lo>>8&255,h[m+7]=u.lo&255}function j(h,m,u,o,Y0){var W0,b0=0;for(W0=0;W0<Y0;W0++)b0|=h[m+W0]^u[o+W0];return(1&b0-1>>>8)-1}function A(h,m,u,o){return j(h,m,u,o,16)}function P(h,m,u,o){return j(h,m,u,o,32)}function q(h,m,u,o,Y0){var W0=new Uint32Array(16),b0=new Uint32Array(16),m0=new Uint32Array(16),P0=new Uint32Array(4),S0,A0,y0;for(S0=0;S0<4;S0++)b0[5*S0]=D(o,4*S0),b0[1+S0]=D(u,4*S0),b0[6+S0]=D(m,4*S0),b0[11+S0]=D(u,16+4*S0);for(S0=0;S0<16;S0++)m0[S0]=b0[S0];for(S0=0;S0<20;S0++){for(A0=0;A0<4;A0++){for(y0=0;y0<4;y0++)P0[y0]=b0[(5*A0+4*y0)%16];P0[1]^=O(P0[0]+P0[3]|0,7),P0[2]^=O(P0[1]+P0[0]|0,9),P0[3]^=O(P0[2]+P0[1]|0,13),P0[0]^=O(P0[3]+P0[2]|0,18);for(y0=0;y0<4;y0++)W0[4*A0+(A0+y0)%4]=P0[y0]}for(y0=0;y0<16;y0++)b0[y0]=W0[y0]}if(Y0){for(S0=0;S0<16;S0++)b0[S0]=b0[S0]+m0[S0]|0;for(S0=0;S0<4;S0++)b0[5*S0]=b0[5*S0]-D(o,4*S0)|0,b0[6+S0]=b0[6+S0]-D(m,4*S0)|0;for(S0=0;S0<4;S0++)L(h,4*S0,b0[5*S0]),L(h,16+4*S0,b0[6+S0])}else for(S0=0;S0<16;S0++)L(h,4*S0,b0[S0]+m0[S0]|0)}function S(h,m,u,o){return q(h,m,u,o,!1),0}function M(h,m,u,o){return q(h,m,u,o,!0),0}var C=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function d(h,m,u,o,Y0,W0,b0){var m0=new Uint8Array(16),P0=new Uint8Array(64),S0,A0;if(!Y0)return 0;for(A0=0;A0<16;A0++)m0[A0]=0;for(A0=0;A0<8;A0++)m0[A0]=W0[A0];while(Y0>=64){S(P0,m0,b0,C);for(A0=0;A0<64;A0++)h[m+A0]=(u?u[o+A0]:0)^P0[A0];S0=1;for(A0=8;A0<16;A0++)S0=S0+(m0[A0]&255)|0,m0[A0]=S0&255,S0>>>=8;if(Y0-=64,m+=64,u)o+=64}if(Y0>0){S(P0,m0,b0,C);for(A0=0;A0<Y0;A0++)h[m+A0]=(u?u[o+A0]:0)^P0[A0]}return 0}function x(h,m,u,o,Y0){return d(h,m,null,0,u,o,Y0)}function _(h,m,u,o,Y0){var W0=new Uint8Array(32);return M(W0,o,Y0,C),x(h,m,u,o.subarray(16),W0)}function X0(h,m,u,o,Y0,W0,b0){var m0=new Uint8Array(32);return M(m0,W0,b0,C),d(h,m,u,o,Y0,W0.subarray(16),m0)}function n(h,m){var u,o=0;for(u=0;u<17;u++)o=o+(h[u]+m[u]|0)|0,h[u]=o&255,o>>>=8}var U0=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function D0(h,m,u,o,Y0,W0){var b0,m0,P0,S0,A0=new Uint32Array(17),y0=new Uint32Array(17),a0=new Uint32Array(17),G1=new Uint32Array(17),U1=new Uint32Array(17);for(P0=0;P0<17;P0++)y0[P0]=a0[P0]=0;for(P0=0;P0<16;P0++)y0[P0]=W0[P0];y0[3]&=15,y0[4]&=252,y0[7]&=15,y0[8]&=252,y0[11]&=15,y0[12]&=252,y0[15]&=15;while(Y0>0){for(P0=0;P0<17;P0++)G1[P0]=0;for(P0=0;P0<16&&P0<Y0;++P0)G1[P0]=u[o+P0];G1[P0]=1,o+=P0,Y0-=P0,n(a0,G1);for(m0=0;m0<17;m0++){A0[m0]=0;for(P0=0;P0<17;P0++)A0[m0]=A0[m0]+a0[P0]*(P0<=m0?y0[m0-P0]:320*y0[m0+17-P0]|0)|0|0}for(m0=0;m0<17;m0++)a0[m0]=A0[m0];S0=0;for(P0=0;P0<16;P0++)S0=S0+a0[P0]|0,a0[P0]=S0&255,S0>>>=8;S0=S0+a0[16]|0,a0[16]=S0&3,S0=5*(S0>>>2)|0;for(P0=0;P0<16;P0++)S0=S0+a0[P0]|0,a0[P0]=S0&255,S0>>>=8;S0=S0+a0[16]|0,a0[16]=S0}for(P0=0;P0<17;P0++)U1[P0]=a0[P0];n(a0,U0),b0=-(a0[16]>>>7)|0;for(P0=0;P0<17;P0++)a0[P0]^=b0&(U1[P0]^a0[P0]);for(P0=0;P0<16;P0++)G1[P0]=W0[P0+16];G1[16]=0,n(a0,G1);for(P0=0;P0<16;P0++)h[m+P0]=a0[P0];return 0}function J0(h,m,u,o,Y0,W0){var b0=new Uint8Array(16);return D0(b0,0,u,o,Y0,W0),A(h,m,b0,0)}function Q0(h,m,u,o,Y0){var W0;if(u<32)return-1;X0(h,0,m,0,u,o,Y0),D0(h,16,h,32,u-32,h);for(W0=0;W0<16;W0++)h[W0]=0;return 0}function a(h,m,u,o,Y0){var W0,b0=new Uint8Array(32);if(u<32)return-1;if(_(b0,0,32,o,Y0),J0(m,16,m,32,u-32,b0)!==0)return-1;X0(h,0,m,0,u,o,Y0);for(W0=0;W0<32;W0++)h[W0]=0;return 0}function T0(h,m){var u;for(u=0;u<16;u++)h[u]=m[u]|0}function N0(h){var m,u;for(u=0;u<16;u++)h[u]+=65536,m=Math.floor(h[u]/65536),h[(u+1)*(u<15?1:0)]+=m-1+37*(m-1)*(u===15?1:0),h[u]-=m*65536}function v0(h,m,u){var o,Y0=~(u-1);for(var W0=0;W0<16;W0++)o=Y0&(h[W0]^m[W0]),h[W0]^=o,m[W0]^=o}function i0(h,m){var u,o,Y0,W0=G(),b0=G();for(u=0;u<16;u++)b0[u]=m[u];N0(b0),N0(b0),N0(b0);for(o=0;o<2;o++){W0[0]=b0[0]-65517;for(u=1;u<15;u++)W0[u]=b0[u]-65535-(W0[u-1]>>16&1),W0[u-1]&=65535;W0[15]=b0[15]-32767-(W0[14]>>16&1),Y0=W0[15]>>16&1,W0[14]&=65535,v0(b0,W0,1-Y0)}for(u=0;u<16;u++)h[2*u]=b0[u]&255,h[2*u+1]=b0[u]>>8}function n0(h,m){var u=new Uint8Array(32),o=new Uint8Array(32);return i0(u,h),i0(o,m),P(u,0,o,0)}function l0(h){var m=new Uint8Array(32);return i0(m,h),m[0]&1}function F0(h,m){var u;for(u=0;u<16;u++)h[u]=m[2*u]+(m[2*u+1]<<8);h[15]&=32767}function C0(h,m,u){var o;for(o=0;o<16;o++)h[o]=m[o]+u[o]|0}function R0(h,m,u){var o;for(o=0;o<16;o++)h[o]=m[o]-u[o]|0}function B0(h,m,u){var o,Y0,W0=new Float64Array(31);for(o=0;o<31;o++)W0[o]=0;for(o=0;o<16;o++)for(Y0=0;Y0<16;Y0++)W0[o+Y0]+=m[o]*u[Y0];for(o=0;o<15;o++)W0[o]+=38*W0[o+16];for(o=0;o<16;o++)h[o]=W0[o];N0(h),N0(h)}function $0(h,m){B0(h,m,m)}function G0(h,m){var u=G(),o;for(o=0;o<16;o++)u[o]=m[o];for(o=253;o>=0;o--)if($0(u,u),o!==2&&o!==4)B0(u,u,m);for(o=0;o<16;o++)h[o]=u[o]}function V0(h,m){var u=G(),o;for(o=0;o<16;o++)u[o]=m[o];for(o=250;o>=0;o--)if($0(u,u),o!==1)B0(u,u,m);for(o=0;o<16;o++)h[o]=u[o]}function p(h,m,u){var o=new Uint8Array(32),Y0=new Float64Array(80),W0,b0,m0=G(),P0=G(),S0=G(),A0=G(),y0=G(),a0=G();for(b0=0;b0<31;b0++)o[b0]=m[b0];o[31]=m[31]&127|64,o[0]&=248,F0(Y0,u);for(b0=0;b0<16;b0++)P0[b0]=Y0[b0],A0[b0]=m0[b0]=S0[b0]=0;m0[0]=A0[0]=1;for(b0=254;b0>=0;--b0)W0=o[b0>>>3]>>>(b0&7)&1,v0(m0,P0,W0),v0(S0,A0,W0),C0(y0,m0,S0),R0(m0,m0,S0),C0(S0,P0,A0),R0(P0,P0,A0),$0(A0,y0),$0(a0,m0),B0(m0,S0,m0),B0(S0,P0,y0),C0(y0,m0,S0),R0(m0,m0,S0),$0(P0,m0),R0(S0,A0,a0),B0(m0,S0,K),C0(m0,m0,A0),B0(S0,S0,m0),B0(m0,A0,a0),B0(A0,P0,Y0),$0(P0,y0),v0(m0,P0,W0),v0(S0,A0,W0);for(b0=0;b0<16;b0++)Y0[b0+16]=m0[b0],Y0[b0+32]=S0[b0],Y0[b0+48]=P0[b0],Y0[b0+64]=A0[b0];var G1=Y0.subarray(32),U1=Y0.subarray(16);return G0(G1,G1),B0(U1,U1,G1),i0(h,U1),0}function Z0(h,m){return p(h,m,$)}function r0(h,m){return Y(m,32),Z0(h,m)}function q0(h,m,u){var o=new Uint8Array(32);return p(o,u,m),M(h,Q,o,C)}var M0=Q0,g=a;function H0(h,m,u,o,Y0,W0){var b0=new Uint8Array(32);return q0(b0,Y0,W0),M0(h,m,u,o,b0)}function x0(h,m,u,o,Y0,W0){var b0=new Uint8Array(32);return q0(b0,Y0,W0),g(h,m,u,o,b0)}function e0(){var h=0,m=0,u=0,o=0,Y0=65535,W0,b0,m0;for(m0=0;m0<arguments.length;m0++)W0=arguments[m0].lo,b0=arguments[m0].hi,h+=W0&Y0,m+=W0>>>16,u+=b0&Y0,o+=b0>>>16;return m+=h>>>16,u+=m>>>16,o+=u>>>16,new X(u&Y0|o<<16,h&Y0|m<<16)}function u0(h,m){return new X(h.hi>>>m,h.lo>>>m|h.hi<<32-m)}function T1(){var h=0,m=0,u;for(u=0;u<arguments.length;u++)h^=arguments[u].lo,m^=arguments[u].hi;return new X(m,h)}function e1(h,m){var u,o,Y0=32-m;if(m<32)u=h.hi>>>m|h.lo<<Y0,o=h.lo>>>m|h.hi<<Y0;else if(m<64)u=h.lo>>>m|h.hi<<Y0,o=h.hi>>>m|h.lo<<Y0;return new X(u,o)}function z4(h,m,u){var o=h.hi&m.hi^~h.hi&u.hi,Y0=h.lo&m.lo^~h.lo&u.lo;return new X(o,Y0)}function $5(h,m,u){var o=h.hi&m.hi^h.hi&u.hi^m.hi&u.hi,Y0=h.lo&m.lo^h.lo&u.lo^m.lo&u.lo;return new X(o,Y0)}function u9(h){return T1(e1(h,28),e1(h,34),e1(h,39))}function e(h){return T1(e1(h,14),e1(h,18),e1(h,41))}function N1(h){return T1(e1(h,1),e1(h,8),u0(h,7))}function a8(h){return T1(e1(h,19),e1(h,61),u0(h,6))}var s8=[new X(1116352408,3609767458),new X(1899447441,602891725),new X(3049323471,3964484399),new X(3921009573,2173295548),new X(961987163,4081628472),new X(1508970993,3053834265),new X(2453635748,2937671579),new X(2870763221,3664609560),new X(3624381080,2734883394),new X(310598401,1164996542),new X(607225278,1323610764),new X(1426881987,3590304994),new X(1925078388,4068182383),new X(2162078206,991336113),new X(2614888103,633803317),new X(3248222580,3479774868),new X(3835390401,2666613458),new X(4022224774,944711139),new X(264347078,2341262773),new X(604807628,2007800933),new X(770255983,1495990901),new X(1249150122,1856431235),new X(1555081692,3175218132),new X(1996064986,2198950837),new X(2554220882,3999719339),new X(2821834349,766784016),new X(2952996808,2566594879),new X(3210313671,3203337956),new X(3336571891,1034457026),new X(3584528711,2466948901),new X(113926993,3758326383),new X(338241895,168717936),new X(666307205,1188179964),new X(773529912,1546045734),new X(1294757372,1522805485),new X(1396182291,2643833823),new X(1695183700,2343527390),new X(1986661051,1014477480),new X(2177026350,1206759142),new X(2456956037,344077627),new X(2730485921,1290863460),new X(2820302411,3158454273),new X(3259730800,3505952657),new X(3345764771,106217008),new X(3516065817,3606008344),new X(3600352804,1432725776),new X(4094571909,1467031594),new X(275423344,851169720),new X(430227734,3100823752),new X(506948616,1363258195),new X(659060556,3750685593),new X(883997877,3785050280),new X(958139571,3318307427),new X(1322822218,3812723403),new X(1537002063,2003034995),new X(1747873779,3602036899),new X(1955562222,1575990012),new X(2024104815,1125592928),new X(2227730452,2716904306),new X(2361852424,442776044),new X(2428436474,593698344),new X(2756734187,3733110249),new X(3204031479,2999351573),new X(3329325298,3815920427),new X(3391569614,3928383900),new X(3515267271,566280711),new X(3940187606,3454069534),new X(4118630271,4000239992),new X(116418474,1914138554),new X(174292421,2731055270),new X(289380356,3203993006),new X(460393269,320620315),new X(685471733,587496836),new X(852142971,1086792851),new X(1017036298,365543100),new X(1126000580,2618297676),new X(1288033470,3409855158),new X(1501505948,4234509866),new X(1607167915,987167468),new X(1816402316,1246189591)];function AZ(h,m,u){var o=[],Y0=[],W0=[],b0=[],m0,P0,S0;for(P0=0;P0<8;P0++)o[P0]=W0[P0]=E(h,8*P0);var A0=0;while(u>=128){for(P0=0;P0<16;P0++)b0[P0]=E(m,8*P0+A0);for(P0=0;P0<80;P0++){for(S0=0;S0<8;S0++)Y0[S0]=W0[S0];m0=e0(W0[7],e(W0[4]),z4(W0[4],W0[5],W0[6]),s8[P0],b0[P0%16]),Y0[7]=e0(m0,u9(W0[0]),$5(W0[0],W0[1],W0[2])),Y0[3]=e0(Y0[3],m0);for(S0=0;S0<8;S0++)W0[(S0+1)%8]=Y0[S0];if(P0%16===15)for(S0=0;S0<16;S0++)b0[S0]=e0(b0[S0],b0[(S0+9)%16],N1(b0[(S0+1)%16]),a8(b0[(S0+14)%16]))}for(P0=0;P0<8;P0++)W0[P0]=e0(W0[P0],o[P0]),o[P0]=W0[P0];A0+=128,u-=128}for(P0=0;P0<8;P0++)z(h,8*P0,o[P0]);return u}var nG=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function q6(h,m,u){var o=new Uint8Array(64),Y0=new Uint8Array(256),W0,b0=u;for(W0=0;W0<64;W0++)o[W0]=nG[W0];AZ(o,m,u),u%=128;for(W0=0;W0<256;W0++)Y0[W0]=0;for(W0=0;W0<u;W0++)Y0[W0]=m[b0-u+W0];Y0[u]=128,u=256-128*(u<112?1:0),Y0[u-9]=0,z(Y0,u-8,new X(b0/536870912|0,b0<<3)),AZ(o,Y0,u);for(W0=0;W0<64;W0++)h[W0]=o[W0];return 0}function f4(h,m){var u=G(),o=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G(),S0=G(),A0=G();R0(u,h[1],h[0]),R0(A0,m[1],m[0]),B0(u,u,A0),C0(o,h[0],h[1]),C0(A0,m[0],m[1]),B0(o,o,A0),B0(Y0,h[3],m[3]),B0(Y0,Y0,U),B0(W0,h[2],m[2]),C0(W0,W0,W0),R0(b0,o,u),R0(m0,W0,Y0),C0(P0,W0,Y0),C0(S0,o,u),B0(h[0],b0,m0),B0(h[1],S0,P0),B0(h[2],P0,m0),B0(h[3],b0,S0)}function Z9(h,m,u){var o;for(o=0;o<4;o++)v0(h[o],m[o],u)}function T9(h,m){var u=G(),o=G(),Y0=G();G0(Y0,m[2]),B0(u,m[0],Y0),B0(o,m[1],Y0),i0(h,o),h[31]^=l0(u)<<7}function $Z(h,m,u){var o,Y0;T0(h[0],J),T0(h[1],W),T0(h[2],W),T0(h[3],J);for(Y0=255;Y0>=0;--Y0)o=u[Y0/8|0]>>(Y0&7)&1,Z9(h,m,o),f4(m,h),f4(h,h),Z9(h,m,o)}function PZ(h,m){var u=[G(),G(),G(),G()];T0(u[0],F),T0(u[1],H),T0(u[2],W),B0(u[3],F,H),$Z(h,u,m)}function _1(h,m,u){var o=new Uint8Array(64),Y0=[G(),G(),G(),G()],W0;if(!u)Y(m,32);q6(o,m,32),o[0]&=248,o[31]&=127,o[31]|=64,PZ(Y0,o),T9(h,Y0);for(W0=0;W0<32;W0++)m[W0+32]=h[W0];return 0}var M6=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function k6(h,m){var u,o,Y0,W0;for(o=63;o>=32;--o){u=0;for(Y0=o-32,W0=o-12;Y0<W0;++Y0)m[Y0]+=u-16*m[o]*M6[Y0-(o-32)],u=Math.floor((m[Y0]+128)/256),m[Y0]-=u*256;m[Y0]+=u,m[o]=0}u=0;for(Y0=0;Y0<32;Y0++)m[Y0]+=u-(m[31]>>4)*M6[Y0],u=m[Y0]>>8,m[Y0]&=255;for(Y0=0;Y0<32;Y0++)m[Y0]-=u*M6[Y0];for(o=0;o<32;o++)m[o+1]+=m[o]>>8,h[o]=m[o]&255}function Y4(h){var m=new Float64Array(64),u;for(u=0;u<64;u++)m[u]=h[u];for(u=0;u<64;u++)h[u]=0;k6(h,m)}function x8(h,m,u,o){var Y0=new Uint8Array(64),W0=new Uint8Array(64),b0=new Uint8Array(64),m0,P0,S0=new Float64Array(64),A0=[G(),G(),G(),G()];q6(Y0,o,32),Y0[0]&=248,Y0[31]&=127,Y0[31]|=64;var y0=u+64;for(m0=0;m0<u;m0++)h[64+m0]=m[m0];for(m0=0;m0<32;m0++)h[32+m0]=Y0[32+m0];q6(b0,h.subarray(32),u+32),Y4(b0),PZ(A0,b0),T9(h,A0);for(m0=32;m0<64;m0++)h[m0]=o[m0];q6(W0,h,u+64),Y4(W0);for(m0=0;m0<64;m0++)S0[m0]=0;for(m0=0;m0<32;m0++)S0[m0]=b0[m0];for(m0=0;m0<32;m0++)for(P0=0;P0<32;P0++)S0[m0+P0]+=W0[m0]*Y0[P0];return k6(h.subarray(32),S0),y0}function F6(h,m){var u=G(),o=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G();if(T0(h[2],W),F0(h[1],m),$0(Y0,h[1]),B0(W0,Y0,N),R0(Y0,Y0,h[2]),C0(W0,h[2],W0),$0(b0,W0),$0(m0,b0),B0(P0,m0,b0),B0(u,P0,Y0),B0(u,u,W0),V0(u,u),B0(u,u,Y0),B0(u,u,W0),B0(u,u,W0),B0(h[0],u,W0),$0(o,h[0]),B0(o,o,W0),n0(o,Y0))B0(h[0],h[0],w);if($0(o,h[0]),B0(o,o,W0),n0(o,Y0))return-1;if(l0(h[0])===m[31]>>7)R0(h[0],J,h[0]);return B0(h[3],h[0],h[1]),0}function PX(h,m,u,o){var Y0,W0=new Uint8Array(32),b0=new Uint8Array(64),m0=[G(),G(),G(),G()],P0=[G(),G(),G(),G()];if(u<64)return-1;if(F6(P0,o))return-1;for(Y0=0;Y0<u;Y0++)h[Y0]=m[Y0];for(Y0=0;Y0<32;Y0++)h[Y0+32]=o[Y0];if(q6(b0,h,u),Y4(b0),$Z(m0,P0,b0),PZ(P0,m.subarray(32)),f4(m0,P0),T9(W0,m0),u-=64,P(m,0,W0,0)){for(Y0=0;Y0<u;Y0++)h[Y0]=0;return-1}for(Y0=0;Y0<u;Y0++)h[Y0]=m[Y0+64];return u}var V8=32,i4=24,e4=32,r6=16,X9=32,V=32,l=32,c=32,R=32,r=i4,_0=e4,d0=r6,W1=64,H1=32,g1=64,b1=32,$6=64;Z.lowlevel={crypto_core_hsalsa20:M,crypto_stream_xor:X0,crypto_stream:_,crypto_stream_salsa20_xor:d,crypto_stream_salsa20:x,crypto_onetimeauth:D0,crypto_onetimeauth_verify:J0,crypto_verify_16:A,crypto_verify_32:P,crypto_secretbox:Q0,crypto_secretbox_open:a,crypto_scalarmult:p,crypto_scalarmult_base:Z0,crypto_box_beforenm:q0,crypto_box_afternm:M0,crypto_box:H0,crypto_box_open:x0,crypto_box_keypair:r0,crypto_hash:q6,crypto_sign:x8,crypto_sign_keypair:_1,crypto_sign_open:PX,crypto_secretbox_KEYBYTES:V8,crypto_secretbox_NONCEBYTES:i4,crypto_secretbox_ZEROBYTES:e4,crypto_secretbox_BOXZEROBYTES:r6,crypto_scalarmult_BYTES:X9,crypto_scalarmult_SCALARBYTES:V,crypto_box_PUBLICKEYBYTES:l,crypto_box_SECRETKEYBYTES:c,crypto_box_BEFORENMBYTES:R,crypto_box_NONCEBYTES:r,crypto_box_ZEROBYTES:_0,crypto_box_BOXZEROBYTES:d0,crypto_sign_BYTES:W1,crypto_sign_PUBLICKEYBYTES:H1,crypto_sign_SECRETKEYBYTES:g1,crypto_sign_SEEDBYTES:b1,crypto_hash_BYTES:$6,gf:G,D:N,L:M6,pack25519:i0,unpack25519:F0,M:B0,A:C0,S:$0,Z:R0,pow2523:V0,add:f4,set25519:T0,modL:k6,scalarmult:$Z,scalarbase:PZ};function c1(h,m){if(h.length!==V8)throw Error("bad key size");if(m.length!==i4)throw Error("bad nonce size")}function z8(h,m){if(h.length!==l)throw Error("bad public key size");if(m.length!==c)throw Error("bad secret key size")}function Q8(){for(var h=0;h<arguments.length;h++)if(!(arguments[h]instanceof Uint8Array))throw TypeError("unexpected type, use Uint8Array")}function g8(h){for(var m=0;m<h.length;m++)h[m]=0}Z.randomBytes=function(h){var m=new Uint8Array(h);return Y(m,h),m},Z.secretbox=function(h,m,u){Q8(h,m,u),c1(u,m);var o=new Uint8Array(e4+h.length),Y0=new Uint8Array(o.length);for(var W0=0;W0<h.length;W0++)o[W0+e4]=h[W0];return Q0(Y0,o,o.length,m,u),Y0.subarray(r6)},Z.secretbox.open=function(h,m,u){Q8(h,m,u),c1(u,m);var o=new Uint8Array(r6+h.length),Y0=new Uint8Array(o.length);for(var W0=0;W0<h.length;W0++)o[W0+r6]=h[W0];if(o.length<32)return null;if(a(Y0,o,o.length,m,u)!==0)return null;return Y0.subarray(e4)},Z.secretbox.keyLength=V8,Z.secretbox.nonceLength=i4,Z.secretbox.overheadLength=r6,Z.scalarMult=function(h,m){if(Q8(h,m),h.length!==V)throw Error("bad n size");if(m.length!==X9)throw Error("bad p size");var u=new Uint8Array(X9);return p(u,h,m),u},Z.scalarMult.base=function(h){if(Q8(h),h.length!==V)throw Error("bad n size");var m=new Uint8Array(X9);return Z0(m,h),m},Z.scalarMult.scalarLength=V,Z.scalarMult.groupElementLength=X9,Z.box=function(h,m,u,o){var Y0=Z.box.before(u,o);return Z.secretbox(h,m,Y0)},Z.box.before=function(h,m){Q8(h,m),z8(h,m);var u=new Uint8Array(R);return q0(u,h,m),u},Z.box.after=Z.secretbox,Z.box.open=function(h,m,u,o){var Y0=Z.box.before(u,o);return Z.secretbox.open(h,m,Y0)},Z.box.open.after=Z.secretbox.open,Z.box.keyPair=function(){var h=new Uint8Array(l),m=new Uint8Array(c);return r0(h,m),{publicKey:h,secretKey:m}},Z.box.keyPair.fromSecretKey=function(h){if(Q8(h),h.length!==c)throw Error("bad secret key size");var m=new Uint8Array(l);return Z0(m,h),{publicKey:m,secretKey:new Uint8Array(h)}},Z.box.publicKeyLength=l,Z.box.secretKeyLength=c,Z.box.sharedKeyLength=R,Z.box.nonceLength=r,Z.box.overheadLength=Z.secretbox.overheadLength,Z.sign=function(h,m){if(Q8(h,m),m.length!==g1)throw Error("bad secret key size");var u=new Uint8Array(W1+h.length);return x8(u,h,h.length,m),u},Z.sign.open=function(h,m){if(Q8(h,m),m.length!==H1)throw Error("bad public key size");var u=new Uint8Array(h.length),o=PX(u,h,h.length,m);if(o<0)return null;var Y0=new Uint8Array(o);for(var W0=0;W0<Y0.length;W0++)Y0[W0]=u[W0];return Y0},Z.sign.detached=function(h,m){var u=Z.sign(h,m),o=new Uint8Array(W1);for(var Y0=0;Y0<o.length;Y0++)o[Y0]=u[Y0];return o},Z.sign.detached.verify=function(h,m,u){if(Q8(h,m,u),m.length!==W1)throw Error("bad signature size");if(u.length!==H1)throw Error("bad public key size");var o=new Uint8Array(W1+h.length),Y0=new Uint8Array(W1+h.length),W0;for(W0=0;W0<W1;W0++)o[W0]=m[W0];for(W0=0;W0<h.length;W0++)o[W0+W1]=h[W0];return PX(Y0,o,o.length,u)>=0},Z.sign.keyPair=function(){var h=new Uint8Array(H1),m=new Uint8Array(g1);return _1(h,m),{publicKey:h,secretKey:m}},Z.sign.keyPair.fromSecretKey=function(h){if(Q8(h),h.length!==g1)throw Error("bad secret key size");var m=new Uint8Array(H1);for(var u=0;u<m.length;u++)m[u]=h[32+u];return{publicKey:m,secretKey:new Uint8Array(h)}},Z.sign.keyPair.fromSeed=function(h){if(Q8(h),h.length!==b1)throw Error("bad seed size");var m=new Uint8Array(H1),u=new Uint8Array(g1);for(var o=0;o<32;o++)u[o]=h[o];return _1(m,u,!0),{publicKey:m,secretKey:u}},Z.sign.publicKeyLength=H1,Z.sign.secretKeyLength=g1,Z.sign.seedLength=b1,Z.sign.signatureLength=W1,Z.hash=function(h){Q8(h);var m=new Uint8Array($6);return q6(m,h,h.length),m},Z.hash.hashLength=$6,Z.verify=function(h,m){if(Q8(h,m),h.length===0||m.length===0)return!1;if(h.length!==m.length)return!1;return j(h,0,m,0,h.length)===0?!0:!1},Z.setPRNG=function(h){Y=h},function(){var h=typeof globalThis<"u"?globalThis.crypto||globalThis.msCrypto:null;if(h&&h.getRandomValues){var m=65536;Z.setPRNG(function(u,o){var Y0,W0=new Uint8Array(o);for(Y0=0;Y0<o;Y0+=m)h.getRandomValues(W0.subarray(Y0,Y0+Math.min(o-Y0,m)));for(Y0=0;Y0<o;Y0++)u[Y0]=W0[Y0];g8(W0)})}else if(h=c0("crypto"),h&&h.randomBytes)Z.setPRNG(function(u,o){var Y0,W0=h.randomBytes(o);for(Y0=0;Y0<o;Y0++)u[Y0]=W0[Y0];g8(W0)})}()})(typeof tg<"u"&&sY7?sY7:globalThis.nacl=globalThis.nacl||{});gC=typeof tg<"u"&&sY7?sY7:globalThis.nacl,u95={fromSeed:gC.sign.keyPair.fromSeed,sign:gC.sign.detached,verify:gC.sign.detached.verify,randomBytes:gC.randomBytes,scalarBaseMultiply:gC.scalarMult.base,seal:gC.box,open:gC.box.open};l95=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);l8=class l8 extends Error{name;code;chainedError;constructor(Z,X){super(Z);this.name="NKeysError",this.code=Z,this.chainedError=X}};(function(Z){Z.InvalidPrefixByte="nkeys: invalid prefix byte",Z.InvalidKey="nkeys: invalid key",Z.InvalidPublicKey="nkeys: invalid public key",Z.InvalidSeedLen="nkeys: invalid seed length",Z.InvalidSeed="nkeys: invalid seed",Z.InvalidCurveSeed="nkeys: invalid curve seed",Z.InvalidCurveKey="nkeys: not a valid curve key",Z.InvalidCurveOperation="nkeys: curve key is not valid for sign/verify",Z.InvalidNKeyOperation="keys: only curve key can seal/open",Z.InvalidEncoding="nkeys: invalid encoded key",Z.InvalidRecipient="nkeys: not a valid recipient public curve key",Z.InvalidEncrypted="nkeys: encrypted input is not valid",Z.CannotSign="nkeys: cannot sign, no private key available",Z.PublicKeyOnly="nkeys: no seed or private key available",Z.InvalidChecksum="nkeys: invalid checksum",Z.SerializationError="nkeys: serialization error",Z.ApiError="nkeys: api error",Z.ClearedPair="nkeys: pair is cleared"})(c8||(c8={}));(function(Z){Z[Z.Unknown=-1]="Unknown",Z[Z.Seed=144]="Seed",Z[Z.Private=120]="Private",Z[Z.Operator=112]="Operator",Z[Z.Server=104]="Server",Z[Z.Cluster=16]="Cluster",Z[Z.Account=0]="Account",Z[Z.User=160]="User",Z[Z.Curve=184]="Curve"})(G4||(G4={}));hC=[120,107,118,49];c95(u95);(function(Z){Z.v1="ed25519",Z.v2="ed25519-nkey"})(uJ||(uJ={}))});function $41(Z){try{Z?.clear?.()}catch{}}async function fb8({accountJwt:Z,accountSigningKey:X,expiresAt:G,permissions:Y,userId:Q,allowedConnectionTypes:$=["WEBSOCKET"]}){let J=Sb8(Z),W=Y41(J.sub),K=Q41(new TextEncoder().encode(X)),N=Ib8();try{let U=await kb8(Q,N,W,{pub:{allow:Y.publish.allow},sub:{allow:Y.subscribe.allow},allowed_connection_types:$},{algorithm:uJ.v2,exp:Math.floor(G.getTime()/1000),signer:K});return new TextDecoder().decode(Vb8(U,N))}finally{$41(N),$41(K),$41(W)}}var bb8=B(()=>{Cb8()});function e95(Z){return/^wss?:\/\//i.test(Z.trim())?["WEBSOCKET"]:["STANDARD","WEBSOCKET"]}function xb8(){let Z=new V1;return Z.post("/links/session",async(X)=>{let Y=X.get("studioContext").auth?.user?.id;if(!Y)return X.json({error:"Unauthorized"},401);let Q=K1();if(!Q.natsTunnelPublicEnabled)return X.json(J41(),503);if(!Q.natsPublicUrl)return X.json(J41(),503);if(!Q.natsAccountJwt||!Q.natsAccountSigningKey){if(!Q.localMode)return X.json(J41(),503)}let $=hJ(Y),J;if(Q.natsAccountJwt&&Q.natsAccountSigningKey){let W=new Date(Date.now()+Q.natsTunnelSessionTtlSeconds*1000);J=await fb8({accountJwt:Q.natsAccountJwt,accountSigningKey:Q.natsAccountSigningKey,expiresAt:W,permissions:jb8($),userId:Y,allowedConnectionTypes:e95(Q.natsPublicUrl)})}return X.json(Ab8({publicUrl:Q.natsPublicUrl,userId:Y,ttlSeconds:Q.natsTunnelSessionTtlSeconds,credentials:J}))}),Z}var J41=()=>({error:"link session unavailable"});var vb8=B(()=>{a6();y8();Pb8();bb8()});function XZ5(Z){return Z.filter((X)=>X.vendors?.alias).map((X)=>({name:X.name,title:X.title,description:X.description,logo:X.logo,category:X.category,vendor:{alias:X.vendors.alias,url:X.vendors.url}}))}async function GZ5(Z,X){let G=await fetch(`${Z}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:X,Authorization:`Bearer ${X}`,Accept:"application/json"},signal:AbortSignal.timeout(ZZ5)});if(!G.ok){let Y=await G.text().catch(()=>G.statusText);throw console.error(`[deco-apps] Supabase error (${G.status}): ${Y.slice(0,200)}`),Error(`External service error (${G.status})`)}return await G.json()}var ZZ5=1e4,YZ5=async(Z,X)=>{if(!Z.get("studioContext").auth.user?.id)return Z.json({error:"Unauthorized"},401);return X()},_b8=()=>{let Z=new V1;return Z.use("*",YZ5),Z.get("/",async(X)=>{let G=K1(),Y=G.decoSupabaseUrl,Q=G.decoSupabaseServiceKey;if(!Y||!Q)return X.json({apps:[]});try{let $=await GZ5(Y,Q);return X.json({apps:XZ5($)})}catch($){return console.error("[deco-apps] GET error:",$),X.json({error:"Failed to fetch apps"},502)}}),Z};var yb8=B(()=>{a6();y8()});import{z as h1}from"zod";function fK(Z,X="invalid_request_error",G=null,Y=null){return{error:{message:Z,type:X,param:G,code:Y}}}function wZ5(Z){if(!Z)return null;let X=Z.indexOf(":");if(X===-1)return{credentialId:null,modelId:Z};let G=Z.substring(0,X),Y=Z.substring(X+1);if(!G||!Y)return null;return{credentialId:G,modelId:Y}}function OZ5(Z,X,G){try{return JSON.parse(Z)}catch{throw new ub8(`Invalid JSON in tool call arguments for function '${G}' (tool_call_id: ${X}): ${Z}`)}}function BZ5(Z){let X={};for(let G of Z)if(G.role==="assistant"&&G.tool_calls)for(let Y of G.tool_calls)X[Y.id]=Y.function.name;return Z.map((G)=>{switch(G.role){case"system":return{role:"system",content:G.content};case"user":if(typeof G.content==="string")return{role:"user",content:G.content};return{role:"user",content:G.content.map((Q)=>{if(Q.type==="text")return{type:"text",text:Q.text};return{type:"image",image:Q.image_url.url}})};case"assistant":if(G.tool_calls&&G.tool_calls.length>0)return{role:"assistant",content:G.tool_calls.map((Q)=>({type:"tool-call",toolCallId:Q.id,toolName:Q.function.name,input:OZ5(Q.function.arguments,Q.id,Q.function.name)}))};return{role:"assistant",content:G.content??""};case"tool":let Y=X[G.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:G.tool_call_id,toolName:Y,output:{type:"text",value:G.content}}]}}})}function DZ5(Z){let X=Z.map((G)=>{let Y=G.function.parameters?AQ(G.function.parameters):AQ({type:"object",properties:{}});return[G.function.name,v8({description:G.function.description,inputSchema:Y})]});return Object.fromEntries(X)}function EZ5(Z){if(!Z)return;return{openai:{response_format:Z}}}function LZ5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function gb8(Z,X,G,Y,Q,$){let J={model:Z,messages:X,tools:G,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:$};return Q?{...J,providerOptions:Q}:J}function hb8(Z){if(Z==="tool-calls")return"tool_calls";if(Z==="length")return"length";return"stop"}var QZ5=256,$Z5,JZ5,WZ5,KZ5,NZ5,UZ5,FZ5,HZ5,ub8,cb8,lb8;var db8=B(()=>{K4();a6();ng();$Z5=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),JZ5=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),WZ5=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(JZ5).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),KZ5=h1.object({type:h1.literal("text")}),NZ5=h1.object({type:h1.literal("json_object")}),UZ5=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),FZ5=h1.union([KZ5,NZ5,UZ5]),HZ5=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(WZ5),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array($Z5).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:FZ5.optional(),user:h1.string().optional()});ub8=class ub8 extends Error{constructor(Z){super(Z);this.name="MessageConversionError"}};cb8=new V1;cb8.post("/:org/v1/chat/completions",async(Z)=>{let X=Z.get("studioContext"),G=Z.req.param("org");try{if(!X.auth.apiKey?.id)return Z.json(fK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!X.organization)return Z.json(fK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((X.organization.slug??X.organization.id)!==G)return Z.json(fK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await Z.req.json(),Q=HZ5.safeParse(Y);if(!Q.success){let E=Q.error.issues[0]??{message:"Invalid request",path:[]};return Z.json(fK(`Invalid request: ${E.message}`,"invalid_request_error",E.path.length>0?E.path.join("."):null),400)}let $=Q.data,J=wZ5($.model);if(!J)return Z.json(fK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=await X.storage.aiProviderKeys.list({organizationId:X.organization.id});if(E.length===0)return Z.json(fK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E[0].id}let N;try{N=await X.aiProviders.activate(W,X.organization.id)}catch{return Z.json(fK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let U=N.aiSdk.languageModel(K),F=BZ5($.messages),H=$.tools?DZ5($.tools):void 0,w=EZ5($.response_format),O=LZ5(),D=Math.floor(Date.now()/1000);if($.stream)return tU(Z,async(E)=>{let L=gb8(U,F,H,$,w,Z.req.raw.signal);try{let z=u3(L),j=!1,A=0,P="",q=async()=>{if(P.length===0)return;let S=P;P="",await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=QZ5)await q()}else if(S.type==="tool-call"){await q();let M=A++;await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await q(),await E.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:$.model,choices:[{index:0,delta:{},finish_reason:hb8(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await q(),await E.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await E.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let E=gb8(U,F,H,$,w,Z.req.raw.signal),L=await Cw(E),z={role:"assistant",content:L.text||null};if(L.toolCalls&&L.toolCalls.length>0)z.tool_calls=L.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return Z.json({id:O,object:"chat.completion",created:D,model:$.model,choices:[{index:0,message:z,finish_reason:hb8(L.finishReason)}],usage:{prompt_tokens:L.usage?.inputTokens??0,completion_tokens:L.usage?.outputTokens??0,total_tokens:L.usage?.totalTokens??0}})}}catch(Y){let Q=Y;if(Q.name==="AbortError")return Z.json(fK("Request aborted","invalid_request_error"),400);if(Q.name==="MessageConversionError")return Z.json(fK(Q.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Q.message,Q.stack),Z.json(fK(Q.message,"server_error"),500)}});lb8=cb8});var ib8;var mb8=B(()=>{ib8={name:"decocms",version:"4.139.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function AZ5(){let Z=process.env.POSTHOG_KEY;if(!Z)return null;return{key:Z,host:process.env.POSTHOG_HOST??jZ5}}var nb8,jZ5="https://ph.studio.decocms.com",pb8;var tb8=B(()=>{a6();Df0();JO();tZ();y8();G11();mb8();nb8=new V1;nb8.get("/",(Z)=>{let X={version:ib8.version,theme:ek1(),...GD().logo&&{logo:GD().logo},...n3()&&{internalUrl:G10()},...K1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!K1().firecrawlApiKey,auth:Wq8(),posthog:AZ5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!n3()&&K1().sandboxProviderKind==="agent-sandbox"}};return Z.header("Cache-Control","no-store"),Z.json({success:!0,config:X})});pb8=nb8});function rg(Z){let X=(Z??"").trim().toLowerCase();return X=X.replace(/^https?:\/\//,""),X=X.replace(/^www\./,""),X=X.split(/[/?#]/)[0]??"",X.replace(/\/+$/,"")}function W41(Z){return(rg(Z).split(".")[0]||Z).replace(/[-_]/g," ").split(" ").filter(Boolean).map((G)=>G.charAt(0).toUpperCase()+G.slice(1)).join(" ")}function K41(Z,X=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(rg(Z))}&sz=${X}`}function rb8(Z,X){let G=Z.trim();if(G.length<=X)return G;let Y=G.slice(0,X-1),Q=Y.lastIndexOf(" ");return`${(Q>X*0.6?Y.slice(0,Q):Y).trimEnd()}\u2026`}function ob8(Z){let{brand:X,domain:G,score:Y,verdict:Q}=Z,$=typeof Y==="number"?`${X} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${X} commerce report \xB7 decocms`,J=`See the full ${X} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Q?.trim()?rb8(`${Q.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):rb8(`How does ${G} really perform? ${J}`,200);return{title:$,description:W}}import{z as $1}from"zod";var cC,PZ5,TZ5,RZ5,IZ5,ab8;var sb8=B(()=>{cC=$1.enum(["good","bad","neutral"]),PZ5=$1.preprocess((Z)=>{if(Array.isArray(Z))return{kind:"text",value:Z.find((G)=>G!==null&&typeof G!=="object")??""};return Z!==null&&typeof Z==="object"?Z:{kind:"text",value:Z}},$1.object({kind:$1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:$1.coerce.string().optional(),tone:cC.optional(),muted:$1.boolean().optional(),delta:$1.coerce.string().optional(),deltaDir:$1.enum(["up","down","neutral"]).optional(),points:$1.array($1.coerce.number()).optional(),label:$1.coerce.string().optional()}).transform((Z)=>{if(Z.kind==="badge"&&Z.label==null)Z.label=Z.value??"";if(Z.kind==="score"){let X=Number(Z.value);if(Number.isNaN(X))return{...Z,kind:"text"}}return Z})),TZ5=$1.preprocess((Z)=>{let X=Z;if(X&&typeof X==="object"&&!Array.isArray(X)&&Array.isArray(X.cells))X=X.cells;if(Array.isArray(X)&&X.length===1&&Array.isArray(X[0]))X=X[0];if(Array.isArray(X))return X;if(X&&typeof X==="object")return Object.values(X);return X},$1.array(PZ5)),RZ5={key:$1.coerce.string(),title:$1.coerce.string(),eyebrow:$1.coerce.string().optional(),headline:$1.coerce.string(),annotation:$1.coerce.string().optional(),methodology:$1.coerce.string().optional(),sources:$1.array($1.object({name:$1.coerce.string(),logoUrl:$1.coerce.string()})).optional()},IZ5=$1.discriminatedUnion("template",[$1.object({template:$1.literal("cover"),score:$1.object({value:$1.coerce.number(),max:$1.coerce.number().optional(),grade:$1.coerce.string().optional(),label:$1.coerce.string().optional()}).optional(),brandImage:$1.coerce.string().optional(),screenshot:$1.coerce.string().optional(),mobileScreenshot:$1.coerce.string().optional()}),$1.object({template:$1.literal("cta"),ctaUrl:$1.coerce.string().optional(),ctaLabel:$1.coerce.string().optional(),bullets:$1.array($1.coerce.string()).optional()}),$1.object({template:$1.literal("series"),points:$1.array($1.coerce.number()).min(2),xLabels:$1.array($1.coerce.string()).min(1),unit:$1.coerce.string().optional(),callout:$1.object({index:$1.coerce.number(),value:$1.coerce.string(),tone:cC.optional()})}),$1.object({template:$1.literal("threshold"),value:$1.coerce.string().default(""),metricLabel:$1.coerce.string().optional(),ratio:$1.coerce.number(),thresholdRatio:$1.coerce.number().optional(),thresholdLabel:$1.coerce.string().default(""),tone:cC.optional()}),$1.object({template:$1.literal("stats"),stats:$1.array($1.object({value:$1.coerce.string(),label:$1.coerce.string(),tone:cC.optional()})).min(1)}),$1.object({template:$1.literal("bars"),items:$1.array($1.object({value:$1.coerce.string(),label:$1.coerce.string(),ratio:$1.coerce.number(),tone:cC.optional()})).min(1)}),$1.object({template:$1.literal("gauges"),gauges:$1.array($1.object({label:$1.coerce.string(),value:$1.coerce.string(),status:$1.enum(["good","warn","bad"]).catch("warn"),caption:$1.coerce.string().optional(),ratio:$1.coerce.number().optional()})).min(1)}),$1.object({template:$1.literal("checklist"),checks:$1.array($1.object({label:$1.coerce.string(),status:$1.enum(["pass","fail","warn"]).catch("fail"),value:$1.coerce.string().optional()})).min(1)}),$1.object({template:$1.literal("table"),columns:$1.array($1.object({label:$1.coerce.string(),align:$1.enum(["left","right"]).optional()})).min(1),rows:$1.array(TZ5).min(1),highlightRow:$1.coerce.number().optional()}),$1.object({template:$1.literal("products"),products:$1.array($1.object({name:$1.coerce.string(),price:$1.coerce.string().optional(),image:$1.coerce.string().optional(),url:$1.coerce.string().optional()})).min(1)}),$1.object({template:$1.literal("list"),entries:$1.array($1.object({label:$1.coerce.string(),severity:$1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:$1.coerce.number().optional()}),$1.object({template:$1.literal("keywords"),volumeLabel:$1.coerce.string().optional(),keywords:$1.array($1.object({term:$1.coerce.string(),volume:$1.coerce.string(),position:$1.coerce.number().catch(0)})).min(1)}),$1.object({template:$1.literal("competitor"),metricLabel:$1.coerce.string().optional(),competitors:$1.array($1.object({name:$1.coerce.string(),value:$1.coerce.string(),tone:cC.optional(),isYou:$1.boolean().optional()})).min(1)}),$1.object({template:$1.literal("scorecard"),rivalLabel:$1.coerce.string().optional(),dimensions:$1.array($1.object({label:$1.coerce.string(),you:$1.coerce.string(),rival:$1.coerce.string().optional(),rivalName:$1.coerce.string().optional(),tone:cC.optional()})).min(1)})]),ab8=$1.object({...RZ5,template:IZ5})});function kz0(Z){let X=[],G=[...Z.sections].sort((Y,Q)=>Y.position-Q.position).map((Y)=>{let Q=ab8.safeParse(Y.props);if(Q.success)return Q.data;let $=Q.error.issues[0];return X.push({section_type:Y.section_type,position:Y.position,reason:$?`${$.path.join(".")||"(root)"}: ${$.message}`:"contract violation"}),null}).filter((Y)=>Y!==null);return{deck:{meta:{...Z.meta,scores:Z.summary?.scores},slides:G},drops:X}}var N41=B(()=>{sb8()});function U41(Z){return Buffer.from(Z,"base64")}var eb8;var Zx8=B(()=>{eb8=[{name:"Inter",data:U41("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"),weight:400,style:"normal"},{name:"Inter",data:U41("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"),weight:600,style:"normal"},{name:"Inter",data:U41("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"),weight:700,style:"normal"}]});import qZ5 from"satori";import{Resvg as MZ5}from"@resvg/resvg-js";async function SZ5(Z){try{let X=await fetch(Z,{signal:AbortSignal.timeout(1500)});if(!X.ok)return null;let G=X.headers.get("content-type")||"image/png";if(!G.startsWith("image/"))return null;let Y=Buffer.from(await X.arrayBuffer()).toString("base64");return`data:${G};base64,${Y}`}catch{return null}}async function Yx8(Z){let X=Z.faviconUrl?await SZ5(Z.faviconUrl):null,G=X?AX("div",{width:84,height:84,flexShrink:0,borderRadius:20,backgroundColor:Gx8,display:"flex",alignItems:"center",justifyContent:"center"},AX("img",{},null,{src:X,width:56,height:56})):AX("div",{width:84,height:84,flexShrink:0,borderRadius:20,backgroundColor:Sz0,color:H41,fontSize:44,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center"},(Z.initial||Z.domain.charAt(0)||"?").toUpperCase()),Y=AX("div",{width:F41,height:Xx8,display:"flex",flexDirection:"column",justifyContent:"space-between",padding:"72px 80px",backgroundColor:H41,color:Gx8,fontFamily:"Inter"},[AX("div",{display:"flex",alignItems:"center",gap:22},[G,AX("div",{display:"flex",flexDirection:"column"},[AX("div",{fontSize:24,color:Sz0,fontWeight:600,marginBottom:4},"Commerce report"),AX("div",{fontSize:46,fontWeight:600,letterSpacing:"-0.02em"},Z.domain)])]),AX("div",{display:"flex",alignItems:"flex-end",gap:28},[AX("div",{fontSize:220,fontWeight:700,color:Sz0,lineHeight:0.82,letterSpacing:"-0.05em"},String(Math.round(Z.score))),AX("div",{fontSize:60,fontWeight:400,color:"rgba(244,251,230,0.55)",paddingBottom:30},"/100"),AX("div",{fontSize:30,fontWeight:400,color:"rgba(244,251,230,0.82)",paddingBottom:40},"Commerce health score")]),AX("div",{display:"flex",alignItems:"center",gap:14},[AX("div",{width:44,height:44,borderRadius:11,backgroundColor:Sz0,display:"flex",alignItems:"center",justifyContent:"center"},AX("svg",{},AX("path",{},null,{d:kZ5,fill:H41}),{width:30,height:30,viewBox:"0 0 200 200"})),AX("div",{fontSize:26,fontWeight:700},"decocms")])]),Q=await qZ5(Y,{width:F41,height:Xx8,fonts:eb8}),$=new MZ5(Q,{fitTo:{mode:"width",value:F41}}).render().asPng();return Uint8Array.from($)}var F41=1200,Xx8=630,H41="#07401a",Sz0="#d0ec1a",Gx8="#f4fbe6",kZ5="M79.8641 145.438C97.4676 145.438 107.196 137.562 118.777 113.01C125.263 99.5758 130.358 86.1415 136.381 73.1705L143.793 75.4867C145.646 75.95 147.035 75.0235 146.109 73.1705L136.844 55.1037C136.381 53.714 134.528 53.714 133.601 54.1772L111.365 62.5157C109.512 62.979 109.512 64.832 111.365 65.2952L117.851 67.6115C112.292 79.656 105.806 98.186 100.247 109.767C94.2249 122.738 91.4454 131.54 80.7906 131.54C70.1359 131.54 68.7461 123.665 73.3786 112.084C78.4744 98.6493 86.8129 94.9433 96.0779 97.7228C98.8574 94.0168 100.71 88.4578 101.637 83.362C98.8574 82.4355 95.6146 82.4355 92.8351 82.4355C77.5479 82.4355 62.2606 90.3108 55.7751 106.988C48.8263 128.761 56.2383 145.438 79.8641 145.438Z",AX=(Z,X,G,Y={})=>({type:Z,props:{...Y,style:X,children:G}});var Qx8=B(()=>{Zx8()});import{join as $x8}from"path";async function Jx8(Z){try{let X=await fetch(`${V$({})}/api/v2/public/diagnostics/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(VZ5)});if(!X.ok)return null;let G=await X.json(),{deck:Y}=kz0(G);if(!Y.slides.length)return null;let Q=Y.slides.find((W)=>W.template.template==="cover"),$=Q?.template,J=$&&$.template==="cover"?$:void 0;return{brand:Y.meta.brand?.trim()||W41(Z),score:Y.meta.scores?.cover??J?.score?.value,verdict:Q?.annotation?.trim()||Q?.headline?.trim()||void 0}}catch{return null}}function oQ(Z){return Z.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function CZ5(Z,X){let G=rg(Z),Y=X?.brand?.trim()||W41(G),Q=K41(G,128),J=`${(K1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(G)}`,{title:W,description:K}=ob8({brand:Y,domain:G,score:X?.score,verdict:X?.verdict}),N=`${J}/og.png`,U=`${Y} commerce report by decocms`;return[`<title>${oQ(W)}</title>`,`<meta name="description" content="${oQ(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${oQ(W)}" />`,`<meta property="og:description" content="${oQ(K)}" />`,`<meta property="og:url" content="${oQ(J)}" />`,`<meta property="og:image" content="${oQ(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${oQ(U)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${oQ(W)}" />`,`<meta name="twitter:description" content="${oQ(K)}" />`,`<meta name="twitter:image" content="${oQ(N)}" />`,`<meta name="twitter:image:alt" content="${oQ(U)}" />`,`<link rel="canonical" href="${oQ(J)}" />`,`<link rel="icon" href="${oQ(Q)}" sizes="any" />`].join(`
|
|
2761
2761
|
`)}function fZ5(Z,X){return Z.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${X}
|
|
2762
2762
|
</head>`)}async function xZ5(Z,X){let G=`${Z}|${Math.round(X)}`,Y=Vr.get(G);if(Y)return Y;let Q=await Yx8({domain:Z,initial:Z.charAt(0),score:X,faviconUrl:K41(Z,128)});if(Vr.size>=bZ5){let $=Vr.keys().next().value;if($!==void 0)Vr.delete($)}return Vr.set(G,Q),Q}function Wx8(Z){let X=new V1;return X.get("/:domain/og.png",async(G)=>{let Y=rg(G.req.param("domain")),Q=async()=>{let $=Z?Bun.file($x8(Z,"report-og-fallback.png")):null;if(!$||!await $.exists())return G.notFound();return G.body(new Uint8Array(await $.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let $=await Jx8(Y);if(!$||typeof $.score!=="number")return Q();let J=await xZ5(Y,$.score);return G.body(J,200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=86400"})}catch{return Q()}}),X.get("/:domain",async(G)=>{let Y=G.req.param("domain"),Q=Z?$x8(Z,"index.html"):null,$=Q?Bun.file(Q):null;if(!$||!await $.exists())return G.notFound();let J=await $.text();try{let W=await Jx8(rg(Y)),K=CZ5(Y,W);return G.html(fZ5(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return G.html(J)}}),X}var VZ5=2500,Vr,bZ5=256;var Kx8=B(()=>{a6();N41();Qx8();iF();y8();Vr=new Map});function Cr(Z,X){return fetch(`${V$({})}${Z}`,X)}async function vZ5(Z,X,G){let Y=new URLSearchParams;if(X)Y.set("pw",X);if(G)Y.set("lang",G);let Q=Y.toString()?`?${Y.toString()}`:"",$=await Cr(`/api/v2/public/diagnostics/${encodeURIComponent(Z)}${Q}`,{headers:{Accept:"application/json"}});if($.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!$.ok)throw Error(`report read HTTP ${$.status}`);let J=await $.json(),{deck:W,drops:K}=kz0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var _Z5,lC,Nx8;var Ux8=B(()=>{a6();kQ();iF();N41();_Z5=new Set(["complete","errored","terminated","unknown"]),lC=new V1;lC.use("*",async(Z,X)=>{let G=await Y6.api.getSession({headers:Z.req.raw.headers});if(!G?.user?.id)return Z.json({error:"Authentication required"},401,{"Cache-Control":"private, no-store",Vary:"Cookie"});Z.set("reportUser",{email:G.user.email}),await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie");return});lC.get("/site/:domain",async(Z)=>{let X=Z.req.param("domain").trim();if(!X)return Z.json({error:"domain is required"},400);let G=Z.req.query("key")?.trim()||void 0,Y=Z.req.query("lang")?.trim()||void 0;try{let Q=await vZ5(X,G,Y);return Z.header("Cache-Control","private, no-store"),Z.json(Q)}catch{return Z.json({error:"report read failed"},502)}});lC.post("/run",async(Z)=>{let X;try{X=await Z.req.json()}catch{return Z.json({error:"invalid JSON"},400)}let G=typeof X.domain==="string"?X.domain.trim():"";if(!G)return Z.json({error:"domain is required"},400);let Y=Z.get("reportUser").email,Q=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let $=await Cr("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${oB({})}`},body:JSON.stringify({url:G,email:Y,distinct_id:Q})});if(!$.ok)return Z.json({error:`run HTTP ${$.status}`},502);let J=await $.json(),W=J.blocked?{state:"blocked"}:J.status==="fresh"?{state:"fresh"}:J.mode==="sync"?{state:"sync"}:{state:"running",id:J.id??null};return Z.json(W)}catch{return Z.json({error:"run failed"},502)}});lC.get("/status",async(Z)=>{let X=Z.req.query("id");if(!X)return Z.json({error:"id is required"},400);try{let G=await Cr(`/api/v2/diagnostics/status?id=${encodeURIComponent(X)}`,{headers:{Authorization:`Bearer ${oB({})}`}});if(!G.ok)return Z.json({error:`status HTTP ${G.status}`},502);let Q=(await G.json()).status??"unknown",$={done:_Z5.has(Q),status:Q};return Z.json($)}catch{return Z.json({error:"status failed"},502)}});lC.get("/link-token/:id",async(Z)=>{let X=Z.req.param("id");try{let G=await Cr(`/api/v2/public/link-tokens/${encodeURIComponent(X)}`,{headers:{Accept:"application/json"}});if(G.status===404)return Z.json(null);if(!G.ok)return Z.json({error:`link token HTTP ${G.status}`},502);return Z.json(await G.json())}catch{return Z.json({error:"link token resolve failed"},502)}});lC.get("/suggest",async(Z)=>{let X=(Z.req.query("q")??"").trim().slice(0,64);if(X.length<2)return Z.json({suggestions:[]});try{let G=await Cr(`/api/v2/public/suggest?q=${encodeURIComponent(X)}`,{headers:{Accept:"application/json"}});if(!G.ok)return Z.json({suggestions:[]});let Y=await G.json();return Z.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return Z.json({suggestions:[]})}});Nx8=lC});import{createHmac as yZ5,timingSafeEqual as gZ5}from"crypto";function Fx8(Z,X,G,Y=Date.now()){if(!X||!G)return!1;let Q,$=[];for(let N of X.split(",")){let U=N.indexOf("=");if(U<=0)continue;let F=N.slice(0,U).trim(),H=N.slice(U+1).trim();if(F==="t")Q=H;else if(F==="v1")$.push(H)}if(!Q||$.length===0)return!1;let J=Number(Q);if(!Number.isFinite(J)||Math.abs(Y/1000-J)>hZ5)return!1;let W=yZ5("sha256",G).update(`${Q}.${Z}`).digest("hex"),K=Buffer.from(W,"hex");return $.some((N)=>{let U=Buffer.from(N,"hex");return K.length===U.length&&gZ5(K,U)})}function Hx8(Z){let X;try{X=JSON.parse(Z)}catch{return null}let G=Q$(X),Y=Q$(Q$(G?.data)?.object);if(!G||typeof G.type!=="string"||!Y)return null;return{id:Y$(G.id),type:G.type,created:typeof G.created==="number"?G.created:void 0,livemode:typeof G.livemode==="boolean"?G.livemode:void 0,data:{object:Y}}}function uZ5(Z){switch(Z){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function Y$(Z){return typeof Z==="string"?Z:void 0}function Q$(Z){return typeof Z==="object"&&Z!==null?Z:void 0}function Vz0(Z){return typeof Z==="number"?new Date(Z*1000):null}function B41(Z){return Y$(Z)??Y$(Q$(Z)?.id)}function cZ5(Z){return B41(Z.subscription)??Y$(Q$(Q$(Z.parent)?.subscription_details)?.subscription)}function lZ5(Z){let X=Vz0(Z.current_period_end);if(X)return X;let G=Q$(Z.items)?.data;if(!Array.isArray(G))return null;let Y=0;for(let Q of G){let $=Q$(Q)?.current_period_end;if(typeof $==="number"&&$>Y)Y=$}return Y>0?new Date(Y*1000):null}function w41(Z,X){let G=Vz0(Z.created);return!!G&&!!X.lastStripeEventAt&&G<X.lastStripeEventAt}function O41(Z,X){let G=Vz0(Z.created);if(!G)return;return X.lastStripeEventAt&&X.lastStripeEventAt>G?void 0:G}async function dZ5(Z,X){let G=X.data.object;switch(X.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Y=Y$(Q$(G.metadata)?.orgId);if(!Y)return{handled:!1,reason:"no orgId"};if(Y$(Q$(G.metadata)?.kind)==="topup"){if(G.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(Y$(G.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let W=Y$(G.id);if(!W)return console.error("stripe webhook: topup session without id",{eventId:X.id,organizationId:Y}),{handled:!1,reason:"topup session without id"};let K=Number(Q$(G.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:X.id,organizationId:Y,creditCents:Q$(G.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Y,topUp:{creditCents:K,referenceId:`stripe-topup:${W}`}}}if(G.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(Y$(G.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Q=await Z.getBilling(Y);if(!Q)return{handled:!1,reason:"unknown org"};if(Q.legacy||Q.billingMode!=="self_serve")return console.error("stripe webhook: refused checkout bind",{organizationId:Y,eventId:X.id,legacy:Q.legacy,billingMode:Q.billingMode}),{handled:!1,reason:"org is not self-serve"};let $=B41(G.subscription);if(Q.stripeSubscriptionId&&$&&Q.stripeSubscriptionId!==$)return console.error("stripe webhook: refused checkout rebind",{organizationId:Y,eventId:X.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:$};if(w41(X,Q))return{handled:!1,reason:"stale event"};let J=`stripe-checkout:${Y$(G.id)??crypto.randomUUID()}`;return await Z.updateStripeState(Y,{stripeCustomerId:B41(G.customer),stripeSubscriptionId:$,status:"active",benefitsReferenceId:J,lastStripeEventAt:O41(X,Q)}),{handled:!0,organizationId:Y,benefitsReferenceId:J}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Y=Y$(G.id);if(!Y)return{handled:!1,reason:"no sub id"};let Q=await Z.getBillingByStripeSubscriptionId(Y);if(!Q)return{handled:!1,reason:"unknown subscription"};let $=X.type==="customer.subscription.deleted";if(!$&&w41(X,Q))return{handled:!1,reason:"stale event"};let J=$?"canceled":uZ5(G.status),W=lZ5(G),K=`stripe-sub:${Y}:${J}:${W?.getTime()??0}`;return await Z.updateStripeState(Q.organizationId,{status:J,currentPeriodEnd:W,...$&&{stripeSubscriptionId:null},benefitsReferenceId:K,lastStripeEventAt:O41(X,Q)}),{handled:!0,organizationId:Q.organizationId,benefitsReferenceId:K}}case"invoice.paid":{let Y=cZ5(G);if(!Y)return{handled:!1,reason:"no sub id"};let Q=await Z.getBillingByStripeSubscriptionId(Y);if(!Q)return{handled:!1,reason:"unknown subscription"};if(w41(X,Q))return{handled:!1,reason:"stale event"};let $=`stripe-invoice:${Y$(G.id)??crypto.randomUUID()}`;return await Z.updateStripeState(Q.organizationId,{status:"active",currentPeriodEnd:Vz0(G.period_end),benefitsReferenceId:$,lastStripeEventAt:O41(X,Q)}),{handled:!0,organizationId:Q.organizationId,benefitsReferenceId:$}}default:return{handled:!1,reason:`unhandled event ${X.type}`}}}async function iZ5(Z,X){let[G,Y]=await Promise.all([Z.getBilling(X),Z.listPaidSeatUserIds(X)]);if(!kb(G))return;if(await U88({subscriptionId:G.stripeSubscriptionId,targetQuantity:Y.length}))console.error("stripe webhook: reconciled diverged seat quantity",{organizationId:X,targetQuantity:Y.length})}async function wx8(Z){let X=new EN(P6().db),G=await dZ5(X,Z);if(G.handled&&G.topUp)await lq1({organizationId:G.organizationId,amountCents:G.topUp.creditCents,referenceId:G.topUp.referenceId});if(G.handled&&G.benefitsReferenceId)try{await TN(G.organizationId,G.benefitsReferenceId,"apply")}catch(Y){console.error("Failed to enqueue benefit sync (sweep covers):",Y)}if(G.handled&&mZ5.has(Z.type))try{await iZ5(X,G.organizationId)}catch(Y){console.error("Failed to reconcile seat quantity (next cycle):",Y)}if(!G.handled&&G.orphanSubscriptionId)try{await N88(G.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:G.orphanSubscriptionId,eventId:Z.id})}catch(Y){if(!(Y instanceof MY&&(Y.status===400||Y.status===404)))throw Y}return G}var hZ5=300,mZ5;var Ox8=B(()=>{GY();Eb();q_();T00();Sb();mZ5=new Set(["checkout.session.completed","checkout.session.async_payment_succeeded","invoice.paid"])});var nZ5=1048576,D41;var Bx8=B(()=>{a6();MC();y8();Ox8();D41=new V1;D41.post("/webhook",y7({maxSize:nZ5,onError:(Z)=>Z.json({error:"payload too large"},413)}),async(Z)=>{let X=K1().stripeWebhookSecret;if(!X)return Z.json({error:"stripe billing not configured"},503);let G=await Z.req.text();if(!Fx8(G,Z.req.header("stripe-signature"),X))return Z.json({error:"invalid signature"},400);let Q=Hx8(G);if(!Q)return Z.json({error:"invalid payload"},400);let $=await wx8(Q);return console.log("stripe webhook",{eventId:Q.id,type:Q.type,livemode:Q.livemode,...$}),Z.json({received:!0})})});function Dx8(Z,X){if(X.startsWith("text/html")||X.startsWith("image/svg"))Z.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Ex8,pZ5,tZ5,Lx8;var zx8=B(()=>{a6();f$();By();Cb();Ex8=new V1,pZ5=["range","if-none-match","if-modified-since"],tZ5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Ex8.get("/:org/files/*",async(Z)=>{let X=Z.get("studioContext"),G=X.organization?.id;if(!X.auth?.user?.id){if(Sg(Z))return Z.redirect(`/login?next=${encodeURIComponent(Z.req.path)}`,302);throw new j8(401,{message:"Authentication required"})}if(!G)throw new j8(401,{message:"Organization context required"});let Y=Z.req.path.replace(/^.*\/files\//,"");if(!Y)throw new j8(400,{message:"Missing file key"});let Q=await jp(Y,X);if(!Q)throw new j8(503,{message:"Object storage not configured"});if(Q.startsWith("data:")&&C$()){let K=Q.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new j8(500,{message:"Invalid data URL from storage"});let[,N,U]=K,F=Buffer.from(U,"base64"),H=new Headers({"Content-Type":N,"Cache-Control":"private, max-age=86400"});return Dx8(H,N),new Response(F,{status:200,headers:H})}let $=new Headers;for(let K of pZ5){let N=Z.req.header(K);if(N)$.set(K,N)}let J=await fetch(Q,{headers:$});if(J.status===403||J.status===404)throw new j8(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Y),new j8(502,{message:"Upstream storage error"});let W=new Headers;for(let K of tZ5){let N=J.headers.get(K);if(N)W.set(K,N)}return W.set("Cache-Control","private, max-age=86400"),Dx8(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Lx8=Ex8});var fr=f((dC)=>{var rZ5=dC&&dC.__createBinding||(Object.create?function(Z,X,G,Y){if(Y===void 0)Y=G;var Q=Object.getOwnPropertyDescriptor(X,G);if(!Q||("get"in Q?!X.__esModule:Q.writable||Q.configurable))Q={enumerable:!0,get:function(){return X[G]}};Object.defineProperty(Z,Y,Q)}:function(Z,X,G,Y){if(Y===void 0)Y=G;Z[Y]=X[G]}),oZ5=dC&&dC.__exportStar||function(Z,X){for(var G in Z)if(G!=="default"&&!Object.prototype.hasOwnProperty.call(X,G))rZ5(X,Z,G)};Object.defineProperty(dC,"__esModule",{value:!0});oZ5(ZQ(),dC)});var Px8=f((jx8)=>{Object.defineProperty(jx8,"__esModule",{value:!0});jx8.version=void 0;jx8.version="3.4.0"});var Ix8=f((bK)=>{var aZ5=bK&&bK.__importDefault||function(Z){return Z&&Z.__esModule?Z:{default:Z}};Object.defineProperty(bK,"__esModule",{value:!0});bK.NodeTransport=bK.VERSION=void 0;bK.nodeResolveHost=Y75;var i5=fr(),sZ5=c0("net"),E41=c0("tls"),eZ5=c0("path"),Tx8=c0("fs"),Z75=aZ5(c0("dns")),X75=Px8();bK.VERSION=X75.version;var G75="nats.js";class Rx8{socket;version;lang;yields=[];signal=(0,i5.deferred)();closedNotification=(0,i5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=G75,this.version=bK.VERSION}async connect(Z,X){this.tlsName=Z.tlsName,this.options=X;let{tls:G}=this.options,{handshakeFirst:Y}=G||{};try{if(Y===!0)this.socket=await this.tlsFirst(Z);else this.socket=await this.dial(Z);if(this.done)this.socket?.destroy();let Q=await this.peekInfo();(0,i5.checkOptions)(Q,X);let{tls_required:$,tls_available:J}=Q,W=J===!0&&X.tls!==null;if(!Y&&($||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if($&&this.socket.encrypted!==!0)throw i5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Q){let $=Q;if(!$)$=new i5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=$,W=J==="ECONNREFUSED"?new i5.errors.ConnectionError("connection refused",{cause:$}):$;throw this.socket?.destroy(),W}}dial(Z){let X=(0,i5.deferred)(),G,Y=(0,sZ5.createConnection)(Z.port,Z.hostname,()=>{X.resolve(Y),Y.removeAllListeners()});return Y.on("error",(Q)=>{G=Q}),Y.on("close",()=>{Y.removeAllListeners(),X.reject(G)}),Y.setNoDelay(!0),X}get isClosed(){return this.done}close(Z){return this._closed(Z,!1)}peekInfo(){let Z=(0,i5.deferred)(),X;return this.socket.on("data",(G)=>{this.yields.push(G);let Y=i5.DataBuffer.concat(...this.yields),Q=(0,i5.extractProtocolMessage)(Y);if(Q!=="")try{let $=i5.INFO.exec(Q);if(!$)throw Error("unexpected response from server");let J=JSON.parse($[1]);Z.resolve(J)}catch($){Z.reject($)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(G)=>{X=G}),this.socket.on("close",()=>{this.socket.removeAllListeners(),Z.reject(X)}),Z}loadFile(Z){if(!Z)return Promise.resolve();let X=(0,i5.deferred)();try{if(Z=(0,eZ5.resolve)(Z),!(0,Tx8.existsSync)(Z))X.reject(Error(`${Z} doesn't exist`));(0,Tx8.readFile)(Z,(G,Y)=>{if(G)return X.reject(G);X.resolve(Y)})}catch(G){X.reject(G)}return X}async loadClientCerts(){let Z={},{certFile:X,cert:G,caFile:Y,ca:Q,keyFile:$,key:J}=this.options.tls;try{if(X){let W=await this.loadFile(X);if(W)Z.cert=W}else if(G)Z.cert=G;if($){let W=await this.loadFile($);if(W)Z.key=W}else if(J)Z.key=J;if(Y){let W=await this.loadFile(Y);if(W)Z.ca=[W]}else if(Q)Z.ca=Q;return Promise.resolve(Z)}catch(W){return Promise.reject(W)}}async tlsFirst(Z){let X,G={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)G.socket=this.socket;if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};G=(0,i5.extend)(G,this.options.tls,Q)}catch(Q){return Promise.reject(new i5.errors.ConnectionError(Q.message,{cause:Q}))}let Y=(0,i5.deferred)();try{let Q=(0,E41.connect)(Z.port,Z.hostname,G,()=>{Q.removeAllListeners(),Y.resolve(Q)});Q.on("error",($)=>{X=$}),Q.on("secureConnect",()=>{if(G.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{Y.reject(X),Q.removeAllListeners()}),Q.setNoDelay(!0)}catch(Q){Y.reject(new i5.errors.ConnectionError(Q.message,{cause:Q}))}return Y}async startTLS(){let Z,X={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,i5.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new i5.errors.ConnectionError(Y.message,{cause:Y}))}let G=(0,i5.deferred)();try{let Y=(0,E41.connect)(X,()=>{Y.removeAllListeners(),G.resolve(Y)});Y.on("error",(Q)=>{Z=Q}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{G.reject(Z),Y.removeAllListeners()})}catch(Y){G.reject(new i5.errors.ConnectionError(Y.message,{cause:Y}))}return G}setupHandlers(){let Z;this.socket.on("data",(X)=>{return this.yields.push(X),this.signal.resolve()}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed(Z,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let Z=this.yields;this.yields=[];for(let X=0;X<Z.length;X++){if(this.options.debug)console.info(`> ${(0,i5.render)(Z[X])}`);yield Z[X]}if(this.done)break;else if(this.yields.length===0)Z.length=0,this.yields=Z,this.signal=(0,i5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof E41.TLSSocket}_send(Z){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,i5.render)(Z)}`);let X=(0,i5.deferred)();try{this.socket.write(Z,(G)=>{if(G){if(this.options.debug)console.error(`!!! ${(0,i5.render)(Z)}: ${G}`);return X.reject(G)}return X.resolve()})}catch(G){if(this.options.debug)console.error(`!!! ${(0,i5.render)(Z)}: ${G}`);X.reject(G)}return X}send(Z){this._send(Z).catch((G)=>{})}async _closed(Z,X=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=Z,!Z&&this.socket&&X)try{await this._send(new TextEncoder().encode(""))}catch(G){if(this.options.debug)console.log("transport close terminated with an error",G)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(G){console.log(G)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}bK.NodeTransport=Rx8;function Y75(Z){let X=(0,i5.deferred)();return Z75.default.lookup(Z,{all:!0},(G,Y)=>{if(G){X.reject(G);return}let Q=[];for(let $ of Y)Q.push($.address);if(Q.length===0)Q.push(Z);X.resolve(Q)}),X}});var Vx8=f((Sx8)=>{Object.defineProperty(Sx8,"__esModule",{value:!0});Sx8.connect=Q75;var qx8=Ix8(),Mx8=fr(),kx8=fr();function Q75(Z={}){if((0,kx8.hasWsProtocol)(Z))return Promise.reject(kx8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Mx8.setTransportFactory)({factory:()=>{return new qx8.NodeTransport},dnsResolveFn:qx8.nodeResolveHost}),Mx8.NatsConnectionImpl.connect(Z)}});var Cx8=f((oU)=>{var J75=oU&&oU.__createBinding||(Object.create?function(Z,X,G,Y){if(Y===void 0)Y=G;var Q=Object.getOwnPropertyDescriptor(X,G);if(!Q||("get"in Q?!X.__esModule:Q.writable||Q.configurable))Q={enumerable:!0,get:function(){return X[G]}};Object.defineProperty(Z,Y,Q)}:function(Z,X,G,Y){if(Y===void 0)Y=G;Z[Y]=X[G]}),W75=oU&&oU.__exportStar||function(Z,X){for(var G in Z)if(G!=="default"&&!Object.prototype.hasOwnProperty.call(X,G))J75(X,Z,G)};Object.defineProperty(oU,"__esModule",{value:!0});oU.connect=void 0;var K75=Vx8();Object.defineProperty(oU,"connect",{enumerable:!0,get:function(){return K75.connect}});W75(fr(),oU)});function vx8(Z){let X=Z?.connectFn??H75,G=null,Y=null,Q=!1,$=!1,J=!1,W=[];function K(){return G!==null&&!G.isClosed()&&!G.isDraining()&&!J}function N(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let H of W)try{H()}catch{}}function U(H){(async()=>{for await(let w of H.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Y=null,N()})().catch(()=>{})}async function F(H,w){let O=0;while(!$)try{G=await X({servers:H,timeout:F75,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${G.getServer()} after ${O} attempt(s)`),Y=null,J=!1,U(G),N();return}catch{O++;let D=tY(U75,N75,O-1,2,0.5);await l6(D)}}return{init(H,w){if(Q)return;Q=!0,$=!1;let O=w?.creds?fx8.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(H,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?G:null},getJetStream(){if(!K())return null;if(!Y)Y=xx8.jetstream(G);return Y},onReady(H){if(W.push(H),K())try{H()}catch{}},async drain(){if($=!0,Q=!1,Y=null,J=!1,G){let H=G;G=null,await H.drain().catch(()=>{})}}}}function H75(Z){return bx8.connect(Z)}var fx8,bx8,xx8,N75=100,U75=3000,F75=3000;var _x8=B(()=>{c9();fx8=k(Ph(),1),bx8=k(Cx8(),1),xx8=k(YB(),1)});function L41(Z,X){return`${Z}.${X}`}class z41{cache;constructor(Z){this.cache=Bg({ttlMs:Z?.ttlMs??w75,maxSize:Z?.maxSize??O75})}async get(Z,X){return this.cache.get(L41(Z,X))??null}async set(Z,X,G){this.cache.set(L41(Z,X),G)}async invalidate(Z,X){this.cache.delete(L41(Z,X))}teardown(){this.cache.clear()}}var w75=600000,O75=5000;var yx8=()=>{};function Cz0(Z,X){return`${Z}:${X}`}function j41(Z){let X=Bg({ttlMs:Z?.ttlMs??B75,maxSize:Z?.maxSize??D75}),G=Z?.getConnection,Y=crypto.randomUUID(),Q=new TextEncoder,$=new TextDecoder,J=null;function W(K,N){let U=G?.();if(!U)return;try{U.publish(gx8,Q.encode(JSON.stringify({organizationId:K,keyId:N,originId:Y})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,N){return X.get(Cz0(K,N))},set(K,N,U){X.set(Cz0(K,N),U)},invalidate(K,N){X.delete(Cz0(K,N)),W(K,N)},start(){if(J)return;let K=G?.();if(!K)return;J=K.subscribe(gx8),(async()=>{for await(let N of J)try{let U=JSON.parse($.decode(N.data));if(U.originId===Y)continue;X.delete(Cz0(U.organizationId,U.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,X.clear()}}}var gx8="studio.ai-provider-keys.invalidate",B75=30000,D75=5000;var hx8=()=>{};class A41{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor(Z){this.options=Z}async start(Z){if(Z)this.onCancel=Z;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let X=this.options.getConnection();if(!X)return;let G=new TextDecoder;this.subscriptions=ux8.map((Y)=>X.subscribe(Y));for(let Y of this.subscriptions)(async()=>{for await(let Q of Y)try{let $=JSON.parse(G.decode(Q.data));if($.originId===this.originId)continue;if($.messageId&&this.hasSeen($.messageId))continue;this.onCancel?.($.taskId)}catch{}})().catch(console.error)}broadcast(Z){if(/[.*>\s]/.test(Z)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.(Z);try{let X=this.options.getConnection();if(!X)return;let G=this.encoder.encode(JSON.stringify({taskId:Z,originId:this.originId,messageId:crypto.randomUUID()}));for(let Y of ux8)X.publish(Y,G)}catch(X){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",X)}}publishControlFrame(Z,X){}async stop(){for(let Z of this.subscriptions)Z.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen(Z){if(this.seenMessageIds.has(Z))return!0;if(this.seenMessageIds.add(Z),this.seenMessageIds.size>1000){let X=this.seenMessageIds.values().next().value;if(X)this.seenMessageIds.delete(X)}return!1}}var ux8;var cx8=B(()=>{ux8=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var lx8=(Z)=>{let X;return()=>X??=Z()},P41,T41;var dx8=B(()=>{H9();P41=lx8(()=>B6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),T41=lx8(()=>B6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function T75(){return{name:wU,subjects:[`${hm0}.>`],storage:cJ.StorageType.File,max_age:z75,max_bytes:A75,max_msgs_per_subject:P75,discard:cJ.DiscardPolicy.Old,retention:cJ.RetentionPolicy.Limits,duplicate_window:j75,num_replicas:1}}class nx8{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record(Z,X){if(this.chunks++,this.encodeMs+=Z,Z>this.maxMs)this.maxMs=Z;this.bytes+=X}flush(){let Z=performance.now(),X=Z-this.windowStart;if(this.chunks>0&&X>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(X),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/X*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=Z}}function mx8(Z){let X=ix8.headers();for(let[G,Y]of Object.entries(Z))X.set(G,Y);return X}function M75(Z,X){let G=0;return{publish(Y,Q,$,J){Y.publish(Q,$,J?{headers:J}:void 0).catch((W)=>{if(G++,L75().add(1,{"org.id":X??"unknown"}),G===1||G%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${Z} (${G} total):`,W)})},get errorCount(){return G}}}function k75(Z){if(!(Z instanceof Error))return!1;if(Z.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test(Z.message)}class R41{options;js=null;jsm=null;constructor(Z){this.options=Z}async init(){let Z=this.options.getConnection();if(!Z){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let X=T75(),G=await rY(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await cJ.jetstreamManager(Z);try{await Y.streams.info(wU),await Y.streams.update(wU,X)}catch(Q){if(Q instanceof Error&&Q.message.includes("stream not found"))await Y.streams.add(X);else if(Q instanceof Error&&/can ?not change.*storage|storage type/i.test(Q.message))await Y.streams.delete(wU),await Y.streams.add(X);else throw Q}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:k75});this.js=this.options.getJetStream(),this.jsm=G,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump(Z,X,G,Y){let Q=this.js;if(!Q)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${X}; chunks NOT published to NATS`),Promise.resolve();let $=M75(X,Y),J=!1,W=()=>{if(J)return;J=!0;let N=r98(X);Q.publish(N.subject,N.data).catch(()=>{})};G.addEventListener("abort",W,{once:!0});let K=(N)=>{let U=performance.now(),F=cm0(N,{runId:X}),H=performance.now()-U;if(P41().record(H),T41().add(1,{"org.id":Y??"unknown"}),q75?.record(H,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${X}`);return}for(let w of F)$.publish(Q,w.subject,w.data,w.headers?mx8(w.headers):void 0)};return(async()=>{let N=Z.getReader(),U=0,F=0,H;try{while(!0){let{done:w,value:O}=await N.read();if(w)break;if(K(O),F++,++U>=64)U=0,await new Promise((D)=>setImmediate(D))}}catch(w){H=w,console.warn(`[Decopilot] stream pump error for thread ${X}:`,w?.message??w)}finally{if(N.releaseLock(),W(),I75)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:X,publishedChunks:F,publishErrors:$.errorCount}))}if(H!==void 0)throw H})()}async publishRawChunk(Z,X,G){let Y=this.js;if(!Y)return!1;let Q=performance.now(),$=cm0(X,{runId:Z,dedup:G});if(P41().record(performance.now()-Q),T41().add(1),$.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${Z} (> MAX_CHUNKED_BYTES)`),!0;for(let J of $)await Y.publish(J.subject,J.data,{...J.headers?{headers:mx8(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone(Z,X,G){let Y=this.js;if(!Y)return!1;let Q=t98({runId:Z,fenceToken:X,finalSeq:G});return await Y.publish(Q.subject,Q.data,{msgID:Q.msgId}),!0}async createTailStream(Z,X,G){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${Z}; no live tail`),null;let Q=G?.deliverPolicy==="new"?cJ.DeliverPolicy.New:cJ.DeliverPolicy.All,$=G?.closeOnDone??!1,J=bw(Z),W;try{W=await(await Y.consumers.get(wU,{filter_subjects:J,deliver_policy:Q})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let U=dZ0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(uZ0()).pipeThrough(cZ0()).getReader(),F=!1,H=()=>{if(F)return;F=!0;try{U.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),U.cancel().catch(()=>{}),H()};return X?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:E,value:L}=await U.read();if(E){O(),D.close();return}let z=L;if(z.kind==="done"){if($){O(),D.close();return}continue}D.enqueue(z.chunk);return}},cancel(){O()}})}purge(Z){if(!this.jsm)return;this.jsm.streams.purge(wU,{filter:bw(Z)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var cJ,ix8,E75=(Z)=>{let X;return()=>X??=Z()},L75,z75=86400000000000,j75=120000000000,A75=4294967296,P75=500000,R75,I75,q75;var px8=B(()=>{c9();dm0();mZ0();lm0();H9();dx8();cJ=k(YB(),1),ix8=k(Ph(),1),L75=E75(()=>B6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));R75=process.env.STREAM_ENCODE_TRACE==="1",I75=process.env.DECOPILOT_STREAM_TRACE==="1";q75=R75?new nx8:null});import{z as Q6}from"zod";var tx8,rx8,xK,I41,ox8,ax8,sx8,ex8,S75,Zv8,Xv8,Gv8,Yv8,Qv8,V75,$v8,x37,C75,f75=(Z)=>{return Z.issues.map((X)=>{return`${X.path.length>0?X.path.join("."):"frame"}: ${X.message}`}).join("; ")},Jv8=(Z)=>{return new TextEncoder().encode(JSON.stringify(Z))},Wv8=(Z)=>{let X;try{X=JSON.parse(new TextDecoder().decode(Z))}catch($){throw TypeError("malformed JSON in tunnel frame",{cause:$})}if(X===null||typeof X!=="object"||Array.isArray(X))throw TypeError("frame must be an object");if(!("type"in X))throw TypeError("frame type missing");let G=X.type,Y=typeof G==="string"?C75[G]:void 0;if(!Y)throw TypeError(`unknown frame type: ${String(G)}`);let Q=Y.safeParse(X);if(!Q.success)throw TypeError(`invalid tunnel frame: ${f75(Q.error)}`);return Q.data};var Kv8=B(()=>{tx8=Q6.string().regex(/^[A-Za-z0-9_-]*$/u),rx8=Q6.array(Q6.tuple([Q6.string(),Q6.string()])),xK=Q6.string().regex(/^[A-Za-z0-9_-]+$/u),I41=Q6.string().min(1),ox8=Q6.object({type:Q6.literal("request.start"),protocol:Q6.literal("tunnel.v1"),requestId:xK,method:Q6.string().min(1),url:Q6.string().min(1),headers:rx8,replySubject:I41,bodySubject:I41.optional(),abortSubject:I41,deadlineUnixMs:Q6.number().int().nonnegative().optional()}),ax8=Q6.object({type:Q6.literal("request.chunk"),requestId:xK,seq:Q6.number().int().nonnegative(),data:tx8}),sx8=Q6.object({type:Q6.literal("request.end"),requestId:xK,seq:Q6.number().int().nonnegative()}),ex8=Q6.object({type:Q6.literal("request.error"),requestId:xK,code:Q6.string().min(1),message:Q6.string()}),S75=Q6.union([ax8,sx8,ex8]),Zv8=Q6.object({type:Q6.literal("response.ack"),requestId:xK}),Xv8=Q6.object({type:Q6.literal("response.start"),requestId:xK,status:Q6.number().int().min(100).max(599),statusText:Q6.string().optional(),headers:rx8}),Gv8=Q6.object({type:Q6.literal("response.chunk"),requestId:xK,seq:Q6.number().int().nonnegative(),data:tx8}),Yv8=Q6.object({type:Q6.literal("response.end"),requestId:xK,seq:Q6.number().int().nonnegative()}),Qv8=Q6.object({type:Q6.literal("response.error"),requestId:xK,code:Q6.string().min(1),message:Q6.string()}),V75=Q6.union([Zv8,Xv8,Gv8,Yv8,Qv8]),$v8=Q6.object({type:Q6.literal("abort"),requestId:xK,reason:Q6.string().optional()}),x37=Q6.union([ox8,S75,V75,$v8]),C75={"request.start":ox8,"request.chunk":ax8,"request.end":sx8,"request.error":ex8,"response.ack":Zv8,"response.start":Xv8,"response.chunk":Gv8,"response.end":Yv8,"response.error":Qv8,abort:$v8}});var b75=(Z)=>{return Z.replaceAll("+","-").replaceAll("/","_").replaceAll("=","")},x75=(Z)=>{let X=Z.replaceAll("-","+").replaceAll("_","/"),G=(4-X.length%4)%4;return X+"=".repeat(G)},v75=(Z)=>{let X=[];for(let G=0;G<Z.length;G+=32768)X.push(String.fromCharCode(...Z.subarray(G,G+32768)));return X.join("")},_75=(Z)=>{let X=new Uint8Array(Z.length);for(let G=0;G<Z.length;G+=32768){let Y=Z.slice(G,G+32768);X.set(Uint8Array.from(Y,(Q)=>Q.charCodeAt(0)),G)}return X},Nv8=(Z)=>{return b75(btoa(v75(Z)))},Uv8=(Z)=>{return _75(atob(x75(Z)))},y75;var Fv8=B(()=>{y75=class y75{#Z=[];#X;#G=!1;#$=new Set;push(Z){if(this.#G)return;let X=this.#Q();if(X){X.resolve({value:Z,done:!1});return}this.#Z.push(Z)}close(){if(this.#G)return;this.#G=!0,this.#Y()}fail(Z){if(this.#G)return;this.#X=Z,this.#G=!0,this.#J(Z)}[Symbol.asyncIterator](){let Z=!1,X=new Set;return{next:()=>{if(Z)return Promise.resolve({value:void 0,done:!0});if(this.#Z.length>0)return Promise.resolve({value:this.#Z.shift(),done:!1});if(this.#X)return Promise.reject(this.#X);if(this.#G)return Promise.resolve({value:void 0,done:!0});return new Promise((G,Y)=>{let Q;Q={resolve:($)=>{X.delete(Q),G($)},reject:($)=>{X.delete(Q),Y($)}},X.add(Q),this.#$.add(Q)})},return:()=>{Z=!0;for(let G of X)this.#$.delete(G),G.resolve({value:void 0,done:!0});return X.clear(),Promise.resolve({value:void 0,done:!0})}}}#Q(){for(let Z of this.#$)return this.#$.delete(Z),Z;return}#Y(){for(let Z of this.#$)Z.resolve({value:void 0,done:!0});this.#$.clear()}#J(Z){for(let X of this.#$)X.reject(Z);this.#$.clear()}}});function*p75(Z,X){for(let G=0;G<Z.length;G+=X)yield Z.subarray(G,G+X)}class XX5{maxSize;ttlMs;now;#Z=new Map;constructor(Z,X,G=Date.now){this.maxSize=Z;this.ttlMs=X;this.now=G}get(Z){let X=this.#Z.get(Z);if(!X)return;if(X.expiresAt<=this.now()){this.#Z.delete(Z);return}return X.value}has(Z){return this.get(Z)!==void 0}set(Z,X){let G=this.now();this.prune(G),this.#Z.delete(Z),this.#Z.set(Z,{value:X,expiresAt:G+this.ttlMs});while(this.#Z.size>this.maxSize){let Y=this.#Z.keys().next().value;if(Y===void 0)return;this.#Z.delete(Y)}}take(Z){let X=this.get(Z);return this.#Z.delete(Z),X}clear(){this.#Z.clear()}prune(Z){for(let[X,G]of this.#Z)if(G.expiresAt<=Z)this.#Z.delete(X)}}var g75=30000,h75=1000,u75=65536,$$,c75=(Z)=>{return"connection"in Z},l75=(Z)=>{let X=c75(Z)?Z:{connection:Z};return{connection:X.connection,timeoutMs:X.timeoutMs??0,firstFrameTimeoutMs:X.firstFrameTimeoutMs??g75,idleTimeoutMs:X.idleTimeoutMs??0,republishIntervalMs:X.republishIntervalMs??h75,maxChunkBytes:X.maxChunkBytes??u75,diagnostics:X.diagnostics}},Hv8=(Z)=>{return Array.from(Z.entries())},d75=(Z)=>{return Z!==void 0&&!(Z instanceof Headers)&&typeof Z!=="function"&&typeof Z[Symbol.iterator]==="function"},m75=(Z,X,G)=>{if(d75(X?.headers))return Array.from(X?.headers,([Y,Q])=>[String(Y),String(Q)]);if(Z instanceof Request)return Hv8(G.headers);return Hv8(G.headers)},wv8=(Z)=>{let X=new Headers;for(let[G,Y]of Z)X.append(G,Y);return X},i75=()=>{return crypto.randomUUID().replaceAll("-","")},n75=(Z)=>{try{Z?.unsubscribe()}catch{}},t75=(Z)=>{if(!Number.isSafeInteger(Z)||Z<1)throw TypeError("maxChunkBytes must be a positive safe integer")},r75=(Z,X)=>{return Z==="HEAD"||X===204||X===205||X===304},hO=(Z,X,G)=>{Z.publish(X,Jv8(G))},o75=(Z)=>{return Z.type.startsWith("response.")},q41=(Z)=>{let X=Z.reason;if(X instanceof Error)return X.message;if(typeof X==="string")return X;return"aborted"},a75=(Z)=>{if(Z==="idle")return new $$("tunnel_idle_timeout","no response frame within idleTimeoutMs");return new $$("tunnel_no_first_frame","no response frame arrived before firstFrameTimeoutMs")},Ov8=async(Z,X,G,Y,Q="first_frame")=>{while(!0){let $,J;try{let W=await Promise.race([Z.next(),new Promise((N,U)=>{if(Y.aborted){U(Y.reason);return}let F=()=>U(Y.reason);J=()=>{Y.removeEventListener("abort",F)},Y.addEventListener("abort",F,{once:!0})}),...G>0?[new Promise((N,U)=>{$=setTimeout(()=>{U(a75(Q))},G)})]:[]]);if(W.done)return{value:void 0,done:!0};let K=Wv8(W.value.data);if(!o75(K)||K.requestId!==X)continue;return{value:K,done:!1}}finally{if(J?.(),$)clearTimeout($)}}},s75=async(Z)=>{let X=!1;while(!0){let G=await Ov8(Z.iterator,Z.requestId,X?0:Z.firstFrameTimeoutMs,Z.signal);if(G.done)throw new $$("tunnel_response_closed","response subscription closed before response.start");if(!X)X=!0,Z.onFirstResponseFrame();if(G.value.type==="response.ack")continue;if(G.value.type==="response.start")return G.value;if(G.value.type==="response.error")throw new $$(G.value.code,G.value.message);throw new $$("tunnel_unexpected_response_frame",`expected response.start, got ${G.value.type}`)}},e75=async(Z)=>{let X=Z.body.getReader(),G=0,Y=!1,Q=()=>{Y=!0,X.cancel(Z.signal.reason).catch(()=>{})};try{if(Z.signal.aborted){Q();return}Z.signal.addEventListener("abort",Q,{once:!0});while(!0){let{done:$,value:J}=await X.read();if(Y)return;if($){hO(Z.connection,Z.subject,{type:"request.end",requestId:Z.requestId,seq:G});return}for(let W of p75(J,Z.maxChunkBytes)){if(Y)return;hO(Z.connection,Z.subject,{type:"request.chunk",requestId:Z.requestId,seq:G,data:Nv8(W)}),G++}}}catch($){if(Y)return;hO(Z.connection,Z.subject,{type:"request.error",requestId:Z.requestId,code:"tunnel_request_body_error",message:$ instanceof Error?$.message:String($)})}finally{Z.signal.removeEventListener("abort",Q),X.releaseLock()}},ZX5=(Z)=>{return new ReadableStream({async pull(X){while(!0)try{let G=await Ov8(Z.iterator,Z.requestId,Z.idleTimeoutMs,Z.signal,"idle");if(G.done){X.error(new $$("tunnel_response_closed","response subscription closed before response.end")),Z.cleanup();return}let Y=G.value;if(Y.type==="response.ack"||Y.type==="response.start")continue;if(Y.type==="response.chunk"){X.enqueue(Uv8(Y.data));return}if(Y.type==="response.end"){X.close(),Z.cleanup();return}X.error(new $$(Y.code,Y.message)),Z.cleanup();return}catch(G){X.error(G),Z.cleanup();return}},cancel(){hO(Z.connection,Z.abortSubject,{type:"abort",requestId:Z.requestId,reason:"response_body_cancelled"}),Z.cleanup()}},{highWaterMark:0})},uO=(Z)=>{let X=l75(Z);return t75(X.maxChunkBytes),async(G,Y)=>{let Q=Lb8(G),$=new Request(G,Y),J=i75(),W=zb8(Q.hostname,J),K=new AbortController,N=new AbortController,U=!1,F,H,w,O,D=!1,E=(A=new $$("tunnel_closed","tunnel request closed"))=>{if(U)return;if(U=!0,n75(F),$.body&&!D)$.body.cancel(A).catch(()=>{});if(N.abort(A),K.abort(A),w)clearInterval(w);if(O)clearTimeout(O);$.signal.removeEventListener("abort",L)},L=()=>{let A=new $$("tunnel_aborted",q41($.signal));hO(X.connection,W.abort,{type:"abort",requestId:J,reason:q41($.signal)}),K.abort(A),E(A)};if($.signal.aborted)throw new $$("tunnel_aborted",q41($.signal));if(F=X.connection.subscribe(W.reply),H=F[Symbol.asyncIterator](),$.signal.addEventListener("abort",L,{once:!0}),X.timeoutMs>0)O=setTimeout(()=>{let A=new $$("tunnel_timeout",`tunnel request timed out after ${X.timeoutMs}ms`);hO(X.connection,W.abort,{type:"abort",requestId:J,reason:"tunnel_timeout"}),K.abort(A),E(A)},X.timeoutMs);let z={type:"request.start",protocol:"tunnel.v1",requestId:J,method:$.method,url:Q.pathWithSearch,headers:m75(G,Y,$),replySubject:W.reply,abortSubject:W.abort,...$.body?{bodySubject:W.body}:{},...X.timeoutMs>0?{deadlineUnixMs:Date.now()+X.timeoutMs}:{}};hO(X.connection,W.request,z),w=X.republishIntervalMs>0?setInterval(()=>{if(!D)hO(X.connection,W.request,z)},X.republishIntervalMs):void 0;let j=()=>{if(D)return;D=!0,($.body?e75({connection:X.connection,subject:W.body,requestId:J,body:$.body,maxChunkBytes:X.maxChunkBytes,signal:N.signal}):void 0)?.catch((P)=>{X.diagnostics?.({event:"request_body_error",requestId:J,subject:W.body,error:P instanceof Error?P.message:String(P)})})};try{let A=await s75({iterator:H,requestId:J,firstFrameTimeoutMs:X.firstFrameTimeoutMs,signal:K.signal,onFirstResponseFrame:()=>{if(w)clearInterval(w);j()}});if(r75($.method,A.status))return E(),new Response(null,{status:A.status,statusText:A.statusText,headers:wv8(A.headers)});return new Response(ZX5({connection:X.connection,abortSubject:W.abort,iterator:H,requestId:J,idleTimeoutMs:X.idleTimeoutMs,signal:K.signal,cleanup:E}),{status:A.status,statusText:A.statusText,headers:wv8(A.headers)})}catch(A){throw E(A instanceof Error?A:Error(String(A))),A}}};var Bv8=B(()=>{Kv8();Fv8();Rz0();$$=class $$ extends Error{code;constructor(Z,X,G){super(`${Z}: ${X}`,G);this.code=Z;this.name="TunnelTransportError"}}});var fz0=B(()=>{Bv8()});function Dv8(Z){let X=Z.createFetch??GX5,G=Z.timeoutMs??2000;return async(Y)=>{try{let Q=Z.getConnection();if(!Q)return M41;let $=hJ(Y),W=await X(Q,G)(`tunnel://${$}/api/links/status`,{method:"GET"});if(!W.ok)return M41;let K=await W.json();return{online:!0,hostname:K.hostname,capabilities:K.capabilities??[],cliVersion:K.cliVersion}}catch{return M41}}}var M41,GX5=(Z,X)=>uO({connection:Z,firstFrameTimeoutMs:X});var Ev8=B(()=>{fz0();kr();M41={online:!1,capabilities:[]}});async function*YX5(Z){if(!Z.body){yield{headers:{status:Z.status,headers:Object.fromEntries(Z.headers.entries())}};return}let X=Z.body.getReader(),G=!1;try{yield{headers:{status:Z.status,headers:Object.fromEntries(Z.headers.entries())}};while(!0){let{done:Y,value:Q}=await X.read();if(Y){G=!0;return}yield{data:Buffer.from(Q).toString("base64")}}}finally{try{if(!G)await X.cancel()}catch{}finally{X.releaseLock()}}}function Lv8(Z){let X=Z.createFetch??((G)=>uO({connection:G,idleTimeoutMs:QX5}));return async function*(Y,Q,$){let J=Z.getConnection();if(!J)throw Error("link_unavailable: NATS unavailable");let W=hJ(Y),K=X(J),N={method:Q.method,headers:Q.headers,signal:$?.signal};if(Q.body!=null)N.body=Q.body;let U=await K(`tunnel://${W}${Q.path}`,N);yield*YX5(U)}}var QX5=45000;var zv8=B(()=>{fz0();kr()});import{z as lJ}from"zod";function jv8(Z){return JSON.stringify(Z)}var N$7;var Av8=B(()=>{N$7=lJ.discriminatedUnion("type",[lJ.object({type:lJ.literal("cancel"),runId:lJ.string()}),lJ.object({type:lJ.literal("cancel_req"),reqId:lJ.string()}),lJ.object({type:lJ.literal("keep_alive")}),lJ.object({type:lJ.literal("shutdown")})])});function Pv8(Z){let X=Z.createFetch??((G)=>uO({connection:G,idleTimeoutMs:$X5}));return{async publish(G,Y,Q){let $=Z.getConnection();if(!$)throw Error("link_unavailable: NATS unavailable");let J=hJ(G),K=await X($)(`tunnel://${J}/api/links/work`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(Y),signal:Q?.signal});if(!K.ok){let N=await K.text().catch(()=>"");throw Error(`tunnel work publish failed (${K.status})${N?`: ${N}`:""}`)}await K.body?.cancel().catch(()=>{})}}}function Tv8(Z){let X=Z.createFetch??uO;return{async publishControlFrame(G,Y,Q){let $=Z.getConnection();if(!$)throw Error("link_unavailable: NATS unavailable");let J=hJ(G),K=await X($)(`tunnel://${J}/api/links/control`,{method:"POST",headers:{"content-type":"application/json"},body:jv8(Y),signal:Q?.signal});if(!K.ok){let N=await K.text().catch(()=>"");throw Error(`tunnel control publish failed (${K.status})${N?`: ${N}`:""}`)}await K.body?.cancel().catch(()=>{})}}}var $X5=45000;var Rv8=B(()=>{fz0();Av8();kr()});function bz0(Z,X,G,Y){if(!Y)return!1;return Z.emit(X,JW(G,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var Iv8=B(()=>{b6()});class k41{storage;options;timer=null;constructor(Z,X={}){this.storage=Z;this.options=X}start(){if(this.timer)return;let Z=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},Z)}async runOnce(){let Z=this.options.staleAfterMs??3600000;try{let X=await this.storage.sweepAbandoned(Z);if(X>0)console.log(`[async-research-sweeper] marked ${X} stale jobs as abandoned`);return X}catch(X){return console.error("[async-research-sweeper] sweep failed",X),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}import{readdir as JX5,rm as xz0}from"fs/promises";import{join as vz0}from"path";async function _z0(Z){let X=new Date;X.setUTCDate(X.getUTCDate()-WX5),X.setUTCHours(0,0,0,0);let G=0;try{let Y=await mC(Z);for(let Q of Y)if(/^\d{4}$/.test(Q))G+=await qv8(Z,Q,X);else if(!Q.startsWith(".")){let $=vz0(Z,Q),J=await mC($);for(let K of J){if(!/^\d{4}$/.test(K))continue;G+=await qv8($,K,X)}if((await mC($)).length===0)await xz0($,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return G}async function qv8(Z,X,G){let Y=0,Q=vz0(Z,X),$=await mC(Q);for(let W of $){if(!/^\d{2}$/.test(W))continue;let K=vz0(Q,W),N=await mC(K);for(let F of N){if(!/^\d{2}$/.test(F))continue;let H=new Date(`${X}-${W}-${F}T00:00:00Z`);if(isNaN(H.getTime()))continue;if(H<G){let w=vz0(K,F);await xz0(w,{recursive:!0,force:!0}),Y++}}if((await mC(K)).length===0)await xz0(K,{recursive:!0,force:!0})}if((await mC(Q)).length===0)await xz0(Q,{recursive:!0,force:!0});return Y}async function mC(Z){try{return(await JX5(Z)).filter((G)=>!G.startsWith("."))}catch{return[]}}var WX5=30;var S41=()=>{};import{DBOS as V41,SchedulerMode as KX5}from"@dbos-inc/dbos-sdk";async function UX5(){let Z=[W$(),iC(),yK()],X=0;for(let G of Z)try{X+=await _z0(G)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${X} day-dir(s) across ${Z.length} signal dir(s)`),{deleted:X,dirs:Z.length}}async function FX5(Z,X){await V41.runStep(()=>UX5(),{name:"monitoringRetention"})}function kv8(){if(Mv8)return;Mv8=!0;let Z=V41.registerWorkflow(FX5,{name:"monitoringRetentionWorkflow"});V41.registerScheduled(Z,{name:"monitoringRetentionWorkflow",crontab:NX5,mode:KX5.ExactlyOncePerIntervalWhenActive})}var NX5="23 4 * * *",Mv8=!1;var Sv8=B(()=>{oY();S41()});function Vv8(Z){return async(X,G)=>{let Y=await Z.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",G).where("member.organizationId","=",X).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${G} not found in org ${X} \u2014 returning null`),null;let Q=await Ow.create();Q.auth.user={id:G,role:Y.role},Q.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let $=await ac0(Z.db,X,Y.role);return Q.boundAuth=oc0({auth:Q.authInstance,headers:new Headers,role:Y.role,permissions:$,userId:G}),Q.access=new eD(G,void 0,Q.boundAuth,Y.role,"self"),T90(Q,{id:Y.orgId,slug:Y.orgSlug}),Q}}var Cv8=B(()=>{ZE();gi()});function HX5(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function OX5(){for(let Z of wX5)Z()}function fv8(Z){let X=[...C41.logs,Z];C41={...C41,logs:X.length>500?X.slice(-500):X},OX5()}function f41(){return BX5}var C41,wX5,BX5=!1;var b41=B(()=>{C41=HX5(),wX5=new Set});import{EventEmitter as DX5}from"events";var x41;var bv8=B(()=>{b41();x41=new DX5;x41.on("request",(Z)=>{fv8(Z)})});function xv8(){return async(Z,X)=>{let G=Date.now(),Y=Z.req.method,Q=Z.req.path;if(Q==="/api/auth/get-session"||Q.includes("favicon")){await X();return}let $="",J=!1;if(Q.startsWith("/mcp")&&Y==="POST"){J=!0;try{if(Z.req.header("Content-Type")?.includes("application/json")){let H=await Z.req.raw.clone().json();if(H.method==="tools/call"&&H.params?.name){let w=og(H.params.name),O=H.params.arguments||{},D=Object.keys(O).map((L)=>og(L)),E=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";$=`${e5.tool}${w}${e5.dim}(${E})${e5.reset}`}else if(H.method)$=`${e5.dim}${og(H.method)}${e5.reset}`}}catch{}}let W=og(Q);if(Q.startsWith("/mcp/conn_")){let U=Q.split("/")[2]??"";W=`/mcp/${e5.mcp}${og(U.slice(0,12))}\u2026${e5.reset}`}else if(Q==="/mcp")W=`${e5.mcp}/mcp${e5.reset}`;else if(Q==="/mcp/registry")W=`${e5.mcp}/mcp/registry${e5.reset}`;let K=LX5(Y),N=J?"\u25C0":"\u2190";if(!f41())console.log(`${e5.dim}${N}${e5.reset} ${K}${Y}${e5.reset} ${W}${$?` ${$}`:""}`);try{await X()}finally{let U=Date.now()-G,F=Z.res.status,H=EX5(F),w=U<1000?`${U}ms`:`${(U/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!f41())console.log(`${e5.dim}${O}${e5.reset} ${K}${Y}${e5.reset} ${W}${$?` ${$}`:""} ${H}${F}${e5.reset} ${e5.duration}${w}${e5.reset}`);x41.emit("request",{method:Y,path:og(Q),status:F,duration:U,timestamp:new Date})}}}var e5,EX5=(Z)=>{if(Z>=500)return e5.serverError;if(Z>=400)return e5.clientError;if(Z>=300)return e5.redirect;return e5.ok},LX5=(Z)=>{return e5[Z]||e5.reset},og=(Z)=>{return Z.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var vv8=B(()=>{b41();bv8();e5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as hv8}from"crypto";import{mkdir as zX5,readdir as jX5,rm as _v8,stat as uv8}from"fs/promises";import{join as _41,relative as AX5}from"path";import{z as T8}from"zod";function lv8(Z){let X=Z.replace(/[^a-zA-Z0-9_-]/g,"_");return _41(PX5,X)}function dv8(Z){return Z.replace(/^\/+/,"").replace(/\.\./g,"")}function v41(Z,X){let G=lv8(Z),Y=dv8(X);return _41(G,Y)}function TX5(Z,X,G,Y){let Q=K1().encryptionKey||"dev-secret",$=`${Z}:${X}:${G}:${Y}`;return hv8("sha256",Q).update($).digest("hex")}function gv8(Z,X,G,Y,Q){let $=Math.floor(Date.now()/1000)+Y,J=TX5(X,G,$,Q),W=new URL(`/api/dev-assets/${X}/${dv8(G)}`,Z);return W.searchParams.set("expires",$.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Q),W.toString()}function mv8(Z,X,G){let Y=`${Z}:${X.getTime()}:${G}`;return`"${hv8("md5","etag").update(Y).digest("hex")}"`}async function iv8(Z,X,G,Y,Q){try{let $=await jX5(Z,{withFileTypes:!0});for(let J of $){let W=_41(Z,J.name),N=AX5(X,W).replace(/\\/g,"/");if(G&&!N.startsWith(G))continue;if(J.isDirectory())if(Y){let U=N+"/";if(!G||U.startsWith(G)){if(!(G?N.slice(G.length):N).includes("/"))Q.commonPrefixes.add(U)}}else await iv8(W,X,G,Y,Q);else if(J.isFile()){if(Y&&G){let U=N.slice(G.length);if(U.includes(Y)){let F=U.indexOf(Y),H=G+U.slice(0,F+1);Q.commonPrefixes.add(H);continue}}try{let U=await uv8(W);Q.objects.push({key:N,size:U.size,lastModified:U.mtime.toISOString(),etag:mv8(W,U.mtime,U.size)})}catch{}}}}catch{}}function nv8(Z,X){let Y=O0(Z).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:T8.object({prefix:T8.string().optional(),maxKeys:T8.number().optional().default(1000),continuationToken:T8.string().optional(),delimiter:T8.string().optional()}),outputSchema:T8.object({objects:T8.array(T8.object({key:T8.string(),size:T8.number(),lastModified:T8.string(),etag:T8.string()})),nextContinuationToken:T8.string().optional(),isTruncated:T8.boolean(),commonPrefixes:T8.array(T8.string()).optional()}),handler:async(Q)=>{let $=Q,J=$.prefix||"",W=$.maxKeys??1000,K=$.delimiter,N=$.continuationToken,U=lv8(Y);await zX5(U,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await iv8(U,U,J,K,F),F.objects.sort((E,L)=>E.key.localeCompare(L.key));let H=0;if(N){if(H=F.objects.findIndex((E)=>E.key>N),H===-1)H=F.objects.length}let w=F.objects.slice(H,H+W),O=H+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({contentType:T8.string().optional(),contentLength:T8.number(),lastModified:T8.string(),etag:T8.string(),metadata:T8.record(T8.string(),T8.string()).optional()}),handler:async(Q)=>{let $=Q,J=v41(Y,$.key),W=await uv8(J);return{contentType:D81($.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:mv8(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Q)=>{let $=Q,J=$.expiresIn??yv8;return{url:gv8(X,Y,$.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional(),contentType:T8.string().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Q)=>{let $=Q,J=$.expiresIn??yv8;return{url:gv8(X,Y,$.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({success:T8.boolean(),key:T8.string()}),handler:async(Q)=>{let $=Q,J=v41(Y,$.key);try{return await _v8(J),{success:!0,key:$.key}}catch{return{success:!1,key:$.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:T8.object({keys:T8.array(T8.string()).max(1000)}),outputSchema:T8.object({deleted:T8.array(T8.string()),errors:T8.array(T8.object({key:T8.string(),message:T8.string()}))}),handler:async(Q)=>{let $=Q,J=[],W=[];return await Promise.all($.keys.map(async(K)=>{let N=v41(Y,K);try{await _v8(N),J.push(K)}catch(U){W.push({key:K,message:U instanceof Error?U.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function y41(Z,X,G){let Y=nv8(X,G),Q=new _N({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:D9});for(let J of Y){let W="shape"in J.inputSchema?J.inputSchema.shape:T8.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:T8.object({}).shape;Q.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(N)=>{try{let U=await J.handler(N);return{content:[{type:"text",text:JSON.stringify(U)}],structuredContent:U}}catch(U){return{content:[{type:"text",text:`Error: ${U.message}`}],isError:!0}}})}let $=new lQ({enableJsonResponse:Z.headers.get("Accept")?.includes("application/json")??!1});return await Q.connect($),NK(Q,$,Z,"mcp:dev-assets")}async function pv8(Z,X,G,Y){let $=nv8(G,Y).find((J)=>J.name===Z);if(!$)return{content:[{type:"text",text:`Tool not found: ${Z}`}],isError:!0};try{let J=await $.handler(X);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var PX5="./data/assets",yv8=3600,cv8,tv8;var rv8=B(()=>{y8();Rp();a6();Rl();zy();SG();lL0();cv8=new V1;cv8.all("/",async(Z)=>{let X=Z.get("studioContext"),G=new URL(Z.req.url),Y=`${G.protocol}//${G.host}`;return y41(Z.req.raw,X,Y)});tv8=cv8});var ov8={};Q4(ov8,{mountDevRoutes:()=>RX5});function RX5(Z,X){Z.all("/mcp/:connectionId{.*_dev-assets$}",X,async(Y)=>{let Q=Y.get("studioContext"),$=new URL(Y.req.url),J=`${$.protocol}//${$.host}`;return y41(Y.req.raw,Q,J)}),Z.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",X,async(Y)=>{let Q=Y.get("studioContext"),$=new URL(Y.req.url),J=`${$.protocol}//${$.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),N=await pv8(W,K,Q,J);if(N.isError)return Y.json(N.content,500);return Y.json(N.content)}),Z.use("/mcp/dev-assets",X),Z.route("/mcp/dev-assets",tv8);let G=new V1;G.use("*",yJ({mountPath:"/api/dev-assets"})),G.route("/",cL0({orgFromPath:!1})),Z.route("/api/dev-assets",G)}var av8=B(()=>{a6();K81();lL0();rv8()});import{sql as IX5}from"kysely";import{randomUUID as sv8}from"crypto";import{z as qX5}from"zod";async function kX5(Z){let X=new Date().toISOString(),G=sv8(),Y=p4.SELF(Z.organizationId),Q="registry.publish_request.created",$={requestId:Z.request.id,requestedId:Z.request.requested_id,title:Z.request.title,status:Z.request.status,createdAt:Z.request.created_at,requester:{name:Z.request.requester_name,email:Z.request.requester_email}};await Z.db.insertInto("events").values({id:G,organization_id:Z.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:Z.request.id,time:X,datacontenttype:"application/json",dataschema:null,data:JSON.stringify($),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute();let J=await Z.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",Z.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(J.length>0)await Z.db.insertInto("event_deliveries").values(J.map((W)=>({id:sv8(),event_id:G,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:X}))).execute();try{await IX5`SELECT
|
|
2763
2763
|
pg_notify('studio_events', ${G}),
|